enhanced_bookmarks_features.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// found in the LICENSE file.
4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/bookmarks/enhanced_bookmarks_features.h"
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "base/command_line.h"
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/metrics/histogram.h"
9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/prefs/pref_service.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/prefs/scoped_user_pref_update.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/sha1.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/strings/string_number_conversions.h"
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/common/chrome_switches.h"
14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "chrome/common/pref_names.h"
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/sync_driver/pref_names.h"
16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/variations/variations_associated_data.h"
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "extensions/common/features/feature.h"
18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "extensions/common/features/feature_provider.h"
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace {
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)const char kFieldTrialName[] = "EnhancedBookmarks";
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Get extension id from Finch EnhancedBookmarks group parameters.
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)std::string GetEnhancedBookmarksExtensionIdFromFinch() {
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  return variations::GetVariationParamValue(kFieldTrialName, "id");
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Returns true if enhanced bookmarks experiment is enabled from Finch.
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool IsEnhancedBookmarksExperimentEnabledFromFinch() {
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  std::string ext_id = GetEnhancedBookmarksExtensionIdFromFinch();
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  const extensions::FeatureProvider* feature_provider =
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      extensions::FeatureProvider::GetPermissionFeatures();
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  extensions::Feature* feature = feature_provider->GetFeature("metricsPrivate");
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return feature && feature->IsIdInWhitelist(ext_id);
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)};  // namespace
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs,
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                       std::string* extension_id) {
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  BookmarksExperimentState bookmarks_experiment_state =
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      static_cast<BookmarksExperimentState>(user_prefs->GetInteger(
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)          sync_driver::prefs::kEnhancedBookmarksExperimentEnabled));
4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_ENABLED_FROM_FINCH) {
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    *extension_id = GetEnhancedBookmarksExtensionIdFromFinch();
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return !extension_id->empty();
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_ENABLED) {
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    *extension_id = user_prefs->GetString(
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)        sync_driver::prefs::kEnhancedBookmarksExtensionId);
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return !extension_id->empty();
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return false;
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void UpdateBookmarksExperimentState(
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    PrefService* user_prefs,
60a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    PrefService* local_state,
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    bool user_signed_in,
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    BookmarksExperimentState experiment_enabled_from_sync) {
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) PrefService* flags_storage = local_state;
64cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_CHROMEOS)
65cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Chrome OS is using user prefs for flags storage.
66cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  flags_storage = user_prefs;
67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif
68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  BookmarksExperimentState bookmarks_experiment_state_before =
70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      static_cast<BookmarksExperimentState>(user_prefs->GetInteger(
71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)          sync_driver::prefs::kEnhancedBookmarksExperimentEnabled));
72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // If user signed out, clear possible previous state.
73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!user_signed_in) {
7446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bookmarks_experiment_state_before = BOOKMARKS_EXPERIMENT_NONE;
7546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    ForceFinchBookmarkExperimentIfNeeded(flags_storage,
7646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)        BOOKMARKS_EXPERIMENT_NONE);
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // kEnhancedBookmarksExperiment flag could have values "", "1" and "0".
80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // "0" - user opted out.
81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  bool opt_out = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     switches::kEnhancedBookmarksExperiment) == "0";
83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  BookmarksExperimentState bookmarks_experiment_new_state =
8546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      BOOKMARKS_EXPERIMENT_NONE;
86cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (IsEnhancedBookmarksExperimentEnabledFromFinch() && !user_signed_in) {
88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
89cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled but user opted out.
9046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_OPT_OUT_FROM_FINCH;
91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled.
9346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_ENABLED_FROM_FINCH;
94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
9546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  } else if (experiment_enabled_from_sync == BOOKMARKS_EXPERIMENT_ENABLED) {
96cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // Experiment enabled from Chrome sync.
97cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
98cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled but user opted out.
9946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state =
10046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT;
101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled.
10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_ENABLED;
104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
10546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  } else if (experiment_enabled_from_sync == BOOKMARKS_EXPERIMENT_NONE) {
106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // Experiment is not enabled from Chrome sync.
10746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_NONE;
10846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  } else if (bookmarks_experiment_state_before ==
10946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)             BOOKMARKS_EXPERIMENT_ENABLED) {
110cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled but user opted out.
11246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state =
11346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT;
114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
11546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_ENABLED;
116cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
117cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  } else if (bookmarks_experiment_state_before ==
11846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)             BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT) {
119cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
12046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state =
12146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)          BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT;
122cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
123cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // User opted in again.
12446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      bookmarks_experiment_new_state = BOOKMARKS_EXPERIMENT_ENABLED;
125cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
126cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
127cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
128cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
129cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            bookmarks_experiment_new_state,
13046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                            BOOKMARKS_EXPERIMENT_ENUM_SIZE);
131cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  user_prefs->SetInteger(
132cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
133cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state);
134cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ForceFinchBookmarkExperimentIfNeeded(flags_storage,
135cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                       bookmarks_experiment_new_state);
136cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
137cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
138cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void ForceFinchBookmarkExperimentIfNeeded(
139cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    PrefService* flags_storage,
140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    BookmarksExperimentState bookmarks_experiment_state) {
141cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!flags_storage)
142cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return;
143cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ListPrefUpdate update(flags_storage, prefs::kEnabledLabsExperiments);
144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  base::ListValue* experiments_list = update.Get();
145cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!experiments_list)
146cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return;
147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  size_t index;
14846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_NONE) {
149a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarks), &index);
151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarksOptout), &index);
15346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  } else if (bookmarks_experiment_state == BOOKMARKS_EXPERIMENT_ENABLED) {
154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarksOptout), &index);
156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->AppendIfNotPresent(
157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        new base::StringValue(switches::kManualEnhancedBookmarks));
158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  } else if (bookmarks_experiment_state ==
15946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)                 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT) {
160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarks), &index);
162a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->AppendIfNotPresent(
163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        new base::StringValue(switches::kManualEnhancedBookmarksOptout));
164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
167a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool IsEnhancedBookmarksExperimentEnabled() {
168a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  CommandLine* command_line = CommandLine::ForCurrentProcess();
169a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  if (command_line->HasSwitch(switches::kManualEnhancedBookmarks) ||
170a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      command_line->HasSwitch(switches::kManualEnhancedBookmarksOptout)) {
171a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    return true;
172a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
173a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
174cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return IsEnhancedBookmarksExperimentEnabledFromFinch();
175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
17746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#if defined(OS_ANDROID)
17846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)bool IsEnhancedBookmarkImageFetchingEnabled() {
17946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  if (IsEnhancedBookmarksExperimentEnabled())
18046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)    return true;
18146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
18246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Salient images are collected from visited bookmarked pages even if the
18346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // enhanced bookmark feature is turned off. This is to have some images
18446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // available so that in the future, when the feature is turned on, the user
18546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // experience is not a big list of flat colors. However as a precautionary
18646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // measure it is possible to disable this collection of images from finch.
1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  std::string disable_fetching = variations::GetVariationParamValue(
18846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      kFieldTrialName, "DisableImagesFetching");
18946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  return disable_fetching.empty();
19046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)}
19146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#endif
19246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
193a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool IsEnableDomDistillerSet() {
194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (CommandLine::ForCurrentProcess()->
195a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      HasSwitch(switches::kEnableDomDistiller)) {
196a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
197a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  }
1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  if (variations::GetVariationParamValue(
199a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          kFieldTrialName, "enable-dom-distiller") == "1")
200a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
201a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
202a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return false;
203a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
204a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
205a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool IsEnableSyncArticlesSet() {
206a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (CommandLine::ForCurrentProcess()->
207a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      HasSwitch(switches::kEnableSyncArticles)) {
208a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
209a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  }
2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  if (variations::GetVariationParamValue(
211a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          kFieldTrialName, "enable-sync-articles") == "1")
212a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
213a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
214a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return false;
215a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
216