forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
aw_browser_process.h
123 lines (90 loc) · 4.3 KB
/
aw_browser_process.h
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
// Copyright (c) 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This interface is for managing the global services of the application.
#ifndef ANDROID_WEBVIEW_BROWSER_AW_BROWSER_PROCESS_H_
#define ANDROID_WEBVIEW_BROWSER_AW_BROWSER_PROCESS_H_
#include "android_webview/browser/aw_apk_type.h"
#include "android_webview/browser/aw_browser_context.h"
#include "android_webview/browser/aw_feature_list_creator.h"
#include "android_webview/browser/lifecycle/aw_contents_lifecycle_notifier.h"
#include "android_webview/browser/safe_browsing/aw_safe_browsing_allowlist_manager.h"
#include "android_webview/browser/safe_browsing/aw_safe_browsing_ui_manager.h"
#include "base/feature_list.h"
#include "components/power_metrics/android_battery_metrics.h"
#include "components/prefs/pref_change_registrar.h"
#include "components/prefs/pref_service.h"
#include "components/safe_browsing/android/remote_database_manager.h"
#include "components/safe_browsing/core/triggers/trigger_manager.h"
#include "content/public/browser/network_service_instance.h"
#include "net/log/net_log.h"
#include "services/network/network_service.h"
namespace android_webview {
namespace prefs {
// Used for Kerberos authentication.
extern const char kAuthAndroidNegotiateAccountType[];
extern const char kAuthServerAllowlist[];
} // namespace prefs
class AwContentsLifecycleNotifier;
class VisibilityMetricsLogger;
class AwBrowserProcess {
public:
AwBrowserProcess(AwFeatureListCreator* aw_feature_list_creator);
~AwBrowserProcess();
static AwBrowserProcess* GetInstance();
PrefService* local_state();
AwBrowserPolicyConnector* browser_policy_connector();
VisibilityMetricsLogger* visibility_metrics_logger();
void CreateBrowserPolicyConnector();
void CreateLocalState();
void InitSafeBrowsing();
safe_browsing::RemoteSafeBrowsingDatabaseManager* GetSafeBrowsingDBManager();
// Called on UI thread.
// This method lazily creates TriggerManager.
// Needs to happen after |safe_browsing_ui_manager_| is created.
safe_browsing::TriggerManager* GetSafeBrowsingTriggerManager();
// InitSafeBrowsing must be called first.
// Called on UI and IO threads.
AwSafeBrowsingAllowlistManager* GetSafeBrowsingAllowlistManager() const;
// InitSafeBrowsing must be called first.
// Called on UI and IO threads.
AwSafeBrowsingUIManager* GetSafeBrowsingUIManager() const;
static void RegisterNetworkContextLocalStatePrefs(
PrefRegistrySimple* pref_registry);
// Constructs HttpAuthDynamicParams based on |local_state_|.
network::mojom::HttpAuthDynamicParamsPtr CreateHttpAuthDynamicParams();
void PreMainMessageLoopRun();
static void TriggerMinidumpUploading();
static ApkType GetApkType();
private:
void CreateSafeBrowsingUIManager();
void CreateSafeBrowsingAllowlistManager();
void OnAuthPrefsChanged();
void OnLoseForeground();
// Must be destroyed after |local_state_|.
std::unique_ptr<AwBrowserPolicyConnector> browser_policy_connector_;
// If non-null, this object holds a pref store that will be taken by
// AwBrowserProcess to create the |local_state_|.
// The AwFeatureListCreator is owned by AwMainDelegate.
AwFeatureListCreator* aw_feature_list_creator_;
std::unique_ptr<PrefService> local_state_;
// Accessed on both UI and IO threads.
scoped_refptr<AwSafeBrowsingUIManager> safe_browsing_ui_manager_;
// Accessed on UI thread only.
std::unique_ptr<safe_browsing::TriggerManager> safe_browsing_trigger_manager_;
// These two are accessed on IO thread only.
scoped_refptr<safe_browsing::RemoteSafeBrowsingDatabaseManager>
safe_browsing_db_manager_;
bool safe_browsing_db_manager_started_ = false;
PrefChangeRegistrar pref_change_registrar_;
// TODO(amalova): Consider to make AllowlistManager per-profile.
// Accessed on UI and IO threads.
std::unique_ptr<AwSafeBrowsingAllowlistManager>
safe_browsing_allowlist_manager_;
std::unique_ptr<VisibilityMetricsLogger> visibility_metrics_logger_;
std::unique_ptr<power_metrics::AndroidBatteryMetrics> battery_metrics_;
std::unique_ptr<AwContentsLifecycleNotifier> aw_contents_lifecycle_notifier_;
DISALLOW_COPY_AND_ASSIGN(AwBrowserProcess);
};
} // namespace android_webview
#endif // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_PROCESS_H_