| Index: chrome/browser/shell_integration.cc
|
| diff --git a/chrome/browser/shell_integration.cc b/chrome/browser/shell_integration.cc
|
| index 1ed340bb6627f3aaa6c5625ed2fb47d07cbb4594..eaca74626bee6683a57cd65e06f0af225f26a66b 100644
|
| --- a/chrome/browser/shell_integration.cc
|
| +++ b/chrome/browser/shell_integration.cc
|
| @@ -147,24 +147,13 @@ base::string16 GetAppShortcutsSubdirName() {
|
| #endif // !defined(OS_WIN)
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| -// DefaultWebClientObserver
|
| -//
|
| -
|
| -bool DefaultWebClientObserver::IsOwnedByWorker() {
|
| - return false;
|
| -}
|
| -
|
| -bool DefaultWebClientObserver::IsInteractiveSetDefaultPermitted() {
|
| - return false;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| // DefaultWebClientWorker
|
| //
|
|
|
| DefaultWebClientWorker::DefaultWebClientWorker(
|
| - DefaultWebClientObserver* observer)
|
| - : observer_(observer) {}
|
| + DefaultWebClientObserver* observer,
|
| + bool delete_observer)
|
| + : observer_(observer), delete_observer_(delete_observer) {}
|
|
|
| void DefaultWebClientWorker::StartCheckIsDefault() {
|
| if (observer_)
|
| @@ -187,20 +176,17 @@ void DefaultWebClientWorker::StartSetAsDefault() {
|
| }
|
|
|
| set_as_default_in_progress_ = true;
|
| - bool interactive_permitted = true;
|
| - if (observer_) {
|
| + if (observer_)
|
| observer_->SetDefaultWebClientUIState(STATE_PROCESSING);
|
| - interactive_permitted = observer_->IsInteractiveSetDefaultPermitted();
|
| - }
|
|
|
| set_as_default_initialized_ = InitializeSetAsDefault();
|
|
|
| // Remember the start time.
|
| start_time_ = base::TimeTicks::Now();
|
|
|
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&DefaultWebClientWorker::SetAsDefault,
|
| - this, interactive_permitted));
|
| + BrowserThread::PostTask(
|
| + BrowserThread::FILE, FROM_HERE,
|
| + base::Bind(&DefaultWebClientWorker::SetAsDefault, this));
|
| }
|
|
|
| void DefaultWebClientWorker::ObserverDestroyed() {
|
| @@ -238,7 +224,7 @@ void DefaultWebClientWorker::OnCheckIsDefaultComplete(
|
|
|
| // The worker has finished everything it needs to do, so free the observer
|
| // if we own it.
|
| - if (observer_ && observer_->IsOwnedByWorker()) {
|
| + if (observer_ && delete_observer_) {
|
| delete observer_;
|
| observer_ = nullptr;
|
| }
|
| @@ -363,8 +349,9 @@ const char* DefaultWebClientWorker::AttemptResultToString(
|
| // DefaultBrowserWorker
|
| //
|
|
|
| -DefaultBrowserWorker::DefaultBrowserWorker(DefaultWebClientObserver* observer)
|
| - : DefaultWebClientWorker(observer) {}
|
| +DefaultBrowserWorker::DefaultBrowserWorker(DefaultWebClientObserver* observer,
|
| + bool delete_observer)
|
| + : DefaultWebClientWorker(observer, delete_observer) {}
|
|
|
| DefaultBrowserWorker::~DefaultBrowserWorker() {}
|
|
|
| @@ -378,7 +365,7 @@ void DefaultBrowserWorker::CheckIsDefault() {
|
| base::Bind(&DefaultBrowserWorker::OnCheckIsDefaultComplete, this, state));
|
| }
|
|
|
| -void DefaultBrowserWorker::SetAsDefault(bool interactive_permitted) {
|
| +void DefaultBrowserWorker::SetAsDefault() {
|
| AttemptResult result = AttemptResult::FAILURE;
|
| switch (CanSetAsDefaultBrowser()) {
|
| case SET_DEFAULT_NOT_ALLOWED:
|
| @@ -389,12 +376,12 @@ void DefaultBrowserWorker::SetAsDefault(bool interactive_permitted) {
|
| result = AttemptResult::SUCCESS;
|
| break;
|
| case SET_DEFAULT_INTERACTIVE:
|
| - if (interactive_permitted && SetAsDefaultBrowserInteractive())
|
| + if (interactive_permitted_ && SetAsDefaultBrowserInteractive())
|
| result = AttemptResult::SUCCESS;
|
| break;
|
| case SET_DEFAULT_ASYNCHRONOUS:
|
| #if defined(OS_WIN)
|
| - if (!interactive_permitted)
|
| + if (!interactive_permitted_)
|
| break;
|
| if (GetDefaultBrowser() == IS_DEFAULT) {
|
| // Don't start the asynchronous operation since it could result in
|
| @@ -430,8 +417,9 @@ const char* DefaultBrowserWorker::GetHistogramPrefix() {
|
|
|
| DefaultProtocolClientWorker::DefaultProtocolClientWorker(
|
| DefaultWebClientObserver* observer,
|
| - const std::string& protocol)
|
| - : DefaultWebClientWorker(observer), protocol_(protocol) {}
|
| + const std::string& protocol,
|
| + bool delete_observer)
|
| + : DefaultWebClientWorker(observer, delete_observer), protocol_(protocol) {}
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // DefaultProtocolClientWorker, private:
|
| @@ -446,7 +434,7 @@ void DefaultProtocolClientWorker::CheckIsDefault() {
|
| state));
|
| }
|
|
|
| -void DefaultProtocolClientWorker::SetAsDefault(bool interactive_permitted) {
|
| +void DefaultProtocolClientWorker::SetAsDefault() {
|
| AttemptResult result = AttemptResult::FAILURE;
|
| switch (CanSetAsDefaultProtocolClient()) {
|
| case SET_DEFAULT_NOT_ALLOWED:
|
| @@ -457,7 +445,7 @@ void DefaultProtocolClientWorker::SetAsDefault(bool interactive_permitted) {
|
| result = AttemptResult::SUCCESS;
|
| break;
|
| case SET_DEFAULT_INTERACTIVE:
|
| - if (interactive_permitted &&
|
| + if (interactive_permitted_ &&
|
| SetAsDefaultProtocolClientInteractive(protocol_)) {
|
| result = AttemptResult::SUCCESS;
|
| }
|
|
|