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

Side by Side Diff: chrome/renderer/resources/extensions/extension_options_events.js

Issue 431503002: Implement autosizing for <extensionoptions> (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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 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 var EventBindings = require('event_bindings'); 5 var EventBindings = require('event_bindings');
6 6
7 var CreateEvent = function(name) { 7 var CreateEvent = function(name) {
8 var eventOpts = {supportsListeners: true, supportsFilters: true}; 8 var eventOpts = {supportsListeners: true, supportsFilters: true};
9 return new EventBindings.Event(name, undefined, eventOpts); 9 return new EventBindings.Event(name, undefined, eventOpts);
10 }; 10 };
11 11
12 var SizeChangedEvent = CreateEvent('extensionOptionsInternal.onSizeChanged');
not at google - send to devlin 2014/07/30 17:44:57 why can't this be in the EXTENSION_OPTIONS_EVENTS
ericzeng 2014/07/30 23:29:26 EXTENSION_OPTIONS_EVENTS is propagated up to the D
13
12 var EXTENSION_OPTIONS_EVENTS = { 14 var EXTENSION_OPTIONS_EVENTS = {
13 'load': { 15 'load': {
14 evt: CreateEvent('extensionOptionsInternal.onLoad'), 16 evt: CreateEvent('extensionOptionsInternal.onLoad'),
15 fields: [] 17 fields: []
16 }, 18 }
17 } 19 }
18 20
19 /** 21 /**
20 * @constructor 22 * @constructor
21 */ 23 */
22 function ExtensionOptionsEvents(extensionOptionsInternal, viewInstanceId) { 24 function ExtensionOptionsEvents(extensionOptionsInternal, viewInstanceId) {
23 this.extensionOptionsInternal = extensionOptionsInternal; 25 this.extensionOptionsInternal = extensionOptionsInternal;
24 this.viewInstanceId = viewInstanceId; 26 this.viewInstanceId = viewInstanceId;
25 this.setup(); 27 this.setup();
26 } 28 }
27 29
28 // Sets up events. 30 // Sets up events.
29 ExtensionOptionsEvents.prototype.setup = function() { 31 ExtensionOptionsEvents.prototype.setup = function() {
32 this.setupSizeChangedEvent();
30 for (var eventName in EXTENSION_OPTIONS_EVENTS) { 33 for (var eventName in EXTENSION_OPTIONS_EVENTS) {
31 this.setupEvent(eventName, EXTENSION_OPTIONS_EVENTS[eventName]); 34 this.setupEvent(eventName, EXTENSION_OPTIONS_EVENTS[eventName]);
32 } 35 }
33 }; 36 };
34 37
35 ExtensionOptionsEvents.prototype.setupEvent = function(name, info) { 38 ExtensionOptionsEvents.prototype.setupEvent = function(name, info) {
36 var self = this; 39 var self = this;
37 info.evt.addListener(function(e) { 40 info.evt.addListener(function(e) {
38 var details = {bubbles:true}; 41 var details = {bubbles:true};
39 if (info.cancelable) 42 if (info.cancelable)
40 details.cancelable = true; 43 details.cancelable = true;
41 var extensionOptionsEvent = new Event(name, details); 44 var extensionOptionsEvent = new Event(name, details);
42 $Array.forEach(info.fields, function(field) { 45 $Array.forEach(info.fields, function(field) {
43 if (e.hasOwnProperty(field)) { 46 if (e.hasOwnProperty(field)) {
44 extensionOptionsEvent[field] = e[field]; 47 extensionOptionsEvent[field] = e[field];
45 } 48 }
46 }); 49 });
47 if (info.customHandler) { 50 if (info.customHandler) {
48 info.customHandler(self, e, extensionOptionsEvent); 51 info.customHandler(self, e, extensionOptionsEvent);
49 return; 52 return;
50 } 53 }
51 self.extensionOptionsInternal.dispatchEvent(extensionOptionsEvent); 54 self.extensionOptionsInternal.dispatchEvent(extensionOptionsEvent);
52 }, {instanceId: self.viewInstanceId}); 55 }, {instanceId: self.viewInstanceId});
53 56
54 this.extensionOptionsInternal.setupEventProperty(name); 57 this.extensionOptionsInternal.setupEventProperty(name);
55 }; 58 };
56 59
60 ExtensionOptionsEvents.prototype.setupSizeChangedEvent = function() {
61 SizeChangedEvent.addListener(function(e) {
62 this.extensionOptionsInternal.onSizeChanged(e.width, e.height);
63 }.bind(this), {instanceId: this.viewInstanceId});
64 }
65
57 exports.ExtensionOptionsEvents = ExtensionOptionsEvents; 66 exports.ExtensionOptionsEvents = ExtensionOptionsEvents;
58 exports.CreateEvent = CreateEvent; 67 exports.CreateEvent = CreateEvent;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698