1 // Copyright (c) 2012 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 SYNC_UTIL_EXPERIMENTS_ 6 #define SYNC_UTIL_EXPERIMENTS_ 7 8 #include <string> 9 10 #include "sync/internal_api/public/base/model_type.h" 11 12 namespace syncer { 13 14 const char kFaviconSyncTag[] = "favicon_sync"; 15 const char kPreCommitUpdateAvoidanceTag[] = "pre_commit_update_avoidance"; 16 const char kGCMChannelTag[] = "gcm_channel"; 17 const char kEnhancedBookmarksTag[] = "enhanced_bookmarks"; 18 const char kGCMInvalidationsTag[] = "gcm_invalidations"; 19 20 // A structure to hold the enable status of experimental sync features. 21 struct Experiments { 22 enum GCMChannelState { 23 UNSET, 24 SUPPRESSED, 25 ENABLED, 26 }; 27 28 Experiments() 29 : favicon_sync_limit(200), 30 gcm_channel_state(UNSET), 31 enhanced_bookmarks_enabled(false), 32 gcm_invalidations_enabled(true) // By default GCM channel is enabled. 33 {} 34 35 bool Matches(const Experiments& rhs) { 36 return (favicon_sync_limit == rhs.favicon_sync_limit && 37 gcm_channel_state == rhs.gcm_channel_state && 38 enhanced_bookmarks_enabled == rhs.enhanced_bookmarks_enabled && 39 enhanced_bookmarks_ext_id == rhs.enhanced_bookmarks_ext_id && 40 gcm_invalidations_enabled == rhs.gcm_invalidations_enabled); 41 } 42 43 // The number of favicons that a client is permitted to sync. 44 int favicon_sync_limit; 45 46 // Enable state of the GCM channel. 47 GCMChannelState gcm_channel_state; 48 49 // Enable the enhanced bookmarks sync datatype. 50 bool enhanced_bookmarks_enabled; 51 52 // Enable invalidations over GCM channel. 53 bool gcm_invalidations_enabled; 54 55 // Enhanced bookmarks extension id. 56 std::string enhanced_bookmarks_ext_id; 57 }; 58 59 } // namespace syncer 60 61 #endif // SYNC_UTIL_EXPERIMENTS_ 62