enhanced_bookmarks_features.cc revision cedac228d2dd51db4b79ea1e72c7f249408ee061
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() {
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return chrome_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));
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (bookmarks_experiment_state == kBookmarksExperimentEnabledFromFinch) {
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    *extension_id = GetEnhancedBookmarksExtensionIdFromFinch();
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return !extension_id->empty();
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (bookmarks_experiment_state == kBookmarksExperimentEnabled) {
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) {
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    bookmarks_experiment_state_before = kNoBookmarksExperiment;
75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ForceFinchBookmarkExperimentIfNeeded(flags_storage, kNoBookmarksExperiment);
76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // kEnhancedBookmarksExperiment flag could have values "", "1" and "0".
79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // "0" - user opted out.
80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  bool opt_out = CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                     switches::kEnhancedBookmarksExperiment) == "0";
82cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  BookmarksExperimentState bookmarks_experiment_new_state =
84cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      kNoBookmarksExperiment;
85cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
86cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (IsEnhancedBookmarksExperimentEnabledFromFinch() && !user_signed_in) {
87cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
88cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled but user opted out.
89cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentOptOutFromFinch;
90cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled.
92cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentEnabledFromFinch;
93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  } else if (experiment_enabled_from_sync == kBookmarksExperimentEnabled) {
95cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // Experiment enabled from Chrome sync.
96cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
97cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled but user opted out.
98cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut;
99cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
100cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled.
101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentEnabled;
102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
103cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  } else if (experiment_enabled_from_sync == kNoBookmarksExperiment) {
104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    // Experiment is not enabled from Chrome sync.
105cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    bookmarks_experiment_new_state = kNoBookmarksExperiment;
106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  } else if (bookmarks_experiment_state_before == kBookmarksExperimentEnabled) {
107cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
108cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // Experiment enabled but user opted out.
109cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut;
110cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentEnabled;
112cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  } else if (bookmarks_experiment_state_before ==
114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)             kBookmarksExperimentEnabledUserOptOut) {
115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    if (opt_out) {
116cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentEnabledUserOptOut;
117cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    } else {
118cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      // User opted in again.
119cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state = kBookmarksExperimentEnabled;
120cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    }
121cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
122cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
123cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  UMA_HISTOGRAM_ENUMERATION("EnhancedBookmarks.SyncExperimentState",
124cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            bookmarks_experiment_new_state,
125cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                            kBookmarksExperimentEnumSize);
126cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  user_prefs->SetInteger(
127cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      sync_driver::prefs::kEnhancedBookmarksExperimentEnabled,
128cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      bookmarks_experiment_new_state);
129cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ForceFinchBookmarkExperimentIfNeeded(flags_storage,
130cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                                       bookmarks_experiment_new_state);
131cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
132cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
133cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void ForceFinchBookmarkExperimentIfNeeded(
134cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    PrefService* flags_storage,
135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    BookmarksExperimentState bookmarks_experiment_state) {
136cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!flags_storage)
137cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return;
138cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ListPrefUpdate update(flags_storage, prefs::kEnabledLabsExperiments);
139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  base::ListValue* experiments_list = update.Get();
140cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!experiments_list)
141cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return;
142a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  size_t index;
143a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  if (bookmarks_experiment_state == kNoBookmarksExperiment) {
144a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
145a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarks), &index);
146a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
147a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarksOptout), &index);
148a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  } else if (bookmarks_experiment_state == kBookmarksExperimentEnabled) {
149a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
150a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarksOptout), &index);
151a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->AppendIfNotPresent(
152a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        new base::StringValue(switches::kManualEnhancedBookmarks));
153a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  } else if (bookmarks_experiment_state ==
154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)                 kBookmarksExperimentEnabledUserOptOut) {
155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->Remove(
156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        base::StringValue(switches::kManualEnhancedBookmarks), &index);
157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    experiments_list->AppendIfNotPresent(
158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)        new base::StringValue(switches::kManualEnhancedBookmarksOptout));
159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
162a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool IsEnhancedBookmarksExperimentEnabled() {
163a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  CommandLine* command_line = CommandLine::ForCurrentProcess();
164a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  if (command_line->HasSwitch(switches::kManualEnhancedBookmarks) ||
165a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      command_line->HasSwitch(switches::kManualEnhancedBookmarksOptout)) {
166a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)    return true;
167a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  }
168a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
169cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return IsEnhancedBookmarksExperimentEnabledFromFinch();
170a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
171a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
172a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool IsEnableDomDistillerSet() {
173a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (CommandLine::ForCurrentProcess()->
174a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      HasSwitch(switches::kEnableDomDistiller)) {
175a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
176a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  }
177a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (chrome_variations::GetVariationParamValue(
178a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          kFieldTrialName, "enable-dom-distiller") == "1")
179a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
180a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
181a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return false;
182a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
183a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
184a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)bool IsEnableSyncArticlesSet() {
185a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (CommandLine::ForCurrentProcess()->
186a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)      HasSwitch(switches::kEnableSyncArticles)) {
187a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
188a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  }
189a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  if (chrome_variations::GetVariationParamValue(
190a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)          kFieldTrialName, "enable-sync-articles") == "1")
191a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    return true;
192a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
193a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  return false;
194a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
195