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

#ifndef UI_APP_LIST_APP_LIST_SWITCHES_H_
#define UI_APP_LIST_APP_LIST_SWITCHES_H_

#include "build/build_config.h"
#include "ui/app_list/app_list_export.h"

namespace app_list {
namespace switches {

// Please keep these flags sorted (but keep enable/disable pairs together).
APP_LIST_EXPORT extern const char kCustomLauncherPage[];
APP_LIST_EXPORT extern const char kDisableAppListDismissOnBlur[];
APP_LIST_EXPORT extern const char kEnableAppList[];
APP_LIST_EXPORT extern const char kEnableCenteredAppList[];
APP_LIST_EXPORT extern const char kEnableExperimentalAppList[];
APP_LIST_EXPORT extern const char kDisableExperimentalAppList[];
APP_LIST_EXPORT extern const char kEnableNewAppListMixer[];
APP_LIST_EXPORT extern const char kDisableNewAppListMixer[];
APP_LIST_EXPORT extern const char kEnableSyncAppList[];
APP_LIST_EXPORT extern const char kDisableSyncAppList[];
APP_LIST_EXPORT extern const char kEnableDriveSearchInChromeLauncher[];
APP_LIST_EXPORT extern const char kDisableDriveSearchInChromeLauncher[];
APP_LIST_EXPORT extern const char kResetAppListInstallState[];

#if defined(OS_MACOSX)
APP_LIST_EXPORT extern const char kEnableMacViewsAppList[];
#endif

bool APP_LIST_EXPORT IsAppListSyncEnabled();

bool APP_LIST_EXPORT IsFolderUIEnabled();

bool APP_LIST_EXPORT IsVoiceSearchEnabled();

bool APP_LIST_EXPORT IsExperimentalAppListEnabled();

// Determines whether either command-line switch was given for enabling the
// centered app list position. Do not use this when positioning the app list;
// instead use AppListViewDelegate::ShouldCenterWindow. It checks a superset of
// the conditions that trigger the position.
bool APP_LIST_EXPORT IsCenteredAppListEnabled();

// Determines whether the app list should not be dismissed on focus loss.
bool APP_LIST_EXPORT ShouldNotDismissOnBlur();

bool APP_LIST_EXPORT IsDriveAppsInAppListEnabled();

bool APP_LIST_EXPORT IsDriveSearchInChromeLauncherEnabled();

#if defined(OS_MACOSX)
bool APP_LIST_EXPORT IsMacViewsAppListEnabled();
#endif

}  // namespace switches
}  // namespace app_list

#endif  // UI_APP_LIST_APP_LIST_SWITCHES_H_
