Chromium Code Reviews| OLD | NEW |
|---|---|
| 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; |
| OLD | NEW |