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