15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This interface is for managing the global services of the application. Each
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// service is lazily created when requested the first time. The service getters
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// will return NULL if the service is not available, so callers must check for
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// this condition.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_BROWSER_PROCESS_H_
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_BROWSER_PROCESS_H_
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h"
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/browser_process_platform_part.h"
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/host_desktop.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BackgroundModeManager;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ChromeNetLog;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CRLSetFetcher;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DownloadRequestLimiter;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DownloadStatusUpdater;
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class GLStringManager;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class GpuModeManager;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IconManager;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IntranetRedirectDetector;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IOThread;
30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class MediaFileSystemRegistry;
3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class MetricsServicesManager;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class NotificationUIManager;
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefRegistrySimple;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefService;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProfileManager;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SafeBrowsingService;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StatusTray;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class WatchDogThread;
40868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(ENABLE_WEBRTC)
41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class WebRtcLogUploader;
42868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome_variations {
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class VariationsService;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace component_updater {
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ComponentUpdateService;
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PnaclComponentInstaller;
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EventRouterForwarder;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace gcm {
5846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class GCMDriver;
5946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
6046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace message_center {
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MessageCenter;
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace metrics {
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass MetricsService;
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequestContextGetter;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace network_time {
7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)class NetworkTimeTracker;
7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace policy {
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserPolicyConnector;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PolicyService;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace prerender {
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrerenderTracker;
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace printing {
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BackgroundPrintingManager;
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrintJobManager;
892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrintPreviewDialogController;
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace rappor {
93a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class RapporService;
94a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}
95a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace safe_browsing {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ClientSideDetectionService;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOT THREAD SAFE, call only from the main thread.
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// These functions shouldn't return NULL unless otherwise noted.
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowserProcess {
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserProcess();
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~BrowserProcess();
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Called when the ResourceDispatcherHost object is created by content.
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ResourceDispatcherHostCreated() = 0;
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invoked when the user is logging out/shutting down. When logging off we may
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // not have enough time to do a normal shutdown. This method is invoked prior
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // to normal shutdown and saves any state that must be saved before we are
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // continue shutdown.
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void EndSession() = 0;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Gets the manager for the various metrics-related services, constructing it
11746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // if necessary.
11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual MetricsServicesManager* GetMetricsServicesManager() = 0;
11946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Services: any of these getters may return NULL
1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  virtual metrics::MetricsService* metrics_service() = 0;
122a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual rappor::RapporService* rappor_service() = 0;
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ProfileManager* profile_manager() = 0;
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual PrefService* local_state() = 0;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual net::URLRequestContextGetter* system_request_context() = 0;
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual chrome_variations::VariationsService* variations_service() = 0;
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual BrowserProcessPlatformPart* platform_part() = 0;
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual extensions::EventRouterForwarder*
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      extension_event_router_forwarder() = 0;
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the manager for desktop notifications.
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual NotificationUIManager* notification_ui_manager() = 0;
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // MessageCenter is a global list of currently displayed notifications.
1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual message_center::MessageCenter* message_center() = 0;
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the state object for the thread that we perform I/O
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // coordination on (network requests, communication with renderers,
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // etc.
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Can be NULL close to startup and shutdown.
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  //
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // NOTE: If you want to post a task to the IO thread, use
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // BrowserThread::PostTask (or other variants).
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual IOThread* io_thread() = 0;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the thread that is used for health check of all browser threads.
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WatchDogThread* watchdog_thread() = 0;
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Starts and manages the policy system.
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual policy::BrowserPolicyConnector* browser_policy_connector() = 0;
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This is the main interface for chromium components to retrieve policy
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // information from the policy system.
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual policy::PolicyService* policy_service() = 0;
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual IconManager* icon_manager() = 0;
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual GLStringManager* gl_string_manager() = 0;
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual GpuModeManager* gpu_mode_manager() = 0;
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CreateDevToolsHttpProtocolHandler(
1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      chrome::HostDesktopType host_desktop_type,
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& ip,
168a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      int port) = 0;
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual unsigned int AddRefModule() = 0;
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual unsigned int ReleaseModule() = 0;
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool IsShuttingDown() = 0;
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual printing::PrintJobManager* print_job_manager() = 0;
1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual printing::PrintPreviewDialogController*
1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      print_preview_dialog_controller() = 0;
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual printing::BackgroundPrintingManager*
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      background_printing_manager() = 0;
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual IntranetRedirectDetector* intranet_redirect_detector() = 0;
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the locale used by the application.
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual const std::string& GetApplicationLocale() = 0;
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetApplicationLocale(const std::string& locale) = 0;
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual DownloadStatusUpdater* download_status_updater() = 0;
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual DownloadRequestLimiter* download_request_limiter() = 0;
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the object that manages background applications.
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual BackgroundModeManager* background_mode_manager() = 0;
192eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual void set_background_mode_manager_for_test(
193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      scoped_ptr<BackgroundModeManager> manager) = 0;
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the StatusTray, which provides an API for displaying status icons
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // in the system status tray. Returns NULL if status icons are not supported
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // on this platform (or this is a unit test).
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual StatusTray* status_tray() = 0;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns the SafeBrowsing service.
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SafeBrowsingService* safe_browsing_service() = 0;
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns an object which handles communication with the SafeBrowsing
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // client-side detection servers.
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual safe_browsing::ClientSideDetectionService*
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      safe_browsing_detection_service() = 0;
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This will start a timer that, if Chrome is in persistent mode, will check
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // whether an update is available, and if that's the case, restart the
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // browser. Note that restart code will strip some of the command line keys
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and all loose values from the cl this instance of Chrome was launched with,
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // and add the command line key that will force Chrome to start in the
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // background mode. For the full list of "blacklisted" keys, refer to
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |kSwitchesToRemoveOnAutorestart| array in browser_process_impl.cc.
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void StartAutoupdateTimer() = 0;
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ChromeNetLog* net_log() = 0;
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual prerender::PrerenderTracker* prerender_tracker() = 0;
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual component_updater::ComponentUpdateService* component_updater() = 0;
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual CRLSetFetcher* crl_set_fetcher() = 0;
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual component_updater::PnaclComponentInstaller*
2285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      pnacl_component_installer() = 0;
229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
230d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  virtual MediaFileSystemRegistry* media_file_system_registry() = 0;
2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  virtual bool created_local_state() const = 0;
233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
234868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#if defined(ENABLE_WEBRTC)
235868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  virtual WebRtcLogUploader* webrtc_log_uploader() = 0;
236868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#endif
237868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
23846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual network_time::NetworkTimeTracker* network_time_tracker() = 0;
23946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
24046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual gcm::GCMDriver* gcm_driver() = 0;
241cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(BrowserProcess);
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern BrowserProcess* g_browser_process;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_BROWSER_PROCESS_H_
249