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// This interface is for managing the global services of the application. Each
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// service is lazily created when requested the first time. The service getters
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// will return NULL if the service is not available, so callers must check for
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// this condition.
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_BROWSER_PROCESS_H_
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_BROWSER_PROCESS_H_
123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector>
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h"
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "ipc/ipc_message.h"
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AutomationProviderList;
2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
2321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsennamespace safe_browsing {
2421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass ClientSideDetectionService;
2521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
2621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass ChromeNetLog;
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DevToolsManager;
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DownloadRequestLimiter;
303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass DownloadStatusUpdater;
31dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass ExtensionEventRouterForwarder;
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GoogleURLTracker;
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass IconManager;
3421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass IntranetRedirectDetector;
3521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenclass IOThread;
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MetricsService;
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass NotificationUIManager;
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PrefService;
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ProfileManager;
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ResourceDispatcherHost;
413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass SidebarManager;
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass TabCloseableStateWatcher;
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ThumbnailGenerator;
44dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass WatchDogThread;
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace base {
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Thread;
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass WaitableEvent;
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#if defined(OS_CHROMEOS)
52ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace chromeos {
53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass ProxyConfigServiceImpl;
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // defined(OS_CHROMEOS)
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace net {
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenclass URLRequestContextGetter;
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen}
60ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace printing {
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PrintJobManager;
634a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochclass PrintPreviewTabController;
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
663f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsennamespace policy {
67dc0f95d653279beabeb9817299e2902918ba123eKristian Monsenclass BrowserPolicyConnector;
683f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen}
693f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen
7072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace ui {
7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass Clipboard;
7272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}
7372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// NOT THREAD SAFE, call only from the main thread.
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// These functions shouldn't return NULL unless otherwise noted.
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass BrowserProcess {
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
78731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  BrowserProcess();
79731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual ~BrowserProcess();
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Invoked when the user is logging out/shutting down. When logging off we may
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // not have enough time to do a normal shutdown. This method is invoked prior
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // to normal shutdown and saves any state that must be saved before we are
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // continue shutdown.
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void EndSession() = 0;
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Services: any of these getters may return NULL
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ResourceDispatcherHost* resource_dispatcher_host() = 0;
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual MetricsService* metrics_service() = 0;
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ProfileManager* profile_manager() = 0;
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual PrefService* local_state() = 0;
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual DevToolsManager* devtools_manager() = 0;
943345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual SidebarManager* sidebar_manager() = 0;
9572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual ui::Clipboard* clipboard() = 0;
96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual net::URLRequestContextGetter* system_request_context() = 0;
97ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#if defined(OS_CHROMEOS)
99ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Returns ChromeOS's ProxyConfigServiceImpl, creating if not yet created.
100ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual chromeos::ProxyConfigServiceImpl*
101ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      chromeos_proxy_config_service_impl() = 0;
102ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#endif  // defined(OS_CHROMEOS)
103ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
104dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual ExtensionEventRouterForwarder*
105dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen      extension_event_router_forwarder() = 0;
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the manager for desktop notifications.
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual NotificationUIManager* notification_ui_manager() = 0;
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the thread that we perform I/O coordination on (network requests,
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // communication with renderers, etc.
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // NOTE: You should ONLY use this to pass to IPC or other objects which must
113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // need a MessageLoop*.  If you just want to post a task, use
114731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // BrowserThread::PostTask (or other variants) as they take care of checking
115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // that a thread is still alive, race conditions, lifetime differences etc.
1163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // If you still must use this check the return value for NULL.
117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual IOThread* io_thread() = 0;
118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the thread that we perform random file operations on. For code
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // that wants to do I/O operations (not network requests or even file: URL
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // requests), this is the thread to use to avoid blocking the UI thread.
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // It might be nicer to have a thread pool for this kind of thing.
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual base::Thread* file_thread() = 0;
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the thread that is used for database operations such as the web
126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // database. History has its own thread since it has much higher traffic.
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual base::Thread* db_thread() = 0;
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the thread that is used for background cache operations.
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual base::Thread* cache_thread() = 0;
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
132ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Returns the thread that issues GPU calls.
133ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual base::Thread* gpu_thread() = 0;
134ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(USE_X11)
136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the thread that is used to process UI requests in cases where
137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // we can't route the request to the UI thread. Note that this thread
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // should only be used by the IO thread and this method is only safe to call
139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // from the UI thread so, if you've ended up here, something has gone wrong.
140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // This method is only included for uniformity.
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual base::Thread* background_x11_thread() = 0;
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
144dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Returns the thread that is used for health check of all browser threads.
145dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual WatchDogThread* watchdog_thread() = 0;
146dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
147dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual policy::BrowserPolicyConnector* browser_policy_connector() = 0;
1483f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual IconManager* icon_manager() = 0;
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ThumbnailGenerator* GetThumbnailGenerator() = 0;
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual AutomationProviderList* InitAutomationProviderList() = 0;
154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual void InitDevToolsHttpProtocolHandler(
15672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      const std::string& ip,
15772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      int port,
15872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen      const std::string& frontend_url) = 0;
15972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
16072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual void InitDevToolsLegacyProtocolHandler(int port) = 0;
161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual unsigned int AddRefModule() = 0;
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual unsigned int ReleaseModule() = 0;
164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual bool IsShuttingDown() = 0;
166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual printing::PrintJobManager* print_job_manager() = 0;
1684a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual printing::PrintPreviewTabController*
1694a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch      print_preview_tab_controller() = 0;
170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual GoogleURLTracker* google_url_tracker() = 0;
172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual IntranetRedirectDetector* intranet_redirect_detector() = 0;
173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the locale used by the application.
175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual const std::string& GetApplicationLocale() = 0;
176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SetApplicationLocale(const std::string& locale) = 0;
177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DownloadRequestLimiter* download_request_limiter();
1793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  virtual DownloadStatusUpdater* download_status_updater() = 0;
180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns an event that is signaled when the browser shutdown.
182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual base::WaitableEvent* shutdown_event() = 0;
183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns a reference to the user-data-dir based profiles vector.
185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::vector<std::wstring>& user_data_dir_profiles() {
186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return user_data_dir_profiles_;
187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the object that watches for changes in the closeable state of tab.
190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual TabCloseableStateWatcher* tab_closeable_state_watcher() = 0;
191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
19221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // Returns an object which handles communication with the SafeBrowsing
19321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  // client-side detection servers.
19421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen  virtual safe_browsing::ClientSideDetectionService*
19521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen      safe_browsing_detection_service() = 0;
19621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
197dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // Returns the state of the disable plugin finder policy. Callable only on
198dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  // the IO thread.
199dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual bool plugin_finder_disabled() const = 0;
200dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen
201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // This will start a timer that, if Chrome is in persistent mode, will check
203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // whether an update is available, and if that's the case, restart the
204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // browser. Note that restart code will strip some of the command line keys
205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // and all loose values from the cl this instance of Chrome was launched with,
206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // and add the command line key that will force Chrome to start in the
207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // background mode. For the full list of "blacklisted" keys, refer to
208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // |kSwitchesToRemoveOnAutorestart| array in browser_process_impl.cc.
209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void StartAutoupdateTimer() = 0;
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
21272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual ChromeNetLog* net_log() = 0;
21372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(IPC_MESSAGE_LOG_ENABLED)
215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Enable or disable IPC logging for the browser, all processes
216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // derived from ChildProcess (plugin etc), and all
217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // renderers.
218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SetIPCLoggingEnabled(bool enable) = 0;
219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif
220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
22172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  const std::string& plugin_data_remover_mime_type() const {
22272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    return plugin_data_remover_mime_type_;
22372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  }
22472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
22572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  void set_plugin_data_remover_mime_type(const std::string& mime_type) {
22672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen    plugin_data_remover_mime_type_ = mime_type;
22772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  }
22872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // User-data-dir based profiles.
231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::vector<std::wstring> user_data_dir_profiles_;
232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
23372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  // Used for testing plugin data removal at shutdown.
23472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  std::string plugin_data_remover_mime_type_;
23572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen
236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(BrowserProcess);
237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochextern BrowserProcess* g_browser_process;
240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_BROWSER_PROCESS_H_
242