diff --git a/src/lib/dom-api.html b/src/lib/dom-api.html
index 75ceea0921..36a4e8368c 100644
--- a/src/lib/dom-api.html
+++ b/src/lib/dom-api.html
@@ -29,23 +29,17 @@
var nativeCloneNode = Element.prototype.cloneNode;
var nativeImportNode = Document.prototype.importNode;
+ // ensure nodes are wrapped if SD polyfill is present
+ var needsToWrap = Settings.hasShadow && !Settings.nativeShadow;
+ var wrap = window.wrap ? window.wrap : function(node) { return node; };
+
var DomApi = function(node) {
- this.node = node;
+ this.node = needsToWrap ? wrap(node) : node;
if (this.patch) {
this.patch();
}
};
- // ensure nodes are wrapped if SD polyfill is present
- if (window.wrap && Settings.useShadow && !Settings.useNativeShadow) {
- DomApi = function(node) {
- this.node = wrap(node);
- if (this.patch) {
- this.patch();
- }
- };
- }
-
DomApi.prototype = {
flush: function() {
@@ -66,7 +60,7 @@
var n = node;
// wrap document for SD polyfill
- var wrappedDocument = wrap(document);
+ var wrappedDocument = Polymer.DomApi.wrap(document);
// walk from node to `this` or `document`
while (n && n !== wrappedDocument && n !== this.node) {
@@ -977,7 +971,8 @@
hasInsertionPoint: hasInsertionPoint,
ctor: DomApi,
factory: factory,
- hasDomApi: hasDomApi
+ hasDomApi: hasDomApi,
+ wrap: wrap
};
})();
diff --git a/src/standard/gestures.html b/src/standard/gestures.html
index 48c184a952..735b0cb072 100644
--- a/src/standard/gestures.html
+++ b/src/standard/gestures.html
@@ -199,7 +199,7 @@
handleNative: function(ev) {
var handled;
var type = ev.type;
- var node = wrap(ev.currentTarget);
+ var node = Polymer.DomApi.wrap(ev.currentTarget);
var gobj = node[GESTURE_KEY];
if (!gobj) {
return;
@@ -296,7 +296,7 @@
// automate the event listeners for the native events
add: function(node, evType, handler) {
// SD polyfill: handle case where `node` is unwrapped, like `document`
- node = wrap(node);
+ node = Polymer.DomApi.wrap(node);
var recognizer = this.gestures[evType];
var deps = recognizer.deps;
var name = recognizer.name;
@@ -329,7 +329,7 @@
// automate event listener removal for native events
remove: function(node, evType, handler) {
// SD polyfill: handle case where `node` is unwrapped, like `document`
- node = wrap(node);
+ node = Polymer.DomApi.wrap(node);
var recognizer = this.gestures[evType];
var deps = recognizer.deps;
var name = recognizer.name;
diff --git a/test/unit/polymer-dom-elements.html b/test/unit/polymer-dom-elements.html
index 8065f0b727..c0b28546aa 100644
--- a/test/unit/polymer-dom-elements.html
+++ b/test/unit/polymer-dom-elements.html
@@ -349,3 +349,11 @@
});
+
+
+
+
diff --git a/test/unit/polymer-dom-shadow.html b/test/unit/polymer-dom-shadow.html
index 475a2c9e1e..f1f5267810 100644
--- a/test/unit/polymer-dom-shadow.html
+++ b/test/unit/polymer-dom-shadow.html
@@ -55,6 +55,8 @@
+
+