blob: ee61c72360969a7ed1fc1ab3f6308dd822e92bc1 [file] [log] [blame]
// Copyright 2021 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.
import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {AcceleratorEditDialogElement} from 'chrome://shortcut-customization/accelerator_edit_dialog.js';
import {ModifierKeys} from 'chrome://shortcut-customization/accelerator_view.js';
import {assertEquals, assertFalse, assertTrue} from '../../chai_assert.js';
export function acceleratorEditDialogTest() {
/** @type {?AcceleratorEditDialogElement} */
let viewElement = null;
setup(() => {
viewElement = /** @type {!AcceleratorEditDialogElement} */ (
document.createElement('accelerator-edit-dialog'));
document.body.appendChild(viewElement);
});
teardown(() => {
viewElement.remove();
viewElement = null;
});
test('LoadsBasicDialog', async () => {
// TODO(jimmyxgong): Update the type of the test accelerator with the mojom
// version.
const accelerators = [
{
modifiers: ModifierKeys.SHIFT | ModifierKeys.CONTROL,
key: 'g',
rawKey: 0x0
},
{modifiers: ModifierKeys.CONTROL, key: 'c', rawKey: 0x0}
];
const description = 'test shortcut';
viewElement.accelerators = accelerators;
viewElement.description = description;
await flush();
const dialog = viewElement.shadowRoot.querySelector('cr-dialog');
assertTrue(dialog.open);
const acceleratorElements = dialog.querySelectorAll('accelerator-view');
assertEquals(2, acceleratorElements.length);
assertEquals(
description, dialog.querySelector('#dialogTitle').textContent.trim());
const keys1 =
acceleratorElements[0].shadowRoot.querySelectorAll('input-key');
// SHIFT + CONTROL + g
assertEquals(3, keys1.length);
assertEquals(
'shift', keys1[0].shadowRoot.querySelector('#key').textContent.trim());
assertEquals(
'ctrl', keys1[1].shadowRoot.querySelector('#key').textContent.trim());
assertEquals(
'g', keys1[2].shadowRoot.querySelector('#key').textContent.trim());
const keys2 =
acceleratorElements[1].shadowRoot.querySelectorAll('input-key');
// CONTROL + c
assertEquals(2, keys2.length);
assertEquals(
'ctrl', keys2[0].shadowRoot.querySelector('#key').textContent.trim());
assertEquals(
'c', keys2[1].shadowRoot.querySelector('#key').textContent.trim());
// Clicking on "Done" button will close the dialog.
const button = dialog.querySelector('#doneButton');
button.click();
assertFalse(dialog.open);
});
}