Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(437)

Side by Side Diff: chrome/browser/resources/extensions/extension_options_overlay.js

Issue 475543003: Display extension options in a WebUI overlay instead of in a new tab (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move command line check to C++ Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 cr.define('extensions', function() {
6 'use strict';
7
8 /**
9 * The ExtensionOptionsOverlay will show an extension's options page using
10 * an <extensionoptions> element.
11 * @constructor
12 */
13 function ExtensionOptionsOverlay() {}
14
15 cr.addSingletonGetter(ExtensionOptionsOverlay);
16
17 ExtensionOptionsOverlay.prototype = {
18
Dan Beam 2014/08/18 17:31:32 nit: remove \n
ericzeng 2014/08/18 18:00:25 Done.
19 /**
20 * The function that shows the given element in the overlay.
21 * @type {function}
Dan Beam 2014/08/18 17:31:32 Function
ericzeng 2014/08/18 18:00:25 Done.
22 * @param {HTMLElement} The element to show in the overlay.
23 * @private
24 */
25 showOverlay_: undefined,
26
27 /**
28 * Initialize the page.
29 * @param {function(HTMLDivElement)} showOverlay The function to show or
30 * hide the ExtensionOptionsOverlay; this should take a single parameter
31 * which is either the overlay Div if the overlay should be displayed,
32 * or null if the overlay should be hidden.
33 */
34 initializePage: function(showOverlay) {
35 var overlay = $('overlay');
36 cr.ui.overlay.setupOverlay(overlay);
37 cr.ui.overlay.globalInitialization();
38 overlay.addEventListener('cancelOverlay', this.handleDismiss_.bind(this));
39 this.showOverlay_ = showOverlay;
Dan Beam 2014/08/18 17:31:32 nit: sprinkle some \n in here
ericzeng 2014/08/18 18:00:25 Done.
40
41 /**
42 * The element of the full overlay.
43 * @type {HTMLDivElement}
44 * @private
45 */
46 this.overlayDiv_ = $('extension-options-overlay');
Dan Beam 2014/08/18 17:31:32 why not just $('extension-options-overlay') whenev
ericzeng 2014/08/18 18:00:25 I used the extension error overlay as a reference
47 },
48
49 /**
50 * Handles a click on the close button.
51 * @param {Event} e The click event.
52 * @private
53 */
54 handleDismiss_: function(event) {
55 this.setVisible_(false);
56 var extensionoptions = document.querySelector('extensionoptions');
57 if (extensionoptions)
58 this.overlayDiv_.removeChild(extensionoptions);
59 },
60
61 /**
62 * Associate an extension with the overlay and display it.
63 * @param {string} extensionId The id of the extension whose options page
64 * should be displayed in the overlay.
65 * @param {string} extensionName The name of the extension, which is used
66 * as the header of the overlay.
67 */
68 setExtensionAndShowOverlay: function(extensionId, extensionName) {
69 var extensionoptions = new ExtensionOptions();
70 extensionoptions.extension = extensionId;
71 extensionoptions.autosize = 'on';
72
73 // TODO(ericzeng): Resize in a non-jarring way.
74 extensionoptions.onsizechanged = function(evt) {
75 this.overlayDiv_.style.width = evt.width;
76 this.overlayDiv_.style.height = evt.height;
77 }.bind(this);
78
79 this.overlayDiv_.appendChild(extensionoptions);
80
81 $('extension-options-overlay-title').textContent = extensionName;
82
83 this.setVisible_(true);
84 },
85
86 /**
87 * Toggles the visibility of the ExtensionOptionsOverlay.
88 * @param {boolean} isVisible Whether the overlay should be visible.
89 * @private
90 */
91 setVisible_: function(isVisible) {
92 this.showOverlay_(isVisible ? this.overlayDiv_ : null);
93 }
94 };
95
96 // Export
97 return {
98 ExtensionOptionsOverlay: ExtensionOptionsOverlay
99 };
100 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698