| Index: chrome/browser/shell_integration_win.cc
|
| diff --git a/chrome/browser/shell_integration_win.cc b/chrome/browser/shell_integration_win.cc
|
| index 04bc80c220d314d2a3c7074f0c420cbde1eb233b..f53f0f1b36fc1aed8b7f5d3ddda83444d0d8e531 100644
|
| --- a/chrome/browser/shell_integration_win.cc
|
| +++ b/chrome/browser/shell_integration_win.cc
|
| @@ -56,6 +56,15 @@ namespace {
|
| const wchar_t kAppListAppNameSuffix[] = L"AppList";
|
|
|
| const char kAsyncSetAsDefaultExperimentName[] = "AsyncSetAsDefault";
|
| +// A prefix shared by multiple groups that kicks off the generic
|
| +// AsyncSetAsDefault experiment.
|
| +const char kAsyncSetAsDefaultExperimentEnabledGroupPrefix[] = "Enabled";
|
| +// One of the group names for the AsyncSetAsDefault experiment. Unlike other
|
| +// "Enabled" groups, this group doesn't reset the current default browser choice
|
| +// in the registry.
|
| +const char kAsyncSetAsDefaultExperimentEnabledNoRegistryGroupName[] =
|
| + "EnabledNoRegistry";
|
| +
|
| const char kEnableAsyncSetAsDefault[] = "enable-async-set-as-default";
|
| const char kDisableAsyncSetAsDefault[] = "disable-async-set-as-default";
|
|
|
| @@ -279,13 +288,24 @@ bool IsAsyncSetAsDefaultEnabled() {
|
| // Note: It's important to query the field trial state first, to ensure that
|
| // UMA reports the correct group.
|
| const std::string group_name =
|
| - base::FieldTrialList::FindFullName("AsyncSetAsDefault");
|
| + base::FieldTrialList::FindFullName(kAsyncSetAsDefaultExperimentName);
|
| if (CommandLine::ForCurrentProcess()->HasSwitch(kDisableAsyncSetAsDefault))
|
| return false;
|
| if (CommandLine::ForCurrentProcess()->HasSwitch(kEnableAsyncSetAsDefault))
|
| return true;
|
|
|
| - return base::StartsWith(group_name, "Enabled", base::CompareCase::SENSITIVE);
|
| + return base::StartsWith(group_name,
|
| + kAsyncSetAsDefaultExperimentEnabledGroupPrefix,
|
| + base::CompareCase::SENSITIVE);
|
| +}
|
| +
|
| +// Returns true if the default browser choice should be reset for the current
|
| +// user.
|
| +bool ShouldResetDefaultBrowser() {
|
| + return !base::StartsWith(
|
| + base::FieldTrialList::FindFullName(kAsyncSetAsDefaultExperimentName),
|
| + kAsyncSetAsDefaultExperimentEnabledNoRegistryGroupName,
|
| + base::CompareCase::SENSITIVE);
|
| }
|
|
|
| bool RegisterBrowser() {
|
| @@ -720,7 +740,8 @@ bool ShellIntegration::DefaultBrowserWorker::SetAsDefaultBrowserAsynchronous() {
|
| if (!RegisterBrowser())
|
| return false;
|
|
|
| - ResetDefaultBrowser();
|
| + if (ShouldResetDefaultBrowser())
|
| + ResetDefaultBrowser();
|
|
|
| base::CommandLine cmdline(base::FilePath(L"openwith.exe"));
|
| cmdline.AppendArgNative(StartupBrowserCreator::GetDefaultBrowserUrl());
|
|
|