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

#include "chrome/installer/util/master_preferences_constants.h"

namespace installer {
namespace master_preferences {
  const char kDisableLogging[] = "disable_logging";
  const char kDistroDict[] = "distribution";
  const char kDistroImportBookmarksFromFilePref[] =
      "import_bookmarks_from_file";
  const char kDistroSuppressDefaultBrowserPromptPref[] =
      "suppress_default_browser_prompt_for_version";
  const char kDistroWelcomePageOnOSUpgradeEnabled[] =
      "welcome_page_on_os_upgrade_enabled";
  const char kDoNotCreateAnyShortcuts[] = "do_not_create_any_shortcuts";
  const char kDoNotCreateDesktopShortcut[] = "do_not_create_desktop_shortcut";
  const char kDoNotCreateQuickLaunchShortcut[] =
      "do_not_create_quick_launch_shortcut";
  const char kDoNotCreateTaskbarShortcut[] = "do_not_create_taskbar_shortcut";
  const char kDoNotLaunchChrome[] = "do_not_launch_chrome";
  const char kDoNotRegisterForUpdateLaunch[] =
      "do_not_register_for_update_launch";
  const char kLogFile[] = "log_file";
  const char kMakeChromeDefault[] = "make_chrome_default";
  const char kMakeChromeDefaultForUser[] = "make_chrome_default_for_user";
  const char kSuppressFirstRunDefaultBrowserPrompt[] =
      "suppress_first_run_default_browser_prompt";
  const char kMsi[] = "msi";
  const char kMsiProductId[] = "msi_product_id";
  const char kRequireEula[] = "require_eula";
  const char kSystemLevel[] = "system_level";
  const char kVerboseLogging[] = "verbose_logging";
  const char kExtensionsBlock[] = "extensions.settings";
  const char kAllowDowngrade[] = "allow_downgrade";

}  // namespace master_preferences
}  // namespace installer
