Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(343)

Side by Side Diff: chrome/browser/browser_process_impl.cc

Issue 8366020: Create a secondary file thread, FILE_USER_BLOCKING... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/browser_process_impl.h" 5 #include "chrome/browser/browser_process_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 #endif 130 #endif
131 131
132 BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line) 132 BrowserProcessImpl::BrowserProcessImpl(const CommandLine& command_line)
133 : created_resource_dispatcher_host_(false), 133 : created_resource_dispatcher_host_(false),
134 created_metrics_service_(false), 134 created_metrics_service_(false),
135 created_io_thread_(false), 135 created_io_thread_(false),
136 created_file_thread_(false), 136 created_file_thread_(false),
137 created_db_thread_(false), 137 created_db_thread_(false),
138 created_process_launcher_thread_(false), 138 created_process_launcher_thread_(false),
139 created_cache_thread_(false), 139 created_cache_thread_(false),
140 created_appcache_thread_(false),
140 created_watchdog_thread_(false), 141 created_watchdog_thread_(false),
141 #if defined(OS_CHROMEOS) 142 #if defined(OS_CHROMEOS)
142 created_web_socket_proxy_thread_(false), 143 created_web_socket_proxy_thread_(false),
143 #endif 144 #endif
144 created_profile_manager_(false), 145 created_profile_manager_(false),
145 created_local_state_(false), 146 created_local_state_(false),
146 created_icon_manager_(false), 147 created_icon_manager_(false),
147 created_devtools_manager_(false), 148 created_devtools_manager_(false),
148 created_sidebar_manager_(false), 149 created_sidebar_manager_(false),
149 created_browser_policy_connector_(false), 150 created_browser_policy_connector_(false),
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 254
254 // Stop the watchdog thread before stopping other threads. 255 // Stop the watchdog thread before stopping other threads.
255 watchdog_thread_.reset(); 256 watchdog_thread_.reset();
256 257
257 // Need to stop io_thread_ before resource_dispatcher_host_, since 258 // Need to stop io_thread_ before resource_dispatcher_host_, since
258 // io_thread_ may still deref ResourceDispatcherHost and handle resource 259 // io_thread_ may still deref ResourceDispatcherHost and handle resource
259 // request before going away. 260 // request before going away.
260 io_thread_.reset(); 261 io_thread_.reset();
261 262
262 // The IO thread was the only user of this thread. 263 // The IO thread was the only user of this thread.
264 appcache_thread_.reset();
265
266 // The IO thread was the only user of this thread.
263 cache_thread_.reset(); 267 cache_thread_.reset();
264 268
265 // Stop the process launcher thread after the IO thread, in case the IO thread 269 // Stop the process launcher thread after the IO thread, in case the IO thread
266 // posted a task to terminate a process on the process launcher thread. 270 // posted a task to terminate a process on the process launcher thread.
267 process_launcher_thread_.reset(); 271 process_launcher_thread_.reset();
268 272
269 // Clean up state that lives on the file_thread_ before it goes away. 273 // Clean up state that lives on the file_thread_ before it goes away.
270 if (resource_dispatcher_host_.get()) { 274 if (resource_dispatcher_host_.get()) {
271 resource_dispatcher_host()->download_file_manager()->Shutdown(); 275 resource_dispatcher_host()->download_file_manager()->Shutdown();
272 resource_dispatcher_host()->save_file_manager()->Shutdown(); 276 resource_dispatcher_host()->save_file_manager()->Shutdown();
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 return process_launcher_thread_.get(); 435 return process_launcher_thread_.get();
432 } 436 }
433 437
434 base::Thread* BrowserProcessImpl::cache_thread() { 438 base::Thread* BrowserProcessImpl::cache_thread() {
435 DCHECK(CalledOnValidThread()); 439 DCHECK(CalledOnValidThread());
436 if (!created_cache_thread_) 440 if (!created_cache_thread_)
437 CreateCacheThread(); 441 CreateCacheThread();
438 return cache_thread_.get(); 442 return cache_thread_.get();
439 } 443 }
440 444
445 base::Thread* BrowserProcessImpl::appcache_thread() {
446 DCHECK(CalledOnValidThread());
447 if (!created_appcache_thread_)
448 CreateAppCacheThread();
449 return appcache_thread_.get();
450 }
451
452
441 WatchDogThread* BrowserProcessImpl::watchdog_thread() { 453 WatchDogThread* BrowserProcessImpl::watchdog_thread() {
442 DCHECK(CalledOnValidThread()); 454 DCHECK(CalledOnValidThread());
443 if (!created_watchdog_thread_) 455 if (!created_watchdog_thread_)
444 CreateWatchdogThread(); 456 CreateWatchdogThread();
445 DCHECK(watchdog_thread_.get() != NULL); 457 DCHECK(watchdog_thread_.get() != NULL);
446 return watchdog_thread_.get(); 458 return watchdog_thread_.get();
447 } 459 }
448 460
449 #if defined(OS_CHROMEOS) 461 #if defined(OS_CHROMEOS)
450 base::Thread* BrowserProcessImpl::web_socket_proxy_thread() { 462 base::Thread* BrowserProcessImpl::web_socket_proxy_thread() {
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 906
895 scoped_ptr<base::Thread> thread( 907 scoped_ptr<base::Thread> thread(
896 new BrowserThread(BrowserThread::CACHE)); 908 new BrowserThread(BrowserThread::CACHE));
897 base::Thread::Options options; 909 base::Thread::Options options;
898 options.message_loop_type = MessageLoop::TYPE_IO; 910 options.message_loop_type = MessageLoop::TYPE_IO;
899 if (!thread->StartWithOptions(options)) 911 if (!thread->StartWithOptions(options))
900 return; 912 return;
901 cache_thread_.swap(thread); 913 cache_thread_.swap(thread);
902 } 914 }
903 915
916 void BrowserProcessImpl::CreateAppCacheThread() {
917 DCHECK(!created_appcache_thread_ && !appcache_thread_.get());
918 created_appcache_thread_ = true;
919
920 scoped_ptr<base::Thread> thread(
921 new BrowserThread(BrowserThread::APPCACHE));
rvargas (doing something else) 2011/10/21 19:46:17 Just double checking that you don't intend to use
michaeln 2011/10/21 19:52:12 definitely not right now, i don't anticipate doing
922 if (!thread->Start())
923 return;
924 appcache_thread_.swap(thread);
925 }
926
904 void BrowserProcessImpl::CreateWatchdogThread() { 927 void BrowserProcessImpl::CreateWatchdogThread() {
905 DCHECK(!created_watchdog_thread_ && watchdog_thread_.get() == NULL); 928 DCHECK(!created_watchdog_thread_ && watchdog_thread_.get() == NULL);
906 created_watchdog_thread_ = true; 929 created_watchdog_thread_ = true;
907 930
908 scoped_ptr<WatchDogThread> thread(new WatchDogThread()); 931 scoped_ptr<WatchDogThread> thread(new WatchDogThread());
909 if (!thread->Start()) 932 if (!thread->Start())
910 return; 933 return;
911 watchdog_thread_.swap(thread); 934 watchdog_thread_.swap(thread);
912 } 935 }
913 936
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
1156 } 1179 }
1157 1180
1158 void BrowserProcessImpl::OnAutoupdateTimer() { 1181 void BrowserProcessImpl::OnAutoupdateTimer() {
1159 if (CanAutorestartForUpdate()) { 1182 if (CanAutorestartForUpdate()) {
1160 DLOG(WARNING) << "Detected update. Restarting browser."; 1183 DLOG(WARNING) << "Detected update. Restarting browser.";
1161 RestartPersistentInstance(); 1184 RestartPersistentInstance();
1162 } 1185 }
1163 } 1186 }
1164 1187
1165 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) 1188 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698