OLD | NEW |
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 } |
OLD | NEW |