[email protected] | f2a893c | 2011-01-05 09:38:07 | [diff] [blame] | 1 | // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
license.bot | bf09a50 | 2008-08-24 00:55:55 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 4 | |
| 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] | 58dca55 | 2009-06-17 00:35:02 | [diff] [blame] | 10 | #ifndef CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_ |
| 11 | #define CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_ |
[email protected] | 32b76ef | 2010-07-26 23:08:24 | [diff] [blame] | 12 | #pragma once |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 13 | |
| 14 | #include <string> |
| 15 | |
| 16 | #include "base/basictypes.h" |
| 17 | #include "base/message_loop.h" |
[email protected] | c917750 | 2011-01-01 04:48:49 | [diff] [blame] | 18 | #include "base/threading/non_thread_safe.h" |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 19 | #include "base/timer.h" |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 20 | #include "base/scoped_ptr.h" |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 21 | #include "chrome/browser/browser_process.h" |
[email protected] | 073ed7b | 2010-09-27 09:20:02 | [diff] [blame] | 22 | #include "chrome/browser/download/download_status_updater.h" |
[email protected] | 492d214 | 2010-09-10 13:55:18 | [diff] [blame] | 23 | #include "chrome/browser/prefs/pref_change_registrar.h" |
[email protected] | 67a46b7f | 2009-06-16 21:41:02 | [diff] [blame] | 24 | #include "chrome/browser/tab_contents/thumbnail_generator.h" |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 25 | #include "chrome/common/notification_observer.h" |
| 26 | #include "chrome/common/notification_registrar.h" |
[email protected] | d55aaa13 | 2009-09-28 21:08:04 | [diff] [blame] | 27 | #include "ipc/ipc_message.h" |
[email protected] | b112a4c | 2009-02-01 20:24:01 | [diff] [blame] | 28 | |
[email protected] | b2fcd0e | 2010-12-01 15:19:40 | [diff] [blame] | 29 | class ChromeNetLog; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 30 | class CommandLine; |
[email protected] | 5613126e | 2011-01-31 15:27:55 | [diff] [blame^] | 31 | class DevToolsHttpProtocolHandler; |
| 32 | class DevToolsProtocolHandler; |
[email protected] | 4ef795df | 2010-02-03 02:35:08 | [diff] [blame] | 33 | class FilePath; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 34 | class NotificationService; |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 35 | class PluginDataRemover; |
[email protected] | 0b4d338 | 2010-07-14 16:13:04 | [diff] [blame] | 36 | class TabCloseableStateWatcher; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 37 | |
| 38 | // Real implementation of BrowserProcess that creates and returns the services. |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 39 | class BrowserProcessImpl : public BrowserProcess, |
[email protected] | c917750 | 2011-01-01 04:48:49 | [diff] [blame] | 40 | public base::NonThreadSafe, |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 41 | public NotificationObserver { |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 42 | public: |
[email protected] | f3a4f30 | 2009-08-21 22:35:29 | [diff] [blame] | 43 | explicit BrowserProcessImpl(const CommandLine& command_line); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 44 | virtual ~BrowserProcessImpl(); |
| 45 | |
| 46 | virtual void EndSession(); |
| 47 | |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 48 | // BrowserProcess methods |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 49 | virtual ResourceDispatcherHost* resource_dispatcher_host(); |
| 50 | virtual MetricsService* metrics_service(); |
| 51 | virtual IOThread* io_thread(); |
| 52 | virtual base::Thread* file_thread(); |
| 53 | virtual base::Thread* db_thread(); |
| 54 | virtual base::Thread* process_launcher_thread(); |
| 55 | virtual base::Thread* cache_thread(); |
[email protected] | 25d47c7b | 2010-02-03 20:13:06 | [diff] [blame] | 56 | #if defined(USE_X11) |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 57 | virtual base::Thread* background_x11_thread(); |
[email protected] | 4c3cd741 | 2009-04-22 17:56:06 | [diff] [blame] | 58 | #endif |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 59 | virtual ProfileManager* profile_manager(); |
| 60 | virtual PrefService* local_state(); |
| 61 | virtual DevToolsManager* devtools_manager(); |
[email protected] | 8b8e7c9 | 2010-08-19 18:05:56 | [diff] [blame] | 62 | virtual SidebarManager* sidebar_manager(); |
[email protected] | 2dfeaf9 | 2011-01-10 21:08:21 | [diff] [blame] | 63 | virtual ui::Clipboard* clipboard(); |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 64 | virtual NotificationUIManager* notification_ui_manager(); |
[email protected] | f2a893c | 2011-01-05 09:38:07 | [diff] [blame] | 65 | virtual policy::ConfigurationPolicyProviderKeeper* |
| 66 | configuration_policy_provider_keeper(); |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 67 | virtual IconManager* icon_manager(); |
| 68 | virtual ThumbnailGenerator* GetThumbnailGenerator(); |
| 69 | virtual AutomationProviderList* InitAutomationProviderList(); |
[email protected] | 5613126e | 2011-01-31 15:27:55 | [diff] [blame^] | 70 | virtual void InitDevToolsHttpProtocolHandler( |
| 71 | int port, |
| 72 | const std::string& frontend_url); |
| 73 | virtual void InitDevToolsLegacyProtocolHandler(int port); |
[email protected] | b443cb04 | 2009-12-15 22:05:09 | [diff] [blame] | 74 | virtual unsigned int AddRefModule(); |
[email protected] | b443cb04 | 2009-12-15 22:05:09 | [diff] [blame] | 75 | virtual unsigned int ReleaseModule(); |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 76 | virtual bool IsShuttingDown(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 77 | virtual printing::PrintJobManager* print_job_manager(); |
[email protected] | dbeebd5 | 2010-11-16 20:34:16 | [diff] [blame] | 78 | virtual printing::PrintPreviewTabController* print_preview_tab_controller(); |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 79 | virtual GoogleURLTracker* google_url_tracker(); |
| 80 | virtual IntranetRedirectDetector* intranet_redirect_detector(); |
| 81 | virtual const std::string& GetApplicationLocale(); |
[email protected] | f1b6de2 | 2010-03-06 12:13:47 | [diff] [blame] | 82 | virtual void SetApplicationLocale(const std::string& locale); |
[email protected] | 073ed7b | 2010-09-27 09:20:02 | [diff] [blame] | 83 | virtual DownloadStatusUpdater* download_status_updater(); |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 84 | virtual base::WaitableEvent* shutdown_event(); |
| 85 | virtual TabCloseableStateWatcher* tab_closeable_state_watcher(); |
[email protected] | a7a5e99 | 2010-12-09 23:39:51 | [diff] [blame] | 86 | virtual safe_browsing::ClientSideDetectionService* |
| 87 | safe_browsing_detection_service(); |
[email protected] | 6641bf66 | 2009-08-21 00:34:09 | [diff] [blame] | 88 | virtual void CheckForInspectorFiles(); |
| 89 | |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 90 | // NotificationObserver methods |
| 91 | virtual void Observe(NotificationType type, |
| 92 | const NotificationSource& source, |
| 93 | const NotificationDetails& details); |
| 94 | |
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 95 | #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
[email protected] | 78994ab0 | 2010-12-08 18:06:44 | [diff] [blame] | 96 | virtual void StartAutoupdateTimer(); |
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 97 | #endif |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 98 | |
[email protected] | e13ad79b | 2010-07-22 21:36:50 | [diff] [blame] | 99 | virtual bool have_inspector_files() const; |
[email protected] | 6641bf66 | 2009-08-21 00:34:09 | [diff] [blame] | 100 | |
[email protected] | d55aaa13 | 2009-09-28 21:08:04 | [diff] [blame] | 101 | #if defined(IPC_MESSAGE_LOG_ENABLED) |
| 102 | virtual void SetIPCLoggingEnabled(bool enable); |
| 103 | #endif |
| 104 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 105 | private: |
[email protected] | 4ef795df | 2010-02-03 02:35:08 | [diff] [blame] | 106 | void ClearLocalState(const FilePath& profile_path); |
| 107 | bool ShouldClearLocalState(FilePath* profile_path); |
| 108 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 109 | void CreateResourceDispatcherHost(); |
| 110 | void CreatePrefService(); |
| 111 | void CreateMetricsService(); |
[email protected] | 48ca901 | 2009-08-11 21:38:54 | [diff] [blame] | 112 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 113 | void CreateIOThread(); |
[email protected] | 48ca901 | 2009-08-11 21:38:54 | [diff] [blame] | 114 | static void CleanupOnIOThread(); |
| 115 | |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 116 | void WaitForPluginDataRemoverToFinish(); |
| 117 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 118 | void CreateFileThread(); |
| 119 | void CreateDBThread(); |
[email protected] | 91451171 | 2009-11-23 19:42:33 | [diff] [blame] | 120 | void CreateProcessLauncherThread(); |
[email protected] | 875ee82 | 2010-05-18 20:58:01 | [diff] [blame] | 121 | void CreateCacheThread(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 122 | void CreateTemplateURLModel(); |
| 123 | void CreateProfileManager(); |
| 124 | void CreateWebDataService(); |
| 125 | void CreateLocalState(); |
| 126 | void CreateViewedPageTracker(); |
| 127 | void CreateIconManager(); |
[email protected] | 40ecc90 | 2009-03-16 13:42:47 | [diff] [blame] | 128 | void CreateDevToolsManager(); |
[email protected] | 8b8e7c9 | 2010-08-19 18:05:56 | [diff] [blame] | 129 | void CreateSidebarManager(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 130 | void CreateGoogleURLTracker(); |
[email protected] | c4ff495 | 2010-01-08 19:12:47 | [diff] [blame] | 131 | void CreateIntranetRedirectDetector(); |
[email protected] | 29672ab | 2009-10-30 03:44:03 | [diff] [blame] | 132 | void CreateNotificationUIManager(); |
[email protected] | ccb55cf5 | 2010-03-06 22:02:04 | [diff] [blame] | 133 | void CreateStatusTrayManager(); |
[email protected] | 0b4d338 | 2010-07-14 16:13:04 | [diff] [blame] | 134 | void CreateTabCloseableStateWatcher(); |
[email protected] | dbeebd5 | 2010-11-16 20:34:16 | [diff] [blame] | 135 | void CreatePrintPreviewTabController(); |
[email protected] | a7a5e99 | 2010-12-09 23:39:51 | [diff] [blame] | 136 | void CreateSafeBrowsingDetectionService(); |
| 137 | |
| 138 | bool IsSafeBrowsingDetectionServiceEnabled(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 139 | |
[email protected] | d55aaa13 | 2009-09-28 21:08:04 | [diff] [blame] | 140 | #if defined(IPC_MESSAGE_LOG_ENABLED) |
| 141 | void SetIPCLoggingEnabledForChildProcesses(bool enabled); |
| 142 | #endif |
| 143 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 144 | bool created_resource_dispatcher_host_; |
| 145 | scoped_ptr<ResourceDispatcherHost> resource_dispatcher_host_; |
| 146 | |
| 147 | bool created_metrics_service_; |
| 148 | scoped_ptr<MetricsService> metrics_service_; |
| 149 | |
| 150 | bool created_io_thread_; |
[email protected] | 0ac8368 | 2010-01-22 17:46:27 | [diff] [blame] | 151 | scoped_ptr<IOThread> io_thread_; |
[email protected] | 25d47c7b | 2010-02-03 20:13:06 | [diff] [blame] | 152 | #if defined(USE_X11) |
[email protected] | 4c3cd741 | 2009-04-22 17:56:06 | [diff] [blame] | 153 | // This shares a created flag with the IO thread. |
| 154 | scoped_ptr<base::Thread> background_x11_thread_; |
| 155 | #endif |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 156 | |
| 157 | bool created_file_thread_; |
[email protected] | ab820df | 2008-08-26 05:55:10 | [diff] [blame] | 158 | scoped_ptr<base::Thread> file_thread_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 159 | |
| 160 | bool created_db_thread_; |
[email protected] | ab820df | 2008-08-26 05:55:10 | [diff] [blame] | 161 | scoped_ptr<base::Thread> db_thread_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 162 | |
[email protected] | 91451171 | 2009-11-23 19:42:33 | [diff] [blame] | 163 | bool created_process_launcher_thread_; |
| 164 | scoped_ptr<base::Thread> process_launcher_thread_; |
| 165 | |
[email protected] | 875ee82 | 2010-05-18 20:58:01 | [diff] [blame] | 166 | bool created_cache_thread_; |
| 167 | scoped_ptr<base::Thread> cache_thread_; |
| 168 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 169 | bool created_profile_manager_; |
| 170 | scoped_ptr<ProfileManager> profile_manager_; |
| 171 | |
| 172 | bool created_local_state_; |
| 173 | scoped_ptr<PrefService> local_state_; |
| 174 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 175 | bool created_icon_manager_; |
| 176 | scoped_ptr<IconManager> icon_manager_; |
| 177 | |
[email protected] | 5613126e | 2011-01-31 15:27:55 | [diff] [blame^] | 178 | scoped_refptr<DevToolsHttpProtocolHandler> devtools_http_handler_; |
| 179 | |
| 180 | scoped_refptr<DevToolsProtocolHandler> devtools_legacy_handler_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 181 | |
[email protected] | 40ecc90 | 2009-03-16 13:42:47 | [diff] [blame] | 182 | bool created_devtools_manager_; |
[email protected] | 73ee0152 | 2009-06-05 10:13:44 | [diff] [blame] | 183 | scoped_refptr<DevToolsManager> devtools_manager_; |
[email protected] | 40ecc90 | 2009-03-16 13:42:47 | [diff] [blame] | 184 | |
[email protected] | 8b8e7c9 | 2010-08-19 18:05:56 | [diff] [blame] | 185 | bool created_sidebar_manager_; |
| 186 | scoped_refptr<SidebarManager> sidebar_manager_; |
| 187 | |
[email protected] | f2a893c | 2011-01-05 09:38:07 | [diff] [blame] | 188 | bool created_configuration_policy_provider_keeper_; |
| 189 | scoped_ptr<policy::ConfigurationPolicyProviderKeeper> |
| 190 | configuration_policy_provider_keeper_; |
| 191 | |
[email protected] | dbeebd5 | 2010-11-16 20:34:16 | [diff] [blame] | 192 | scoped_refptr<printing::PrintPreviewTabController> |
| 193 | print_preview_tab_controller_; |
| 194 | |
[email protected] | 2dfeaf9 | 2011-01-10 21:08:21 | [diff] [blame] | 195 | scoped_ptr<ui::Clipboard> clipboard_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 196 | |
[email protected] | 29672ab | 2009-10-30 03:44:03 | [diff] [blame] | 197 | // Manager for desktop notification UI. |
| 198 | bool created_notification_ui_manager_; |
| 199 | scoped_ptr<NotificationUIManager> notification_ui_manager_; |
| 200 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 201 | scoped_ptr<AutomationProviderList> automation_provider_list_; |
| 202 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 203 | scoped_ptr<GoogleURLTracker> google_url_tracker_; |
[email protected] | c4ff495 | 2010-01-08 19:12:47 | [diff] [blame] | 204 | scoped_ptr<IntranetRedirectDetector> intranet_redirect_detector_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 205 | |
| 206 | scoped_ptr<NotificationService> main_notification_service_; |
| 207 | |
[email protected] | 0b4d338 | 2010-07-14 16:13:04 | [diff] [blame] | 208 | scoped_ptr<TabCloseableStateWatcher> tab_closeable_state_watcher_; |
| 209 | |
[email protected] | a7a5e99 | 2010-12-09 23:39:51 | [diff] [blame] | 210 | bool created_safe_browsing_detection_service_; |
| 211 | scoped_ptr<safe_browsing::ClientSideDetectionService> |
| 212 | safe_browsing_detection_service_; |
| 213 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 214 | unsigned int module_ref_count_; |
[email protected] | afd20c02 | 2010-06-10 00:48:20 | [diff] [blame] | 215 | bool did_start_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 216 | |
| 217 | // Ensures that all the print jobs are finished before closing the browser. |
| 218 | scoped_ptr<printing::PrintJobManager> print_job_manager_; |
| 219 | |
[email protected] | d70539de | 2009-06-24 22:17:06 | [diff] [blame] | 220 | std::string locale_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 221 | |
[email protected] | 1b2db1a | 2008-08-08 17:46:13 | [diff] [blame] | 222 | bool checked_for_new_frames_; |
| 223 | bool using_new_frames_; |
| 224 | |
[email protected] | cb85aba | 2010-09-22 18:34:15 | [diff] [blame] | 225 | // This service just sits around and makes thumbnails for tabs. It does |
| 226 | // nothing in the constructor so we don't have to worry about lazy init. |
[email protected] | 67a46b7f | 2009-06-16 21:41:02 | [diff] [blame] | 227 | ThumbnailGenerator thumbnail_generator_; |
[email protected] | 67a46b7f | 2009-06-16 21:41:02 | [diff] [blame] | 228 | |
[email protected] | 073ed7b | 2010-09-27 09:20:02 | [diff] [blame] | 229 | // Download status updates (like a changing application icon on dock/taskbar) |
| 230 | // are global per-application. DownloadStatusUpdater does no work in the ctor |
| 231 | // so we don't have to worry about lazy initialization. |
| 232 | DownloadStatusUpdater download_status_updater_; |
| 233 | |
[email protected] | d65cab7a | 2008-08-12 01:25:41 | [diff] [blame] | 234 | // An event that notifies when we are shutting-down. |
[email protected] | b797e15 | 2009-01-23 16:06:14 | [diff] [blame] | 235 | scoped_ptr<base::WaitableEvent> shutdown_event_; |
[email protected] | d65cab7a | 2008-08-12 01:25:41 | [diff] [blame] | 236 | |
[email protected] | 6641bf66 | 2009-08-21 00:34:09 | [diff] [blame] | 237 | // Runs on the file thread and stats the inspector's directory, filling in |
| 238 | // have_inspector_files_ with the result. |
| 239 | void DoInspectorFilesCheck(); |
| 240 | // Our best estimate about the existence of the inspector directory. |
| 241 | bool have_inspector_files_; |
| 242 | |
[email protected] | 2a7e7c15 | 2010-10-01 20:12:09 | [diff] [blame] | 243 | // Ensures that the observers of plugin/print disable/enable state |
[email protected] | 492d214 | 2010-09-10 13:55:18 | [diff] [blame] | 244 | // notifications are properly added and removed. |
[email protected] | 2a7e7c15 | 2010-10-01 20:12:09 | [diff] [blame] | 245 | PrefChangeRegistrar pref_change_registrar_; |
[email protected] | 492d214 | 2010-09-10 13:55:18 | [diff] [blame] | 246 | |
[email protected] | b2fcd0e | 2010-12-01 15:19:40 | [diff] [blame] | 247 | // Lives here so can safely log events on shutdown. |
| 248 | scoped_ptr<ChromeNetLog> net_log_; |
| 249 | |
[email protected] | 6618d1d | 2010-12-15 21:18:47 | [diff] [blame] | 250 | NotificationRegistrar notification_registrar_; |
| 251 | scoped_refptr<PluginDataRemover> plugin_data_remover_; |
| 252 | |
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 253 | #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 254 | base::RepeatingTimer<BrowserProcessImpl> autoupdate_timer_; |
| 255 | |
| 256 | // Gets called by autoupdate timer to see if browser needs restart and can be |
| 257 | // restarted, and if that's the case, restarts the browser. |
| 258 | void OnAutoupdateTimer(); |
| 259 | bool CanAutorestartForUpdate() const; |
| 260 | void RestartPersistentInstance(); |
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 261 | #endif // defined(OS_WIN) || defined(OS_LINUX) |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 262 | |
[email protected] | 58dca55 | 2009-06-17 00:35:02 | [diff] [blame] | 263 | DISALLOW_COPY_AND_ASSIGN(BrowserProcessImpl); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 264 | }; |
| 265 | |
[email protected] | 58dca55 | 2009-06-17 00:35:02 | [diff] [blame] | 266 | #endif // CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_ |