// 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 themes.

// Update proto_value_conversions{.h,.cc,_unittest.cc} if you change
// any fields in this file.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;
option retain_unknown_fields = true;

package sync_pb;

// Properties of theme sync objects.
message ThemeSpecifics {
  // If set, we're using a custom theme and all custom_* fields should be
  // present.  If not set, we use the default or system theme (see below)
  // and all custom_* fields should be omitted.
  optional bool use_custom_theme = 1;
  // This field is only set (i.e., not cleared) on platforms that have
  // a distinction between the system theme and the default theme, but
  // other platforms must be careful to pass through the set state (not
  // just the value) of this flag.
  //
  // If true, we use the system theme by default (i.e., when we don't use
  // a custom theme) for platforms that make a distinction between the
  // default theme and the system theme.  Has no effect if use_custom_theme
  // is set.
  optional bool use_system_theme_by_default = 2;

  // Custom-theme-specific fields.
  optional string custom_theme_name = 3;
  optional string custom_theme_id = 4;
  optional string custom_theme_update_url = 5;
}

