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 |