| Index: chrome/browser/shell_integration.cc
|
| diff --git a/chrome/browser/shell_integration.cc b/chrome/browser/shell_integration.cc
|
| index 0b66d078dd23e449226561478e5579c10920489e..d28992e73af22b09f11a35c02fe6c2b2c66f8138 100644
|
| --- a/chrome/browser/shell_integration.cc
|
| +++ b/chrome/browser/shell_integration.cc
|
| @@ -61,64 +61,105 @@ CommandLine ShellIntegration::CommandLineArgsForLauncher(
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| -// ShellIntegration::DefaultBrowserWorker
|
| +// ShellIntegration::DefaultClientAppWorker
|
| //
|
|
|
| -ShellIntegration::DefaultBrowserWorker::DefaultBrowserWorker(
|
| - DefaultBrowserObserver* observer)
|
| - : observer_(observer) {
|
| +ShellIntegration::DefaultClientAppWorker::DefaultClientAppWorker(
|
| + DefaultClientAppObserver* observer)
|
| + : observer_(observer), protocol_() {
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::StartCheckDefaultBrowser() {
|
| - observer_->SetDefaultBrowserUIState(STATE_PROCESSING);
|
| +void ShellIntegration::DefaultClientAppWorker::StartCheckDefaultBrowser() {
|
| + if (observer_) {
|
| + observer_->SetDefaultClientAppUIState(STATE_PROCESSING);
|
| + }
|
| + BrowserThread::PostTask(
|
| + BrowserThread::FILE, FROM_HERE,
|
| + NewRunnableMethod(
|
| + this, &DefaultClientAppWorker::ExecuteCheckDefaultBrowser));
|
| +}
|
| +
|
| +void ShellIntegration::DefaultClientAppWorker::StartCheckDefaultProtocolClient(
|
| + const std::string& protocol) {
|
| + if (observer_) {
|
| + observer_->SetDefaultClientAppUIState(STATE_PROCESSING);
|
| + }
|
| + protocol_.assign(protocol);
|
| BrowserThread::PostTask(
|
| BrowserThread::FILE, FROM_HERE,
|
| NewRunnableMethod(
|
| - this, &DefaultBrowserWorker::ExecuteCheckDefaultBrowser));
|
| + this, &DefaultClientAppWorker::ExecuteCheckDefaultProtocolClient));
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::StartSetAsDefaultBrowser() {
|
| - observer_->SetDefaultBrowserUIState(STATE_PROCESSING);
|
| +void ShellIntegration::DefaultClientAppWorker::StartSetAsDefaultBrowser() {
|
| + if (observer_) {
|
| + observer_->SetDefaultClientAppUIState(STATE_PROCESSING);
|
| + }
|
| + BrowserThread::PostTask(
|
| + BrowserThread::FILE, FROM_HERE,
|
| + NewRunnableMethod(
|
| + this, &DefaultClientAppWorker::ExecuteSetAsDefaultBrowser));
|
| +}
|
| +
|
| +void ShellIntegration::DefaultClientAppWorker::StartSetAsDefaultProtocolClient(
|
| + const std::string& protocol) {
|
| + if (observer_) {
|
| + observer_->SetDefaultClientAppUIState(STATE_PROCESSING);
|
| + }
|
| + protocol_.assign(protocol);
|
| BrowserThread::PostTask(
|
| BrowserThread::FILE, FROM_HERE,
|
| NewRunnableMethod(
|
| - this, &DefaultBrowserWorker::ExecuteSetAsDefaultBrowser));
|
| + this, &DefaultClientAppWorker::ExecuteSetAsDefaultProtocolClient));
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::ObserverDestroyed() {
|
| +void ShellIntegration::DefaultClientAppWorker::ObserverDestroyed() {
|
| // Our associated view has gone away, so we shouldn't call back to it if
|
| // our worker thread returns after the view is dead.
|
| observer_ = NULL;
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| -// DefaultBrowserWorker, private:
|
| +// DefaultClientAppWorker, private:
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::ExecuteCheckDefaultBrowser() {
|
| +void ShellIntegration::DefaultClientAppWorker::ExecuteCheckDefaultBrowser() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| - DefaultBrowserState state = ShellIntegration::IsDefaultBrowser();
|
| + DefaultClientAppState state = ShellIntegration::IsDefaultBrowser();
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableMethod(
|
| - this, &DefaultBrowserWorker::CompleteCheckDefaultBrowser, state));
|
| + this, &DefaultClientAppWorker::CompleteCheckDefaultApplication,
|
| + state));
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::CompleteCheckDefaultBrowser(
|
| - DefaultBrowserState state) {
|
| +void
|
| +ShellIntegration::DefaultClientAppWorker::ExecuteCheckDefaultProtocolClient() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| + DefaultClientAppState state =
|
| + ShellIntegration::IsDefaultProtocolClient(protocol_);
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + NewRunnableMethod(
|
| + this, &DefaultClientAppWorker::CompleteCheckDefaultApplication,
|
| + state));
|
| +}
|
| +
|
| +void ShellIntegration::DefaultClientAppWorker::CompleteCheckDefaultApplication(
|
| + DefaultClientAppState state) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| UpdateUI(state);
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::ExecuteSetAsDefaultBrowser() {
|
| +void ShellIntegration::DefaultClientAppWorker::ExecuteSetAsDefaultBrowser() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| ShellIntegration::SetAsDefaultBrowser();
|
| BrowserThread::PostTask(
|
| BrowserThread::UI, FROM_HERE,
|
| NewRunnableMethod(
|
| - this, &DefaultBrowserWorker::CompleteSetAsDefaultBrowser));
|
| + this, &DefaultClientAppWorker::CompleteSetAsDefaultBrowser));
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::CompleteSetAsDefaultBrowser() {
|
| +void ShellIntegration::DefaultClientAppWorker::CompleteSetAsDefaultBrowser() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| if (observer_) {
|
| // Set as default completed, check again to make sure it stuck...
|
| @@ -126,18 +167,37 @@ void ShellIntegration::DefaultBrowserWorker::CompleteSetAsDefaultBrowser() {
|
| }
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::UpdateUI(
|
| - DefaultBrowserState state) {
|
| +void
|
| +ShellIntegration::DefaultClientAppWorker::ExecuteSetAsDefaultProtocolClient() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| + ShellIntegration::SetAsDefaultProtocolClient(protocol_);
|
| + BrowserThread::PostTask(
|
| + BrowserThread::UI, FROM_HERE,
|
| + NewRunnableMethod(
|
| + this, &DefaultClientAppWorker::CompleteSetAsDefaultProtocolClient));
|
| +}
|
| +
|
| +void
|
| +ShellIntegration::DefaultClientAppWorker::CompleteSetAsDefaultProtocolClient() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + if (observer_) {
|
| + // Set as default completed, check again to make sure it stuck...
|
| + StartCheckDefaultProtocolClient(protocol_);
|
| + }
|
| +}
|
| +
|
| +void ShellIntegration::DefaultClientAppWorker::UpdateUI(
|
| + DefaultClientAppState state) {
|
| if (observer_) {
|
| switch (state) {
|
| - case NOT_DEFAULT_BROWSER:
|
| - observer_->SetDefaultBrowserUIState(STATE_NOT_DEFAULT);
|
| + case NOT_DEFAULT_CLIENT_APP:
|
| + observer_->SetDefaultClientAppUIState(STATE_NOT_DEFAULT);
|
| break;
|
| - case IS_DEFAULT_BROWSER:
|
| - observer_->SetDefaultBrowserUIState(STATE_IS_DEFAULT);
|
| + case IS_DEFAULT_CLIENT_APP:
|
| + observer_->SetDefaultClientAppUIState(STATE_IS_DEFAULT);
|
| break;
|
| - case UNKNOWN_DEFAULT_BROWSER:
|
| - observer_->SetDefaultBrowserUIState(STATE_UNKNOWN);
|
| + case UNKNOWN_DEFAULT_CLIENT_APP:
|
| + observer_->SetDefaultClientAppUIState(STATE_UNKNOWN);
|
| break;
|
| default:
|
| break;
|
|
|