OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 module ash.mojom; | 5 module ash.mojom; |
6 | 6 |
7 import "mojo/common/string16.mojom"; | |
7 import "skia/public/interfaces/bitmap.mojom"; | 8 import "skia/public/interfaces/bitmap.mojom"; |
9 import "ui/events/mojo/event.mojom"; | |
10 | |
11 // These values match ash::ShelfAction. | |
12 enum ShelfAction { | |
13 NONE, | |
James Cook
2017/03/09 01:09:47
nit: document these. Everything in mojoms needs to
msw
2017/03/10 06:17:56
Done.
| |
14 WINDOW_CREATED, | |
15 WINDOW_ACTIVATED, | |
16 WINDOW_MINIMIZED, | |
17 APP_LIST_SHOWN, | |
18 }; | |
8 | 19 |
9 // These values match ash::ShelfAlignment. | 20 // These values match ash::ShelfAlignment. |
10 enum ShelfAlignment { BOTTOM, LEFT, RIGHT, BOTTOM_LOCKED, }; | 21 enum ShelfAlignment { BOTTOM, LEFT, RIGHT, BOTTOM_LOCKED, }; |
11 | 22 |
12 // These values match ash::ShelfAutoHideBehavior. | 23 // These values match ash::ShelfAutoHideBehavior. |
13 enum ShelfAutoHideBehavior { ALWAYS, NEVER, HIDDEN, }; | 24 enum ShelfAutoHideBehavior { ALWAYS, NEVER, HIDDEN, }; |
14 | 25 |
26 // These values match ash::ShelfLaunchSource. | |
27 enum ShelfLaunchSource { UNKNOWN, APP_LIST, APP_LIST_SEARCH, }; | |
James Cook
2017/03/09 01:09:46
ditto
arguably the mojo docs are more important t
msw
2017/03/10 06:17:56
Done.
| |
28 | |
15 // The Shelf controller allows clients (eg. Chrome) to control the ash shelf. | 29 // The Shelf controller allows clients (eg. Chrome) to control the ash shelf. |
16 interface ShelfController { | 30 interface ShelfController { |
17 // Observers are immediately notified of the current shelf states when added. | 31 // Observers are immediately notified of the current shelf states when added. |
18 AddObserver(associated ShelfObserver observer); | 32 AddObserver(associated ShelfObserver observer); |
19 | 33 |
20 // Set the shelf alignment and auto-hide behavior. See WmShelf for details. | 34 // Set the shelf alignment and auto-hide behavior. See WmShelf for details. |
21 SetAlignment(ShelfAlignment alignment, int64 display_id); | 35 SetAlignment(ShelfAlignment alignment, int64 display_id); |
22 SetAutoHideBehavior(ShelfAutoHideBehavior auto_hide, int64 display_id); | 36 SetAutoHideBehavior(ShelfAutoHideBehavior auto_hide, int64 display_id); |
23 | 37 |
24 // Pin and unpin items on the shelf, or update shelf item images. | 38 // Pin and unpin items on the shelf, or update shelf item images. |
25 PinItem(ShelfItem item, associated ShelfItemDelegate delegate); | 39 PinItem(ShelfItem item, associated ShelfItemDelegate delegate); |
26 UnpinItem(string app_id); | 40 UnpinItem(string app_id); |
27 SetItemImage(string app_id, skia.mojom.Bitmap image); | 41 SetItemImage(string app_id, skia.mojom.Bitmap image); |
28 }; | 42 }; |
29 | 43 |
30 // ShelfObserver is notified on shelf changes; used to persist profile settings. | 44 // ShelfObserver is notified on shelf changes; used to persist profile settings. |
31 interface ShelfObserver { | 45 interface ShelfObserver { |
32 OnShelfCreated(int64 display_id); | 46 OnShelfCreated(int64 display_id); |
33 OnAlignmentChanged(ShelfAlignment alignment, int64 display_id); | 47 OnAlignmentChanged(ShelfAlignment alignment, int64 display_id); |
34 OnAutoHideBehaviorChanged(ShelfAutoHideBehavior auto_hide, int64 display_id); | 48 OnAutoHideBehaviorChanged(ShelfAutoHideBehavior auto_hide, int64 display_id); |
35 }; | 49 }; |
36 | 50 |
37 // ShelfItemDelegate handles command execution and observes shelf item changes. | 51 // ShelfItemDelegate handles shelf item selection, menu command execution, etc. |
38 interface ShelfItemDelegate { | 52 interface ShelfItemDelegate { |
39 // Called when a pinned shelf item is invoked without an open window. | 53 // Called when the user selects a shelf item. The event, display, and source |
40 LaunchItem(); | 54 // info should be provided if known; some implementations use these arguments. |
55 // Defaults: (nullptr, kInvalidDisplayId, LAUNCH_FROM_UNKNOWN) | |
56 // The callback reports the action taken and any app menu items to show. | |
James Cook
2017/03/09 01:09:47
Is this used for context menus? Either way it woul
msw
2017/03/10 06:17:56
Done. This and MenuItem are not used for context m
| |
57 // | |
58 // TODO(msw): Use the Event location to determine the display id? | |
59 ItemSelected(ui.mojom.Event event, | |
60 int64 display_id, | |
61 ShelfLaunchSource source) => (ShelfAction action, | |
62 array<MenuItem> menu_items); | |
James Cook
2017/03/09 01:09:47
I like how you return both pieces of data atomical
msw
2017/03/10 06:17:56
Acknowledged.
| |
41 | 63 |
42 // Called on invocation of a shelf item's context menu command. | 64 // Called on invocation of a shelf item's context or application menu command. |
43 ExecuteCommand(uint32 command_id, int32 event_flags); | 65 ExecuteCommand(uint32 command_id, int32 event_flags); |
44 | 66 |
45 // Called when a shelf item is pinned or unpinned. | 67 // Closes all windows associated with this shelf item. |
46 ItemPinned(); | 68 Close(); |
47 ItemUnpinned(); | |
48 | |
49 // Called when a pinned shelf item is reordered. | |
50 // |order| is the index of the item on the shelf. | |
51 ItemReordered(uint32 order); | |
52 }; | 69 }; |
53 | 70 |
54 // ContextMenuItems may be used to supplement ash shelf item context menus. | 71 // MenuItems are used to populate context and application menus for shelf items. |
55 struct ContextMenuItem { | 72 struct MenuItem { |
56 enum Type { ITEM, CHECK, RADIO, SEPARATOR, SUBMENU }; | 73 enum Type { ITEM, CHECK, RADIO, SEPARATOR, SUBMENU }; |
57 | 74 |
58 Type type; | 75 Type type; |
59 uint32 command_id; | 76 uint32 command_id; |
60 string? label; | 77 mojo.common.mojom.String16 label; |
61 array<ContextMenuItem>? submenu; | 78 skia.mojom.Bitmap image; |
James Cook
2017/03/09 01:09:47
Is image optional? How is it used? Can it be a nul
msw
2017/03/10 06:17:57
It's not 'optional' in the sense of having a quest
| |
79 array<MenuItem>? submenu; | |
62 bool enabled; | 80 bool enabled; |
63 bool checked; | 81 bool checked; |
64 uint32 radio_group_id; | 82 uint32 radio_group_id; |
65 }; | 83 }; |
66 | 84 |
67 // ShelfItem contains the basic fields needed to pin shortcut items. | 85 // ShelfItem contains the basic fields needed to pin shortcut items. |
68 struct ShelfItem { | 86 struct ShelfItem { |
69 // An app id, used to correlate windows and shortcuts (eg. 'mojo:foo'). | 87 // An app id, used to correlate windows and shortcuts (eg. 'mojo:foo'). |
70 string app_id; | 88 string app_id; |
71 | 89 |
72 // A app title, used for tooltips, etc. (eg. 'Foo Application'). | 90 // A app title, used for tooltips, etc. (eg. 'Foo Application'). |
73 string app_title; | 91 string app_title; |
74 | 92 |
75 // An icon image Bitmap, shown on the shelf. | 93 // An icon image Bitmap, shown on the shelf. |
76 skia.mojom.Bitmap image; | 94 skia.mojom.Bitmap image; |
77 | 95 |
78 // Additional context menu items (eg. 'New Incognito Window'). | 96 // Additional context menu items (eg. 'New Incognito Window'). |
79 array<ContextMenuItem>? context_menu_items; | 97 array<MenuItem>? context_menu_items; |
80 }; | 98 }; |
OLD | NEW |