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