Skip to content

Commit 96e4bfa

Browse files
committed
Fix Gestures when using SD polyfill
Test with SD polyfill and native ShadowDOM Requires webcomponents/webcomponentsjs#434 Fixes #2641
1 parent 0dc69df commit 96e4bfa

File tree

4 files changed

+55
-2
lines changed

4 files changed

+55
-2
lines changed

src/standard/gestures.html

+8-1
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,11 @@
199199
handleNative: function(ev) {
200200
var handled;
201201
var type = ev.type;
202-
var node = ev.currentTarget;
202+
var node = wrap(ev.currentTarget);
203203
var gobj = node[GESTURE_KEY];
204+
if (!gobj) {
205+
return;
206+
}
204207
var gs = gobj[type];
205208
if (!gs) {
206209
return;
@@ -292,6 +295,8 @@
292295

293296
// automate the event listeners for the native events
294297
add: function(node, evType, handler) {
298+
// SD polyfill: handle case where `node` is unwrapped, like `document`
299+
node = wrap(node);
295300
var recognizer = this.gestures[evType];
296301
var deps = recognizer.deps;
297302
var name = recognizer.name;
@@ -323,6 +328,8 @@
323328

324329
// automate event listener removal for native events
325330
remove: function(node, evType, handler) {
331+
// SD polyfill: handle case where `node` is unwrapped, like `document`
332+
node = wrap(node);
326333
var recognizer = this.gestures[evType];
327334
var deps = recognizer.deps;
328335
var name = recognizer.name;

test/runner.html

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
'unit/array-selector.html',
4242
'unit/events.html',
4343
'unit/gestures.html',
44+
'unit/gestures.html?dom=shadow',
4445
'unit/utils.html',
4546
'unit/utils-content.html',
4647
'unit/utils.html?dom=shadow',

test/unit/gestures-elements.html

+25
Original file line numberDiff line numberDiff line change
@@ -139,3 +139,28 @@
139139
});
140140
</script>
141141
</dom-module>
142+
143+
<dom-module id="x-document-listener">
144+
<script>
145+
Polymer({
146+
is: 'x-document-listener',
147+
properties: {
148+
stream: {
149+
type: Array,
150+
value: function() {
151+
return [];
152+
}
153+
}
154+
},
155+
setup: function() {
156+
this.listen(document, 'down', 'handler');
157+
},
158+
teardown: function() {
159+
this.unlisten(document, 'down', 'handler');
160+
},
161+
handler: function(e) {
162+
this.stream.push(e);
163+
}
164+
});
165+
</script>
166+
</dom-module>

test/unit/gestures.html

+21-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<head>
1313
<meta charset="utf-8">
1414

15-
<script src="../../../webcomponentsjs/webcomponents-lite.js"></script>
15+
<script src="../../../webcomponentsjs/webcomponents.js"></script>
1616
<script src="../../../web-component-tester/browser.js"></script>
1717

1818
<link rel="import" href="../../polymer.html">
@@ -386,6 +386,26 @@
386386
});
387387
});
388388
});
389+
390+
suite('SD Polyfill', function() {
391+
var el;
392+
setup(function() {
393+
el = document.createElement('x-document-listener');
394+
document.body.appendChild(el);
395+
el.setup();
396+
});
397+
398+
teardown(function() {
399+
el.teardown();
400+
document.body.removeChild(el);
401+
});
402+
403+
test('document listener works in SD polyfill', function() {
404+
var ev = new CustomEvent('mousedown', {bubbles: true});
405+
el.dispatchEvent(ev);
406+
assert.equal(el.stream.length, 1);
407+
});
408+
});
389409
</script>
390410

391411
</body>

0 commit comments

Comments
 (0)