1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_BOOKMARKS_ENHANCED_BOOKMARKS_FEATURES_H_ 6 #define CHROME_BROWSER_BOOKMARKS_ENHANCED_BOOKMARKS_FEATURES_H_ 7 8 #include <string> 9 10 #include "extensions/common/extension.h" 11 12 namespace about_flags { 13 class FlagsStorage; 14 } // namespace about_flags 15 16 class PrefService; 17 class Profile; 18 19 // States for bookmark experiment. They are set by Chrome sync into 20 // sync_driver::prefs::kEnhancedBookmarksExperimentEnabled user preference and 21 // used for UMA reporting as well. 22 enum BookmarksExperimentState { 23 BOOKMARKS_EXPERIMENT_NONE, 24 BOOKMARKS_EXPERIMENT_ENABLED, 25 BOOKMARKS_EXPERIMENT_ENABLED_USER_OPT_OUT, 26 BOOKMARKS_EXPERIMENT_ENABLED_FROM_FINCH, 27 BOOKMARKS_EXPERIMENT_OPT_OUT_FROM_FINCH, 28 BOOKMARKS_EXPERIMENT_ENABLED_FROM_FINCH_USER_SIGNEDIN, 29 BOOKMARKS_EXPERIMENT_ENABLED_FROM_SYNC_UNKNOWN, 30 BOOKMARKS_EXPERIMENT_ENUM_SIZE 31 }; 32 33 // Returns true and sets |extension_id| if bookmarks experiment enabled 34 // false if no bookmark experiment or extension id is empty. 35 bool GetBookmarksExperimentExtensionID(const PrefService* user_prefs, 36 std::string* extension_id); 37 38 // Updates bookmark experiment state based on information from Chrome sync, 39 // Finch experiments, and command line flag. 40 void UpdateBookmarksExperimentState( 41 PrefService* user_prefs, 42 PrefService* local_state, 43 bool user_signed_in, 44 BookmarksExperimentState experiment_enabled_from_sync); 45 46 // Same as UpdateBookmarksExperimentState, but the last argument with 47 // BOOKMARKS_EXPERIMENT_ENABLED_FROM_SYNC_UNKNOWN. 48 // Intended for performing initial configuration of bookmarks experiments 49 // when the browser is first initialized. 50 void InitBookmarksExperimentState(Profile* profile); 51 52 // Sets flag to opt-in user into Finch experiment. 53 void ForceFinchBookmarkExperimentIfNeeded( 54 PrefService* local_state, 55 BookmarksExperimentState bookmarks_experiment_state); 56 57 // Returns true if enhanced bookmarks experiment is running. 58 // Experiment could run by Chrome sync or by Finch. 59 // Note that this doesn't necessarily mean that enhanced bookmarks 60 // is enabled, e.g., user can opt out using a flag. 61 bool IsEnhancedBookmarksExperimentEnabled( 62 about_flags::FlagsStorage* flags_storage); 63 64 #if defined(OS_ANDROID) 65 // Returns true if enhanced bookmark salient image prefetching is enabled. 66 // This can be controlled by field trial. 67 bool IsEnhancedBookmarkImageFetchingEnabled(const PrefService* user_prefs); 68 69 // Returns true if enhanced bookmarks is enabled. 70 bool IsEnhancedBookmarksEnabled(const PrefService* user_prefs); 71 72 #endif 73 74 // Returns true when flag enable-dom-distiller is set or enabled from Finch. 75 bool IsEnableDomDistillerSet(); 76 77 // Returns true when flag enable-sync-articles is set or enabled from Finch. 78 bool IsEnableSyncArticlesSet(); 79 80 #endif // CHROME_BROWSER_BOOKMARKS_ENHANCED_BOOKMARKS_FEATURES_H_ 81