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

Unified Diff: polymer_1.2.3/bower_components/iron-a11y-keys-behavior/test/basic-test.html

Issue 1581713003: [third_party] add polymer 1.2.3 (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: 1.2.3 Created 4 years, 11 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
Index: polymer_1.2.3/bower_components/iron-a11y-keys-behavior/test/basic-test.html
diff --git a/polymer_1.0.4/bower_components/iron-a11y-keys-behavior/test/basic-test.html b/polymer_1.2.3/bower_components/iron-a11y-keys-behavior/test/basic-test.html
similarity index 56%
copy from polymer_1.0.4/bower_components/iron-a11y-keys-behavior/test/basic-test.html
copy to polymer_1.2.3/bower_components/iron-a11y-keys-behavior/test/basic-test.html
index 8e50c92b4091a203acb5a71e1a0fc325283c8e48..1631ff46250f965fbd8e0a1a0fbd616f27f874c7 100644
--- a/polymer_1.0.4/bower_components/iron-a11y-keys-behavior/test/basic-test.html
+++ b/polymer_1.2.3/bower_components/iron-a11y-keys-behavior/test/basic-test.html
@@ -16,11 +16,9 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
<script src="../../web-component-tester/browser.js"></script>
- <script src="../../test-fixture/test-fixture-mocha.js"></script>
<script src="../../iron-test-helpers/mock-interactions.js"></script>
<link rel="import" href="../../polymer/polymer.html">
- <link rel="import" href="../../test-fixture/test-fixture.html">
<link rel="import" href="../iron-a11y-keys-behavior.html">
</head>
<body>
@@ -30,6 +28,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
</template>
</test-fixture>
+ <test-fixture id="NonPropagatingKeys">
+ <template>
+ <x-a11y-basic-keys stop-keyboard-event-propagation></x-a11y-basic-keys>
+ </template>
+ </test-fixture>
+
<test-fixture id="ComboKeys">
<template>
<x-a11y-combo-keys></x-a11y-combo-keys>
@@ -48,6 +52,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
</template>
</test-fixture>
+ <test-fixture id="PreventKeys">
+ <template>
+ <x-a11y-prevent-keys></x-a11y-prevent-keys>
+ </template>
+ </test-fixture>
+
<script>
suite('Polymer.IronA11yKeysBehavior', function() {
var keys;
@@ -64,6 +74,18 @@ suite('Polymer.IronA11yKeysBehavior', function() {
_keyHandler: function(event) {
this.keyCount++;
this.lastEvent = event;
+ },
+
+ // Same as _keyHandler, used to distinguish who's called before who.
+ _keyHandler2: function(event) {
+ this.keyCount++;
+ this.lastEvent = event;
+ },
+
+ _preventDefaultHandler: function(event) {
+ event.preventDefault();
+ this.keyCount++;
+ this.lastEvent = event;
}
}];
@@ -75,7 +97,8 @@ suite('Polymer.IronA11yKeysBehavior', function() {
],
keyBindings: {
- 'space': '_keyHandler'
+ 'space': '_keyHandler',
+ '@': '_keyHandler'
}
});
@@ -87,7 +110,8 @@ suite('Polymer.IronA11yKeysBehavior', function() {
],
keyBindings: {
- 'ctrl+shift+a': '_keyHandler'
+ 'enter': '_keyHandler2',
+ 'ctrl+shift+a shift+enter': '_keyHandler'
}
});
@@ -118,7 +142,21 @@ suite('Polymer.IronA11yKeysBehavior', function() {
],
keyBindings: {
- 'space': '_keyHandler'
+ 'enter': '_keyHandler'
+ }
+ });
+
+ Polymer({
+ is: 'x-a11y-prevent-keys',
+
+ behaviors: [
+ KeysTestBehavior,
+ XA11yBehavior
+ ],
+
+ keyBindings: {
+ 'space a': '_keyHandler',
+ 'enter shift+a': '_preventDefaultHandler'
}
});
});
@@ -134,6 +172,21 @@ suite('Polymer.IronA11yKeysBehavior', function() {
expect(keys.keyCount).to.be.equal(1);
});
+ test('trigger the handler when the specified key is pressed together with a modifier', function() {
+ var event = new CustomEvent('keydown');
+ event.ctrlKey = true;
+ event.keyCode = event.code = 32;
+ keys.dispatchEvent(event);
+ expect(keys.keyCount).to.be.equal(1);
+ });
+
+ test('handles special character @', function() {
+ var event = new CustomEvent('keydown');
+ event.key = '@';
+ keys.dispatchEvent(event);
+ expect(keys.keyCount).to.be.equal(1);
+ });
+
test('do not trigger the handler for non-specified keys', function() {
MockInteractions.pressEnter(keys);
@@ -161,12 +214,39 @@ suite('Polymer.IronA11yKeysBehavior', function() {
expect(keys.keyCount).to.be.equal(1);
});
+ test('allows propagation beyond the key combo handler', function() {
+ var keySpy = sinon.spy();
+ document.addEventListener('keydown', keySpy);
+
+ MockInteractions.pressEnter(keys);
+
+ expect(keySpy.callCount).to.be.equal(1);
+ });
+
suite('edge cases', function() {
test('knows that `spacebar` is the same as `space`', function() {
var event = new CustomEvent('keydown');
event.key = 'spacebar';
expect(keys.keyboardEventMatchesKeys(event, 'space')).to.be.equal(true);
});
+
+ test('handles `+`', function() {
+ var event = new CustomEvent('keydown');
+ event.key = '+';
+ expect(keys.keyboardEventMatchesKeys(event, '+')).to.be.equal(true);
+ });
+
+ test('handles `:`', function() {
+ var event = new CustomEvent('keydown');
+ event.key = ':';
+ expect(keys.keyboardEventMatchesKeys(event, ':')).to.be.equal(true);
+ });
+
+ test('handles ` ` (space)', function() {
+ var event = new CustomEvent('keydown');
+ event.key = ' ';
+ expect(keys.keyboardEventMatchesKeys(event, 'space')).to.be.equal(true);
+ });
});
suite('matching keyboard events to keys', function() {
@@ -211,6 +291,42 @@ suite('Polymer.IronA11yKeysBehavior', function() {
expect(keys.keyCount).to.be.equal(1);
});
+
+ test('check if KeyBoardEvent.key is alpha-numberic', function() {
+ var event = new CustomEvent('keydown');
+
+ event.ctrlKey = true;
+ event.shiftKey = true;
+ event.key = 'å';
+ event.keyCode = event.code = 65;
+
+ keys.dispatchEvent(event);
+
+ expect(keys.keyCount).to.be.equal(1);
+ });
+
+ test('trigger also bindings without modifiers', function() {
+ var event = new CustomEvent('keydown');
+ // Combo `shift+enter`.
+ event.shiftKey = true;
+ event.keyCode = event.code = 13;
+ keys.dispatchEvent(event);
+ expect(keys.keyCount).to.be.equal(2);
+ });
+
+ test('give precendence to combos with modifiers', function() {
+ var enterSpy = sinon.spy(keys, '_keyHandler2');
+ var shiftEnterSpy = sinon.spy(keys, '_keyHandler');
+ var event = new CustomEvent('keydown');
+ // Combo `shift+enter`.
+ event.shiftKey = true;
+ event.keyCode = event.code = 13;
+ keys.dispatchEvent(event);
+ expect(enterSpy.called).to.be.true;
+ expect(shiftEnterSpy.called).to.be.true;
+ expect(enterSpy.calledAfter(shiftEnterSpy)).to.be.true;
+ });
+
});
suite('alternative event keys', function() {
@@ -236,12 +352,53 @@ suite('Polymer.IronA11yKeysBehavior', function() {
test('bindings in other behaviors are transitive', function() {
MockInteractions.pressEnter(keys);
- MockInteractions.pressSpace(keys);
-
expect(keys.keyCount).to.be.equal(2);
});
});
+ suite('stopping propagation automatically', function() {
+ setup(function() {
+ keys = fixture('NonPropagatingKeys');
+ });
+
+ test('does not propagate key events beyond the combo handler', function() {
+ var keySpy = sinon.spy();
+
+ document.addEventListener('keydown', keySpy);
+
+ MockInteractions.pressEnter(keys);
+
+ expect(keySpy.callCount).to.be.equal(0);
+ });
+ });
+
+ suite('prevent default behavior of event', function() {
+ setup(function() {
+ keys = fixture('PreventKeys');
+ });
+
+ test('`defaultPrevented` is correctly set', function() {
+ MockInteractions.pressEnter(keys);
+ expect(keys.lastEvent.defaultPrevented).to.be.equal(true);
+ });
+
+ test('only 1 handler is invoked', function() {
+ var aSpy = sinon.spy(keys, '_keyHandler');
+ var shiftASpy = sinon.spy(keys, '_preventDefaultHandler');
+ var event = new CustomEvent('keydown', {
+ cancelable: true
+ });
+ // Combo `shift+a`.
+ event.shiftKey = true;
+ event.keyCode = event.code = 65;
+ keys.dispatchEvent(event);
+
+ expect(keys.keyCount).to.be.equal(1);
+ expect(shiftASpy.called).to.be.true;
+ expect(aSpy.called).to.be.false;
+ });
+ });
+
});
</script>
</body>

Powered by Google App Engine
This is Rietveld 408576698