13f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// When each service is created, we set a flag indicating this. At this point, 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the service initialization could fail or succeed. This allows us to remember 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// if we tried to create a service, and not try creating it over and over if 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the creation failed. 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_ 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_ 123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h" 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/message_loop.h" 193f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "base/threading/non_thread_safe.h" 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/timer.h" 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/browser_process.h" 223345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/download/download_status_updater.h" 233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/prefs/pref_change_registrar.h" 24dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/prefs/pref_member.h" 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/tab_contents/thumbnail_generator.h" 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_observer.h" 27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_registrar.h" 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "ipc/ipc_message.h" 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 3021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass ChromeNetLog; 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass CommandLine; 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass DevToolsHttpProtocolHandler; 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass DevToolsProtocolHandler; 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FilePath; 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass NotificationService; 3621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass PluginDataRemover; 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TabCloseableStateWatcher; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Real implementation of BrowserProcess that creates and returns the services. 4021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass BrowserProcessImpl : public BrowserProcess, 413f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen public base::NonThreadSafe, 4221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen public NotificationObserver { 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch explicit BrowserProcessImpl(const CommandLine& command_line); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual ~BrowserProcessImpl(); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void EndSession(); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 4921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // BrowserProcess methods 503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual ResourceDispatcherHost* resource_dispatcher_host(); 513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual MetricsService* metrics_service(); 523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual IOThread* io_thread(); 533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual base::Thread* file_thread(); 543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual base::Thread* db_thread(); 553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual base::Thread* process_launcher_thread(); 563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual base::Thread* cache_thread(); 57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual base::Thread* gpu_thread(); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(USE_X11) 593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual base::Thread* background_x11_thread(); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 61dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual WatchDogThread* watchdog_thread(); 623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual ProfileManager* profile_manager(); 633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual PrefService* local_state(); 643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual DevToolsManager* devtools_manager(); 653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual SidebarManager* sidebar_manager(); 6672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual ui::Clipboard* clipboard(); 67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual net::URLRequestContextGetter* system_request_context(); 68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#if defined(OS_CHROMEOS) 69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen virtual chromeos::ProxyConfigServiceImpl* 70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen chromeos_proxy_config_service_impl(); 71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif // defined(OS_CHROMEOS) 72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual ExtensionEventRouterForwarder* extension_event_router_forwarder(); 733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual NotificationUIManager* notification_ui_manager(); 74dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual policy::BrowserPolicyConnector* browser_policy_connector(); 753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual IconManager* icon_manager(); 763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual ThumbnailGenerator* GetThumbnailGenerator(); 773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual AutomationProviderList* InitAutomationProviderList(); 7872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void InitDevToolsHttpProtocolHandler( 7972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const std::string& ip, 8072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen int port, 8172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const std::string& frontend_url); 8272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual void InitDevToolsLegacyProtocolHandler(int port); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual unsigned int AddRefModule(); 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual unsigned int ReleaseModule(); 853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual bool IsShuttingDown(); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual printing::PrintJobManager* print_job_manager(); 874a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch virtual printing::PrintPreviewTabController* print_preview_tab_controller(); 883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual GoogleURLTracker* google_url_tracker(); 893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual IntranetRedirectDetector* intranet_redirect_detector(); 903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual const std::string& GetApplicationLocale(); 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetApplicationLocale(const std::string& locale); 923345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual DownloadStatusUpdater* download_status_updater(); 933345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual base::WaitableEvent* shutdown_event(); 943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick virtual TabCloseableStateWatcher* tab_closeable_state_watcher(); 9521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual safe_browsing::ClientSideDetectionService* 9621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen safe_browsing_detection_service(); 97dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen virtual bool plugin_finder_disabled() const; 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // NotificationObserver methods 10021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual void Observe(NotificationType type, 10121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen const NotificationSource& source, 10221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen const NotificationDetails& details); 10321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) 10521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen virtual void StartAutoupdateTimer(); 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 10872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen virtual ChromeNetLog* net_log(); 10972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(IPC_MESSAGE_LOG_ENABLED) 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetIPCLoggingEnabled(bool enable); 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void ClearLocalState(const FilePath& profile_path); 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool ShouldClearLocalState(FilePath* profile_path); 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateResourceDispatcherHost(); 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateMetricsService(); 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateIOThread(); 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static void CleanupOnIOThread(); 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen void WaitForPluginDataRemoverToFinish(); 12521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateFileThread(); 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateDBThread(); 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateProcessLauncherThread(); 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateCacheThread(); 130ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void CreateGpuThread(); 131dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void CreateWatchdogThread(); 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateTemplateURLModel(); 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateProfileManager(); 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateWebDataService(); 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateLocalState(); 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateViewedPageTracker(); 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateIconManager(); 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateDevToolsManager(); 1393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick void CreateSidebarManager(); 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateGoogleURLTracker(); 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateIntranetRedirectDetector(); 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateNotificationUIManager(); 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateStatusTrayManager(); 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void CreateTabCloseableStateWatcher(); 1454a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void CreatePrintPreviewTabController(); 14621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen void CreateSafeBrowsingDetectionService(); 14721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 14821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen bool IsSafeBrowsingDetectionServiceEnabled(); 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 150ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen void ApplyDisabledSchemesPolicy(); 151ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(IPC_MESSAGE_LOG_ENABLED) 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetIPCLoggingEnabledForChildProcesses(bool enabled); 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_resource_dispatcher_host_; 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<ResourceDispatcherHost> resource_dispatcher_host_; 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_metrics_service_; 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<MetricsService> metrics_service_; 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_io_thread_; 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<IOThread> io_thread_; 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(USE_X11) 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This shares a created flag with the IO thread. 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<base::Thread> background_x11_thread_; 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_file_thread_; 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<base::Thread> file_thread_; 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_db_thread_; 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<base::Thread> db_thread_; 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_process_launcher_thread_; 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<base::Thread> process_launcher_thread_; 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_cache_thread_; 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<base::Thread> cache_thread_; 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 181ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen bool created_gpu_thread_; 182ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_ptr<base::Thread> gpu_thread_; 183ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 184dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen bool created_watchdog_thread_; 185dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_ptr<WatchDogThread> watchdog_thread_; 186dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_profile_manager_; 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<ProfileManager> profile_manager_; 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_local_state_; 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<PrefService> local_state_; 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_icon_manager_; 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<IconManager> icon_manager_; 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 196dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_refptr<ExtensionEventRouterForwarder> 197dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen extension_event_router_forwarder_; 198dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 19972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_refptr<DevToolsHttpProtocolHandler> devtools_http_handler_; 20072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 20172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_refptr<DevToolsProtocolHandler> devtools_legacy_handler_; 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_devtools_manager_; 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_refptr<DevToolsManager> devtools_manager_; 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick bool created_sidebar_manager_; 2073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick scoped_refptr<SidebarManager> sidebar_manager_; 2083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 209dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen bool created_browser_policy_connector_; 210dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen scoped_ptr<policy::BrowserPolicyConnector> browser_policy_connector_; 2113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 2124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch scoped_refptr<printing::PrintPreviewTabController> 2134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch print_preview_tab_controller_; 2144a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 21572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<ui::Clipboard> clipboard_; 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Manager for desktop notification UI. 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool created_notification_ui_manager_; 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<NotificationUIManager> notification_ui_manager_; 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<AutomationProviderList> automation_provider_list_; 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<GoogleURLTracker> google_url_tracker_; 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<IntranetRedirectDetector> intranet_redirect_detector_; 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<NotificationService> main_notification_service_; 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<TabCloseableStateWatcher> tab_closeable_state_watcher_; 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 23021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen bool created_safe_browsing_detection_service_; 23121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen scoped_ptr<safe_browsing::ClientSideDetectionService> 23221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen safe_browsing_detection_service_; 23321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch unsigned int module_ref_count_; 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool did_start_; 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Ensures that all the print jobs are finished before closing the browser. 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<printing::PrintJobManager> print_job_manager_; 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string locale_; 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool checked_for_new_frames_; 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool using_new_frames_; 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // This service just sits around and makes thumbnails for tabs. It does 2463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // nothing in the constructor so we don't have to worry about lazy init. 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ThumbnailGenerator thumbnail_generator_; 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 2493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // Download status updates (like a changing application icon on dock/taskbar) 2503345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // are global per-application. DownloadStatusUpdater does no work in the ctor 2513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // so we don't have to worry about lazy initialization. 2523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick DownloadStatusUpdater download_status_updater_; 2533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // An event that notifies when we are shutting-down. 255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<base::WaitableEvent> shutdown_event_; 256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 257731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Ensures that the observers of plugin/print disable/enable state 2583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick // notifications are properly added and removed. 259731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick PrefChangeRegistrar pref_change_registrar_; 2603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 26121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Lives here so can safely log events on shutdown. 26221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen scoped_ptr<ChromeNetLog> net_log_; 26321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 26421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen NotificationRegistrar notification_registrar_; 26521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen scoped_refptr<PluginDataRemover> plugin_data_remover_; 26621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 267dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen // Monitors the state of the 'DisablePluginFinder' policy. 268dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen BooleanPrefMember plugin_finder_disabled_pref_; 269dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 270ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen // Monitors the list of disabled schemes policy. 271ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen ListPrefMember disabled_schemes_pref_; 272ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch base::RepeatingTimer<BrowserProcessImpl> autoupdate_timer_; 275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Gets called by autoupdate timer to see if browser needs restart and can be 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // restarted, and if that's the case, restarts the browser. 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void OnAutoupdateTimer(); 279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool CanAutorestartForUpdate() const; 280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void RestartPersistentInstance(); 281c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // defined(OS_WIN) || defined(OS_LINUX) 282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 283ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#if defined(OS_CHROMEOS) 284ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen scoped_refptr<chromeos::ProxyConfigServiceImpl> 285ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen chromeos_proxy_config_service_impl_; 286ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif 287ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DISALLOW_COPY_AND_ASSIGN(BrowserProcessImpl); 289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif // CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_ 292