blob: a74baa1c36e86ab5312b6b362eac5038a2b722aa [file] [log] [blame]
// 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.
#ifndef UI_BASE_UI_BASE_TYPES_H_
#define UI_BASE_UI_BASE_TYPES_H_
#include "base/component_export.h"
namespace ui {
class Event;
// Window "show" state.
enum WindowShowState {
// A default un-set state.
SHOW_STATE_DEFAULT = 0,
SHOW_STATE_NORMAL = 1,
SHOW_STATE_MINIMIZED = 2,
SHOW_STATE_MAXIMIZED = 3,
SHOW_STATE_INACTIVE = 4, // Views only, not persisted.
SHOW_STATE_FULLSCREEN = 5,
SHOW_STATE_END = 6 // The end of show state enum.
};
// Dialog button identifiers used to specify which buttons to show the user.
enum DialogButton {
DIALOG_BUTTON_NONE = 0,
DIALOG_BUTTON_OK = 1,
DIALOG_BUTTON_CANCEL = 2,
DIALOG_BUTTON_LAST = DIALOG_BUTTON_CANCEL,
};
// Specifies the type of modality applied to a window. Different modal
// treatments may be handled differently by the window manager.
enum ModalType {
MODAL_TYPE_NONE = 0, // Window is not modal.
MODAL_TYPE_WINDOW = 1, // Window is modal to its transient parent.
MODAL_TYPE_CHILD = 2, // Window is modal to a child of its transient parent.
MODAL_TYPE_SYSTEM = 3 // Window is modal to all other windows.
};
// The class of window and its overall z-order. Not all platforms provide this
// level of z-order granularity. For such platforms, which only provide a
// distinction between "normal" and "always on top" windows, any of the values
// here that aren't |kNormal| are treated equally as "always on top".
enum class ZOrderLevel {
// The default level for windows.
kNormal = 0,
// A "floating" window z-ordered above other normal windows.
//
// Note this is the traditional _desktop_ concept of a "floating window".
// Android has a concept of "freeform window mode" in which apps are presented
// in separate "floating" windows that can be moved and resized by the user.
// That's not what this is.
kFloatingWindow,
// UI elements are used to annotate positions on the screen, and thus must
// appear above floating windows.
kFloatingUIElement,
// There have been horrific security decisions that have been made on the web
// platform that are now expected behavior and cannot easily be changed. The
// only way to mitigate problems with these decisions is to inform the user by
// presenting them with a message that they are in a state that they might not
// expect, and this message must be presented in a UI that cannot be
// interfered with or covered up. Thus this level for Security UI that must be
// Z-ordered in front of everything else. Note that this is useful in
// situations where window modality (as in ModalType) cannot or should not be
// used.
kSecuritySurface,
};
// TODO(varunjain): Remove MENU_SOURCE_NONE (crbug.com/250964)
// A Java counterpart will be generated for this enum.
// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.ui.base
// These are used in histograms, do not remove/renumber entries. Only add at the
// end just before MENU_SOURCE_TYPE_LAST. Also remember to update the
// MenuSourceType enum listing in tools/metrics/histograms/enums.xml.
// Lastly, any new type here needs to be synced with ui_base_types.mojom.
enum MenuSourceType {
MENU_SOURCE_NONE = 0,
MENU_SOURCE_MOUSE = 1,
MENU_SOURCE_KEYBOARD = 2,
MENU_SOURCE_TOUCH = 3,
MENU_SOURCE_TOUCH_EDIT_MENU = 4,
MENU_SOURCE_LONG_PRESS = 5,
MENU_SOURCE_LONG_TAP = 6,
MENU_SOURCE_TOUCH_HANDLE = 7,
MENU_SOURCE_STYLUS = 8,
MENU_SOURCE_ADJUST_SELECTION = 9,
MENU_SOURCE_ADJUST_SELECTION_RESET = 10,
MENU_SOURCE_TYPE_LAST = MENU_SOURCE_ADJUST_SELECTION_RESET
};
COMPONENT_EXPORT(UI_BASE)
MenuSourceType GetMenuSourceTypeForEvent(const ui::Event& event);
} // namespace ui
#endif // UI_BASE_UI_BASE_TYPES_H_