| OLD | NEW |
| 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/shell_integration.h" | 5 #include "chrome/browser/shell_integration.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 54 } else { | 54 } else { |
| 55 // Use '--app=url' instead of just 'url' to launch the browser with minimal | 55 // Use '--app=url' instead of just 'url' to launch the browser with minimal |
| 56 // chrome. | 56 // chrome. |
| 57 // Note: Do not change this flag! Old Gears shortcuts will break if you do! | 57 // Note: Do not change this flag! Old Gears shortcuts will break if you do! |
| 58 new_cmd_line.AppendSwitchASCII(switches::kApp, url.spec()); | 58 new_cmd_line.AppendSwitchASCII(switches::kApp, url.spec()); |
| 59 } | 59 } |
| 60 return new_cmd_line; | 60 return new_cmd_line; |
| 61 } | 61 } |
| 62 | 62 |
| 63 /////////////////////////////////////////////////////////////////////////////// | 63 /////////////////////////////////////////////////////////////////////////////// |
| 64 // ShellIntegration::DefaultWebClientWorker |
| 65 // |
| 66 |
| 67 ShellIntegration::DefaultWebClientWorker::DefaultWebClientWorker( |
| 68 DefaultWebClientObserver* observer) |
| 69 : observer_(observer) { |
| 70 } |
| 71 |
| 72 void ShellIntegration::DefaultWebClientWorker::StartCheckIsDefault() { |
| 73 if (observer_) { |
| 74 observer_->SetDefaultWebClientUIState(STATE_PROCESSING); |
| 75 BrowserThread::PostTask( |
| 76 BrowserThread::FILE, FROM_HERE, |
| 77 NewRunnableMethod( |
| 78 this, &DefaultWebClientWorker::ExecuteCheckIsDefault)); |
| 79 } |
| 80 } |
| 81 |
| 82 void ShellIntegration::DefaultWebClientWorker::StartSetAsDefault() { |
| 83 if (observer_) { |
| 84 observer_->SetDefaultWebClientUIState(STATE_PROCESSING); |
| 85 } |
| 86 BrowserThread::PostTask( |
| 87 BrowserThread::FILE, FROM_HERE, |
| 88 NewRunnableMethod( |
| 89 this, &DefaultWebClientWorker::ExecuteSetAsDefault)); |
| 90 } |
| 91 |
| 92 void ShellIntegration::DefaultWebClientWorker::ObserverDestroyed() { |
| 93 // Our associated view has gone away, so we shouldn't call back to it if |
| 94 // our worker thread returns after the view is dead. |
| 95 observer_ = NULL; |
| 96 } |
| 97 |
| 98 /////////////////////////////////////////////////////////////////////////////// |
| 99 // DefaultWebClientWorker, private: |
| 100 |
| 101 void ShellIntegration::DefaultWebClientWorker::ExecuteCheckIsDefault() { |
| 102 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 103 DefaultWebClientState state = CheckIsDefault(); |
| 104 BrowserThread::PostTask( |
| 105 BrowserThread::UI, FROM_HERE, |
| 106 NewRunnableMethod( |
| 107 this, &DefaultWebClientWorker::CompleteCheckIsDefault, state)); |
| 108 } |
| 109 |
| 110 void ShellIntegration::DefaultWebClientWorker::CompleteCheckIsDefault( |
| 111 DefaultWebClientState state) { |
| 112 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 113 UpdateUI(state); |
| 114 } |
| 115 |
| 116 void ShellIntegration::DefaultWebClientWorker::ExecuteSetAsDefault() { |
| 117 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 118 SetAsDefault(); |
| 119 ShellIntegration::SetAsDefaultBrowser(); |
| 120 BrowserThread::PostTask( |
| 121 BrowserThread::UI, FROM_HERE, |
| 122 NewRunnableMethod( |
| 123 this, &DefaultWebClientWorker::CompleteSetAsDefault)); |
| 124 } |
| 125 |
| 126 void ShellIntegration::DefaultWebClientWorker::CompleteSetAsDefault() { |
| 127 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 128 // Set as default completed, check again to make sure it stuck... |
| 129 StartCheckIsDefault(); |
| 130 } |
| 131 |
| 132 void ShellIntegration::DefaultWebClientWorker::UpdateUI( |
| 133 DefaultWebClientState state) { |
| 134 if (observer_) { |
| 135 switch (state) { |
| 136 case NOT_DEFAULT_WEB_CLIENT: |
| 137 observer_->SetDefaultWebClientUIState(STATE_NOT_DEFAULT); |
| 138 break; |
| 139 case IS_DEFAULT_WEB_CLIENT: |
| 140 observer_->SetDefaultWebClientUIState(STATE_IS_DEFAULT); |
| 141 break; |
| 142 case UNKNOWN_DEFAULT_WEB_CLIENT: |
| 143 observer_->SetDefaultWebClientUIState(STATE_UNKNOWN); |
| 144 break; |
| 145 default: |
| 146 break; |
| 147 } |
| 148 } |
| 149 } |
| 150 |
| 151 /////////////////////////////////////////////////////////////////////////////// |
| 64 // ShellIntegration::DefaultBrowserWorker | 152 // ShellIntegration::DefaultBrowserWorker |
| 65 // | 153 // |
| 66 | 154 |
| 67 ShellIntegration::DefaultBrowserWorker::DefaultBrowserWorker( | 155 ShellIntegration::DefaultBrowserWorker::DefaultBrowserWorker( |
| 68 DefaultBrowserObserver* observer) | 156 DefaultWebClientObserver* observer) |
| 69 : observer_(observer) { | 157 : DefaultWebClientWorker(observer) { |
| 70 } | |
| 71 | |
| 72 void ShellIntegration::DefaultBrowserWorker::StartCheckDefaultBrowser() { | |
| 73 observer_->SetDefaultBrowserUIState(STATE_PROCESSING); | |
| 74 BrowserThread::PostTask( | |
| 75 BrowserThread::FILE, FROM_HERE, | |
| 76 NewRunnableMethod( | |
| 77 this, &DefaultBrowserWorker::ExecuteCheckDefaultBrowser)); | |
| 78 } | |
| 79 | |
| 80 void ShellIntegration::DefaultBrowserWorker::StartSetAsDefaultBrowser() { | |
| 81 observer_->SetDefaultBrowserUIState(STATE_PROCESSING); | |
| 82 BrowserThread::PostTask( | |
| 83 BrowserThread::FILE, FROM_HERE, | |
| 84 NewRunnableMethod( | |
| 85 this, &DefaultBrowserWorker::ExecuteSetAsDefaultBrowser)); | |
| 86 } | |
| 87 | |
| 88 void ShellIntegration::DefaultBrowserWorker::ObserverDestroyed() { | |
| 89 // Our associated view has gone away, so we shouldn't call back to it if | |
| 90 // our worker thread returns after the view is dead. | |
| 91 observer_ = NULL; | |
| 92 } | 158 } |
| 93 | 159 |
| 94 /////////////////////////////////////////////////////////////////////////////// | 160 /////////////////////////////////////////////////////////////////////////////// |
| 95 // DefaultBrowserWorker, private: | 161 // DefaultBrowserWorker, private: |
| 96 | 162 |
| 97 void ShellIntegration::DefaultBrowserWorker::ExecuteCheckDefaultBrowser() { | 163 ShellIntegration::DefaultWebClientState |
| 98 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 164 ShellIntegration::DefaultBrowserWorker::CheckIsDefault() { |
| 99 DefaultBrowserState state = ShellIntegration::IsDefaultBrowser(); | 165 return ShellIntegration::IsDefaultBrowser(); |
| 100 BrowserThread::PostTask( | |
| 101 BrowserThread::UI, FROM_HERE, | |
| 102 NewRunnableMethod( | |
| 103 this, &DefaultBrowserWorker::CompleteCheckDefaultBrowser, state)); | |
| 104 } | 166 } |
| 105 | 167 |
| 106 void ShellIntegration::DefaultBrowserWorker::CompleteCheckDefaultBrowser( | 168 void ShellIntegration::DefaultBrowserWorker::SetAsDefault() { |
| 107 DefaultBrowserState state) { | 169 ShellIntegration::SetAsDefaultBrowser(); |
| 108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
| 109 UpdateUI(state); | |
| 110 } | 170 } |
| 111 | 171 |
| 112 void ShellIntegration::DefaultBrowserWorker::ExecuteSetAsDefaultBrowser() { | 172 /////////////////////////////////////////////////////////////////////////////// |
| 113 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 173 // ShellIntegration::DefaultProtocolClientWorker |
| 114 ShellIntegration::SetAsDefaultBrowser(); | 174 // |
| 115 BrowserThread::PostTask( | 175 |
| 116 BrowserThread::UI, FROM_HERE, | 176 ShellIntegration::DefaultProtocolClientWorker::DefaultProtocolClientWorker( |
| 117 NewRunnableMethod( | 177 DefaultWebClientObserver* observer, const std::string& protocol) |
| 118 this, &DefaultBrowserWorker::CompleteSetAsDefaultBrowser)); | 178 : DefaultWebClientWorker(observer), |
| 179 protocol_(protocol) { |
| 119 } | 180 } |
| 120 | 181 |
| 121 void ShellIntegration::DefaultBrowserWorker::CompleteSetAsDefaultBrowser() { | 182 /////////////////////////////////////////////////////////////////////////////// |
| 122 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 183 // DefaultProtocolClientWorker, private: |
| 123 if (observer_) { | 184 |
| 124 // Set as default completed, check again to make sure it stuck... | 185 ShellIntegration::DefaultWebClientState |
| 125 StartCheckDefaultBrowser(); | 186 ShellIntegration::DefaultProtocolClientWorker::CheckIsDefault() { |
| 126 } | 187 return ShellIntegration::IsDefaultProtocolClient(protocol_); |
| 127 } | 188 } |
| 128 | 189 |
| 129 void ShellIntegration::DefaultBrowserWorker::UpdateUI( | 190 void ShellIntegration::DefaultProtocolClientWorker::SetAsDefault() { |
| 130 DefaultBrowserState state) { | 191 ShellIntegration::SetAsDefaultProtocolClient(protocol_); |
| 131 if (observer_) { | |
| 132 switch (state) { | |
| 133 case NOT_DEFAULT_BROWSER: | |
| 134 observer_->SetDefaultBrowserUIState(STATE_NOT_DEFAULT); | |
| 135 break; | |
| 136 case IS_DEFAULT_BROWSER: | |
| 137 observer_->SetDefaultBrowserUIState(STATE_IS_DEFAULT); | |
| 138 break; | |
| 139 case UNKNOWN_DEFAULT_BROWSER: | |
| 140 observer_->SetDefaultBrowserUIState(STATE_UNKNOWN); | |
| 141 break; | |
| 142 default: | |
| 143 break; | |
| 144 } | |
| 145 } | |
| 146 } | 192 } |
| OLD | NEW |