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

Unified Diff: pkg/shadow_dom/lib/shadow_dom.debug.js

Issue 51613003: update ShadowDOM to 862dba015cb6bbe03a8b82e5ad43fe7177cf1bcc (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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
« no previous file with comments | « no previous file | pkg/shadow_dom/lib/shadow_dom.min.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/shadow_dom/lib/shadow_dom.debug.js
diff --git a/pkg/shadow_dom/lib/shadow_dom.debug.js b/pkg/shadow_dom/lib/shadow_dom.debug.js
index 158c3d186e5f09b49ee9adfe118f96c0949b1776..c8a4d5bb786c7f36325a98a336ccf9d743d41d56 100644
--- a/pkg/shadow_dom/lib/shadow_dom.debug.js
+++ b/pkg/shadow_dom/lib/shadow_dom.debug.js
@@ -750,6 +750,7 @@ if (!HTMLElement.prototype.createShadowRoot
},
start: function() {
+ this.started = true;
this.connect();
this.sync(true);
},
@@ -1511,20 +1512,24 @@ var ShadowDOMPolyfill = {};
return /^on[a-z]+$/.test(name);
}
+ function isIdentifierName(name) {
+ return /^\w[a-zA-Z_0-9]*$/.test(name);
+ }
+
function getGetter(name) {
- return hasEval ?
+ return hasEval && isIdentifierName(name) ?
new Function('return this.impl.' + name) :
function() { return this.impl[name]; };
}
function getSetter(name) {
- return hasEval ?
+ return hasEval && isIdentifierName(name) ?
new Function('v', 'this.impl.' + name + ' = v') :
function(v) { this.impl[name] = v; };
}
function getMethod(name) {
- return hasEval ?
+ return hasEval && isIdentifierName(name) ?
new Function('return this.impl.' + name +
'.apply(this.impl, arguments)') :
function() { return this.impl[name].apply(this.impl, arguments); };
@@ -3592,7 +3597,8 @@ var ShadowDOMPolyfill = {};
}
});
- registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElement);
+ registerWrapper(OriginalHTMLCanvasElement, HTMLCanvasElement,
+ document.createElement('canvas'));
scope.wrappers.HTMLCanvasElement = HTMLCanvasElement;
})(this.ShadowDOMPolyfill);
@@ -3646,6 +3652,49 @@ var ShadowDOMPolyfill = {};
'use strict';
var HTMLElement = scope.wrappers.HTMLElement;
+ var registerWrapper = scope.registerWrapper;
+ var unwrap = scope.unwrap;
+ var rewrap = scope.rewrap;
+
+ var OriginalHTMLImageElement = window.HTMLImageElement;
+
+ function HTMLImageElement(node) {
+ HTMLElement.call(this, node);
+ }
+ HTMLImageElement.prototype = Object.create(HTMLElement.prototype);
+
+ registerWrapper(OriginalHTMLImageElement, HTMLImageElement,
+ document.createElement('img'));
+
+ function Image(width, height) {
+ if (!(this instanceof Image)) {
+ throw new TypeError(
+ 'DOM object constructor cannot be called as a function.');
+ }
+
+ var node = unwrap(document.createElement('img'));
+ if (width !== undefined)
+ node.width = width;
+ if (height !== undefined)
+ node.height = height;
+ HTMLElement.call(this, node);
+ rewrap(node, this);
+ }
+
+ Image.prototype = HTMLImageElement.prototype;
+
+ scope.wrappers.HTMLImageElement = HTMLImageElement;
+ scope.wrappers.Image = Image;
+})(this.ShadowDOMPolyfill);
+
+// Copyright 2013 The Polymer Authors. All rights reserved.
+// Use of this source code is goverened by a BSD-style
+// license that can be found in the LICENSE file.
+
+(function(scope) {
+ 'use strict';
+
+ var HTMLElement = scope.wrappers.HTMLElement;
var mixin = scope.mixin;
var registerWrapper = scope.registerWrapper;
@@ -3790,6 +3839,7 @@ var ShadowDOMPolyfill = {};
var mixin = scope.mixin;
var registerWrapper = scope.registerWrapper;
var unwrap = scope.unwrap;
+ var unwrapIfNeeded = scope.unwrapIfNeeded;
var wrap = scope.wrap;
var OriginalCanvasRenderingContext2D = window.CanvasRenderingContext2D;
@@ -3804,7 +3854,7 @@ var ShadowDOMPolyfill = {};
},
drawImage: function() {
- arguments[0] = unwrap(arguments[0]);
+ arguments[0] = unwrapIfNeeded(arguments[0]);
this.impl.drawImage.apply(this.impl, arguments);
},
@@ -3828,7 +3878,7 @@ var ShadowDOMPolyfill = {};
var mixin = scope.mixin;
var registerWrapper = scope.registerWrapper;
- var unwrap = scope.unwrap;
+ var unwrapIfNeeded = scope.unwrapIfNeeded;
var wrap = scope.wrap;
var OriginalWebGLRenderingContext = window.WebGLRenderingContext;
@@ -3847,12 +3897,12 @@ var ShadowDOMPolyfill = {};
},
texImage2D: function() {
- arguments[5] = unwrap(arguments[5]);
+ arguments[5] = unwrapIfNeeded(arguments[5]);
this.impl.texImage2D.apply(this.impl, arguments);
},
texSubImage2D: function() {
- arguments[6] = unwrap(arguments[6]);
+ arguments[6] = unwrapIfNeeded(arguments[6]);
this.impl.texSubImage2D.apply(this.impl, arguments);
}
});
@@ -5205,10 +5255,10 @@ var ShadowDOMPolyfill = {};
'base': 'HTMLBaseElement',
'body': 'HTMLBodyElement',
'button': 'HTMLButtonElement',
- 'canvas': 'HTMLCanvasElement',
// 'command': 'HTMLCommandElement', // Not fully implemented in Gecko.
'dl': 'HTMLDListElement',
'datalist': 'HTMLDataListElement',
+ 'data': 'HTMLDataElement',
'dir': 'HTMLDirectoryElement',
'div': 'HTMLDivElement',
'embed': 'HTMLEmbedElement',
@@ -5222,17 +5272,13 @@ var ShadowDOMPolyfill = {};
'h1': 'HTMLHeadingElement',
'html': 'HTMLHtmlElement',
'iframe': 'HTMLIFrameElement',
-
- // Uses HTMLSpanElement in Firefox.
- // https://bugzilla.mozilla.org/show_bug.cgi?id=843881
- // 'image',
-
'input': 'HTMLInputElement',
'li': 'HTMLLIElement',
'label': 'HTMLLabelElement',
'legend': 'HTMLLegendElement',
'link': 'HTMLLinkElement',
'map': 'HTMLMapElement',
+ 'marquee': 'HTMLMarqueeElement',
// 'media', Covered by audio and video
'menu': 'HTMLMenuElement',
'menuitem': 'HTMLMenuItemElement',
@@ -5254,6 +5300,7 @@ var ShadowDOMPolyfill = {};
'source': 'HTMLSourceElement',
'span': 'HTMLSpanElement',
'style': 'HTMLStyleElement',
+ 'time': 'HTMLTimeElement',
'caption': 'HTMLTableCaptionElement',
// WebKit and Moz are wrong:
// https://bugs.webkit.org/show_bug.cgi?id=111469
@@ -5265,6 +5312,7 @@ var ShadowDOMPolyfill = {};
'thead': 'HTMLTableSectionElement',
'tbody': 'HTMLTableSectionElement',
'textarea': 'HTMLTextAreaElement',
+ 'track': 'HTMLTrackElement',
'title': 'HTMLTitleElement',
'ul': 'HTMLUListElement',
'video': 'HTMLVideoElement',
« no previous file with comments | « no previous file | pkg/shadow_dom/lib/shadow_dom.min.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698