// Copyright 2016 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. module ash.mojom; import "skia/public/interfaces/bitmap.mojom"; // These values match ash::ShelfAlignment. enum ShelfAlignment { BOTTOM, LEFT, RIGHT, BOTTOM_LOCKED, }; // These values match ash::ShelfAutoHideBehavior. enum ShelfAutoHideBehavior { ALWAYS, NEVER, HIDDEN, }; // The Shelf controller allows clients (eg. Chrome) to control the ash shelf. interface ShelfController { // Observers are immediately notified of the current shelf states when added. AddObserver(associated ShelfObserver observer); // Set the shelf alignment and auto-hide behavior. See WmShelf for details. SetAlignment(ShelfAlignment alignment, int64 display_id); SetAutoHideBehavior(ShelfAutoHideBehavior auto_hide, int64 display_id); // Pin and unpin items on the shelf, or update shelf item images. PinItem(ShelfItem item, associated ShelfItemDelegate delegate); UnpinItem(string app_id); SetItemImage(string app_id, skia.mojom.Bitmap image); }; // ShelfObserver is notified on shelf changes; used to persist profile settings. interface ShelfObserver { OnShelfCreated(int64 display_id); OnAlignmentChanged(ShelfAlignment alignment, int64 display_id); OnAutoHideBehaviorChanged(ShelfAutoHideBehavior auto_hide, int64 display_id); }; // ShelfItemDelegate handles command execution and observes shelf item changes. interface ShelfItemDelegate { // Called when a pinned shelf item is invoked without an open window. LaunchItem(); // Called on invocation of a shelf item's context menu command. ExecuteCommand(uint32 command_id, int32 event_flags); // Called when a shelf item is pinned or unpinned. ItemPinned(); ItemUnpinned(); // Called when a pinned shelf item is reordered. // |order| is the index of the item on the shelf. ItemReordered(uint32 order); }; // ContextMenuItems may be used to supplement ash shelf item context menus. struct ContextMenuItem { enum Type { ITEM, CHECK, RADIO, SEPARATOR, SUBMENU }; Type type; uint32 command_id; string? label; array? submenu; bool enabled; bool checked; uint32 radio_group_id; }; // ShelfItem contains the basic fields needed to pin shortcut items. struct ShelfItem { // An app id, used to correlate windows and shortcuts (eg. 'mojo:foo'). string app_id; // A app title, used for tooltips, etc. (eg. 'Foo Application'). string app_title; // An icon image Bitmap, shown on the shelf. skia.mojom.Bitmap image; // Additional context menu items (eg. 'New Incognito Window'). array? context_menu_items; };