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

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

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <vector> 10 #include <vector>
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 // IOThread object being NULL is considered synonymous with the 294 // IOThread object being NULL is considered synonymous with the
295 // IO thread having stopped. 295 // IO thread having stopped.
296 io_thread_.reset(); 296 io_thread_.reset();
297 } 297 }
298 298
299 #if defined(OS_WIN) 299 #if defined(OS_WIN)
300 // Send a QuitTask to the given MessageLoop when the (file) thread has processed 300 // Send a QuitTask to the given MessageLoop when the (file) thread has processed
301 // our (other) recent requests (to save preferences). 301 // our (other) recent requests (to save preferences).
302 // Change the boolean so that the receiving thread will know that we did indeed 302 // Change the boolean so that the receiving thread will know that we did indeed
303 // send the QuitTask that terminated the message loop. 303 // send the QuitTask that terminated the message loop.
304 static void PostQuit(MessageLoop* message_loop) { 304 static void PostQuit(base::MessageLoop* message_loop) {
305 g_end_session_file_thread_has_completed = true; 305 g_end_session_file_thread_has_completed = true;
306 message_loop->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 306 message_loop->PostTask(FROM_HERE, base::MessageLoop::QuitClosure());
307 } 307 }
308 #elif defined(USE_X11) 308 #elif defined(USE_X11)
309 static void Signal(base::WaitableEvent* event) { 309 static void Signal(base::WaitableEvent* event) {
310 event->Signal(); 310 event->Signal();
311 } 311 }
312 #endif 312 #endif
313 313
314 unsigned int BrowserProcessImpl::AddRefModule() { 314 unsigned int BrowserProcessImpl::AddRefModule() {
315 DCHECK(CalledOnValidThread()); 315 DCHECK(CalledOnValidThread());
316 316
(...skipping 19 matching lines...) Expand all
336 release_last_reference_callstack_ = base::debug::StackTrace(); 336 release_last_reference_callstack_ = base::debug::StackTrace();
337 337
338 #if defined(ENABLE_PRINTING) 338 #if defined(ENABLE_PRINTING)
339 // Wait for the pending print jobs to finish. Don't do this later, since 339 // Wait for the pending print jobs to finish. Don't do this later, since
340 // this might cause a nested message loop to run, and we don't want pending 340 // this might cause a nested message loop to run, and we don't want pending
341 // tasks to run once teardown has started. 341 // tasks to run once teardown has started.
342 print_job_manager_->OnQuit(); 342 print_job_manager_->OnQuit();
343 print_job_manager_.reset(); 343 print_job_manager_.reset();
344 #endif 344 #endif
345 345
346 CHECK(MessageLoop::current()->is_running()); 346 CHECK(base::MessageLoop::current()->is_running());
347 347
348 #if defined(OS_MACOSX) 348 #if defined(OS_MACOSX)
349 MessageLoop::current()->PostTask( 349 base::MessageLoop::current()->PostTask(
350 FROM_HERE, 350 FROM_HERE,
351 base::Bind(ChromeBrowserMainPartsMac::DidEndMainMessageLoop)); 351 base::Bind(ChromeBrowserMainPartsMac::DidEndMainMessageLoop));
352 #endif 352 #endif
353 MessageLoop::current()->Quit(); 353 base::MessageLoop::current()->Quit();
354 } 354 }
355 return module_ref_count_; 355 return module_ref_count_;
356 } 356 }
357 357
358 void BrowserProcessImpl::EndSession() { 358 void BrowserProcessImpl::EndSession() {
359 // Mark all the profiles as clean. 359 // Mark all the profiles as clean.
360 ProfileManager* pm = profile_manager(); 360 ProfileManager* pm = profile_manager();
361 std::vector<Profile*> profiles(pm->GetLoadedProfiles()); 361 std::vector<Profile*> profiles(pm->GetLoadedProfiles());
362 for (size_t i = 0; i < profiles.size(); ++i) 362 for (size_t i = 0; i < profiles.size(); ++i)
363 profiles[i]->SetExitType(Profile::EXIT_SESSION_ENDED); 363 profiles[i]->SetExitType(Profile::EXIT_SESSION_ENDED);
(...skipping 20 matching lines...) Expand all
384 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 384 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
385 base::Bind(Signal, done_writing.get())); 385 base::Bind(Signal, done_writing.get()));
386 // If all file writes haven't cleared in the timeout, leak the WaitableEvent 386 // If all file writes haven't cleared in the timeout, leak the WaitableEvent
387 // so that there's no race to reference it in Signal(). 387 // so that there's no race to reference it in Signal().
388 if (!done_writing->TimedWait( 388 if (!done_writing->TimedWait(
389 base::TimeDelta::FromSeconds(kEndSessionTimeoutSeconds))) { 389 base::TimeDelta::FromSeconds(kEndSessionTimeoutSeconds))) {
390 ignore_result(done_writing.release()); 390 ignore_result(done_writing.release());
391 } 391 }
392 392
393 #elif defined(OS_WIN) 393 #elif defined(OS_WIN)
394 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 394 BrowserThread::PostTask(BrowserThread::FILE,
395 base::Bind(PostQuit, MessageLoop::current())); 395 FROM_HERE,
396 base::Bind(PostQuit, base::MessageLoop::current()));
396 int quits_received = 0; 397 int quits_received = 0;
397 do { 398 do {
398 MessageLoop::current()->Run(); 399 base::MessageLoop::current()->Run();
399 ++quits_received; 400 ++quits_received;
400 } while (!g_end_session_file_thread_has_completed); 401 } while (!g_end_session_file_thread_has_completed);
401 // If we did get extra quits, then we should re-post them to the message loop. 402 // If we did get extra quits, then we should re-post them to the message loop.
402 while (--quits_received > 0) 403 while (--quits_received > 0)
403 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 404 base::MessageLoop::current()->PostTask(FROM_HERE,
405 base::MessageLoop::QuitClosure());
404 #else 406 #else
405 NOTIMPLEMENTED(); 407 NOTIMPLEMENTED();
406 #endif 408 #endif
407 } 409 }
408 410
409 MetricsService* BrowserProcessImpl::metrics_service() { 411 MetricsService* BrowserProcessImpl::metrics_service() {
410 DCHECK(CalledOnValidThread()); 412 DCHECK(CalledOnValidThread());
411 if (!created_metrics_service_) 413 if (!created_metrics_service_)
412 CreateMetricsService(); 414 CreateMetricsService();
413 return metrics_service_.get(); 415 return metrics_service_.get();
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 } 1063 }
1062 1064
1063 void BrowserProcessImpl::OnAutoupdateTimer() { 1065 void BrowserProcessImpl::OnAutoupdateTimer() {
1064 if (CanAutorestartForUpdate()) { 1066 if (CanAutorestartForUpdate()) {
1065 DLOG(WARNING) << "Detected update. Restarting browser."; 1067 DLOG(WARNING) << "Detected update. Restarting browser.";
1066 RestartBackgroundInstance(); 1068 RestartBackgroundInstance();
1067 } 1069 }
1068 } 1070 }
1069 1071
1070 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) 1072 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698