OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // Shim that simulates a <webview> tag via Mutation Observers. | 5 // Shim that simulates a <webview> tag via Mutation Observers. |
6 // | 6 // |
7 // The actual tag is implemented via the browser plugin. The internals of this | 7 // The actual tag is implemented via the browser plugin. The internals of this |
8 // are hidden via Shadow DOM. | 8 // are hidden via Shadow DOM. |
9 | 9 |
10 var watchForTag = require("tagWatcher").watchForTag; | 10 var watchForTag = require("tagWatcher").watchForTag; |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
149 */ | 149 */ |
150 WebView.prototype.handleObjectMutation_ = function(mutation) { | 150 WebView.prototype.handleObjectMutation_ = function(mutation) { |
151 // This observer monitors mutations to attributes of the BrowserPlugin and | 151 // This observer monitors mutations to attributes of the BrowserPlugin and |
152 // updates the <webview> attributes accordingly. | 152 // updates the <webview> attributes accordingly. |
153 if (!this.objectNode_.hasAttribute(mutation.attributeName)) { | 153 if (!this.objectNode_.hasAttribute(mutation.attributeName)) { |
154 // If an attribute is removed from the BrowserPlugin, then remove it | 154 // If an attribute is removed from the BrowserPlugin, then remove it |
155 // from the <webview> as well. | 155 // from the <webview> as well. |
156 this.node_.removeAttribute(mutation.attributeName); | 156 this.node_.removeAttribute(mutation.attributeName); |
157 } else { | 157 } else { |
158 // Update the <webview> attribute to match the BrowserPlugin attribute. | 158 // Update the <webview> attribute to match the BrowserPlugin attribute. |
159 this.node_.setAttribute(mutation.attributeName, | 159 var oldValue = this.node_.getAttribute(mutation.attributeName); |
160 this.objectNode_.getAttribute(mutation.attributeName)); | 160 var newValue = this.objectNode_.getAttribute(mutation.attributeName); |
161 if (newValue != oldValue) | |
lazyboy
2013/02/12 21:50:37
Needs {} around if block.
Can you also add a note
| |
162 this.node_.setAttribute(mutation.attributeName, newValue); | |
161 } | 163 } |
162 }; | 164 }; |
163 | 165 |
164 /** | 166 /** |
165 * @private | 167 * @private |
166 */ | 168 */ |
167 WebView.prototype.setupEvent_ = function(eventname, attribs) { | 169 WebView.prototype.setupEvent_ = function(eventname, attribs) { |
168 var node = this.node_; | 170 var node = this.node_; |
169 this.objectNode_.addEventListener('-internal-' + eventname, function(e) { | 171 this.objectNode_.addEventListener('-internal-' + eventname, function(e) { |
170 var evt = new Event(eventname, { bubbles: true }); | 172 var evt = new Event(eventname, { bubbles: true }); |
171 var detail = e.detail ? JSON.parse(e.detail) : {}; | 173 var detail = e.detail ? JSON.parse(e.detail) : {}; |
172 attribs.forEach(function(attribName) { | 174 attribs.forEach(function(attribName) { |
173 evt[attribName] = detail[attribName]; | 175 evt[attribName] = detail[attribName]; |
174 }); | 176 }); |
175 node.dispatchEvent(evt); | 177 node.dispatchEvent(evt); |
176 }); | 178 }); |
177 } | 179 } |
OLD | NEW |