1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
content / browser / renderer_host / system_entropy_utils.h [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_SYSTEM_ENTROPY_UTILS_H_
#define CONTENT_BROWSER_RENDERER_HOST_SYSTEM_ENTROPY_UTILS_H_
#include "content/browser/renderer_host/frame_tree_node.h"
#include "content/public/common/content_client.h"
#include "third_party/blink/public/mojom/navigation/system_entropy.mojom.h"
namespace content {
class SystemEntropyUtils {
public:
// Determines the current system entropy value for `frame_tree_node`.
//
// Returns `SystemEntropy::kHigh` for all top level navigations that
// occur between the start of the browser process up until the first
// visible page completes loading.
//
// Returns `SystemEntropy::kNormal` for all top level navigations
// that occur after the first visible page has completed loading.
//
// Returns `SystemEntropy::kEmpty` for all framed navigations, or if the
// `suggested_system_entropy` is `SystemEntropy::kEmpty`.
static blink::mojom::SystemEntropy ComputeSystemEntropyForFrameTreeNode(
FrameTreeNode* frame_tree_node,
blink::mojom::SystemEntropy suggested_system_entropy) {
// If the suggested system entropy is `SystemEntropy::kEmpty`, or this is
// a framed navigation, return `SystemEntropy::kEmpty`.
if (suggested_system_entropy == blink::mojom::SystemEntropy::kEmpty ||
!frame_tree_node->IsOutermostMainFrame()) {
return blink::mojom::SystemEntropy::kEmpty;
}
// During browser startup, return `SystemEntropy::kHigh`.
if (!GetContentClient()->browser()->IsBrowserStartupComplete()) {
return blink::mojom::SystemEntropy::kHigh;
}
CHECK_NE(suggested_system_entropy, blink::mojom::SystemEntropy::kEmpty);
return suggested_system_entropy;
}
};
} // namespace content
#endif // CONTENT_BROWSER_RENDERER_HOST_SYSTEM_ENTROPY_UTILS_H_