blob: 7b54688e552b673b32744ccec7d14013439fff6a [file] [log] [blame]
[email protected]3a80ea332012-01-09 19:53:291// Copyright (c) 2012 The Chromium Authors. All rights reserved.
license.botbf09a502008-08-24 00:55:552// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
initial.commit09911bf2008-07-26 23:55:294
5// When each service is created, we set a flag indicating this. At this point,
6// the service initialization could fail or succeed. This allows us to remember
7// if we tried to create a service, and not try creating it over and over if
8// the creation failed.
9
[email protected]58dca552009-06-17 00:35:0210#ifndef CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_
11#define CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_
initial.commit09911bf2008-07-26 23:55:2912
avie4d7b6f2015-12-26 00:59:1813#include <stdint.h>
14
dcheng4af48582016-04-19 00:29:3515#include <memory>
initial.commit09911bf2008-07-26 23:55:2916#include <string>
17
[email protected]6b4e6852012-02-14 04:02:4818#include "base/debug/stack_trace.h"
avie4d7b6f2015-12-26 00:59:1819#include "base/macros.h"
[email protected]80745e32012-05-08 01:22:1220#include "base/memory/ref_counted.h"
gab25894fe2017-05-30 03:40:3621#include "base/sequence_checker.h"
[email protected]4dcb7972013-06-28 15:15:4122#include "base/timer/timer.h"
avie4d7b6f2015-12-26 00:59:1823#include "build/build_config.h"
initial.commit09911bf2008-07-26 23:55:2924#include "chrome/browser/browser_process.h"
Scott Violet6200d332018-02-23 21:29:2325#include "chrome/common/buildflags.h"
Michael Giuffrida2dbce0d12017-09-02 03:30:5926#include "components/keep_alive_registry/keep_alive_state_observer.h"
Scott Violet9ae82892018-03-01 18:38:1227#include "components/nacl/common/buildflags.h"
brettwb1fc1b82016-02-02 00:19:0828#include "components/prefs/pref_change_registrar.h"
Scott Violetc8240b02018-03-08 22:03:5929#include "extensions/buildflags/buildflags.h"
Brett Wilson0748bf412016-11-22 17:55:4630#include "media/media_features.h"
bauerbecab4f52017-03-13 20:16:4131#include "ppapi/features/features.h"
Brett Wilson65f951c2016-11-03 22:06:1232#include "printing/features/features.h"
Ken Rockot54311e62018-02-10 19:01:5233#include "services/network/public/mojom/network_service.mojom.h"
[email protected]b112a4c2009-02-01 20:24:0134
wfh22e2f4a22015-04-28 22:39:2135class ChromeChildProcessWatcher;
reillyge471fab2014-08-29 01:58:4336class ChromeDeviceClient;
Scott Violet875789e2018-02-02 07:46:4837class ChromeMetricsServicesManagerClient;
[email protected]8bcdf072011-06-03 16:52:1538class ChromeResourceDispatcherHostDelegate;
dgozman54cc54e2016-02-23 03:47:3039class DevToolsAutoOpener;
[email protected]4475d232011-07-27 15:29:2040class RemoteDebuggingServer;
[email protected]b1de2c72013-02-06 02:45:4741class PrefRegistrySimple;
initial.commit09911bf2008-07-26 23:55:2942
bauerbecab4f52017-03-13 20:16:4143#if BUILDFLAG(ENABLE_PLUGINS)
[email protected]2366a3a2012-10-02 20:41:1444class PluginsResourceService;
45#endif
46
[email protected]0de615a2012-11-08 04:40:5947namespace base {
[email protected]2f3b1cc2014-03-17 23:07:1548class CommandLine;
[email protected]0de615a2012-11-08 04:40:5949class SequencedTaskRunner;
50}
51
[email protected]aa3dd492013-11-05 17:09:0952namespace extensions {
53class ExtensionsBrowserClient;
54}
55
[email protected]c027d6d2014-06-05 15:25:4056namespace gcm {
57class GCMDriver;
58}
59
drogerc690e8802015-09-21 14:29:1660namespace net_log {
61class ChromeNetLog;
62}
63
[email protected]5b869962011-09-20 19:49:3364namespace policy {
Scott Violetfdd6f352018-01-12 19:12:2965class ChromeBrowserPolicyConnector;
[email protected]a4179c2a2012-02-09 18:14:2166class PolicyService;
Scott Violetfdd6f352018-01-12 19:12:2967} // namespace policy
[email protected]fcf53572011-06-29 15:44:3768
initial.commit09911bf2008-07-26 23:55:2969// Real implementation of BrowserProcess that creates and returns the services.
[email protected]6618d1d2010-12-15 21:18:4770class BrowserProcessImpl : public BrowserProcess,
dgnfe075c82016-03-18 11:25:3571 public KeepAliveStateObserver {
initial.commit09911bf2008-07-26 23:55:2972 public:
[email protected]0de615a2012-11-08 04:40:5973 // |local_state_task_runner| must be a shutdown-blocking task runner.
Bernhard Bauer5533f9912017-11-06 17:56:0274 explicit BrowserProcessImpl(
75 base::SequencedTaskRunner* local_state_task_runner);
Daniel Chenga542fca2014-10-21 09:51:2976 ~BrowserProcessImpl() override;
initial.commit09911bf2008-07-26 23:55:2977
Scott Violet875789e2018-02-02 07:46:4878 // Called to complete initialization.
79 void Init();
80
[email protected]99907362012-01-11 05:41:4081 // Called before the browser threads are created.
Bernhard Bauer5533f9912017-11-06 17:56:0282 void PreCreateThreads(const base::CommandLine& command_line);
[email protected]2e5b60a22011-11-28 15:56:4183
[email protected]d2caaa22011-12-12 03:04:1584 // Called after the threads have been created but before the message loops
85 // starts running. Allows the browser process to do any initialization that
86 // requires all threads running.
87 void PreMainMessageLoopRun();
88
[email protected]2e5b60a22011-11-28 15:56:4189 // Most cleanup is done by these functions, driven from
90 // ChromeBrowserMain based on notifications from the content
91 // framework, rather than in the destructor, so that we can
92 // interleave cleanup with threads being stopped.
thestigd75ce5532015-10-05 22:08:3493#if !defined(OS_ANDROID)
[email protected]2e5b60a22011-11-28 15:56:4194 void StartTearDown();
[email protected]99907362012-01-11 05:41:4095 void PostDestroyThreads();
thestigd75ce5532015-10-05 22:08:3496#endif
[email protected]2e5b60a22011-11-28 15:56:4197
[email protected]80745e32012-05-08 01:22:1298 // BrowserProcess implementation.
Daniel Chenga542fca2014-10-21 09:51:2999 void ResourceDispatcherHostCreated() override;
100 void EndSession() override;
Gabriel Charetteb1af7ffb2017-07-27 06:10:35101 void FlushLocalStateAndReply(base::OnceClosure reply) override;
blundell695d61f2015-10-21 11:25:53102 metrics_services_manager::MetricsServicesManager* GetMetricsServicesManager()
103 override;
Daniel Chenga542fca2014-10-21 09:51:29104 metrics::MetricsService* metrics_service() override;
nzolghadrd87a308d2016-12-07 15:45:56105 rappor::RapporServiceImpl* rappor_service() override;
Daniel Chenga542fca2014-10-21 09:51:29106 IOThread* io_thread() override;
Matt Menke21b9cc62017-08-23 15:45:45107 SystemNetworkContextManager* system_network_context_manager() override;
Helen Li72c87ae42017-11-06 18:31:56108 content::NetworkConnectionTracker* network_connection_tracker() override;
Daniel Chenga542fca2014-10-21 09:51:29109 WatchDogThread* watchdog_thread() override;
110 ProfileManager* profile_manager() override;
111 PrefService* local_state() override;
112 net::URLRequestContextGetter* system_request_context() override;
blundell57bcfed2015-09-04 08:44:45113 variations::VariationsService* variations_service() override;
Daniel Chenga542fca2014-10-21 09:51:29114 BrowserProcessPlatformPart* platform_part() override;
115 extensions::EventRouterForwarder* extension_event_router_forwarder() override;
116 NotificationUIManager* notification_ui_manager() override;
miguelg23cd2dd72016-04-21 15:24:03117 NotificationPlatformBridge* notification_platform_bridge() override;
Scott Violetfdd6f352018-01-12 19:12:29118 policy::ChromeBrowserPolicyConnector* browser_policy_connector() override;
Daniel Chenga542fca2014-10-21 09:51:29119 policy::PolicyService* policy_service() override;
120 IconManager* icon_manager() override;
Daniel Chenga542fca2014-10-21 09:51:29121 GpuModeManager* gpu_mode_manager() override;
Pavel Feldmanc9ae59c2018-02-13 16:15:15122 void CreateDevToolsProtocolHandler() override;
dgozman54cc54e2016-02-23 03:47:30123 void CreateDevToolsAutoOpener() override;
Daniel Chenga542fca2014-10-21 09:51:29124 bool IsShuttingDown() override;
125 printing::PrintJobManager* print_job_manager() override;
126 printing::PrintPreviewDialogController* print_preview_dialog_controller()
127 override;
128 printing::BackgroundPrintingManager* background_printing_manager() override;
129 IntranetRedirectDetector* intranet_redirect_detector() override;
130 const std::string& GetApplicationLocale() override;
131 void SetApplicationLocale(const std::string& locale) override;
132 DownloadStatusUpdater* download_status_updater() override;
133 DownloadRequestLimiter* download_request_limiter() override;
134 BackgroundModeManager* background_mode_manager() override;
135 void set_background_mode_manager_for_test(
dcheng4af48582016-04-19 00:29:35136 std::unique_ptr<BackgroundModeManager> manager) override;
Daniel Chenga542fca2014-10-21 09:51:29137 StatusTray* status_tray() override;
vakh9a474d832015-11-13 01:43:09138 safe_browsing::SafeBrowsingService* safe_browsing_service() override;
Daniel Chenga542fca2014-10-21 09:51:29139 safe_browsing::ClientSideDetectionService* safe_browsing_detection_service()
140 override;
csharrison8a923d62017-03-10 15:42:13141 subresource_filter::ContentRulesetService*
142 subresource_filter_ruleset_service() override;
Sophie Changf453c0522017-11-03 06:33:49143 optimization_guide::OptimizationGuideService* optimization_guide_service()
144 override;
[email protected]6641bf662009-08-21 00:34:09145
Michael Giuffridadc8030c2017-08-02 13:22:44146#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
dchenge1bc7982014-10-30 00:32:40147 void StartAutoupdateTimer() override;
[email protected]3cdacd42010-04-30 18:55:53148#endif
[email protected]bd48c2b02010-04-09 20:32:42149
drogerc690e8802015-09-21 14:29:16150 net_log::ChromeNetLog* net_log() override;
Daniel Chenga542fca2014-10-21 09:51:29151 component_updater::ComponentUpdateService* component_updater() override;
bauerb22951c32015-02-12 13:18:17152 component_updater::SupervisedUserWhitelistInstaller*
153 supervised_user_whitelist_installer() override;
Daniel Chenga542fca2014-10-21 09:51:29154 MediaFileSystemRegistry* media_file_system_registry() override;
Brett Wilson0748bf412016-11-22 17:55:46155#if BUILDFLAG(ENABLE_WEBRTC)
Daniel Chenga542fca2014-10-21 09:51:29156 WebRtcLogUploader* webrtc_log_uploader() override;
[email protected]bbf32c52013-06-03 14:05:52157#endif
Daniel Chenga542fca2014-10-21 09:51:29158 network_time::NetworkTimeTracker* network_time_tracker() override;
159 gcm::GCMDriver* gcm_driver() override;
lpyfedf65a2017-06-01 01:41:24160 resource_coordinator::TabManager* GetTabManager() override;
pmonette9fa59e882016-02-10 00:12:19161 shell_integration::DefaultWebClientState CachedDefaultWebClientState()
grtf14398c2015-07-14 15:11:44162 override;
vitaliiiee920542016-11-25 15:20:23163 physical_web::PhysicalWebDataSource* GetPhysicalWebDataSource() override;
Sam McNallye36abbc2017-07-20 01:04:28164 prefs::InProcessPrefServiceFactory* pref_service_factory() const override;
[email protected]ca167a32011-09-30 15:19:11165
[email protected]b1de2c72013-02-06 02:45:47166 static void RegisterPrefs(PrefRegistrySimple* registry);
167
initial.commit09911bf2008-07-26 23:55:29168 private:
dgnfe075c82016-03-18 11:25:35169 // KeepAliveStateObserver implementation
170 void OnKeepAliveStateChanged(bool is_keeping_alive) override;
171 void OnKeepAliveRestartStateChanged(bool can_restart) override;
172
[email protected]0b565182011-03-02 18:11:15173 void CreateWatchdogThread();
initial.commit09911bf2008-07-26 23:55:29174 void CreateProfileManager();
initial.commit09911bf2008-07-26 23:55:29175 void CreateLocalState();
initial.commit09911bf2008-07-26 23:55:29176 void CreateIconManager();
[email protected]c4ff4952010-01-08 19:12:47177 void CreateIntranetRedirectDetector();
miguelg23cd2dd72016-04-21 15:24:03178 void CreateNotificationPlatformBridge();
[email protected]29672ab2009-10-30 03:44:03179 void CreateNotificationUIManager();
[email protected]d8ce31e2012-12-19 05:09:21180 void CreatePrintPreviewDialogController();
[email protected]68f88b992011-05-07 02:01:39181 void CreateBackgroundPrintingManager();
[email protected]462a0ff2011-06-02 17:15:34182 void CreateSafeBrowsingService();
engedyc5ef21ad2016-06-17 20:22:27183 void CreateSubresourceFilterRulesetService();
Sophie Changf453c0522017-11-03 06:33:49184 void CreateOptimizationGuideService();
[email protected]9e7f015f2011-05-28 00:24:25185 void CreateStatusTray();
186 void CreateBackgroundModeManager();
[email protected]c027d6d2014-06-05 15:25:40187 void CreateGCMDriver();
mattreynoldsf1aab392016-10-07 00:17:07188 void CreatePhysicalWebDataSource();
[email protected]a7a5e992010-12-09 23:39:51189
[email protected]40850a52011-05-26 22:07:35190 void ApplyAllowCrossOriginAuthPromptPolicy();
[email protected]b61f62a2011-11-01 02:02:10191 void ApplyDefaultBrowserPolicy();
Lei Zhang4736dd22017-07-07 01:38:17192#if !defined(OS_ANDROID)
[email protected]459158c2013-11-14 00:25:15193 void ApplyMetricsReportingPolicy();
Lei Zhang4736dd22017-07-07 01:38:17194#endif
[email protected]419a0572011-04-18 22:21:46195
grtf14398c2015-07-14 15:11:44196 void CacheDefaultWebClientState();
197
dgnfe075c82016-03-18 11:25:35198 // Methods called to control our lifetime. The browser process can be "pinned"
199 // to make sure it keeps running.
200 void Pin();
201 void Unpin();
202
Scott Violet875789e2018-02-02 07:46:48203 // |metrics_services_manager_| owns this.
204 ChromeMetricsServicesManagerClient* metrics_services_manager_client_ =
205 nullptr;
206
dcheng4af48582016-04-19 00:29:35207 std::unique_ptr<metrics_services_manager::MetricsServicesManager>
blundell695d61f2015-10-21 11:25:53208 metrics_services_manager_;
[email protected]2a172e42014-02-21 04:06:10209
dcheng4af48582016-04-19 00:29:35210 std::unique_ptr<IOThread> io_thread_;
initial.commit09911bf2008-07-26 23:55:29211
Scott Violetfdd6f352018-01-12 19:12:29212 bool created_watchdog_thread_ = false;
dcheng4af48582016-04-19 00:29:35213 std::unique_ptr<WatchDogThread> watchdog_thread_;
[email protected]0b565182011-03-02 18:11:15214
Scott Violetfdd6f352018-01-12 19:12:29215 bool created_browser_policy_connector_ = false;
[email protected]3b19e8e2012-10-17 19:15:49216 // Must be destroyed after |local_state_|.
Scott Violetfdd6f352018-01-12 19:12:29217 std::unique_ptr<policy::ChromeBrowserPolicyConnector>
218 browser_policy_connector_;
[email protected]8d6b2432012-03-31 12:11:18219
Scott Violetfdd6f352018-01-12 19:12:29220 bool created_profile_manager_ = false;
dcheng4af48582016-04-19 00:29:35221 std::unique_ptr<ProfileManager> profile_manager_;
initial.commit09911bf2008-07-26 23:55:29222
dcheng4af48582016-04-19 00:29:35223 std::unique_ptr<PrefService> local_state_;
initial.commit09911bf2008-07-26 23:55:29224
Matt Menke21b9cc62017-08-23 15:45:45225 std::unique_ptr<SystemNetworkContextManager> system_network_context_manager_;
226
Helen Li72c87ae42017-11-06 18:31:56227 std::unique_ptr<content::NetworkConnectionTracker>
228 network_connection_tracker_;
229
Scott Violetfdd6f352018-01-12 19:12:29230 bool created_icon_manager_ = false;
dcheng4af48582016-04-19 00:29:35231 std::unique_ptr<IconManager> icon_manager_;
initial.commit09911bf2008-07-26 23:55:29232
dcheng4af48582016-04-19 00:29:35233 std::unique_ptr<GpuModeManager> gpu_mode_manager_;
[email protected]e6933d2a2013-03-12 22:32:21234
brettw00899e62016-11-12 02:10:17235#if BUILDFLAG(ENABLE_EXTENSIONS)
dcheng4af48582016-04-19 00:29:35236 std::unique_ptr<extensions::ExtensionsBrowserClient>
237 extensions_browser_client_;
[email protected]84b7a552014-07-19 04:52:06238
[email protected]5a38dfd2012-07-23 23:22:10239 scoped_refptr<extensions::EventRouterForwarder>
[email protected]3ce02412011-03-01 12:01:15240 extension_event_router_forwarder_;
241
dcheng4af48582016-04-19 00:29:35242 std::unique_ptr<MediaFileSystemRegistry> media_file_system_registry_;
[email protected]84b7a552014-07-19 04:52:06243#endif
244
[email protected]81054f812012-08-30 00:47:09245#if !defined(OS_ANDROID)
dcheng4af48582016-04-19 00:29:35246 std::unique_ptr<RemoteDebuggingServer> remote_debugging_server_;
247 std::unique_ptr<DevToolsAutoOpener> devtools_auto_opener_;
[email protected]8b60ca722013-07-19 01:29:02248#endif
249
Brett Wilson65f951c2016-11-03 22:06:12250#if BUILDFLAG(ENABLE_PRINT_PREVIEW)
[email protected]d8ce31e2012-12-19 05:09:21251 scoped_refptr<printing::PrintPreviewDialogController>
252 print_preview_dialog_controller_;
[email protected]dbeebd52010-11-16 20:34:16253
dcheng4af48582016-04-19 00:29:35254 std::unique_ptr<printing::BackgroundPrintingManager>
255 background_printing_manager_;
[email protected]84b7a552014-07-19 04:52:06256#endif
[email protected]68f88b992011-05-07 02:01:39257
Jinsong Fan0d46f952018-01-31 18:22:58258#if !defined(OS_ANDROID)
[email protected]29672ab2009-10-30 03:44:03259 // Manager for desktop notification UI.
Scott Violetfdd6f352018-01-12 19:12:29260 bool created_notification_ui_manager_ = false;
dcheng4af48582016-04-19 00:29:35261 std::unique_ptr<NotificationUIManager> notification_ui_manager_;
Jinsong Fan0d46f952018-01-31 18:22:58262#endif
[email protected]29672ab2009-10-30 03:44:03263
dcheng4af48582016-04-19 00:29:35264 std::unique_ptr<IntranetRedirectDetector> intranet_redirect_detector_;
initial.commit09911bf2008-07-26 23:55:29265
dcheng4af48582016-04-19 00:29:35266 std::unique_ptr<StatusTray> status_tray_;
[email protected]9e7f015f2011-05-28 00:24:25267
Scott Violetfdd6f352018-01-12 19:12:29268 bool created_notification_bridge_ = false;
miguelg23cd2dd72016-04-21 15:24:03269 std::unique_ptr<NotificationPlatformBridge> notification_bridge_;
270
Denis Kuznetsov32099f32017-12-15 14:04:57271#if BUILDFLAG(ENABLE_BACKGROUND_MODE)
dcheng4af48582016-04-19 00:29:35272 std::unique_ptr<BackgroundModeManager> background_mode_manager_;
thestige4155842014-10-20 18:58:02273#endif
[email protected]3ba226c52011-10-27 22:50:24274
Scott Violetfdd6f352018-01-12 19:12:29275 bool created_safe_browsing_service_ = false;
vakh9a474d832015-11-13 01:43:09276 scoped_refptr<safe_browsing::SafeBrowsingService> safe_browsing_service_;
[email protected]462a0ff2011-06-02 17:15:34277
Scott Violetfdd6f352018-01-12 19:12:29278 bool created_subresource_filter_ruleset_service_ = false;
csharrison8a923d62017-03-10 15:42:13279 std::unique_ptr<subresource_filter::ContentRulesetService>
engedyc5ef21ad2016-06-17 20:22:27280 subresource_filter_ruleset_service_;
281
Scott Violetfdd6f352018-01-12 19:12:29282 bool created_optimization_guide_service_ = false;
Sophie Changf453c0522017-11-03 06:33:49283 std::unique_ptr<optimization_guide::OptimizationGuideService>
284 optimization_guide_service_;
285
Scott Violetfdd6f352018-01-12 19:12:29286 bool shutting_down_ = false;
initial.commit09911bf2008-07-26 23:55:29287
Scott Violetfdd6f352018-01-12 19:12:29288 bool tearing_down_ = false;
csharrison058781a2015-11-24 21:44:03289
initial.commit09911bf2008-07-26 23:55:29290 // Ensures that all the print jobs are finished before closing the browser.
dcheng4af48582016-04-19 00:29:35291 std::unique_ptr<printing::PrintJobManager> print_job_manager_;
initial.commit09911bf2008-07-26 23:55:29292
[email protected]d70539de2009-06-24 22:17:06293 std::string locale_;
initial.commit09911bf2008-07-26 23:55:29294
[email protected]073ed7b2010-09-27 09:20:02295 // Download status updates (like a changing application icon on dock/taskbar)
296 // are global per-application. DownloadStatusUpdater does no work in the ctor
297 // so we don't have to worry about lazy initialization.
dcheng4af48582016-04-19 00:29:35298 std::unique_ptr<DownloadStatusUpdater> download_status_updater_;
[email protected]073ed7b2010-09-27 09:20:02299
[email protected]254ed742011-08-16 18:45:27300 scoped_refptr<DownloadRequestLimiter> download_request_limiter_;
301
[email protected]0de615a2012-11-08 04:40:59302 // Sequenced task runner for local state related I/O tasks.
303 const scoped_refptr<base::SequencedTaskRunner> local_state_task_runner_;
304
[email protected]2a7e7c152010-10-01 20:12:09305 // Ensures that the observers of plugin/print disable/enable state
[email protected]492d2142010-09-10 13:55:18306 // notifications are properly added and removed.
[email protected]2a7e7c152010-10-01 20:12:09307 PrefChangeRegistrar pref_change_registrar_;
[email protected]492d2142010-09-10 13:55:18308
[email protected]b2fcd0e2010-12-01 15:19:40309 // Lives here so can safely log events on shutdown.
dcheng4af48582016-04-19 00:29:35310 std::unique_ptr<net_log::ChromeNetLog> net_log_;
[email protected]b2fcd0e2010-12-01 15:19:40311
dcheng4af48582016-04-19 00:29:35312 std::unique_ptr<ChromeResourceDispatcherHostDelegate>
[email protected]8bcdf072011-06-03 16:52:15313 resource_dispatcher_host_delegate_;
[email protected]1459fb62011-05-25 19:03:27314
Michael Giuffridadc8030c2017-08-02 13:22:44315#if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
danakj8c3eb802015-09-24 07:53:00316 base::RepeatingTimer autoupdate_timer_;
[email protected]bd48c2b02010-04-09 20:32:42317
318 // Gets called by autoupdate timer to see if browser needs restart and can be
319 // restarted, and if that's the case, restarts the browser.
320 void OnAutoupdateTimer();
Greg Thompsonf9ce2502017-11-14 00:13:35321 bool IsRunningInBackground() const;
322 void OnPendingRestartResult(bool is_update_pending_restart);
[email protected]f6e6d2e2011-10-28 18:39:22323 void RestartBackgroundInstance();
Michael Giuffridadc8030c2017-08-02 13:22:44324#endif // defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
[email protected]bd48c2b02010-04-09 20:32:42325
[email protected]9f108f22013-04-09 00:39:56326 // component updater is normally not used under ChromeOS due
327 // to concerns over integrity of data shared between profiles,
328 // but some users of component updater only install per-user.
dcheng4af48582016-04-19 00:29:35329 std::unique_ptr<component_updater::ComponentUpdateService> component_updater_;
thestig11b815e92014-08-26 00:32:14330
dcheng4af48582016-04-19 00:29:35331 std::unique_ptr<component_updater::SupervisedUserWhitelistInstaller>
bauerb22951c32015-02-12 13:18:17332 supervised_user_whitelist_installer_;
333
bauerbecab4f52017-03-13 20:16:41334#if BUILDFLAG(ENABLE_PLUGINS)
dcheng4af48582016-04-19 00:29:35335 std::unique_ptr<PluginsResourceService> plugins_resource_service_;
[email protected]2366a3a2012-10-02 20:41:14336#endif
[email protected]e9613b52012-11-27 22:35:13337
dcheng4af48582016-04-19 00:29:35338 std::unique_ptr<BrowserProcessPlatformPart> platform_part_;
[email protected]7cad6b0d2013-04-25 20:29:32339
[email protected]6b4e6852012-02-14 04:02:48340 // TODO(eroman): Remove this when done debugging 113031. This tracks
341 // the callstack which released the final module reference count.
342 base::debug::StackTrace release_last_reference_callstack_;
343
Brett Wilson0748bf412016-11-22 17:55:46344#if BUILDFLAG(ENABLE_WEBRTC)
[email protected]bbf32c52013-06-03 14:05:52345 // Lazily initialized.
dcheng4af48582016-04-19 00:29:35346 std::unique_ptr<WebRtcLogUploader> webrtc_log_uploader_;
[email protected]bbf32c52013-06-03 14:05:52347#endif
348
dcheng4af48582016-04-19 00:29:35349 std::unique_ptr<network_time::NetworkTimeTracker> network_time_tracker_;
[email protected]72f93712014-05-19 15:10:39350
dcheng4af48582016-04-19 00:29:35351 std::unique_ptr<gcm::GCMDriver> gcm_driver_;
[email protected]c027d6d2014-06-05 15:25:40352
dcheng4af48582016-04-19 00:29:35353 std::unique_ptr<ChromeChildProcessWatcher> child_process_watcher_;
wfh22e2f4a22015-04-28 22:39:21354
dcheng4af48582016-04-19 00:29:35355 std::unique_ptr<ChromeDeviceClient> device_client_;
reillyge471fab2014-08-29 01:58:43356
hajimehoshi049996b2016-04-26 07:23:35357#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
Georges Khalil293593a62015-07-13 14:37:14358 // Any change to this #ifdef must be reflected as well in
lpyfedf65a2017-06-01 01:41:24359 // chrome/browser/resource_coordinator/tab_manager_browsertest.cc
360 std::unique_ptr<resource_coordinator::TabManager> tab_manager_;
georgesak7b5281922015-06-30 13:25:17361#endif
362
Scott Violetfdd6f352018-01-12 19:12:29363 shell_integration::DefaultWebClientState cached_default_web_client_state_ =
364 shell_integration::UNKNOWN_DEFAULT;
grtf14398c2015-07-14 15:11:44365
vitaliiiee920542016-11-25 15:20:23366 std::unique_ptr<physical_web::PhysicalWebDataSource>
367 physical_web_data_source_;
mattreynoldsf1aab392016-10-07 00:17:07368
Sam McNallye36abbc2017-07-20 01:04:28369 std::unique_ptr<prefs::InProcessPrefServiceFactory> pref_service_factory_;
370
gab25894fe2017-05-30 03:40:36371 SEQUENCE_CHECKER(sequence_checker_);
372
[email protected]58dca552009-06-17 00:35:02373 DISALLOW_COPY_AND_ASSIGN(BrowserProcessImpl);
initial.commit09911bf2008-07-26 23:55:29374};
375
[email protected]58dca552009-06-17 00:35:02376#endif // CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_