OLD | NEW |
| (Empty) |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 /** @type {chrome.app.window.AppWindow} */ | |
6 var mainWindow = null; | |
7 | |
8 /** | |
9 * The main window cannot delete its context menu entries on close because it | |
10 * is being torn down at that point and doesn't have access to the necessary | |
11 * APIs. Instead, it notifies the background page of the entries it creates, | |
12 * and the background pages deletes them when the window is closed. | |
13 * | |
14 * @type {!Object} | |
15 */ | |
16 var contextMenuIds = {}; | |
17 | |
18 /** @param {Object=} opt_launchData */ | |
19 function createWindow(opt_launchData) { | |
20 // If there is already a window, give it focus. | |
21 if (mainWindow) { | |
22 mainWindow.focus(); | |
23 return; | |
24 } | |
25 | |
26 var typed_screen = /** @type {{availWidth: number, availHeight: number}} */ | |
27 (screen); | |
28 | |
29 var windowAttributes = { | |
30 resizable: false, | |
31 frame: remoting.platformIsMac() ? 'chrome' : 'none', | |
32 bounds: { | |
33 width: typed_screen.availWidth, | |
34 height: typed_screen.availHeight, | |
35 left: undefined, | |
36 top: undefined | |
37 } | |
38 }; | |
39 | |
40 function onClosed() { | |
41 mainWindow = null; | |
42 var ids = Object.keys(contextMenuIds); | |
43 for (var i = 0; i < ids.length; ++i) { | |
44 chrome.contextMenus.remove(ids[i]); | |
45 } | |
46 contextMenuIds = {}; | |
47 }; | |
48 | |
49 /** @param {chrome.app.window.AppWindow} appWindow */ | |
50 function onCreate(appWindow) { | |
51 // Set the global window. | |
52 mainWindow = appWindow; | |
53 | |
54 // Clean up the windows sub-menu when the application quits. | |
55 appWindow.onClosed.addListener(onClosed); | |
56 }; | |
57 | |
58 // TODO(garykac) Add code to switch between dev and prod shared modules. | |
59 chrome.app.window.create( | |
60 '_modules/koejkfhmphamcgafjmkellhnekdkopod/main.html', | |
61 windowAttributes, onCreate); | |
62 }; | |
63 | |
64 /** @param {Event} event */ | |
65 function onWindowMessage(event) { | |
66 var method = /** @type {string} */ (event.data['method']); | |
67 var id = /** @type {string} */ (event.data['id']); | |
68 switch (method) { | |
69 case 'addContextMenuId': | |
70 contextMenuIds[id] = true; | |
71 break; | |
72 case 'removeContextMenuId': | |
73 delete contextMenuIds[id]; | |
74 break; | |
75 } | |
76 }; | |
77 | |
78 chrome.app.runtime.onLaunched.addListener(createWindow); | |
79 window.addEventListener('message', onWindowMessage, false); | |
OLD | NEW |