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

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

Issue 8604010: base::Bind() conversion for BrowserProcessImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
11 #include "base/bind.h"
12 #include "base/bind_helpers.h"
11 #include "base/command_line.h" 13 #include "base/command_line.h"
12 #include "base/file_util.h" 14 #include "base/file_util.h"
13 #include "base/path_service.h" 15 #include "base/path_service.h"
14 #include "base/synchronization/waitable_event.h" 16 #include "base/synchronization/waitable_event.h"
15 #include "base/task.h"
16 #include "base/threading/thread.h" 17 #include "base/threading/thread.h"
17 #include "base/threading/thread_restrictions.h" 18 #include "base/threading/thread_restrictions.h"
18 #include "chrome/browser/automation/automation_provider_list.h" 19 #include "chrome/browser/automation/automation_provider_list.h"
19 #include "chrome/browser/background/background_mode_manager.h" 20 #include "chrome/browser/background/background_mode_manager.h"
20 #include "chrome/browser/browser_trial.h" 21 #include "chrome/browser/browser_trial.h"
21 #include "chrome/browser/chrome_browser_main.h" 22 #include "chrome/browser/chrome_browser_main.h"
22 #include "chrome/browser/chrome_plugin_service_filter.h" 23 #include "chrome/browser/chrome_plugin_service_filter.h"
23 #include "chrome/browser/component_updater/component_updater_configurator.h" 24 #include "chrome/browser/component_updater/component_updater_configurator.h"
24 #include "chrome/browser/component_updater/component_updater_service.h" 25 #include "chrome/browser/component_updater/component_updater_service.h"
25 #include "chrome/browser/debugger/devtools_protocol_handler.h" 26 #include "chrome/browser/debugger/devtools_protocol_handler.h"
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 // before the profiles, since if there are any still showing we will access 208 // before the profiles, since if there are any still showing we will access
208 // those things during teardown. 209 // those things during teardown.
209 notification_ui_manager_.reset(); 210 notification_ui_manager_.reset();
210 211
211 // FIXME - We shouldn't need this, it's because of DefaultRequestContext! :( 212 // FIXME - We shouldn't need this, it's because of DefaultRequestContext! :(
212 // We need to kill off all URLFetchers using profile related 213 // We need to kill off all URLFetchers using profile related
213 // URLRequestContexts. Normally that'd be covered by deleting the Profiles, 214 // URLRequestContexts. Normally that'd be covered by deleting the Profiles,
214 // but we have some URLFetchers using the DefaultRequestContext, so they need 215 // but we have some URLFetchers using the DefaultRequestContext, so they need
215 // to be cancelled too. Remove this when DefaultRequestContext goes away. 216 // to be cancelled too. Remove this when DefaultRequestContext goes away.
216 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 217 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
217 NewRunnableFunction(&content::URLFetcher::CancelAll)); 218 base::Bind(&content::URLFetcher::CancelAll));
218 219
219 // Need to clear profiles (download managers) before the io_thread_. 220 // Need to clear profiles (download managers) before the io_thread_.
220 profile_manager_.reset(); 221 profile_manager_.reset();
221 222
222 // Debugger must be cleaned up before IO thread and NotificationService. 223 // Debugger must be cleaned up before IO thread and NotificationService.
223 remote_debugging_server_.reset(); 224 remote_debugging_server_.reset();
224 225
225 if (devtools_legacy_handler_.get()) { 226 if (devtools_legacy_handler_.get()) {
226 devtools_legacy_handler_->Stop(); 227 devtools_legacy_handler_->Stop();
227 devtools_legacy_handler_ = NULL; 228 devtools_legacy_handler_ = NULL;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 DCHECK_NE(0u, module_ref_count_); 318 DCHECK_NE(0u, module_ref_count_);
318 module_ref_count_--; 319 module_ref_count_--;
319 if (0 == module_ref_count_) { 320 if (0 == module_ref_count_) {
320 CHECK(MessageLoop::current()->is_running()); 321 CHECK(MessageLoop::current()->is_running());
321 // Allow UI and IO threads to do blocking IO on shutdown, since we do a lot 322 // Allow UI and IO threads to do blocking IO on shutdown, since we do a lot
322 // of it on shutdown for valid reasons. 323 // of it on shutdown for valid reasons.
323 base::ThreadRestrictions::SetIOAllowed(true); 324 base::ThreadRestrictions::SetIOAllowed(true);
324 CHECK(!BrowserList::GetLastActive()); 325 CHECK(!BrowserList::GetLastActive());
325 io_thread()->message_loop()->PostTask( 326 io_thread()->message_loop()->PostTask(
326 FROM_HERE, 327 FROM_HERE,
327 NewRunnableFunction(&base::ThreadRestrictions::SetIOAllowed, true)); 328 base::IgnoreReturn<bool>(
willchan no longer on Chromium 2011/11/19 20:58:24 I'm not sure if the template parameter is necessar
dcheng 2011/11/19 21:15:24 It seems to be necessary in general... except in t
willchan no longer on Chromium 2011/11/19 21:17:55 Can you show me the compilation errors you encount
dcheng 2011/11/19 21:21:27 CXX(target) out/Debug/obj.target/browser/chrome/br
329 base::Bind(&base::ThreadRestrictions::SetIOAllowed, true)));
328 330
329 #if defined(OS_MACOSX) 331 #if defined(OS_MACOSX)
330 MessageLoop::current()->PostTask( 332 MessageLoop::current()->PostTask(
331 FROM_HERE, 333 FROM_HERE,
332 NewRunnableFunction(ChromeBrowserMainPartsMac::DidEndMainMessageLoop)); 334 base::Bind(ChromeBrowserMainPartsMac::DidEndMainMessageLoop));
333 #endif 335 #endif
334 MessageLoop::current()->Quit(); 336 MessageLoop::current()->Quit();
335 } 337 }
336 return module_ref_count_; 338 return module_ref_count_;
337 } 339 }
338 340
339 void BrowserProcessImpl::EndSession() { 341 void BrowserProcessImpl::EndSession() {
340 // Mark all the profiles as clean. 342 // Mark all the profiles as clean.
341 ProfileManager* pm = profile_manager(); 343 ProfileManager* pm = profile_manager();
342 std::vector<Profile*> profiles(pm->GetLoadedProfiles()); 344 std::vector<Profile*> profiles(pm->GetLoadedProfiles());
(...skipping 10 matching lines...) Expand all
353 } 355 }
354 356
355 // We must write that the profile and metrics service shutdown cleanly, 357 // We must write that the profile and metrics service shutdown cleanly,
356 // otherwise on startup we'll think we crashed. So we block until done and 358 // otherwise on startup we'll think we crashed. So we block until done and
357 // then proceed with normal shutdown. 359 // then proceed with normal shutdown.
358 #if defined(USE_X11) 360 #if defined(USE_X11)
359 // Can't run a local loop on linux. Instead create a waitable event. 361 // Can't run a local loop on linux. Instead create a waitable event.
360 scoped_ptr<base::WaitableEvent> done_writing( 362 scoped_ptr<base::WaitableEvent> done_writing(
361 new base::WaitableEvent(false, false)); 363 new base::WaitableEvent(false, false));
362 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 364 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
363 NewRunnableFunction(Signal, done_writing.get())); 365 base::Bind(Signal, done_writing.get()));
364 // If all file writes haven't cleared in the timeout, leak the WaitableEvent 366 // If all file writes haven't cleared in the timeout, leak the WaitableEvent
365 // so that there's no race to reference it in Signal(). 367 // so that there's no race to reference it in Signal().
366 if (!done_writing->TimedWait( 368 if (!done_writing->TimedWait(
367 base::TimeDelta::FromSeconds(kEndSessionTimeoutSeconds))) 369 base::TimeDelta::FromSeconds(kEndSessionTimeoutSeconds)))
368 ignore_result(done_writing.release()); 370 ignore_result(done_writing.release());
369 371
370 #elif defined(OS_WIN) 372 #elif defined(OS_WIN)
371 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, 373 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
372 NewRunnableFunction(PostQuit, MessageLoop::current())); 374 base::Bind(PostQuit, MessageLoop::current()));
373 int quits_received = 0; 375 int quits_received = 0;
374 do { 376 do {
375 MessageLoop::current()->Run(); 377 MessageLoop::current()->Run();
376 ++quits_received; 378 ++quits_received;
377 } while (!g_end_session_file_thread_has_completed); 379 } while (!g_end_session_file_thread_has_completed);
378 // If we did get extra quits, then we should re-post them to the message loop. 380 // If we did get extra quits, then we should re-post them to the message loop.
379 while (--quits_received > 0) 381 while (--quits_received > 0)
380 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 382 MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
381 #else 383 #else
382 NOTIMPLEMENTED(); 384 NOTIMPLEMENTED();
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
1098 } 1100 }
1099 1101
1100 void BrowserProcessImpl::OnAutoupdateTimer() { 1102 void BrowserProcessImpl::OnAutoupdateTimer() {
1101 if (CanAutorestartForUpdate()) { 1103 if (CanAutorestartForUpdate()) {
1102 DLOG(WARNING) << "Detected update. Restarting browser."; 1104 DLOG(WARNING) << "Detected update. Restarting browser.";
1103 RestartBackgroundInstance(); 1105 RestartBackgroundInstance();
1104 } 1106 }
1105 } 1107 }
1106 1108
1107 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) 1109 #endif // (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698