[email protected] | c4ff495 | 2010-01-08 19:12:47 | [diff] [blame] | 1 | // Copyright (c) 2010 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_ | ||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 12 | |
13 | #include <string> | ||||
14 | |||||
15 | #include "base/basictypes.h" | ||||
16 | #include "base/message_loop.h" | ||||
17 | #include "base/non_thread_safe.h" | ||||
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 18 | #include "base/timer.h" |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 19 | #include "base/scoped_ptr.h" |
[email protected] | de246f5 | 2009-02-25 18:25:45 | [diff] [blame] | 20 | #include "chrome/browser/automation/automation_provider_list.h" |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 21 | #include "chrome/browser/browser_process.h" |
[email protected] | 67a46b7f | 2009-06-16 21:41:02 | [diff] [blame] | 22 | #include "chrome/browser/tab_contents/thumbnail_generator.h" |
[email protected] | d55aaa13 | 2009-09-28 21:08:04 | [diff] [blame] | 23 | #include "ipc/ipc_message.h" |
[email protected] | b112a4c | 2009-02-01 20:24:01 | [diff] [blame] | 24 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 25 | class CommandLine; |
[email protected] | 4ef795df | 2010-02-03 02:35:08 | [diff] [blame] | 26 | class FilePath; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 27 | class NotificationService; |
28 | |||||
29 | // Real implementation of BrowserProcess that creates and returns the services. | ||||
30 | class BrowserProcessImpl : public BrowserProcess, public NonThreadSafe { | ||||
31 | public: | ||||
[email protected] | f3a4f30 | 2009-08-21 22:35:29 | [diff] [blame] | 32 | explicit BrowserProcessImpl(const CommandLine& command_line); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 33 | virtual ~BrowserProcessImpl(); |
34 | |||||
35 | virtual void EndSession(); | ||||
36 | |||||
37 | virtual ResourceDispatcherHost* resource_dispatcher_host() { | ||||
38 | DCHECK(CalledOnValidThread()); | ||||
39 | if (!created_resource_dispatcher_host_) | ||||
40 | CreateResourceDispatcherHost(); | ||||
41 | return resource_dispatcher_host_.get(); | ||||
42 | } | ||||
43 | |||||
44 | virtual MetricsService* metrics_service() { | ||||
45 | DCHECK(CalledOnValidThread()); | ||||
46 | if (!created_metrics_service_) | ||||
47 | CreateMetricsService(); | ||||
48 | return metrics_service_.get(); | ||||
49 | } | ||||
50 | |||||
[email protected] | 0ac8368 | 2010-01-22 17:46:27 | [diff] [blame] | 51 | virtual IOThread* io_thread() { |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 52 | DCHECK(CalledOnValidThread()); |
53 | if (!created_io_thread_) | ||||
54 | CreateIOThread(); | ||||
55 | return io_thread_.get(); | ||||
56 | } | ||||
57 | |||||
[email protected] | ab820df | 2008-08-26 05:55:10 | [diff] [blame] | 58 | virtual base::Thread* file_thread() { |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 59 | DCHECK(CalledOnValidThread()); |
60 | if (!created_file_thread_) | ||||
61 | CreateFileThread(); | ||||
62 | return file_thread_.get(); | ||||
63 | } | ||||
64 | |||||
[email protected] | ab820df | 2008-08-26 05:55:10 | [diff] [blame] | 65 | virtual base::Thread* db_thread() { |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 66 | DCHECK(CalledOnValidThread()); |
67 | if (!created_db_thread_) | ||||
68 | CreateDBThread(); | ||||
69 | return db_thread_.get(); | ||||
70 | } | ||||
71 | |||||
[email protected] | 91451171 | 2009-11-23 19:42:33 | [diff] [blame] | 72 | virtual base::Thread* process_launcher_thread() { |
73 | DCHECK(CalledOnValidThread()); | ||||
74 | if (!created_process_launcher_thread_) | ||||
75 | CreateProcessLauncherThread(); | ||||
76 | return process_launcher_thread_.get(); | ||||
77 | } | ||||
78 | |||||
[email protected] | 875ee82 | 2010-05-18 20:58:01 | [diff] [blame^] | 79 | virtual base::Thread* cache_thread() { |
80 | DCHECK(CalledOnValidThread()); | ||||
81 | if (!created_cache_thread_) | ||||
82 | CreateCacheThread(); | ||||
83 | return cache_thread_.get(); | ||||
84 | } | ||||
85 | |||||
[email protected] | 25d47c7b | 2010-02-03 20:13:06 | [diff] [blame] | 86 | #if defined(USE_X11) |
[email protected] | 4c3cd741 | 2009-04-22 17:56:06 | [diff] [blame] | 87 | virtual base::Thread* background_x11_thread() { |
88 | DCHECK(CalledOnValidThread()); | ||||
89 | // The BACKGROUND_X11 thread is created when the IO thread is created. | ||||
90 | if (!created_io_thread_) | ||||
91 | CreateIOThread(); | ||||
92 | return background_x11_thread_.get(); | ||||
93 | } | ||||
94 | #endif | ||||
95 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 96 | virtual ProfileManager* profile_manager() { |
97 | DCHECK(CalledOnValidThread()); | ||||
98 | if (!created_profile_manager_) | ||||
99 | CreateProfileManager(); | ||||
100 | return profile_manager_.get(); | ||||
101 | } | ||||
102 | |||||
103 | virtual PrefService* local_state() { | ||||
104 | DCHECK(CalledOnValidThread()); | ||||
105 | if (!created_local_state_) | ||||
106 | CreateLocalState(); | ||||
107 | return local_state_.get(); | ||||
108 | } | ||||
109 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 110 | virtual DebuggerWrapper* debugger_wrapper() { |
111 | DCHECK(CalledOnValidThread()); | ||||
112 | if (!created_debugger_wrapper_) | ||||
113 | return NULL; | ||||
114 | return debugger_wrapper_.get(); | ||||
115 | } | ||||
116 | |||||
[email protected] | 40ecc90 | 2009-03-16 13:42:47 | [diff] [blame] | 117 | virtual DevToolsManager* devtools_manager() { |
118 | DCHECK(CalledOnValidThread()); | ||||
119 | if (!created_devtools_manager_) | ||||
120 | CreateDevToolsManager(); | ||||
121 | return devtools_manager_.get(); | ||||
122 | } | ||||
123 | |||||
[email protected] | 1b8d02f1 | 2009-05-05 04:14:11 | [diff] [blame] | 124 | virtual Clipboard* clipboard() { |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 125 | DCHECK(CalledOnValidThread()); |
[email protected] | 1b8d02f1 | 2009-05-05 04:14:11 | [diff] [blame] | 126 | return clipboard_.get(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 127 | } |
128 | |||||
[email protected] | 29672ab | 2009-10-30 03:44:03 | [diff] [blame] | 129 | virtual NotificationUIManager* notification_ui_manager() { |
130 | DCHECK(CalledOnValidThread()); | ||||
131 | if (!created_notification_ui_manager_) | ||||
132 | CreateNotificationUIManager(); | ||||
133 | return notification_ui_manager_.get(); | ||||
134 | } | ||||
135 | |||||
[email protected] | ccb55cf5 | 2010-03-06 22:02:04 | [diff] [blame] | 136 | virtual StatusTrayManager* status_tray_manager() { |
137 | DCHECK(CalledOnValidThread()); | ||||
138 | if (!status_tray_manager_.get()) | ||||
139 | CreateStatusTrayManager(); | ||||
140 | return status_tray_manager_.get(); | ||||
141 | } | ||||
142 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 143 | virtual IconManager* icon_manager() { |
144 | DCHECK(CalledOnValidThread()); | ||||
145 | if (!created_icon_manager_) | ||||
146 | CreateIconManager(); | ||||
147 | return icon_manager_.get(); | ||||
148 | } | ||||
149 | |||||
[email protected] | 58dca55 | 2009-06-17 00:35:02 | [diff] [blame] | 150 | virtual ThumbnailGenerator* GetThumbnailGenerator() { |
151 | return &thumbnail_generator_; | ||||
152 | } | ||||
153 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 154 | virtual AutomationProviderList* InitAutomationProviderList() { |
155 | DCHECK(CalledOnValidThread()); | ||||
156 | if (automation_provider_list_.get() == NULL) { | ||||
157 | automation_provider_list_.reset(AutomationProviderList::GetInstance()); | ||||
158 | } | ||||
159 | return automation_provider_list_.get(); | ||||
160 | } | ||||
161 | |||||
162 | virtual void InitDebuggerWrapper(int port) { | ||||
163 | DCHECK(CalledOnValidThread()); | ||||
164 | if (!created_debugger_wrapper_) | ||||
165 | CreateDebuggerWrapper(port); | ||||
166 | } | ||||
167 | |||||
[email protected] | b443cb04 | 2009-12-15 22:05:09 | [diff] [blame] | 168 | virtual unsigned int AddRefModule(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 169 | |
[email protected] | b443cb04 | 2009-12-15 22:05:09 | [diff] [blame] | 170 | virtual unsigned int ReleaseModule(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 171 | |
172 | virtual bool IsShuttingDown() { | ||||
173 | DCHECK(CalledOnValidThread()); | ||||
174 | return 0 == module_ref_count_; | ||||
175 | } | ||||
176 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 177 | virtual printing::PrintJobManager* print_job_manager(); |
178 | |||||
179 | virtual GoogleURLTracker* google_url_tracker() { | ||||
180 | DCHECK(CalledOnValidThread()); | ||||
181 | if (!google_url_tracker_.get()) | ||||
182 | CreateGoogleURLTracker(); | ||||
183 | return google_url_tracker_.get(); | ||||
184 | } | ||||
185 | |||||
[email protected] | c4ff495 | 2010-01-08 19:12:47 | [diff] [blame] | 186 | virtual IntranetRedirectDetector* intranet_redirect_detector() { |
187 | DCHECK(CalledOnValidThread()); | ||||
188 | if (!intranet_redirect_detector_.get()) | ||||
189 | CreateIntranetRedirectDetector(); | ||||
190 | return intranet_redirect_detector_.get(); | ||||
191 | } | ||||
192 | |||||
[email protected] | ce4b6a9 | 2009-12-10 00:04:48 | [diff] [blame] | 193 | virtual const std::string& GetApplicationLocale() { |
194 | DCHECK(!locale_.empty()); | ||||
195 | return locale_; | ||||
196 | } | ||||
[email protected] | f1b6de2 | 2010-03-06 12:13:47 | [diff] [blame] | 197 | virtual void SetApplicationLocale(const std::string& locale); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 198 | |
[email protected] | b797e15 | 2009-01-23 16:06:14 | [diff] [blame] | 199 | virtual base::WaitableEvent* shutdown_event() { |
200 | return shutdown_event_.get(); | ||||
201 | } | ||||
[email protected] | d65cab7a | 2008-08-12 01:25:41 | [diff] [blame] | 202 | |
[email protected] | 6641bf66 | 2009-08-21 00:34:09 | [diff] [blame] | 203 | virtual void CheckForInspectorFiles(); |
204 | |||||
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 205 | #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 206 | void StartAutoupdateTimer(); |
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 207 | #endif |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 208 | |
[email protected] | 6641bf66 | 2009-08-21 00:34:09 | [diff] [blame] | 209 | virtual bool have_inspector_files() const { |
210 | return have_inspector_files_; | ||||
211 | } | ||||
212 | |||||
[email protected] | d55aaa13 | 2009-09-28 21:08:04 | [diff] [blame] | 213 | #if defined(IPC_MESSAGE_LOG_ENABLED) |
214 | virtual void SetIPCLoggingEnabled(bool enable); | ||||
215 | #endif | ||||
216 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 217 | private: |
[email protected] | 4ef795df | 2010-02-03 02:35:08 | [diff] [blame] | 218 | void ClearLocalState(const FilePath& profile_path); |
219 | bool ShouldClearLocalState(FilePath* profile_path); | ||||
220 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 221 | void CreateResourceDispatcherHost(); |
222 | void CreatePrefService(); | ||||
223 | void CreateMetricsService(); | ||||
[email protected] | 48ca901 | 2009-08-11 21:38:54 | [diff] [blame] | 224 | |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 225 | void CreateIOThread(); |
[email protected] | 48ca901 | 2009-08-11 21:38:54 | [diff] [blame] | 226 | static void CleanupOnIOThread(); |
227 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 228 | void CreateFileThread(); |
229 | void CreateDBThread(); | ||||
[email protected] | 91451171 | 2009-11-23 19:42:33 | [diff] [blame] | 230 | void CreateProcessLauncherThread(); |
[email protected] | 875ee82 | 2010-05-18 20:58:01 | [diff] [blame^] | 231 | void CreateCacheThread(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 232 | void CreateTemplateURLModel(); |
233 | void CreateProfileManager(); | ||||
234 | void CreateWebDataService(); | ||||
235 | void CreateLocalState(); | ||||
236 | void CreateViewedPageTracker(); | ||||
237 | void CreateIconManager(); | ||||
238 | void CreateDebuggerWrapper(int port); | ||||
[email protected] | 40ecc90 | 2009-03-16 13:42:47 | [diff] [blame] | 239 | void CreateDevToolsManager(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 240 | void CreateGoogleURLTracker(); |
[email protected] | c4ff495 | 2010-01-08 19:12:47 | [diff] [blame] | 241 | void CreateIntranetRedirectDetector(); |
[email protected] | 29672ab | 2009-10-30 03:44:03 | [diff] [blame] | 242 | void CreateNotificationUIManager(); |
[email protected] | ccb55cf5 | 2010-03-06 22:02:04 | [diff] [blame] | 243 | void CreateStatusTrayManager(); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 244 | |
[email protected] | d55aaa13 | 2009-09-28 21:08:04 | [diff] [blame] | 245 | #if defined(IPC_MESSAGE_LOG_ENABLED) |
246 | void SetIPCLoggingEnabledForChildProcesses(bool enabled); | ||||
247 | #endif | ||||
248 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 249 | bool created_resource_dispatcher_host_; |
250 | scoped_ptr<ResourceDispatcherHost> resource_dispatcher_host_; | ||||
251 | |||||
252 | bool created_metrics_service_; | ||||
253 | scoped_ptr<MetricsService> metrics_service_; | ||||
254 | |||||
255 | bool created_io_thread_; | ||||
[email protected] | 0ac8368 | 2010-01-22 17:46:27 | [diff] [blame] | 256 | scoped_ptr<IOThread> io_thread_; |
[email protected] | 25d47c7b | 2010-02-03 20:13:06 | [diff] [blame] | 257 | #if defined(USE_X11) |
[email protected] | 4c3cd741 | 2009-04-22 17:56:06 | [diff] [blame] | 258 | // This shares a created flag with the IO thread. |
259 | scoped_ptr<base::Thread> background_x11_thread_; | ||||
260 | #endif | ||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 261 | |
262 | bool created_file_thread_; | ||||
[email protected] | ab820df | 2008-08-26 05:55:10 | [diff] [blame] | 263 | scoped_ptr<base::Thread> file_thread_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 264 | |
265 | bool created_db_thread_; | ||||
[email protected] | ab820df | 2008-08-26 05:55:10 | [diff] [blame] | 266 | scoped_ptr<base::Thread> db_thread_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 267 | |
[email protected] | 91451171 | 2009-11-23 19:42:33 | [diff] [blame] | 268 | bool created_process_launcher_thread_; |
269 | scoped_ptr<base::Thread> process_launcher_thread_; | ||||
270 | |||||
[email protected] | 875ee82 | 2010-05-18 20:58:01 | [diff] [blame^] | 271 | bool created_cache_thread_; |
272 | scoped_ptr<base::Thread> cache_thread_; | ||||
273 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 274 | bool created_profile_manager_; |
275 | scoped_ptr<ProfileManager> profile_manager_; | ||||
276 | |||||
277 | bool created_local_state_; | ||||
278 | scoped_ptr<PrefService> local_state_; | ||||
279 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 280 | bool created_icon_manager_; |
281 | scoped_ptr<IconManager> icon_manager_; | ||||
282 | |||||
283 | bool created_debugger_wrapper_; | ||||
284 | scoped_refptr<DebuggerWrapper> debugger_wrapper_; | ||||
285 | |||||
[email protected] | 40ecc90 | 2009-03-16 13:42:47 | [diff] [blame] | 286 | bool created_devtools_manager_; |
[email protected] | 73ee0152 | 2009-06-05 10:13:44 | [diff] [blame] | 287 | scoped_refptr<DevToolsManager> devtools_manager_; |
[email protected] | 40ecc90 | 2009-03-16 13:42:47 | [diff] [blame] | 288 | |
[email protected] | 1b8d02f1 | 2009-05-05 04:14:11 | [diff] [blame] | 289 | scoped_ptr<Clipboard> clipboard_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 290 | |
[email protected] | 29672ab | 2009-10-30 03:44:03 | [diff] [blame] | 291 | // Manager for desktop notification UI. |
292 | bool created_notification_ui_manager_; | ||||
293 | scoped_ptr<NotificationUIManager> notification_ui_manager_; | ||||
294 | |||||
[email protected] | ccb55cf5 | 2010-03-06 22:02:04 | [diff] [blame] | 295 | // Manager for status tray. |
296 | scoped_ptr<StatusTrayManager> status_tray_manager_; | ||||
297 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 298 | scoped_ptr<AutomationProviderList> automation_provider_list_; |
299 | |||||
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 300 | scoped_ptr<GoogleURLTracker> google_url_tracker_; |
[email protected] | c4ff495 | 2010-01-08 19:12:47 | [diff] [blame] | 301 | scoped_ptr<IntranetRedirectDetector> intranet_redirect_detector_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 302 | |
303 | scoped_ptr<NotificationService> main_notification_service_; | ||||
304 | |||||
305 | unsigned int module_ref_count_; | ||||
306 | |||||
307 | // Ensures that all the print jobs are finished before closing the browser. | ||||
308 | scoped_ptr<printing::PrintJobManager> print_job_manager_; | ||||
309 | |||||
[email protected] | d70539de | 2009-06-24 22:17:06 | [diff] [blame] | 310 | std::string locale_; |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 311 | |
[email protected] | 1b2db1a | 2008-08-08 17:46:13 | [diff] [blame] | 312 | bool checked_for_new_frames_; |
313 | bool using_new_frames_; | ||||
314 | |||||
[email protected] | 58dca55 | 2009-06-17 00:35:02 | [diff] [blame] | 315 | // This service just sits around and makes thumanails for tabs. It does |
316 | // nothing in the cosntructor so we don't have to worry about lazy init. | ||||
[email protected] | 67a46b7f | 2009-06-16 21:41:02 | [diff] [blame] | 317 | ThumbnailGenerator thumbnail_generator_; |
[email protected] | 67a46b7f | 2009-06-16 21:41:02 | [diff] [blame] | 318 | |
[email protected] | d65cab7a | 2008-08-12 01:25:41 | [diff] [blame] | 319 | // An event that notifies when we are shutting-down. |
[email protected] | b797e15 | 2009-01-23 16:06:14 | [diff] [blame] | 320 | scoped_ptr<base::WaitableEvent> shutdown_event_; |
[email protected] | d65cab7a | 2008-08-12 01:25:41 | [diff] [blame] | 321 | |
[email protected] | 6641bf66 | 2009-08-21 00:34:09 | [diff] [blame] | 322 | // Runs on the file thread and stats the inspector's directory, filling in |
323 | // have_inspector_files_ with the result. | ||||
324 | void DoInspectorFilesCheck(); | ||||
325 | // Our best estimate about the existence of the inspector directory. | ||||
326 | bool have_inspector_files_; | ||||
327 | |||||
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 328 | #if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 329 | base::RepeatingTimer<BrowserProcessImpl> autoupdate_timer_; |
330 | |||||
331 | // Gets called by autoupdate timer to see if browser needs restart and can be | ||||
332 | // restarted, and if that's the case, restarts the browser. | ||||
333 | void OnAutoupdateTimer(); | ||||
334 | bool CanAutorestartForUpdate() const; | ||||
335 | void RestartPersistentInstance(); | ||||
[email protected] | 3cdacd4 | 2010-04-30 18:55:53 | [diff] [blame] | 336 | #endif // defined(OS_WIN) || defined(OS_LINUX) |
[email protected] | bd48c2b0 | 2010-04-09 20:32:42 | [diff] [blame] | 337 | |
[email protected] | 58dca55 | 2009-06-17 00:35:02 | [diff] [blame] | 338 | DISALLOW_COPY_AND_ASSIGN(BrowserProcessImpl); |
initial.commit | 09911bf | 2008-07-26 23:55:29 | [diff] [blame] | 339 | }; |
340 | |||||
[email protected] | 58dca55 | 2009-06-17 00:35:02 | [diff] [blame] | 341 | #endif // CHROME_BROWSER_BROWSER_PROCESS_IMPL_H_ |