// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Sync protocol datatype extension for experimental feature flags.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;
option retain_unknown_fields = true;

package sync_pb;

// A flag to enable support for keystore encryption.
message KeystoreEncryptionFlags {
  optional bool enabled = 1;
}

// Whether history delete directives are enabled.
message HistoryDeleteDirectives {
  optional bool enabled = 1;
}

// Whether this client should cull (delete) expired autofill
// entries when autofill sync is enabled.
message AutofillCullingFlags {
  optional bool enabled = 1;
}

// Whether the favicon sync datatypes are enabled, and what parameters
// they should operate under.
message FaviconSyncFlags {
  optional bool enabled = 1;
  optional int32 favicon_sync_limit = 2 [default = 200];
}

// Flags for enabling the experimental no-precommit GU feature.
message PreCommitUpdateAvoidanceFlags {
  optional bool enabled = 1;
}

// Flags for enabling the GCM feature.
message GcmChannelFlags {
  optional bool enabled = 1;
}

// Flags for enabling the experimental enhanced bookmarks feature.
message EnhancedBookmarksFlags {
  optional bool enabled = 1;
  optional string extension_id = 2;
}

// Flags for enabling GCM channel for invalidations.
message GcmInvalidationsFlags {
  optional bool enabled = 1;
}

// Contains one flag or set of related flags.  Each node of the experiments type
// will have a unique_client_tag identifying which flags it contains.  By
// convention, the tag name should match the sub-message name.
message ExperimentsSpecifics {
  optional KeystoreEncryptionFlags keystore_encryption = 1;
  optional HistoryDeleteDirectives history_delete_directives = 2;
  optional AutofillCullingFlags autofill_culling = 3;
  optional FaviconSyncFlags favicon_sync = 4;
  optional PreCommitUpdateAvoidanceFlags pre_commit_update_avoidance = 5;
  optional GcmChannelFlags gcm_channel = 6;
  optional EnhancedBookmarksFlags enhanced_bookmarks = 7;
  optional GcmInvalidationsFlags gcm_invalidations = 8;
}
