Commit b76765a3 authored by rbpotter's avatar rbpotter Committed by Commit Bot

Print Preview Componentization: Fix handling of invalid keys and add test

Key handling for number inputs was accidentally deleted in
https://crrev.com/c/975825. Restore the handling and add a test.

Bug: 868142
Change-Id: I33f24ded29a58154a8987368c2de1001444755c1
Reviewed-on: https://chromium-review.googlesource.com/1150901
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578677}
parent 89b8e7c6
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<span class="input-wrapper"> <span class="input-wrapper">
<input id="userValue" class="user-value" type="number" <input id="userValue" class="user-value" type="number"
max="[[maxValue]]" min="[[minValue]]" data-timeout-delay="250" max="[[maxValue]]" min="[[minValue]]" data-timeout-delay="250"
disabled$="[[getDisabled_(disabled)]]" disabled$="[[getDisabled_(disabled)]]" on-keydown="onKeydown_"
on-blur="onBlur_" aria-labelled-by="section-title"> on-blur="onBlur_" aria-labelled-by="section-title">
<slot name="opt-inside-content"></slot> <slot name="opt-inside-content"></slot>
</span> </span>
......
...@@ -178,6 +178,31 @@ TEST_F('PrintPreviewSettingsSelectTest', 'CustomMediaNames', function() { ...@@ -178,6 +178,31 @@ TEST_F('PrintPreviewSettingsSelectTest', 'CustomMediaNames', function() {
this.runMochaTest(settings_select_test.TestNames.CustomMediaNames); this.runMochaTest(settings_select_test.TestNames.CustomMediaNames);
}); });
PrintPreviewNumberSettingsSectionTest = class extends NewPrintPreviewTest {
/** @override */
get browsePreload() {
return 'chrome://print/new/number_settings_section.html';
}
/** @override */
get extraLibraries() {
return super.extraLibraries.concat([
'../settings/test_util.js',
'number_settings_section_test.js',
]);
}
/** @override */
get suiteName() {
return number_settings_section_test.suiteName;
}
};
TEST_F('PrintPreviewNumberSettingsSectionTest', 'BlocksInvalidKeys',
function() {
this.runMochaTest(number_settings_section_test.TestNames.BlocksInvalidKeys);
});
PrintPreviewPagesSettingsTest = class extends NewPrintPreviewTest { PrintPreviewPagesSettingsTest = class extends NewPrintPreviewTest {
/** @override */ /** @override */
get browsePreload() { get browsePreload() {
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
cr.define('number_settings_section_test', function() {
/** @enum {string} */
const TestNames = {
BlocksInvalidKeys: 'blocks invalid keys',
};
const suiteName = 'NumberSettingsSectionTest';
suite(suiteName, function() {
let numberSettings = null;
let parentElement = null;
/** @override */
setup(function() {
PolymerTest.clearBody();
document.body.innerHTML = `
<div id="parentElement">
<print-preview-number-settings-section id="numberSettings"
disabled="false" min-value="1" max-value="100" default-value="50"
hint-message="incorrect value entered" input-valid="true">
</print-preview-number-settings-section>
</div>`;
parentElement = document.querySelector('#parentElement');
numberSettings = document.querySelector('#numberSettings');
});
// Test that key events that would result in invalid values are blocked.
test(assert(TestNames.BlocksInvalidKeys), function() {
const input = numberSettings.$.userValue;
/**
* @param {number} code Code for the keyboard event that will be fired.
* @param {string} key Key name for the keyboard event that will be fired.
* @return {!Promise<!KeyboardEvent>} Promise that resolves when 'keydown'
* is received by |parentElement|.
*/
const sendKeyDownAndReturnPromise = (code, key) => {
const whenKeyDown = test_util.eventToPromise('keydown', parentElement);
MockInteractions.keyEventOn(input, 'keydown', code, undefined, key);
return whenKeyDown;
};
return sendKeyDownAndReturnPromise(69, 'e').then(e => {
assertTrue(e.defaultPrevented);
return sendKeyDownAndReturnPromise(110, '.');
}).then(e => {
assertTrue(e.defaultPrevented);
return sendKeyDownAndReturnPromise(109, '-');
}).then(e => {
assertTrue(e.defaultPrevented);
// Try a valid key.
return sendKeyDownAndReturnPromise(49, '1');
}).then(e => {
assertFalse(e.defaultPrevented);
});
});
});
return {
suiteName: suiteName,
TestNames: TestNames,
};
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment