blob: ee4ece45e5f914ea4d4e33170a2f4b17c73bacb5 [file] [log] [blame]
// 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_browser_context.h"
#include "android_webview/browser/aw_feature_list_creator.h"
#include "android_webview/browser/safe_browsing/aw_safe_browsing_ui_manager.h"
#include "android_webview/browser/safe_browsing/aw_safe_browsing_whitelist_manager.h"
#include "base/feature_list.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/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 kAuthServerWhitelist[];
} // namespace prefs
class AwBrowserProcess {
public:
AwBrowserProcess(AwFeatureListCreator* aw_feature_list_creator);
~AwBrowserProcess();
static AwBrowserProcess* GetInstance();
PrefService* local_state();
AwBrowserPolicyConnector* browser_policy_connector();
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.
AwSafeBrowsingWhitelistManager* GetSafeBrowsingWhitelistManager() 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();
private:
void CreateSafeBrowsingUIManager();
void CreateSafeBrowsingWhitelistManager();
void OnAuthPrefsChanged();
// 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_;
std::unique_ptr<AwBrowserPolicyConnector> browser_policy_connector_;
// 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 WhitelistManager per-profile.
// Accessed on UI and IO threads.
std::unique_ptr<AwSafeBrowsingWhitelistManager>
safe_browsing_whitelist_manager_;
DISALLOW_COPY_AND_ASSIGN(AwBrowserProcess);
};
} // namespace android_webview
#endif // ANDROID_WEBVIEW_BROWSER_AW_BROWSER_PROCESS_H_