Commit a1acc82b authored by Nnamdi Theodore Johnson-Kanu's avatar Nnamdi Theodore Johnson-Kanu Committed by Chromium LUCI CQ

[CrOS cellular] Add test to esim profile rename

- Adds test for rename esim dialog
- Adds test for internet detail menu
- Adds test to internet page

Bug: 1093185
Change-Id: I447167488bf50024cbf187932a04fe0bb57a82de
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2564397
Commit-Queue: Nnamdi Theodore Johnson-kanu <tjohnsonkanu@google.com>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarAzeem Arshad <azeemarshad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#833400}
parent acead0ee
...@@ -101,6 +101,7 @@ if (optimize_webui) { ...@@ -101,6 +101,7 @@ if (optimize_webui) {
"chrome://resources/mojo/mojo/public/mojom/base/string16.mojom-lite.js", "chrome://resources/mojo/mojo/public/mojom/base/string16.mojom-lite.js",
"chrome://resources/mojo/mojo/public/mojom/base/unguessable_token.mojom-lite.js", "chrome://resources/mojo/mojo/public/mojom/base/unguessable_token.mojom-lite.js",
"chrome://resources/mojo/services/network/public/mojom/ip_address.mojom-lite.js", "chrome://resources/mojo/services/network/public/mojom/ip_address.mojom-lite.js",
"chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js",
"chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js", "chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js",
"chrome://resources/js/cr.m.js", "chrome://resources/js/cr.m.js",
"chrome://resources/chromeos/colors/cros_colors.generated.css", "chrome://resources/chromeos/colors/cros_colors.generated.css",
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
<div slot="title">$i18n{eSimRenameProfileDialogLabel}</div> <div slot="title">$i18n{eSimRenameProfileDialogLabel}</div>
<div slot="body"> <div slot="body">
<cr-input value="{{esimProfileName_}}" <cr-input value="{{esimProfileName_}}"
id="eSimprofileName"
spellcheck="false"> spellcheck="false">
</cr-button> </cr-button>
</div> </div>
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
<template> <template>
<cr-action-menu role-description="$i18n{menu}"> <cr-action-menu role-description="$i18n{menu}">
<button class="dropdown-item" <button class="dropdown-item"
id="renameBtn"
on-click="onRenameESimProfileTap_" on-click="onRenameESimProfileTap_"
role="menuitem" role="menuitem"
title="$i18n{networkDetailMenuRenameESim}"> title="$i18n{networkDetailMenuRenameESim}">
......
...@@ -310,6 +310,7 @@ if (include_js_tests) { ...@@ -310,6 +310,7 @@ if (include_js_tests) {
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/cups_printer_landing_page_tests.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/cups_printer_landing_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/cups_printer_entry_tests.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/cups_printer_entry_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/date_time_page_tests.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/date_time_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/esim_rename_dialog_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_bluetooth_private.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_bluetooth_private.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_bluetooth.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_bluetooth.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_receive_manager.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/fake_receive_manager.m.js",
...@@ -318,6 +319,7 @@ if (include_js_tests) { ...@@ -318,6 +319,7 @@ if (include_js_tests) {
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/input_method_options_page_test.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/input_method_options_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/input_page_test.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/input_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_config_test.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_config_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_detail_menu_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_detail_page_tests.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_detail_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_known_networks_page_tests.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_known_networks_page_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_subpage_tests.m.js", "$root_gen_dir/chrome/test/data/webui/settings/chromeos/internet_subpage_tests.m.js",
......
...@@ -10,7 +10,7 @@ cr.define('cellular_setup', function() { ...@@ -10,7 +10,7 @@ cr.define('cellular_setup', function() {
this.properties_ = { this.properties_ = {
activationCode: 'activation-code-' + id, activationCode: 'activation-code-' + id,
eid: '1', eid: '1',
iccid: id, iccid: id + '',
name: { name: {
data: this.stringToCharCodeArray_('profile' + id), data: this.stringToCharCodeArray_('profile' + id),
}, },
...@@ -67,6 +67,21 @@ cr.define('cellular_setup', function() { ...@@ -67,6 +67,21 @@ cr.define('cellular_setup', function() {
} }
return res; return res;
} }
/**
* @override
* @param {?mojoBase.mojom.String16} nickname
* @return {!Promise<{result:
* chromeos.cellularSetup.mojom.ESimOperationResult},}>}
*/
setProfileNickname(nickname) {
this.properties_.nickname = nickname;
return new Promise((res) => {
res({
result: chromeos.cellularSetup.mojom.ESimOperationResult.kSuccess
});
});
}
} }
/** @implements {chromeos.cellularSetup.mojom.Euicc} */ /** @implements {chromeos.cellularSetup.mojom.Euicc} */
......
...@@ -40,6 +40,7 @@ js_modulizer("modulize") { ...@@ -40,6 +40,7 @@ js_modulizer("modulize") {
"cups_printer_page_tests.js", "cups_printer_page_tests.js",
"cups_printer_test_utils.js", "cups_printer_test_utils.js",
"date_time_page_tests.js", "date_time_page_tests.js",
"esim_rename_dialog_test.js",
"fake_bluetooth.js", "fake_bluetooth.js",
"fake_bluetooth_private.js", "fake_bluetooth_private.js",
"fake_quick_unlock_private.js", "fake_quick_unlock_private.js",
...@@ -50,6 +51,7 @@ js_modulizer("modulize") { ...@@ -50,6 +51,7 @@ js_modulizer("modulize") {
"input_method_options_page_test.js", "input_method_options_page_test.js",
"input_page_test.js", "input_page_test.js",
"internet_config_test.js", "internet_config_test.js",
"internet_detail_menu_test.js",
"internet_detail_page_tests.js", "internet_detail_page_tests.js",
"internet_known_networks_page_tests.js", "internet_known_networks_page_tests.js",
"internet_page_tests.js", "internet_page_tests.js",
......
// Copyright 2020 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.
// clang-format off
// #import 'chrome://os-settings/chromeos/os_settings.js';
// #import {FakeNetworkConfig} from 'chrome://test/chromeos/fake_network_config_mojom.m.js';
// #import {MojoInterfaceProviderImpl} from 'chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js';
// #import {setESimManagerRemoteForTesting} from 'chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js';
// #import {FakeESimManagerRemote} from 'chrome://test/cr_components/chromeos/cellular_setup/fake_esim_manager_remote.m.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {assertEquals, assertTrue} from '../../chai_assert.js';
// clang-format on
suite('EsimRenameDialog', function() {
let esimRenameDialog;
let eSimManagerRemote;
let mojoApi_;
setup(function() {
eSimManagerRemote = new cellular_setup.FakeESimManagerRemote();
cellular_setup.setESimManagerRemoteForTesting(eSimManagerRemote);
mojoApi_ = new FakeNetworkConfig();
network_config.MojoInterfaceProviderImpl.getInstance().remote_ = mojoApi_;
mojoApi_.resetForTest();
return flushAsync();
});
async function init(iccid) {
esimRenameDialog = document.createElement('esim-rename-dialog');
esimRenameDialog.iccid = iccid;
document.body.appendChild(esimRenameDialog);
assertTrue(!!esimRenameDialog);
Polymer.dom.flush();
}
/**
* Converts a mojoBase.mojom.String16 to a JavaScript String.
* @param {?mojoBase.mojom.String16} str
* @return {string}
*/
function convertString16ToJSString_(str) {
return str.data.map(ch => String.fromCodePoint(ch)).join('');
}
function flushAsync() {
Polymer.dom.flush();
// Use setTimeout to wait for the next macrotask.
return new Promise(resolve => setTimeout(resolve));
}
test('Rename esim profile', async function() {
eSimManagerRemote.addEuiccForTest(1);
await flushAsync();
init('1');
return flushAsync().then(async () => {
const inputBox = esimRenameDialog.$$('#eSimprofileName');
assertTrue(!!inputBox);
const profileName = inputBox.value;
assertEquals(profileName, 'profile1');
inputBox.value = 'new profile nickname';
await flushAsync();
const doneBtn = esimRenameDialog.$$('#done');
assertTrue(!!doneBtn);
doneBtn.click();
await flushAsync();
const euicc = (await eSimManagerRemote.getAvailableEuiccs()).euiccs[0];
const profile = (await euicc.getProfileList()).profiles[0];
const profileProperties = (await profile.getProperties()).properties;
assertEquals(
convertString16ToJSString_(profileProperties.nickname),
'new profile nickname');
});
});
});
\ No newline at end of file
// Copyright 2020 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.
// clang-format off
// #import 'chrome://os-settings/chromeos/os_settings.js';
// #import {routes, Router} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {FakeNetworkConfig} from 'chrome://test/chromeos/fake_network_config_mojom.m.js';
// #import {MojoInterfaceProviderImpl} from 'chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {assertEquals, assertTrue} from '../../chai_assert.js';
// #import {OncMojo} from 'chrome://resources/cr_components/chromeos/network/onc_mojo.m.js';
// #import {eventToPromise, flushTasks} from 'chrome://test/test_util.m.js';
// clang-format on
suite('InternetDetailMenu', function() {
let internetDetailMenu;
let mojoApi_;
let mojom;
setup(function() {
loadTimeData.overrideValues({
updatedCellularActivationUi: true,
});
mojoApi_ = new FakeNetworkConfig();
network_config.MojoInterfaceProviderImpl.getInstance().remote_ = mojoApi_;
mojoApi_.resetForTest();
mojom = chromeos.networkConfig.mojom;
mojoApi_.resetForTest();
mojoApi_.setNetworkTypeEnabledState(mojom.NetworkType.kCellular, true);
const cellular =
getManagedProperties(mojom.NetworkType.kCellular, 'cellular');
cellular.typeProperties.cellular.iccid = '100000000';
mojoApi_.setManagedPropertiesForTest(cellular);
});
function getManagedProperties(type, name) {
const result =
OncMojo.getDefaultManagedProperties(type, name + '_guid', name);
return result;
}
async function init() {
const params = new URLSearchParams;
params.append('guid', 'cellular_guid');
settings.Router.getInstance().navigateTo(
settings.routes.NETWORK_DETAIL, params);
internetDetailMenu =
document.createElement('settings-internet-detail-menu');
document.body.appendChild(internetDetailMenu);
assertTrue(!!internetDetailMenu);
await flushAsync();
}
function flushAsync() {
Polymer.dom.flush();
// Use setTimeout to wait for the next macrotask.
return new Promise(resolve => setTimeout(resolve));
}
test('Do not show tripple dot when no iccid is present', async function() {
const cellular =
getManagedProperties(mojom.NetworkType.kCellular, 'cellular');
cellular.typeProperties.cellular.iccid = null;
mojoApi_.setManagedPropertiesForTest(cellular);
init();
await flushAsync();
let trippleDot = internetDetailMenu.$$('#moreNetworkDetail');
assertFalse(!!trippleDot);
cellular.typeProperties.cellular.iccid = '100000';
mojoApi_.setManagedPropertiesForTest(cellular);
const params = new URLSearchParams;
params.append('guid', 'cellular_guid');
settings.Router.getInstance().navigateTo(
settings.routes.NETWORK_DETAIL, params);
await flushAsync();
trippleDot = internetDetailMenu.$$('#moreNetworkDetail');
assertTrue(!!trippleDot);
});
test('Rename menu click', async function() {
init();
await flushAsync();
const trippleDot = internetDetailMenu.$$('#moreNetworkDetail');
assertTrue(!!trippleDot);
trippleDot.click();
await flushAsync();
const renameBtn =
internetDetailMenu.shadowRoot.querySelector('cr-action-menu')
.querySelector('#renameBtn');
assertTrue(!!renameBtn);
const renameProfilePromise = test_util.eventToPromise(
'show-esim-profile-rename-dialog', internetDetailMenu);
renameBtn.click();
await Promise.all([renameProfilePromise, test_util.flushTasks()]);
});
});
\ No newline at end of file
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
// #import {FakeNetworkConfig} from 'chrome://test/chromeos/fake_network_config_mojom.m.js'; // #import {FakeNetworkConfig} from 'chrome://test/chromeos/fake_network_config_mojom.m.js';
// #import {MojoInterfaceProviderImpl} from 'chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js'; // #import {MojoInterfaceProviderImpl} from 'chrome://resources/cr_components/chromeos/network/mojo_interface_provider.m.js';
// #import {setESimManagerRemoteForTesting} from 'chrome://resources/cr_components/chromeos/cellular_setup/mojo_interface_provider.m.js';
// #import {FakeESimManagerRemote} from 'chrome://test/cr_components/chromeos/cellular_setup/fake_esim_manager_remote.m.js';
// #import {OncMojo} from 'chrome://resources/cr_components/chromeos/network/onc_mojo.m.js'; // #import {OncMojo} from 'chrome://resources/cr_components/chromeos/network/onc_mojo.m.js';
// #import {Router, routes} from 'chrome://os-settings/chromeos/os_settings.js'; // #import {Router, routes} from 'chrome://os-settings/chromeos/os_settings.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; // #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
...@@ -24,6 +26,9 @@ suite('InternetPage', function() { ...@@ -24,6 +26,9 @@ suite('InternetPage', function() {
/** @type {?chromeos.networkConfig.mojom.CrosNetworkConfigRemote} */ /** @type {?chromeos.networkConfig.mojom.CrosNetworkConfigRemote} */
let mojoApi_ = null; let mojoApi_ = null;
/** @type {?chromeos.cellularSetup.mojom.ESimManagerRemote} */
let eSimManagerRemote;
suiteSetup(function() { suiteSetup(function() {
loadTimeData.overrideValues({ loadTimeData.overrideValues({
internetAddConnection: 'internetAddConnection', internetAddConnection: 'internetAddConnection',
...@@ -40,6 +45,9 @@ suite('InternetPage', function() { ...@@ -40,6 +45,9 @@ suite('InternetPage', function() {
mojoApi_ = new FakeNetworkConfig(); mojoApi_ = new FakeNetworkConfig();
network_config.MojoInterfaceProviderImpl.getInstance().remote_ = mojoApi_; network_config.MojoInterfaceProviderImpl.getInstance().remote_ = mojoApi_;
eSimManagerRemote = new cellular_setup.FakeESimManagerRemote();
cellular_setup.setESimManagerRemoteForTesting(eSimManagerRemote);
// Disable animations so sub-pages open within one event loop. // Disable animations so sub-pages open within one event loop.
testing.Test.disableAnimationsAndTransitions(); testing.Test.disableAnimationsAndTransitions();
}); });
...@@ -269,6 +277,22 @@ suite('InternetPage', function() { ...@@ -269,6 +277,22 @@ suite('InternetPage', function() {
deepLinkElement, getDeepActiveElement(), deepLinkElement, getDeepActiveElement(),
'Toggle mobile on/off should be focused for settingId=13.'); 'Toggle mobile on/off should be focused for settingId=13.');
}); });
test('Show rename profile dialog', async function() {
eSimManagerRemote.addEuiccForTest(1);
await flushAsync();
let renameDialog = internetPage.$$('#esimRenameDialog');
assertFalse(!!renameDialog);
const event = new CustomEvent(
'show-esim-profile-rename-dialog', {detail: {iccid: '1'}});
internetPage.dispatchEvent(event);
await flushAsync();
renameDialog = internetPage.$$('#esimRenameDialog');
assertTrue(!!renameDialog);
});
}); });
// TODO(stevenjb): Figure out a way to reliably test navigation. Currently // TODO(stevenjb): Figure out a way to reliably test navigation. Currently
......
...@@ -28,4 +28,5 @@ os_test_namespace_rewrites = os_settings_namespace_rewrites + [ ...@@ -28,4 +28,5 @@ os_test_namespace_rewrites = os_settings_namespace_rewrites + [
"cups_printer_test_util.createCupsPrinterInfo|createCupsPrinterInfo", "cups_printer_test_util.createCupsPrinterInfo|createCupsPrinterInfo",
"cups_printer_test_util.createPrinterListEntry|createPrinterListEntry", "cups_printer_test_util.createPrinterListEntry|createPrinterListEntry",
"cups_printer_test_util.getPrinterEntries|getPrinterEntries", "cups_printer_test_util.getPrinterEntries|getPrinterEntries",
"cellular_setup.FakeESimManagerRemote|FakeESimManagerRemote",
] ]
...@@ -844,6 +844,38 @@ TEST_F('OSSettingsInternetDetailPageTest', 'All', () => { ...@@ -844,6 +844,38 @@ TEST_F('OSSettingsInternetDetailPageTest', 'All', () => {
mocha.run(); mocha.run();
}); });
// Test fixture for settings-internet-detail-menu.
// eslint-disable-next-line no-var
var OSSettingsInternetDetailMenuTest = class extends OSSettingsBrowserTest {
/** @override */
get browsePreload() {
return super.browsePreload +
'chromeos/internet_page/internet_detail_menu.html';
}
/** @override */
get featureList() {
return {enabled: ['chromeos::features::kUpdatedCellularActivationUi']};
}
/** @override */
get extraLibraries() {
return super.extraLibraries.concat([
'//ui/webui/resources/js/promise_resolver.js',
'//ui/webui/resources/js/assert.js',
'//ui/webui/resources/js/util.js',
BROWSER_SETTINGS_PATH + '../test_util.js',
BROWSER_SETTINGS_PATH + '../fake_chrome_event.js',
BROWSER_SETTINGS_PATH + '../chromeos/fake_network_config_mojom.js',
'internet_detail_menu_test.js',
]);
}
};
TEST_F('OSSettingsInternetDetailMenuTest', 'All', () => {
mocha.run();
});
// Test fixture for settings-internet-page. // Test fixture for settings-internet-page.
// eslint-disable-next-line no-var // eslint-disable-next-line no-var
var OSSettingsInternetPageTest = class extends OSSettingsBrowserTest { var OSSettingsInternetPageTest = class extends OSSettingsBrowserTest {
...@@ -866,6 +898,8 @@ var OSSettingsInternetPageTest = class extends OSSettingsBrowserTest { ...@@ -866,6 +898,8 @@ var OSSettingsInternetPageTest = class extends OSSettingsBrowserTest {
BROWSER_SETTINGS_PATH + '../test_util.js', BROWSER_SETTINGS_PATH + '../test_util.js',
BROWSER_SETTINGS_PATH + '../fake_chrome_event.js', BROWSER_SETTINGS_PATH + '../fake_chrome_event.js',
BROWSER_SETTINGS_PATH + '../chromeos/fake_network_config_mojom.js', BROWSER_SETTINGS_PATH + '../chromeos/fake_network_config_mojom.js',
BROWSER_SETTINGS_PATH +
'../cr_components/chromeos/cellular_setup/fake_esim_manager_remote.js',
'internet_page_tests.js', 'internet_page_tests.js',
]); ]);
} }
...@@ -975,6 +1009,32 @@ TEST_F('OSSettingsCellularNetworksListTest', 'CellularNetworkList', () => { ...@@ -975,6 +1009,32 @@ TEST_F('OSSettingsCellularNetworksListTest', 'CellularNetworkList', () => {
mocha.run(); mocha.run();
}); });
// Test fixture for rename esim dialog page.
// eslint-disable-next-line no-var
var OSSettingsEsimRenameDialogTest = class extends OSSettingsBrowserTest {
/** @override */
get browsePreload() {
return super.browsePreload +
'chromeos/internet_page/esim_rename_dialog.html';
}
/** @override */
get extraLibraries() {
return super.extraLibraries.concat([
'//ui/webui/resources/js/assert.js',
BROWSER_SETTINGS_PATH + '../test_util.js',
BROWSER_SETTINGS_PATH + '../chromeos/fake_network_config_mojom.js',
BROWSER_SETTINGS_PATH +
'../cr_components/chromeos/cellular_setup/fake_esim_manager_remote.js',
'esim_rename_dialog_test.js',
]);
}
};
TEST_F('OSSettingsEsimRenameDialogTest', 'EsimRenameDialog', () => {
mocha.run();
});
// Test fixture for settings-internet-known-networks-page. // Test fixture for settings-internet-known-networks-page.
// eslint-disable-next-line no-var // eslint-disable-next-line no-var
var OSSettingsCellularSetupDialogTest = var OSSettingsCellularSetupDialogTest =
......
...@@ -134,11 +134,13 @@ TEST_F( ...@@ -134,11 +134,13 @@ TEST_F(
['CupsPrinterLandingPage', 'cups_printer_landing_page_tests.m.js'], ['CupsPrinterLandingPage', 'cups_printer_landing_page_tests.m.js'],
['CupsPrinterPage', 'cups_printer_page_tests.m.js'], ['CupsPrinterPage', 'cups_printer_page_tests.m.js'],
['DateTimePage', 'date_time_page_tests.m.js'], ['DateTimePage', 'date_time_page_tests.m.js'],
['EsimRenameDialog', 'esim_rename_dialog_test.m.js'],
['FilesPage', 'os_files_page_test.m.js'], ['FilesPage', 'os_files_page_test.m.js'],
['GoogleAssistantPage', 'google_assistant_page_test.m.js'], ['GoogleAssistantPage', 'google_assistant_page_test.m.js'],
['InputMethodOptionPage', 'input_method_options_page_test.m.js'], ['InputMethodOptionPage', 'input_method_options_page_test.m.js'],
['InputPage', 'input_page_test.m.js'], ['InputPage', 'input_page_test.m.js'],
['InternetConfig', 'internet_config_test.m.js'], ['InternetConfig', 'internet_config_test.m.js'],
['InternetDetailMenu', 'internet_detail_menu_test.m.js'],
['InternetDetailPage', 'internet_detail_page_tests.m.js'], ['InternetDetailPage', 'internet_detail_page_tests.m.js'],
['InternetKnownNetworksPage', 'internet_known_networks_page_tests.m.js'], ['InternetKnownNetworksPage', 'internet_known_networks_page_tests.m.js'],
['InternetSubpage', 'internet_subpage_tests.m.js'], ['InternetSubpage', 'internet_subpage_tests.m.js'],
......
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