// Copyright (c) 2011 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.

// Defines a list of the preferences that the
// PreferencesChangeProcessor should process changes for.

#ifndef CHROME_BROWSER_SYNC_GLUE_SYNCHRONIZED_PREFERENCES_H_
#define CHROME_BROWSER_SYNC_GLUE_SYNCHRONIZED_PREFERENCES_H_
#pragma once

#include "chrome/browser/translate/translate_prefs.h"
#include "chrome/common/pref_names.h"

namespace browser_sync {

static const char* kSynchronizedPreferences[] = {
  // Options dialog: Basics tab.
  prefs::kRestoreOnStartup,
  prefs::kURLsToRestoreOnStartup,
  prefs::kShowBookmarkBar,
  prefs::kHomePageIsNewTabPage,
  prefs::kHomePage,
  prefs::kShowHomeButton,
  // Default Search is not synced, needs a new data type.  See
  // http://crbug.com/40482

  // Options dialog: Personal Stuff tab.
  prefs::kPasswordManagerEnabled,
  prefs::kAutofillEnabled,
  prefs::kUseCustomChromeFrame,

  // Options dialog: Under the hood -> Content Settings -> Cookies.
  //   Cookie settings and exceptions not working
  prefs::kBlockThirdPartyCookies,
  prefs::kClearSiteDataOnExit,

  // Options dialog: Under the hood -> Content Settings ->
  //     Images, JavaScript, Plug-ins, Pop-ups.
  prefs::kDefaultContentSettings,
  prefs::kContentSettingsPatterns,

  // Options dialog: Under the hood -> Content Settings -> Location.
  //   Exceptions not working (dialog not working either).
  prefs::kGeolocationContentSettings,
  prefs::kGeolocationDefaultContentSetting,

  // Options dialog: under the hood -> Content Settings -> Notifications.
  prefs::kDesktopNotificationDefaultContentSetting,

  // Options dialog: Under the hood -> Clear browsing data.
  //  All working but no live update.
  prefs::kDeleteBrowsingHistory,
  prefs::kDeleteDownloadHistory,
  prefs::kDeleteCache,
  prefs::kDeleteCookies,
  prefs::kDeletePasswords,
  prefs::kDeleteFormData,
  prefs::kDeleteTimePeriod,

  // Options dialog: Under the hood -> Change proxy settings.
  //  Uses native OS dialog, not synced.

  // Options dialog: Under the hood -> Change font and language settings.
  //   Serif, San Serif, Fixed font settings not synced.
  prefs::kDefaultCharset,
  // There is no dialog to modify the kAcceptLanguages list on OSX, so
  // don't sync it.
#if !defined(OS_MACOSX)
  prefs::kAcceptLanguages,
#endif
  prefs::kEnableSpellCheck,
  // Spell checker language not synced.
  prefs::kApplicationLocale,

  // Options dialog: Under the hood.
  prefs::kAlternateErrorPagesEnabled,
  prefs::kSearchSuggestEnabled,
  prefs::kNetworkPredictionEnabled,
  prefs::kSafeBrowsingEnabled,
  prefs::kEnableTranslate,
  // Download directory not synced.
  // Clear auto-opening settings not synced.
  prefs::kPromptForDownload,

  // Wrench menu -> Extensions.
  prefs::kExtensionsUIDeveloperMode,  // no live update

  // Document menu -> Zoom.
  //   prefs::kPerHostZoomLevels creates bad UX when synced, see
  //   http://crbug.com/47359.

  // Document menu -> Encoding -> Auto Detect.
  prefs::kWebKitUsesUniversalDetector,

  // Autofill dialog.
#if defined(OS_MACOSX)
  prefs::kAutofillAuxiliaryProfilesEnabled,
#endif

  // Translate preferences.
  TranslatePrefs::kPrefTranslateLanguageBlacklist,
  TranslatePrefs::kPrefTranslateSiteBlacklist,
  TranslatePrefs::kPrefTranslateWhitelists,
  TranslatePrefs::kPrefTranslateDeniedCount,
  TranslatePrefs::kPrefTranslateAcceptedCount,

  // Desktop notification permissions.
  prefs::kDesktopNotificationAllowedOrigins,
  prefs::kDesktopNotificationDeniedOrigins,

  // (Mac) Application menu.
  prefs::kConfirmToQuitEnabled,

#if defined(OS_CHROMEOS)
  // IME prefs
  prefs::kLanguageChewingAddPhraseDirection,
  prefs::kLanguageChewingAutoShiftCur,
  prefs::kLanguageChewingCandPerPage,
  prefs::kLanguageChewingEasySymbolInput,
  prefs::kLanguageChewingEscCleanAllBuf,
  prefs::kLanguageChewingForceLowercaseEnglish,
  prefs::kLanguageChewingHsuSelKeyType,
  prefs::kLanguageChewingKeyboardType,
  prefs::kLanguageChewingMaxChiSymbolLen,
  prefs::kLanguageChewingPhraseChoiceRearward,
  prefs::kLanguageChewingPlainZhuyin,
  prefs::kLanguageChewingSelKeys,
  prefs::kLanguageChewingSpaceAsSelection,
  prefs::kLanguageHangulKeyboard,
  prefs::kLanguageMozcHistoryLearningLevel,
  prefs::kLanguageMozcIncognitoMode,
  prefs::kLanguageMozcNumpadCharacterForm,
  prefs::kLanguageMozcPreeditMethod,
  prefs::kLanguageMozcPunctuationMethod,
  prefs::kLanguageMozcSessionKeymap,
  prefs::kLanguageMozcShiftKeyModeSwitch,
  prefs::kLanguageMozcSpaceCharacterForm,
  prefs::kLanguageMozcSuggestionsSize,
  prefs::kLanguageMozcSymbolMethod,
  prefs::kLanguageMozcUseAutoImeTurnOff,
  prefs::kLanguageMozcUseDateConversion,
  prefs::kLanguageMozcUseDictionarySuggest,
  prefs::kLanguageMozcUseHistorySuggest,
  prefs::kLanguageMozcUseNumberConversion,
  prefs::kLanguageMozcUseSingleKanjiConversion,
  prefs::kLanguageMozcUseSymbolConversion,
  prefs::kLanguagePinyinAutoCommit,
  prefs::kLanguagePinyinCommaPeriodPage,
  prefs::kLanguagePinyinCorrectPinyin,
  prefs::kLanguagePinyinDoublePinyin,
  prefs::kLanguagePinyinDoublePinyinSchema,
  prefs::kLanguagePinyinFuzzyPinyin,
  prefs::kLanguagePinyinInitChinese,
  prefs::kLanguagePinyinInitFull,
  prefs::kLanguagePinyinInitFullPunct,
  prefs::kLanguagePinyinInitSimplifiedChinese,
  prefs::kLanguagePinyinMinusEqualPage,
  prefs::kLanguagePinyinShiftSelectCandidate,
  prefs::kLanguagePinyinTradCandidate,
  prefs::kLanguagePreferredLanguages,
  prefs::kLanguagePreloadEngines,

  // We don't sync the following IME prefs since they are not user-configurable
  // (yet):
  //   prefs::kLanguageHangulHanjaKeys,
  //   prefs::kLanguageHotkeyNextEngineInMenu,
  //   prefs::kLanguageHotkeyPreviousEngine,
  //   prefs::kLanguageMozcSelectionShortcut,
  //   prefs::kLanguagePinyinLookupTablePageSize,
  //
  // We don't sync prefs::kLanguageCurrentInputMethod and PreviousInputMethod.

  // Keyboard prefs
  prefs::kLanguageXkbRemapAltKeyTo,
  prefs::kLanguageXkbRemapControlKeyTo,
  prefs::kLanguageXkbRemapSearchKeyTo,

  // We don't sync the following keyboard prefs since they are not user-
  // configurable:
  //   prefs::kLanguageXkbAutoRepeatDelay,
  //   prefs::kLanguageXkbAutoRepeatEnabled,
  //   prefs::kLanguageXkbAutoRepeatInterval,

  // Whether to show mobile plan notifications.
  //   Settings -> Internet -> Mobile plan details
  prefs::kShowPlanNotifications,

  // Whether to require password to wake up from sleep
  //   Settings -> Personal Stuff -> Account
  prefs::kEnableScreenLock,

  // Whether to enable tap-to-click
  //   Settings -> System -> Touchpad
  prefs::kTapToClickEnabled,

  // Whether to use the 24-hour clock format.
  //   Settings -> System -> Date and Time
  prefs::kUse24HourClock,
#endif
};

}  // namespace browser_sync

#endif  // CHROME_BROWSER_SYNC_GLUE_SYNCHRONIZED_PREFERENCES_H_