| Index: chrome/browser/shell_integration.cc
|
| diff --git a/chrome/browser/shell_integration.cc b/chrome/browser/shell_integration.cc
|
| index 8c519c5de1d2785de7b366b0c06f34290569028e..bdb0b5cbe7805799bf53e8d507d9708fd6e67c11 100644
|
| --- a/chrome/browser/shell_integration.cc
|
| +++ b/chrome/browser/shell_integration.cc
|
| @@ -157,25 +157,13 @@ base::string16 ShellIntegration::GetAppShortcutsSubdirName() {
|
| #endif // !defined(OS_WIN)
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| -// ShellIntegration::DefaultWebClientObserver
|
| -//
|
| -
|
| -bool ShellIntegration::DefaultWebClientObserver::IsOwnedByWorker() {
|
| - return false;
|
| -}
|
| -
|
| -bool ShellIntegration::DefaultWebClientObserver::
|
| - IsInteractiveSetDefaultPermitted() {
|
| - return false;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| // ShellIntegration::DefaultWebClientWorker
|
| //
|
|
|
| ShellIntegration::DefaultWebClientWorker::DefaultWebClientWorker(
|
| - DefaultWebClientObserver* observer)
|
| - : observer_(observer) {}
|
| + DefaultWebClientObserver* observer,
|
| + bool delete_observer)
|
| + : observer_(observer), delete_observer_(delete_observer) {}
|
|
|
| void ShellIntegration::DefaultWebClientWorker::StartCheckIsDefault() {
|
| if (observer_)
|
| @@ -198,20 +186,17 @@ void ShellIntegration::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 ShellIntegration::DefaultWebClientWorker::ObserverDestroyed() {
|
| @@ -249,7 +234,7 @@ void ShellIntegration::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;
|
| }
|
| @@ -379,9 +364,9 @@ const char* ShellIntegration::DefaultWebClientWorker::AttemptResultToString(
|
| //
|
|
|
| ShellIntegration::DefaultBrowserWorker::DefaultBrowserWorker(
|
| - DefaultWebClientObserver* observer)
|
| - : DefaultWebClientWorker(observer) {
|
| -}
|
| + DefaultWebClientObserver* observer,
|
| + bool delete_observer)
|
| + : DefaultWebClientWorker(observer, delete_observer) {}
|
|
|
| ShellIntegration::DefaultBrowserWorker::~DefaultBrowserWorker() {}
|
|
|
| @@ -395,8 +380,7 @@ void ShellIntegration::DefaultBrowserWorker::CheckIsDefault() {
|
| base::Bind(&DefaultBrowserWorker::OnCheckIsDefaultComplete, this, state));
|
| }
|
|
|
| -void ShellIntegration::DefaultBrowserWorker::SetAsDefault(
|
| - bool interactive_permitted) {
|
| +void ShellIntegration::DefaultBrowserWorker::SetAsDefault() {
|
| AttemptResult result = AttemptResult::FAILURE;
|
| switch (CanSetAsDefaultBrowser()) {
|
| case SET_DEFAULT_NOT_ALLOWED:
|
| @@ -407,12 +391,12 @@ void ShellIntegration::DefaultBrowserWorker::SetAsDefault(
|
| 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
|
| @@ -447,10 +431,10 @@ const char* ShellIntegration::DefaultBrowserWorker::GetHistogramPrefix() {
|
| //
|
|
|
| ShellIntegration::DefaultProtocolClientWorker::DefaultProtocolClientWorker(
|
| - DefaultWebClientObserver* observer, const std::string& protocol)
|
| - : DefaultWebClientWorker(observer),
|
| - protocol_(protocol) {
|
| -}
|
| + DefaultWebClientObserver* observer,
|
| + const std::string& protocol,
|
| + bool delete_observer)
|
| + : DefaultWebClientWorker(observer, delete_observer), protocol_(protocol) {}
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // DefaultProtocolClientWorker, private:
|
| @@ -465,8 +449,7 @@ void ShellIntegration::DefaultProtocolClientWorker::CheckIsDefault() {
|
| state));
|
| }
|
|
|
| -void ShellIntegration::DefaultProtocolClientWorker::SetAsDefault(
|
| - bool interactive_permitted) {
|
| +void ShellIntegration::DefaultProtocolClientWorker::SetAsDefault() {
|
| AttemptResult result = AttemptResult::FAILURE;
|
| switch (CanSetAsDefaultProtocolClient()) {
|
| case SET_DEFAULT_NOT_ALLOWED:
|
| @@ -477,7 +460,7 @@ void ShellIntegration::DefaultProtocolClientWorker::SetAsDefault(
|
| result = AttemptResult::SUCCESS;
|
| break;
|
| case SET_DEFAULT_INTERACTIVE:
|
| - if (interactive_permitted &&
|
| + if (interactive_permitted_ &&
|
| SetAsDefaultProtocolClientInteractive(protocol_)) {
|
| result = AttemptResult::SUCCESS;
|
| }
|
|
|