Index: chrome/test/data/webui/settings/device_page_tests.js |
diff --git a/chrome/test/data/webui/settings/device_page_tests.js b/chrome/test/data/webui/settings/device_page_tests.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b09d72c900e1dd6ad22e194917ef96aa7c067453 |
--- /dev/null |
+++ b/chrome/test/data/webui/settings/device_page_tests.js |
@@ -0,0 +1,107 @@ |
+// Copyright 2016 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('settings_device_page', function() { |
+ /** @return {!DevicePageElement} */ |
+ function getDevicePage() { |
+ var devicePage = document.createElement('settings-device-page'); |
+ var page = this.getPage('basic'); |
+ var deviceSection = this.getSection(page, 'device'); |
+ expectTrue(!!deviceSection); |
+ var devicePage = deviceSection.querySelector('settings-device-page'); |
+ expectTrue(!!devicePage); |
+ return devicePage; |
+ }; |
+ |
+ suite('SettingsDevicePage', function() { |
+ /** @type {CrSettingsPrefsElement} */ |
+ var settingsPrefs = null; |
+ |
+ /** @type {settings.FakeSettingsPrivate} */ |
+ var fakeApi = null; |
+ |
+ var fakePrefs = [{ |
+ key: 'settings.touchpad.enable_tap_to_click', |
+ type: chrome.settingsPrivate.PrefType.BOOLEAN, |
+ value: true, |
+ }, { |
+ key: 'settings.touchpad.enable_tap_dragging', |
+ type: chrome.settingsPrivate.PrefType.BOOLEAN, |
+ value: true, |
+ }, { |
+ key: 'settings.touchpad.natural_scroll', |
+ type: chrome.settingsPrivate.PrefType.BOOLEAN, |
+ value: false, |
+ }, { |
+ key: 'settings.language.xkb_remap_search_key_to', |
+ type: chrome.settingsPrivate.PrefType.NUMBER, |
+ value: 0, |
+ }, { |
+ key: 'settings.language.xkb_remap_control_key_to', |
+ type: chrome.settingsPrivate.PrefType.NUMBER, |
+ value: 1, |
+ }, { |
+ key: 'settings.language.xkb_remap_alt_key_to', |
+ type: chrome.settingsPrivate.PrefType.NUMBER, |
+ value: 2, |
+ }, { |
+ key: 'settings.language.remap_caps_lock_key_to', |
+ type: chrome.settingsPrivate.PrefType.NUMBER, |
+ value: 4, |
+ }, { |
+ key: 'settings.language.remap_diamond_key_to', |
+ type: chrome.settingsPrivate.PrefType.NUMBER, |
+ value: 3, |
+ }, { |
+ key: 'settings.language.send_function_keys', |
+ type: chrome.settingsPrivate.PrefType.BOOLEAN, |
+ value: false, |
+ }]; |
+ |
+ // Initialize <settings-device-page> before each test. |
+ setup(function() { |
+ CrSettingsPrefs.deferInitialization = true; |
+ fakeApi = new settings.FakeSettingsPrivate(fakePrefs); |
+ settingsPrefs = document.createElement('settings-prefs'); |
+ settingsPrefs.initializeForTesting(fakeApi); |
+ return CrSettingsPrefs.initialized; |
+ }); |
+ |
+ test('keyboard subpage', function() { |
+ var devicePage = document.createElement('settings-device-page'); |
+ devicePage.currentRoute = {page: 'basic', section: '', subpage: []}; |
+ devicePage.prefs = settingsPrefs.prefs; |
+ |
+ // Open the keyboard subpage. |
+ var keyboardRow = devicePage.$$('#main #keyboardRow'); |
+ assertTrue(!!keyboardRow); |
+ MockInteractions.tap(keyboardRow); |
+ expectEquals(devicePage.currentRoute.section, 'device'); |
+ expectEquals(devicePage.currentRoute.subpage[0], 'keyboard'); |
+ var keyboardPage = devicePage.$$('#keyboard settings-keyboard'); |
+ assertTrue(!!keyboardPage); |
+ |
+ // Initially, the optional keys are hidden. |
+ expectFalse(!!keyboardPage.$$('#capsLockKey')); |
+ expectFalse(!!keyboardPage.$$('#diamondKey')); |
+ |
+ // Pretend the diamond key is available. |
+ var showCapsLock = false; |
+ var showDiamondKey = true; |
+ cr.webUIListenerCallback( |
+ 'show-keys-changed', showCapsLock, showDiamondKey); |
+ Polymer.dom.flush(); |
+ expectFalse(!!keyboardPage.$$('#capsLockKey')); |
+ expectTrue(!!keyboardPage.$$('#diamondKey')); |
+ |
+ // Pretend a Caps Lock key is now available. |
+ showCapsLock = true; |
+ cr.webUIListenerCallback( |
+ 'show-keys-changed', showCapsLock, showDiamondKey); |
+ Polymer.dom.flush(); |
+ expectTrue(!!keyboardPage.$$('#capsLockKey')); |
+ expectTrue(!!keyboardPage.$$('#diamondKey')); |
+ }); |
+ }); |
+}); |