| 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 |