Index: chrome/browser/shell_integration.cc |
diff --git a/chrome/browser/shell_integration.cc b/chrome/browser/shell_integration.cc |
index d8c5b8dcf38352aab3c7937c875c333fd463e3f6..49b1a6b53a1dde21567511fef3ca46ed822529c7 100644 |
--- a/chrome/browser/shell_integration.cc |
+++ b/chrome/browser/shell_integration.cc |
@@ -178,10 +178,10 @@ ShellIntegration::DefaultWebClientWorker::DefaultWebClientWorker( |
void ShellIntegration::DefaultWebClientWorker::StartCheckIsDefault() { |
if (observer_) { |
grt (UTC plus 2)
2015/11/03 21:12:21
nit: omit braces
Patrick Monette
2015/11/10 19:22:47
Done.
|
observer_->SetDefaultWebClientUIState(STATE_PROCESSING); |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind(&DefaultWebClientWorker::CheckIsDefault, this)); |
} |
+ BrowserThread::PostTask( |
+ BrowserThread::FILE, FROM_HERE, |
+ base::Bind(&DefaultWebClientWorker::CheckIsDefault, this)); |
} |
void ShellIntegration::DefaultWebClientWorker::StartSetAsDefault() { |
@@ -196,15 +196,14 @@ void ShellIntegration::DefaultWebClientWorker::StartSetAsDefault() { |
} |
set_as_default_in_progress_ = true; |
- bool interactive_permitted = false; |
+ bool interactive_permitted = true; |
if (observer_) { |
observer_->SetDefaultWebClientUIState(STATE_PROCESSING); |
interactive_permitted = observer_->IsInteractiveSetDefaultPermitted(); |
- |
- // The initialization is only useful when there is an observer. |
- set_as_default_initialized_ = InitializeSetAsDefault(); |
} |
+ set_as_default_initialized_ = InitializeSetAsDefault(); |
+ |
// Remember the start time. |
start_time_ = base::TimeTicks::Now(); |
@@ -237,6 +236,17 @@ void ShellIntegration::DefaultWebClientWorker::OnCheckIsDefaultComplete( |
DefaultWebClientState state) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
UpdateUI(state); |
+ |
+#if defined(OS_WIN) |
grt (UTC plus 2)
2015/11/03 21:12:21
how about doing this for all platforms?
Patrick Monette
2015/11/10 19:22:47
Done.
|
+ if (check_default_should_report_success_) { |
+ check_default_should_report_success_ = false; |
+ |
+ ReportAttemptResult(state == DefaultWebClientState::IS_DEFAULT |
+ ? AttemptResult::SUCCESS |
+ : AttemptResult::NO_ERRORS_NOT_DEFAULT); |
+ } |
+#endif // defined(OS_WIN) |
+ |
// The worker has finished everything it needs to do, so free the observer |
// if we own it. |
if (observer_ && observer_->IsOwnedByWorker()) { |
@@ -267,7 +277,12 @@ void ShellIntegration::DefaultWebClientWorker::OnSetAsDefaultAttemptComplete( |
observer_->OnSetAsDefaultConcluded(succeeded); |
} |
- ReportAttemptResult(result); |
+ // We don't report a success yet because we have to make sure Chrome is the |
grt (UTC plus 2)
2015/11/03 21:12:21
nit: avoid "we" in comments. how about "Report fai
Patrick Monette
2015/11/10 19:22:47
Done.
|
+ // default browser first. |
+ check_default_should_report_success_ = result == AttemptResult::SUCCESS; |
+ if (!check_default_should_report_success_) { |
grt (UTC plus 2)
2015/11/03 21:12:21
nit: omit braces
Patrick Monette
2015/11/10 19:22:47
Done.
|
+ ReportAttemptResult(result); |
+ } |
// Start the default browser check which will notify the observer as to |
// whether Chrome is really the default browser. This is needed because |
@@ -283,32 +298,35 @@ void ShellIntegration::DefaultWebClientWorker::ReportAttemptResult( |
if (!ShouldReportAttemptResults()) |
return; |
- UMA_HISTOGRAM_ENUMERATION("DefaultBrowser.AsyncSetAsDefault.Result", result, |
+ UMA_HISTOGRAM_ENUMERATION("SetDefaultBrowser.Result", result, |
grt (UTC plus 2)
2015/11/03 21:12:21
how about recording this for all platforms? is the
Patrick Monette
2015/11/10 19:22:47
Done.
|
AttemptResult::NUM_ATTEMPT_RESULT_TYPES); |
- switch (result) { |
- case SUCCESS: |
- UMA_HISTOGRAM_MEDIUM_TIMES( |
- "DefaultBrowser.AsyncSetAsDefault.Duration_Success", |
- base::TimeTicks::Now() - start_time_); |
- break; |
- case FAILURE: |
- UMA_HISTOGRAM_MEDIUM_TIMES( |
- "DefaultBrowser.AsyncSetAsDefault.Duration_Failure", |
- base::TimeTicks::Now() - start_time_); |
- break; |
- case ABANDONED: |
- UMA_HISTOGRAM_MEDIUM_TIMES( |
- "DefaultBrowser.AsyncSetAsDefault.Duration_Abandoned", |
- base::TimeTicks::Now() - start_time_); |
- break; |
- case RETRY: |
- UMA_HISTOGRAM_MEDIUM_TIMES( |
- "DefaultBrowser.AsyncSetAsDefault.Duration_Retry", |
- base::TimeTicks::Now() - start_time_); |
- break; |
- default: |
- break; |
+ if (IsSetAsDefaultAsynchronous()) { |
+ switch (result) { |
grt (UTC plus 2)
2015/11/03 21:12:21
const base::TimeTicks delta = base::TimeTicks::Now
Patrick Monette
2015/11/10 19:22:47
Done.
|
+ case SUCCESS: |
+ UMA_HISTOGRAM_MEDIUM_TIMES("SetDefaultBrowser.AsyncDuration_Success", |
+ base::TimeTicks::Now() - start_time_); |
grt (UTC plus 2)
2015/11/03 21:12:21
delta
Patrick Monette
2015/11/10 19:22:47
Done.
|
+ break; |
+ case FAILURE: |
+ UMA_HISTOGRAM_MEDIUM_TIMES("SetDefaultBrowser.AsyncDuration_Failure", |
+ base::TimeTicks::Now() - start_time_); |
+ break; |
+ case ABANDONED: |
+ UMA_HISTOGRAM_MEDIUM_TIMES("SetDefaultBrowser.AsyncDuration_Abandoned", |
+ base::TimeTicks::Now() - start_time_); |
+ break; |
+ case RETRY: |
+ UMA_HISTOGRAM_MEDIUM_TIMES("SetDefaultBrowser.AsyncDuration_Retry", |
+ base::TimeTicks::Now() - start_time_); |
+ break; |
+ case NO_ERRORS_NOT_DEFAULT: |
+ UMA_HISTOGRAM_MEDIUM_TIMES( |
+ "SetDefaultBrowser.AsyncDuration_NoErrorsNotDefault", |
+ base::TimeTicks::Now() - start_time_); |
+ break; |
+ default: |
+ break; |
+ } |
} |
} |
@@ -318,12 +336,14 @@ bool ShellIntegration::DefaultWebClientWorker::InitializeSetAsDefault() { |
void ShellIntegration::DefaultWebClientWorker::FinalizeSetAsDefault() {} |
-#if !defined(OS_WIN) |
// static |
bool ShellIntegration::DefaultWebClientWorker::ShouldReportAttemptResults() { |
+#if defined(OS_WIN) |
+ return true; |
+#else // !defined(OS_WIN) |
return false; |
+#endif |
} |
-#endif // !defined(OS_WIN) |
void ShellIntegration::DefaultWebClientWorker::UpdateUI( |
DefaultWebClientState state) { |