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

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

Issue 345037: Fifth patch in getting rid of caching MessageLoop pointers. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/shell_integration.h" 5 #include "chrome/browser/shell_integration.h"
6 6
7 #include "base/message_loop.h"
8 #include "base/path_service.h" 7 #include "base/path_service.h"
9 #include "base/thread.h"
10 #include "chrome/browser/browser_process.h"
11 #include "chrome/common/chrome_paths.h" 8 #include "chrome/common/chrome_paths.h"
9 #include "chrome/browser/chrome_thread.h"
12 10
13 /////////////////////////////////////////////////////////////////////////////// 11 ///////////////////////////////////////////////////////////////////////////////
14 // ShellIntegration::DefaultBrowserWorker 12 // ShellIntegration::DefaultBrowserWorker
15 // 13 //
16 14
17 ShellIntegration::DefaultBrowserWorker::DefaultBrowserWorker( 15 ShellIntegration::DefaultBrowserWorker::DefaultBrowserWorker(
18 DefaultBrowserObserver* observer) 16 DefaultBrowserObserver* observer)
19 : observer_(observer), 17 : observer_(observer) {
20 ui_loop_(MessageLoop::current()),
21 file_loop_(g_browser_process->file_thread()->message_loop()) {
22 } 18 }
23 19
24 void ShellIntegration::DefaultBrowserWorker::StartCheckDefaultBrowser() { 20 void ShellIntegration::DefaultBrowserWorker::StartCheckDefaultBrowser() {
25 observer_->SetDefaultBrowserUIState(STATE_PROCESSING); 21 observer_->SetDefaultBrowserUIState(STATE_PROCESSING);
26 file_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 22 ChromeThread::PostTask(
27 &DefaultBrowserWorker::ExecuteCheckDefaultBrowser)); 23 ChromeThread::FILE, FROM_HERE,
24 NewRunnableMethod(
25 this, &DefaultBrowserWorker::ExecuteCheckDefaultBrowser));
28 } 26 }
29 27
30 void ShellIntegration::DefaultBrowserWorker::StartSetAsDefaultBrowser() { 28 void ShellIntegration::DefaultBrowserWorker::StartSetAsDefaultBrowser() {
31 observer_->SetDefaultBrowserUIState(STATE_PROCESSING); 29 observer_->SetDefaultBrowserUIState(STATE_PROCESSING);
32 file_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 30 ChromeThread::PostTask(
33 &DefaultBrowserWorker::ExecuteSetAsDefaultBrowser)); 31 ChromeThread::FILE, FROM_HERE,
32 NewRunnableMethod(
33 this, &DefaultBrowserWorker::ExecuteSetAsDefaultBrowser));
34 } 34 }
35 35
36 void ShellIntegration::DefaultBrowserWorker::ObserverDestroyed() { 36 void ShellIntegration::DefaultBrowserWorker::ObserverDestroyed() {
37 // Our associated view has gone away, so we shouldn't call back to it if 37 // Our associated view has gone away, so we shouldn't call back to it if
38 // our worker thread returns after the view is dead. 38 // our worker thread returns after the view is dead.
39 observer_ = NULL; 39 observer_ = NULL;
40 } 40 }
41 41
42 /////////////////////////////////////////////////////////////////////////////// 42 ///////////////////////////////////////////////////////////////////////////////
43 // DefaultBrowserWorker, private: 43 // DefaultBrowserWorker, private:
44 44
45 void ShellIntegration::DefaultBrowserWorker::ExecuteCheckDefaultBrowser() { 45 void ShellIntegration::DefaultBrowserWorker::ExecuteCheckDefaultBrowser() {
46 DCHECK(MessageLoop::current() == file_loop_); 46 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
47 DefaultBrowserState state = ShellIntegration::IsDefaultBrowser(); 47 DefaultBrowserState state = ShellIntegration::IsDefaultBrowser();
48 ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 48 ChromeThread::PostTask(
49 &DefaultBrowserWorker::CompleteCheckDefaultBrowser, state)); 49 ChromeThread::UI, FROM_HERE,
50 NewRunnableMethod(
51 this, &DefaultBrowserWorker::CompleteCheckDefaultBrowser, state));
50 } 52 }
51 53
52 void ShellIntegration::DefaultBrowserWorker::CompleteCheckDefaultBrowser( 54 void ShellIntegration::DefaultBrowserWorker::CompleteCheckDefaultBrowser(
53 DefaultBrowserState state) { 55 DefaultBrowserState state) {
54 DCHECK(MessageLoop::current() == ui_loop_); 56 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
55 UpdateUI(state); 57 UpdateUI(state);
56 } 58 }
57 59
58 void ShellIntegration::DefaultBrowserWorker::ExecuteSetAsDefaultBrowser() { 60 void ShellIntegration::DefaultBrowserWorker::ExecuteSetAsDefaultBrowser() {
59 DCHECK(MessageLoop::current() == file_loop_); 61 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::FILE));
60 ShellIntegration::SetAsDefaultBrowser(); 62 ShellIntegration::SetAsDefaultBrowser();
61 ui_loop_->PostTask(FROM_HERE, NewRunnableMethod(this, 63 ChromeThread::PostTask(
62 &DefaultBrowserWorker::CompleteSetAsDefaultBrowser)); 64 ChromeThread::UI, FROM_HERE,
65 NewRunnableMethod(
66 this, &DefaultBrowserWorker::CompleteSetAsDefaultBrowser));
63 } 67 }
64 68
65 void ShellIntegration::DefaultBrowserWorker::CompleteSetAsDefaultBrowser() { 69 void ShellIntegration::DefaultBrowserWorker::CompleteSetAsDefaultBrowser() {
66 DCHECK(MessageLoop::current() == ui_loop_); 70 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI));
67 if (observer_) { 71 if (observer_) {
68 // Set as default completed, check again to make sure it stuck... 72 // Set as default completed, check again to make sure it stuck...
69 StartCheckDefaultBrowser(); 73 StartCheckDefaultBrowser();
70 } 74 }
71 } 75 }
72 76
73 void ShellIntegration::DefaultBrowserWorker::UpdateUI( 77 void ShellIntegration::DefaultBrowserWorker::UpdateUI(
74 DefaultBrowserState state) { 78 DefaultBrowserState state) {
75 if (observer_) { 79 if (observer_) {
76 switch (state) { 80 switch (state) {
77 case NOT_DEFAULT_BROWSER: 81 case NOT_DEFAULT_BROWSER:
78 observer_->SetDefaultBrowserUIState(STATE_NOT_DEFAULT); 82 observer_->SetDefaultBrowserUIState(STATE_NOT_DEFAULT);
79 break; 83 break;
80 case IS_DEFAULT_BROWSER: 84 case IS_DEFAULT_BROWSER:
81 observer_->SetDefaultBrowserUIState(STATE_IS_DEFAULT); 85 observer_->SetDefaultBrowserUIState(STATE_IS_DEFAULT);
82 break; 86 break;
83 case UNKNOWN_DEFAULT_BROWSER: 87 case UNKNOWN_DEFAULT_BROWSER:
84 observer_->SetDefaultBrowserUIState(STATE_UNKNOWN); 88 observer_->SetDefaultBrowserUIState(STATE_UNKNOWN);
85 break; 89 break;
86 default: 90 default:
87 break; 91 break;
88 } 92 }
89 } 93 }
90 } 94 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698