| // 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<ContextMenuItem>? 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<ContextMenuItem>? context_menu_items; |
| }; |