Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(434)

Side by Side Diff: chrome/browser/extensions/external_component_loader.cc

Issue 265843009: Restored an option to enable enhanced bookmarks experiment from Finch (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/bookmarks/enhanced_bookmarks_features.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/extensions/external_component_loader.h" 5 #include "chrome/browser/extensions/external_component_loader.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/metrics/histogram.h"
8 #include "base/prefs/pref_change_registrar.h" 9 #include "base/prefs/pref_change_registrar.h"
9 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
10 #include "base/values.h" 11 #include "base/values.h"
11 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h" 12 #include "chrome/browser/bookmarks/enhanced_bookmarks_features.h"
12 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/extensions/external_provider_impl.h" 14 #include "chrome/browser/extensions/external_provider_impl.h"
14 #include "chrome/browser/search/hotword_service_factory.h" 15 #include "chrome/browser/search/hotword_service_factory.h"
16 #include "chrome/browser/signin/signin_manager_factory.h"
15 #include "chrome/common/chrome_switches.h" 17 #include "chrome/common/chrome_switches.h"
16 #include "chrome/common/extensions/extension_constants.h" 18 #include "chrome/common/extensions/extension_constants.h"
17 #include "chrome/common/pref_names.h" 19 #include "chrome/common/pref_names.h"
20 #include "components/signin/core/browser/signin_manager.h"
18 #include "components/sync_driver/pref_names.h" 21 #include "components/sync_driver/pref_names.h"
19 #include "components/user_prefs/pref_registry_syncable.h" 22 #include "components/user_prefs/pref_registry_syncable.h"
20 #include "content/public/browser/browser_thread.h" 23 #include "content/public/browser/browser_thread.h"
21 24
25 namespace {
26
27 enum FinchBookmarksExperimentState {
28 kFinchBookmarksExperimentEnabled,
29 kFinchBookmarksExperimentEnabledUserSignedIn,
30 kFinchBookmarksExperimentEnabledUserOptOut,
31 kFinchBookmarksExperimentEnumSize
not at google - send to devlin 2014/05/05 20:19:11 what is the difference between this and the simila
yefimt 2014/05/05 20:54:24 This one is used for UMA_HISTOGRAM_ENUMERATION onl
not at google - send to devlin 2014/05/05 21:25:19 Having it separately has the disadvantage of a rep
32 };
33
34 bool IsUserSignedin(Profile* profile) {
35 SigninManager* signin = SigninManagerFactory::GetForProfile(profile);
36 if (!signin)
37 return false;
38 return !signin->GetAuthenticatedUsername().empty();
not at google - send to devlin 2014/05/05 20:19:11 could phrase these last 3 lines as "return signin
yefimt 2014/05/05 20:54:24 Done.
39 }
40
41 } // namespace
42
22 namespace extensions { 43 namespace extensions {
23 44
24 ExternalComponentLoader::ExternalComponentLoader(Profile* profile) 45 ExternalComponentLoader::ExternalComponentLoader(Profile* profile)
25 : profile_(profile) { 46 : profile_(profile) {
26 } 47 }
27 48
28 ExternalComponentLoader::~ExternalComponentLoader() {} 49 ExternalComponentLoader::~ExternalComponentLoader() {}
29 50
30 void ExternalComponentLoader::StartLoading() { 51 void ExternalComponentLoader::StartLoading() {
31 prefs_.reset(new base::DictionaryValue()); 52 prefs_.reset(new base::DictionaryValue());
32 std::string appId = extension_misc::kInAppPaymentsSupportAppId; 53 std::string appId = extension_misc::kInAppPaymentsSupportAppId;
33 prefs_->SetString(appId + ".external_update_url", 54 prefs_->SetString(appId + ".external_update_url",
34 extension_urls::GetWebstoreUpdateUrl().spec()); 55 extension_urls::GetWebstoreUpdateUrl().spec());
35 56
36 if (HotwordServiceFactory::IsHotwordAllowed(profile_)) { 57 if (HotwordServiceFactory::IsHotwordAllowed(profile_)) {
37 std::string hotwordId = extension_misc::kHotwordExtensionId; 58 std::string hotwordId = extension_misc::kHotwordExtensionId;
38 prefs_->SetString(hotwordId + ".external_update_url", 59 prefs_->SetString(hotwordId + ".external_update_url",
39 extension_urls::GetWebstoreUpdateUrl().spec()); 60 extension_urls::GetWebstoreUpdateUrl().spec());
40 } 61 }
41 62
42 BookmarksExperimentState bookmarks_experiment_state_before = 63 BookmarksExperimentState bookmarks_experiment_state_before =
43 static_cast<BookmarksExperimentState>(profile_->GetPrefs()->GetInteger( 64 static_cast<BookmarksExperimentState>(profile_->GetPrefs()->GetInteger(
44 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled)); 65 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled));
45 if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) { 66 // kEnhancedBookmarksExperiment flag could have values "", "1" and "0".
46 // kEnhancedBookmarksExperiment flag could have values "", "1" and "0". 67 // "0" - user opted out.
47 // "0" - user opted out. 68 bool opt_out = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
48 if (CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 69 switches::kEnhancedBookmarksExperiment) == "0";
49 switches::kEnhancedBookmarksExperiment) != "0") { 70
71 bool enabled_from_finch = false;
72 if (IsEnhancedBookmarksExperimentEnabledFromFinch()) {
73 enabled_from_finch = !IsUserSignedin(profile_);
74 FinchBookmarksExperimentState state_to_report =
75 enabled_from_finch ?
76 (opt_out ? kFinchBookmarksExperimentEnabledUserOptOut :
77 kFinchBookmarksExperimentEnabled) :
78 kFinchBookmarksExperimentEnabledUserSignedIn;
79 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.FinchExperimentState",
80 state_to_report,
81 kFinchBookmarksExperimentEnumSize);
82 }
83
84 if (enabled_from_finch) {
85 if (opt_out) {
86 // Experiment enabled but user opted out.
87 profile_->GetPrefs()->SetInteger(
not at google - send to devlin 2014/05/05 20:19:11 why do you need to store whether the command line
yefimt 2014/05/05 20:54:24 In case of finch it not really necessary. Just it
88 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
89 kBookmarksExperimentOptoutFromFinch);
90 } else {
50 // Experiment enabled. 91 // Experiment enabled.
51 std::string ext_id = profile_->GetPrefs()->GetString( 92 profile_->GetPrefs()->SetInteger(
52 sync_driver::prefs::kEnhancedBookmarksExtensionId); 93 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
94 kBookmarksExperimentEnabledFromFinch);
95 std::string ext_id = GetEnhancedBookmarksExtensionIdFromFinch();
53 if (!ext_id.empty()) { 96 if (!ext_id.empty()) {
54 prefs_->SetString(ext_id + ".external_update_url", 97 prefs_->SetString(ext_id + ".external_update_url",
55 extension_urls::GetWebstoreUpdateUrl().spec()); 98 extension_urls::GetWebstoreUpdateUrl().spec());
56 } 99 }
57 } else { 100 }
101 } else if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) {
102 if (opt_out) {
58 // Experiment enabled but user opted out. 103 // Experiment enabled but user opted out.
59 profile_->GetPrefs()->SetInteger( 104 profile_->GetPrefs()->SetInteger(
60 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled, 105 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
61 kBookmarksExperimentEnabledUserOptOut); 106 kBookmarksExperimentEnabledUserOptOut);
107 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
108 kBookmarksExperimentEnabledUserOptOut,
109 kBookmarksExperimentEnumSize);
110 } else {
111 // Experiment enabled.
112 std::string ext_id = profile_->GetPrefs()->GetString(
113 sync_driver::prefs::kEnhancedBookmarksExtensionId);
114 if (!ext_id.empty()) {
115 prefs_->SetString(ext_id + ".external_update_url",
116 extension_urls::GetWebstoreUpdateUrl().spec());
not at google - send to devlin 2014/05/05 20:19:11 I could say the same for finch actually. does pref
yefimt 2014/05/05 20:54:24 If you are talking about statement above, |prefs_|
not at google - send to devlin 2014/05/05 21:25:19 having prefs_ and GetPrefs() as totally different
117 }
118 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
119 kBookmarksExperimentEnabled,
120 kBookmarksExperimentEnumSize);
62 } 121 }
63 } else if (bookmarks_experiment_state_before == 122 } else if (bookmarks_experiment_state_before ==
64 kBookmarksExperimentEnabledUserOptOut) { 123 kBookmarksExperimentEnabledUserOptOut) {
65 if (CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 124 if (opt_out) {
66 switches::kEnhancedBookmarksExperiment) != "0") { 125 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
126 kBookmarksExperimentEnabledUserOptOut,
127 kBookmarksExperimentEnumSize);
128 } else {
67 // User opted in again. 129 // User opted in again.
68 profile_->GetPrefs()->SetInteger( 130 profile_->GetPrefs()->SetInteger(
69 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled, 131 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
70 kBookmarksExperimentEnabled); 132 kBookmarksExperimentEnabled);
71 std::string ext_id = profile_->GetPrefs()->GetString( 133 std::string ext_id = profile_->GetPrefs()->GetString(
72 sync_driver::prefs::kEnhancedBookmarksExtensionId); 134 sync_driver::prefs::kEnhancedBookmarksExtensionId);
73 if (!ext_id.empty()) { 135 if (!ext_id.empty()) {
74 prefs_->SetString(ext_id + ".external_update_url", 136 prefs_->SetString(ext_id + ".external_update_url",
75 extension_urls::GetWebstoreUpdateUrl().spec()); 137 extension_urls::GetWebstoreUpdateUrl().spec());
76 } 138 }
139 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
140 kBookmarksExperimentEnabled,
141 kBookmarksExperimentEnumSize);
77 } 142 }
78 } else { 143 } else {
79 // Experiment disabled. 144 // Experiment disabled.
80 profile_->GetPrefs()->ClearPref( 145 profile_->GetPrefs()->ClearPref(
81 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled); 146 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled);
82 profile_->GetPrefs()->ClearPref( 147 profile_->GetPrefs()->ClearPref(
83 sync_driver::prefs::kEnhancedBookmarksExtensionId); 148 sync_driver::prefs::kEnhancedBookmarksExtensionId);
149 UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
150 kNoBookmarksExperiment,
151 kBookmarksExperimentEnumSize);
84 } 152 }
85 BookmarksExperimentState bookmarks_experiment_state = 153 BookmarksExperimentState bookmarks_experiment_state =
86 static_cast<BookmarksExperimentState>(profile_->GetPrefs()->GetInteger( 154 static_cast<BookmarksExperimentState>(profile_->GetPrefs()->GetInteger(
87 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled)); 155 sync_driver::prefs::kEnhancedBookmarksExperimentEnabled));
88 if (bookmarks_experiment_state_before != bookmarks_experiment_state) { 156 if (bookmarks_experiment_state_before != bookmarks_experiment_state) {
89 UpdateBookmarksExperiment(g_browser_process->local_state(), 157 UpdateBookmarksExperiment(g_browser_process->local_state(),
90 bookmarks_experiment_state); 158 bookmarks_experiment_state);
91 } 159 }
92 160
93 LoadFinished(); 161 LoadFinished();
94 } 162 }
95 163
96 } // namespace extensions 164 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/bookmarks/enhanced_bookmarks_features.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698