From 96e4bfa5b1f2b480af19ecafaa1309b5a3e7cdaf Mon Sep 17 00:00:00 2001 From: Daniel Freedman Date: Wed, 4 Nov 2015 14:09:49 -0800 Subject: [PATCH] Fix Gestures when using SD polyfill Test with SD polyfill and native ShadowDOM Requires webcomponents/webcomponentsjs#434 Fixes #2641 --- src/standard/gestures.html | 9 ++++++++- test/runner.html | 1 + test/unit/gestures-elements.html | 25 +++++++++++++++++++++++++ test/unit/gestures.html | 22 +++++++++++++++++++++- 4 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/standard/gestures.html b/src/standard/gestures.html index 132abb556e..48c184a952 100644 --- a/src/standard/gestures.html +++ b/src/standard/gestures.html @@ -199,8 +199,11 @@ handleNative: function(ev) { var handled; var type = ev.type; - var node = ev.currentTarget; + var node = wrap(ev.currentTarget); var gobj = node[GESTURE_KEY]; + if (!gobj) { + return; + } var gs = gobj[type]; if (!gs) { return; @@ -292,6 +295,8 @@ // 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); var recognizer = this.gestures[evType]; var deps = recognizer.deps; var name = recognizer.name; @@ -323,6 +328,8 @@ // 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); var recognizer = this.gestures[evType]; var deps = recognizer.deps; var name = recognizer.name; diff --git a/test/runner.html b/test/runner.html index 0495d46d86..691088ae15 100644 --- a/test/runner.html +++ b/test/runner.html @@ -41,6 +41,7 @@ 'unit/array-selector.html', 'unit/events.html', 'unit/gestures.html', + 'unit/gestures.html?dom=shadow', 'unit/utils.html', 'unit/utils-content.html', 'unit/utils.html?dom=shadow', diff --git a/test/unit/gestures-elements.html b/test/unit/gestures-elements.html index 17c55f2b59..38709fccef 100644 --- a/test/unit/gestures-elements.html +++ b/test/unit/gestures-elements.html @@ -139,3 +139,28 @@ }); + + + + diff --git a/test/unit/gestures.html b/test/unit/gestures.html index e77a45e344..5165ea952a 100644 --- a/test/unit/gestures.html +++ b/test/unit/gestures.html @@ -12,7 +12,7 @@ - + @@ -386,6 +386,26 @@ }); }); }); + + suite('SD Polyfill', function() { + var el; + setup(function() { + el = document.createElement('x-document-listener'); + document.body.appendChild(el); + el.setup(); + }); + + teardown(function() { + el.teardown(); + document.body.removeChild(el); + }); + + test('document listener works in SD polyfill', function() { + var ev = new CustomEvent('mousedown', {bubbles: true}); + el.dispatchEvent(ev); + assert.equal(el.stream.length, 1); + }); + });