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

Unified 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: 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/extensions/extension_options_overlay.js
diff --git a/chrome/browser/resources/extensions/extension_options_overlay.js b/chrome/browser/resources/extensions/extension_options_overlay.js
new file mode 100644
index 0000000000000000000000000000000000000000..92ab71810cbe0dd5ca5932e7d945a627c39f38a5
--- /dev/null
+++ b/chrome/browser/resources/extensions/extension_options_overlay.js
@@ -0,0 +1,83 @@
+// Copyright 2014 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.
+
+cr.define('extensions', function() {
+ 'use strict';
+
+ function ExtensionOptionsOverlay() {}
not at google - send to devlin 2014/08/14 15:33:20 /** * Comment. * @constructor */
Devlin 2014/08/14 15:37:51 docs
ericzeng 2014/08/14 18:11:54 Done.
+
+ cr.addSingletonGetter(ExtensionOptionsOverlay);
+
+ ExtensionOptionsOverlay.prototype = {
+ /**
+ * The extension whose options are being displayed
+ * @type {??}
not at google - send to devlin 2014/08/14 15:33:20 @type {string}
Devlin 2014/08/14 15:37:52 type {??} is probably bad :P
ericzeng 2014/08/14 18:11:54 Done.
+ * @private
+ */
+ extensionId_: undefined,
not at google - send to devlin 2014/08/14 15:33:20 Weak nit: I prefer null over undefined when you're
Devlin 2014/08/14 15:40:36 dbeam will be able to confirm, but I think I've be
+
+ /**
+ * Initialize the page.
+ * @param {function(HTMLDivElement)} showOverlay The function to show or
+ * hide the ExtensionOptionsOverlay; this should take a single parameter
+ * which is either the overlay Div if the overlay should be displayed,
+ * or null if the overlay should be hidden.
+ */
+ initializePage: function(showOverlay) {
+ console.log('initializePage');
not at google - send to devlin 2014/08/14 15:33:20 Remove logging .: logging.
Devlin 2014/08/14 15:37:51 leftover from testing?
ericzeng 2014/08/14 18:11:54 Yeeeuuup
+ var overlay = $('overlay');
+ cr.ui.overlay.setupOverlay(overlay);
+ cr.ui.overlay.globalInitialization();
+ overlay.addEventListener('cancelOverlay', this.handleDismiss_.bind(this));
+
+ /**
+ * The element of the full overlay.
+ * @type {HTMLDivElement}
+ * @private
+ */
+ this.overlayDiv_ = $('extension-options-overlay');
not at google - send to devlin 2014/08/14 15:33:20 Define this as a class property under |extensionId
Devlin 2014/08/14 15:40:36 again, dbeam to confirm, but he's told me in the p
ericzeng 2014/08/14 18:11:54 The extension error overlay initializes it here so
+
+ this.setVisible = function(isVisible) {
Devlin 2014/08/14 15:37:51 docs
ericzeng 2014/08/14 18:11:54 Done.
Dan Beam 2014/08/14 19:01:27 move to prototype, make @private e.g. /** *
ericzeng 2014/08/14 22:34:13 Done.
+ console.log('setVisible');
Devlin 2014/08/14 15:37:52 leftover?
ericzeng 2014/08/14 18:11:54 leftover.
+ showOverlay(isVisible ? this.overlayDiv_ : null);
+ };
+ },
+
+ handleDismiss_: function(event) {
Devlin 2014/08/14 15:37:52 docs
ericzeng 2014/08/14 18:11:54 Done.
+ this.setVisible(false);
+ if (!this.extensionId_)
+ return;
+ var extensionoptions = document.querySelector('extensionoptions');
+ this.overlayDiv_.removeChild(extensionoptions);
+ this.extensionId_ = undefined;
+ },
+
+ setExtensionAndShowOverlay: function(extensionId, extensionName) {
Devlin 2014/08/14 15:37:52 docs
ericzeng 2014/08/14 18:11:54 Done.
+ console.log('setExtensionAndShowOverlay');
Devlin 2014/08/14 15:37:51 leftover?
ericzeng 2014/08/14 18:11:54 affirmative
+ this.extensionId_ = extensionId;
+ var extensionoptions = new ExtensionOptions();
Dan Beam 2014/08/14 19:01:27 nit: extensionOptions
+ extensionoptions.extension = this.extensionId_;
+ extensionoptions.autosize = 'on';
+
+ extensionoptions.onsizechanged = function(evt) {
not at google - send to devlin 2014/08/14 15:33:20 TODO(ericzeng): Resize in a non-jarring way. I do
ericzeng 2014/08/14 18:11:54 Done (but not the todo).
Dan Beam 2014/08/14 19:01:27 just keep the current JS and just add: transiti
ericzeng 2014/08/14 22:34:13 Unfortunately that doesn't really help with the po
not at google - send to devlin 2014/08/15 15:51:06 I think you could get some kind of decent approxim
+ console.log(evt.width + 'x' + evt.height);
Devlin 2014/08/14 15:37:52 leftover?
ericzeng 2014/08/14 18:11:54 yes
+ this.overlayDiv_.style.width = evt.width;
+ this.overlayDiv_.style.height = evt.height;
+ }.bind(this);
+
+ this.overlayDiv_.appendChild(extensionoptions);
+
+ document.querySelector(
+ '#extension-options-overlay .extension-options-overlay-title')
Devlin 2014/08/14 15:37:51 do we need the "#extension-options-overlay"? How
not at google - send to devlin 2014/08/14 15:40:53 The extension-options-overlay ID is nice, but Devl
Dan Beam 2014/08/14 19:01:27 if there's only ever going to be 1, use an #id. i
ericzeng 2014/08/14 22:34:13 Done.
+ .textContent = extensionName;
+
+ this.setVisible(true);
+ }
+ };
+
+ // Export
+ return {
+ ExtensionOptionsOverlay: ExtensionOptionsOverlay
+ };
+});

Powered by Google App Engine
This is Rietveld 408576698