Commit 772d2084 authored by Demetrios Papadopoulos's avatar Demetrios Papadopoulos Committed by Commit Bot

Settings: Port remaining people_page/ browser_tests to Polymer3.

Specifically porting:
 - sync_encryption_options.js
 - people_page_test.js (split CrOS tests to people_page_test_cros.js)
 - people_page_sync_controls_test.js
 - people_page_sync_page_test.js

The remaining people_page_sync_page_interactive_test.js will be
ported in a separate CL.

Bug: 1026426
Change-Id: I8c3446ad645a492e12cc0d6f7df5cf2d0463f3df
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2113708
Auto-Submit: dpapad <dpapad@chromium.org>
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: default avatarRebekah Potter <rbpotter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#753121}
parent e2310ebf
......@@ -29,11 +29,13 @@ import './site_settings/chooser_exception_list.m.js';
// import './site_settings/zoom_levels.m.js';
// <if expr="not chromeos">
import './people_page/manage_profile.m.js';
import './people_page/import_data_dialog.m.js';
import './people_page/manage_profile.m.js';
// </if>
import './people_page/signout_dialog.m.js';
import './people_page/sync_account_control.m.js';
import './people_page/sync_controls.m.js';
import './people_page/sync_page.m.js';
// <if expr="use_nss_certs">
import 'chrome://resources/cr_components/certificate_manager/certificate_manager.m.js';
......@@ -85,7 +87,6 @@ export {AutofillManagerImpl} from './autofill_page/autofill_section.m.js';
export {PaymentsManagerImpl} from './autofill_page/payments_section.m.js';
export {ClearBrowsingDataBrowserProxyImpl} from './clear_browsing_data_dialog/clear_browsing_data_browser_proxy.m.js';
export {DownloadsBrowserProxyImpl} from './downloads_page/downloads_browser_proxy.m.js';
export {SyncBrowserProxyImpl, PageStatus} from './people_page/sync_browser_proxy.m.js';
export {kMenuCloseDelay} from './languages_page/languages_page.m.js';
export {LanguagesBrowserProxyImpl} from './languages_page/languages_browser_proxy.m.js';
export {ChooserType,ContentSetting,ContentSettingsTypes,SiteSettingSource,SITE_EXCEPTION_WILDCARD,SortMethod} from './site_settings/constants.m.js';
......
......@@ -171,6 +171,7 @@ js_type_check("closure_compile_module") {
":sync_account_control.m",
":sync_browser_proxy.m",
":sync_controls.m",
":sync_encryption_options.m",
":sync_page.m",
]
......@@ -308,6 +309,16 @@ js_library("sync_controls.m") {
extra_deps = [ ":sync_controls_module" ]
}
js_library("sync_encryption_options.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/people_page/sync_encryption_options.m.js" ]
deps = [
":sync_browser_proxy.m",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/js:assert.m",
]
extra_deps = [ ":sync_encryption_options_module" ]
}
js_library("sync_page.m") {
sources = [ "$root_gen_dir/chrome/browser/resources/settings/people_page/sync_page.m.js" ]
deps = [
......@@ -329,6 +340,7 @@ group("polymer3_elements") {
":signout_dialog_module",
":sync_account_control_module",
":sync_controls_module",
":sync_encryption_options_module",
":sync_page_module",
]
......@@ -417,14 +429,22 @@ polymer_modulizer("sync_controls") {
]
}
polymer_modulizer("sync_encryption_options") {
js_file = "sync_encryption_options.js"
html_file = "sync_encryption_options.html"
html_type = "dom-module"
namespace_rewrites = settings_namespace_rewrites
auto_imports = settings_auto_imports + [
"chrome/browser/resources/settings/people_page/sync_browser_proxy.html|SyncBrowserProxyImpl,SyncPrefs,SyncStatus",
"ui/webui/resources/html/assert.html|assert,assertNotReached",
]
}
polymer_modulizer("sync_page") {
js_file = "sync_page.js"
html_file = "sync_page.html"
html_type = "dom-module"
ignore_imports = [
"chrome/browser/resources/settings/people_page/sync_encryption_options.html",
"chrome/browser/resources/settings/privacy_page/personalization_options.html",
]
ignore_imports = [ "chrome/browser/resources/settings/privacy_page/personalization_options.html" ]
namespace_rewrites = settings_namespace_rewrites
auto_imports = settings_auto_imports + [
"ui/webui/resources/html/polymer.html|Polymer,html,flush",
......
......@@ -32,6 +32,10 @@ export {DefaultBrowserBrowserProxyImpl} from './default_browser_page/default_bro
export {ImportDataBrowserProxyImpl, ImportDataStatus} from './people_page/import_data_browser_proxy.m.js';
// </if>
// <if expr="chromeos">
export {AccountManagerBrowserProxyImpl} from './people_page/account_manager_browser_proxy.m.js';
// </if>
export {AboutPageBrowserProxy, AboutPageBrowserProxyImpl, UpdateStatus} from './about_page/about_page_browser_proxy.m.js';
export {AppearanceBrowserProxy, AppearanceBrowserProxyImpl} from './appearance_page/appearance_browser_proxy.m.js';
export {CrSettingsPrefs} from './prefs/prefs_types.m.js';
......@@ -44,6 +48,7 @@ export {EDIT_STARTUP_URL_EVENT} from './on_startup_page/startup_url_entry.m.js';
export {StartupUrlsPageBrowserProxy, StartupUrlsPageBrowserProxyImpl} from './on_startup_page/startup_urls_page_browser_proxy.m.js';
export {OpenWindowProxyImpl} from './open_window_proxy.m.js';
export {PageStatus, StatusAction, SyncBrowserProxyImpl} from './people_page/sync_browser_proxy.m.js';
export {ProfileInfoBrowserProxyImpl} from './people_page/profile_info_browser_proxy.m.js';
export {pageVisibility} from './page_visibility.m.js';
export {PasswordManagerImpl} from './autofill_page/password_manager_proxy.m.js';
export {prefToString, stringToPrefValue} from './prefs/pref_util.m.js';
......
......@@ -386,6 +386,15 @@
use_base_dir="false"
preprocess="true"
type="BINDATA" />
<include name="IDR_SETTINGS_PEOPLE_PAGE_SYNC_BROWSER_PROXY_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/people_page/sync_browser_proxy.m.js"
use_base_dir="false"
type="BINDATA"
preprocess="true" />
<include name="IDR_SETTINGS_PEOPLE_PAGE_SYNC_ENCRYPTION_OPTIONS_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/people_page/sync_encryption_options.m.js"
use_base_dir="false"
type="BINDATA" />
<include name="IDR_SETTINGS_PEOPLE_PAGE_PEOPLE_PAGE_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/people_page/people_page.m.js"
use_base_dir="false"
......@@ -630,11 +639,6 @@
use_base_dir="false"
type="BINDATA"
preprocess="true" />
<include name="IDR_SETTINGS_PEOPLE_PAGE_SYNC_BROWSER_PROXY_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/people_page/sync_browser_proxy.m.js"
use_base_dir="false"
type="BINDATA"
preprocess="true" />
<if expr="not chromeos">
<include name="IDR_SETTINGS_PRINTING_PAGE_PRINTING_BROWSER_PROXY_M_JS"
file="${root_gen_dir}/chrome/browser/resources/settings/printing_page/printing_browser_proxy.m.js"
......
......@@ -240,6 +240,9 @@ js2gtest("browser_tests_js_webui") {
"$root_gen_dir/chrome/test/data/webui/settings/passwords_export_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/passwords_section_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/payments_section_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/people_page_sync_controls_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/people_page_sync_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/people_page_test.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/pref_util_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/prefs_test_cases.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/prefs_tests.m.js",
......@@ -269,6 +272,7 @@ js2gtest("browser_tests_js_webui") {
"$root_gen_dir/chrome/test/data/webui/settings/test_lifetime_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/test_open_window_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/test_password_manager_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/test_profile_info_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/test_reset_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/test_search_engines_browser_proxy.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/test_site_settings_prefs_browser_proxy.m.js",
......@@ -289,6 +293,7 @@ js2gtest("browser_tests_js_webui") {
"$root_gen_dir/chrome/test/data/webui/cr_elements/cr_searchable_drop_down_tests.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/site_list_tests_cros.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/passwords_section_test_cros.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/people_page_test_cros.m.js",
"$root_gen_dir/chrome/test/data/webui/settings/test_android_info_browser_proxy.m.js",
]
} else {
......
......@@ -38,6 +38,9 @@ js_modulizer("modulize") {
"password_check_test.js",
"passwords_section_test.js",
"payments_section_test.js",
"people_page_test.js",
"people_page_sync_controls_test.js",
"people_page_sync_page_test.js",
"prefs_test_cases.js",
"prefs_tests.js",
"pref_util_tests.js",
......@@ -69,6 +72,7 @@ js_modulizer("modulize") {
"test_metrics_browser_proxy.js",
"test_open_window_proxy.js",
"test_password_manager_proxy.js",
"test_profile_info_browser_proxy.js",
"test_reset_browser_proxy.js",
"test_search_engines_browser_proxy.js",
"test_site_settings_prefs_browser_proxy.js",
......@@ -85,6 +89,7 @@ js_modulizer("modulize") {
input_files += [
"passwords_section_test_cros.js",
"site_list_tests_cros.js",
"people_page_test_cros.js",
"test_android_info_browser_proxy.js",
]
} else {
......@@ -123,7 +128,9 @@ js_modulizer("modulize") {
"settings_search.createSampleSearchEngine|createSampleSearchEngine",
"settings_search.TestSearchEnginesBrowserProxy|TestSearchEnginesBrowserProxy",
"sync_test_util.getSyncAllPrefs|getSyncAllPrefs",
"sync_test_util.setupRouterWithSyncRoutes|setupRouterWithSyncRoutes",
"sync_test_util.simulateSyncStatus|simulateSyncStatus",
"sync_test_util.simulateStoredAccounts|simulateStoredAccounts",
"test_util.createContentSettingTypeToValuePair|createContentSettingTypeToValuePair",
"test_util.createDefaultContentSetting|createDefaultContentSetting",
"test_util.createRawChooserException|createRawChooserException",
......
......@@ -540,6 +540,38 @@ TEST_F('CrSettingsPeoplePageTest', 'All', function() {
mocha.run();
});
GEN('#if defined(OS_CHROMEOS)');
/**
* Test fixture for
* chrome/browser/resources/settings/people_page/people_page.html.
* @constructor
* @extends {CrSettingsBrowserTest}
*/
function CrSettingsPeoplePageChromeOSTest() {}
CrSettingsPeoplePageChromeOSTest.prototype = {
__proto__: CrSettingsBrowserTest.prototype,
/** @override */
browsePreload: 'chrome://settings/people_page/people_page.html',
/** @override */
extraLibraries: CrSettingsBrowserTest.prototype.extraLibraries.concat([
'../test_browser_proxy.js',
'sync_test_util.js',
'test_profile_info_browser_proxy.js',
'test_sync_browser_proxy.js',
'people_page_test_cros.js',
]),
};
TEST_F('CrSettingsPeoplePageChromeOSTest', 'All', function() {
mocha.run();
});
GEN('#endif // defined(OS_CHROMEOS)');
/**
* Test fixture for
* chrome/browser/resources/settings/people_page/sync_account_control.html.
......
......@@ -189,6 +189,59 @@ TEST_F('CrSettingsPeoplePageManageProfileV3Test', 'All', function() {
GEN('#endif // !defined(OS_CHROMEOS)');
// eslint-disable-next-line no-var
var CrSettingsPeoplePageV3Test = class extends CrSettingsV3BrowserTest {
/** @override */
get browsePreload() {
return 'chrome://settings/test_loader.html?module=settings/people_page_test.m.js';
}
};
TEST_F('CrSettingsPeoplePageV3Test', 'All', function() {
mocha.run();
});
GEN('#if defined(OS_CHROMEOS)');
// eslint-disable-next-line no-var
var CrSettingsPeoplePageChromeOSV3Test = class extends CrSettingsV3BrowserTest {
/** @override */
get browsePreload() {
return 'chrome://settings/test_loader.html?module=settings/people_page_test_cros.m.js';
}
};
TEST_F('CrSettingsPeoplePageChromeOSV3Test', 'All', function() {
mocha.run();
});
GEN('#endif // defined(OS_CHROMEOS)');
// eslint-disable-next-line no-var
var CrSettingsPeoplePageSyncControlsV3Test =
class extends CrSettingsV3BrowserTest {
/** @override */
get browsePreload() {
return 'chrome://settings/test_loader.html?module=settings/people_page_sync_controls_test.m.js';
}
};
TEST_F('CrSettingsPeoplePageSyncControlsV3Test', 'All', function() {
mocha.run();
});
// eslint-disable-next-line no-var
var CrSettingsPeoplePageSyncPageV3Test = class extends CrSettingsV3BrowserTest {
/** @override */
get browsePreload() {
return 'chrome://settings/test_loader.html?module=settings/people_page_sync_page_test.m.js';
}
};
TEST_F('CrSettingsPeoplePageSyncPageV3Test', 'All', function() {
mocha.run();
});
// eslint-disable-next-line no-var
var CrSettingsPrefUtilV3Test = class extends CrSettingsV3BrowserTest {
/** @override */
......
......@@ -2,6 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
// #import {SyncBrowserProxyImpl, StatusAction, Router} from 'chrome://settings/settings.js';
// #import 'chrome://settings/lazy_load.js';
// #import {TestSyncBrowserProxy} from 'chrome://test/settings/test_sync_browser_proxy.m.js';
// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
// #import {setupRouterWithSyncRoutes, getSyncAllPrefs} from 'chrome://test/settings/sync_test_util.m.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {waitBeforeNextRender} from 'chrome://test/test_util.m.js';
// clang-format on
cr.define('settings_people_page_sync_controls', function() {
suite('SyncControlsTest', function() {
let syncControls = null;
......@@ -124,16 +134,15 @@ cr.define('settings_people_page_sync_controls', function() {
PolymerTest.clearBody();
syncControls = document.createElement('settings-sync-controls');
settings.Router.getInstance().navigateTo(settings.routes.SYNC_ADVANCED);
const router = settings.Router.getInstance();
router.navigateTo(router.getRoutes().SYNC_ADVANCED);
document.body.appendChild(syncControls);
syncControls
.syncStatus = {disabled: false, hasError: false, signedIn: true};
Polymer.dom.flush();
assertEquals(
settings.routes.SYNC_ADVANCED,
settings.Router.getInstance().getCurrentRoute());
assertEquals(router.getRoutes().SYNC_ADVANCED, router.getCurrentRoute());
});
teardown(function() {
......@@ -143,9 +152,8 @@ cr.define('settings_people_page_sync_controls', function() {
test('SignedOut', function() {
syncControls
.syncStatus = {disabled: false, hasError: false, signedIn: false};
assertEquals(
settings.routes.SYNC,
settings.Router.getInstance().getCurrentRoute());
const router = settings.Router.getInstance();
assertEquals(router.getRoutes().SYNC.path, router.getCurrentRoute().path);
});
test('PassphraseError', function() {
......@@ -155,9 +163,9 @@ cr.define('settings_people_page_sync_controls', function() {
signedIn: true,
statusAction: settings.StatusAction.ENTER_PASSPHRASE
};
const router = settings.Router.getInstance();
assertEquals(
settings.routes.SYNC_ADVANCED,
settings.Router.getInstance().getCurrentRoute());
router.getRoutes().SYNC_ADVANCED.path, router.getCurrentRoute().path);
});
test('SyncPaused', function() {
......@@ -167,9 +175,8 @@ cr.define('settings_people_page_sync_controls', function() {
signedIn: true,
statusAction: settings.StatusAction.REAUTHENTICATE
};
assertEquals(
settings.routes.SYNC,
settings.Router.getInstance().getCurrentRoute());
const router = settings.Router.getInstance();
assertEquals(router.getRoutes().SYNC.path, router.getCurrentRoute().path);
});
});
......@@ -253,4 +260,5 @@ cr.define('settings_people_page_sync_controls', function() {
.then(prefs => assertPrefs(prefs, datatypeControls));
});
});
// #cr_define_end
});
......@@ -2,6 +2,17 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// clang-format off
// #import {Router, routes, SyncBrowserProxyImpl, PageStatus, StatusAction} from 'chrome://settings/settings.js';
// #import 'chrome://settings/lazy_load.js';
// #import {TestSyncBrowserProxy} from 'chrome://test/settings/test_sync_browser_proxy.m.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
// #import {isChromeOS} from 'chrome://resources/js/cr.m.js';
// #import {getSyncAllPrefs, setupRouterWithSyncRoutes, simulateStoredAccounts} from 'chrome://test/settings/sync_test_util.m.js';
// #import {eventToPromise, waitBeforeNextRender} from 'chrome://test/test_util.m.js';
// clang-format on
cr.define('settings_people_page_sync_page', function() {
suite('SyncSettingsTests', function() {
let syncPage = null;
......@@ -14,7 +25,8 @@ cr.define('settings_people_page_sync_page', function() {
function setupSyncPage() {
PolymerTest.clearBody();
syncPage = document.createElement('settings-sync-page');
settings.Router.getInstance().navigateTo(settings.routes.SYNC);
const router = settings.Router.getInstance();
router.navigateTo(router.getRoutes().SYNC);
// Preferences should exist for embedded
// 'personalization_options.html'. We don't perform tests on them.
syncPage.prefs = {
......@@ -80,14 +92,15 @@ cr.define('settings_people_page_sync_page', function() {
// #######################
test('NotifiesHandlerOfNavigation', function() {
const router = settings.Router.getInstance();
function testNavigateAway() {
settings.Router.getInstance().navigateTo(settings.routes.PEOPLE);
router.navigateTo(router.getRoutes().PEOPLE);
return browserProxy.whenCalled('didNavigateAwayFromSyncPage');
}
function testNavigateBack() {
browserProxy.resetResolver('didNavigateToSyncPage');
settings.Router.getInstance().navigateTo(settings.routes.SYNC);
router.navigateTo(router.getRoutes().SYNC);
return browserProxy.whenCalled('didNavigateToSyncPage');
}
......@@ -100,7 +113,7 @@ cr.define('settings_people_page_sync_page', function() {
function testRecreate() {
browserProxy.resetResolver('didNavigateToSyncPage');
syncPage = document.createElement('settings-sync-page');
settings.Router.getInstance().navigateTo(settings.routes.SYNC);
router.navigateTo(router.getRoutes().SYNC);
document.body.appendChild(syncPage);
return browserProxy.whenCalled('didNavigateToSyncPage');
......@@ -482,8 +495,8 @@ cr.define('settings_people_page_sync_page', function() {
Polymer.dom.flush();
assertEquals(
settings.routes.SYNC_ADVANCED,
settings.Router.getInstance().getCurrentRoute());
settings.routes.SYNC_ADVANCED.path,
settings.Router.getInstance().getCurrentRoute().path);
});
// This test checks whether the passphrase encryption options are
......@@ -619,12 +632,11 @@ cr.define('settings_people_page_sync_page', function() {
// Navigating away while setup is in progress opens the 'Cancel sync?'
// dialog.
settings.Router.getInstance().navigateTo(settings.routes.BASIC);
const router = settings.Router.getInstance();
router.navigateTo(settings.routes.BASIC);
return test_util.eventToPromise('cr-dialog-open', syncPage)
.then(() => {
assertEquals(
settings.routes.SYNC,
settings.Router.getInstance().getCurrentRoute());
assertEquals(router.getRoutes().SYNC, router.getCurrentRoute());
assertTrue(syncPage.$$('#setupCancelDialog').open);
// Clicking the cancel button on the 'Cancel sync?' dialog closes
......@@ -638,14 +650,12 @@ cr.define('settings_people_page_sync_page', function() {
})
.then(() => {
Polymer.dom.flush();
assertEquals(
settings.routes.SYNC,
settings.Router.getInstance().getCurrentRoute());
assertEquals(router.getRoutes().SYNC, router.getCurrentRoute());
assertFalse(!!syncPage.$$('#setupCancelDialog'));
// Navigating away while setup is in progress opens the
// dialog again.
settings.Router.getInstance().navigateTo(settings.routes.BASIC);
router.navigateTo(settings.routes.BASIC);
return test_util.eventToPromise('cr-dialog-open', syncPage);
})
.then(() => {
......@@ -671,8 +681,9 @@ cr.define('settings_people_page_sync_page', function() {
Polymer.dom.flush();
// Searching settings while setup is in progress cancels sync.
settings.Router.getInstance().navigateTo(
settings.routes.BASIC, new URLSearchParams('search=foo'));
const router = settings.Router.getInstance();
router.navigateTo(
router.getRoutes().BASIC, new URLSearchParams('search=foo'));
return browserProxy.whenCalled('didNavigateAwayFromSyncPage')
.then(abort => {
......@@ -704,4 +715,5 @@ cr.define('settings_people_page_sync_page', function() {
});
}
});
// #cr_define_end
});
......@@ -2,6 +2,20 @@
// 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://settings/lazy_load.js';
// #import {ProfileInfoBrowserProxyImpl, Router, StatusAction, SyncBrowserProxyImpl, pageVisibility, routes} from 'chrome://settings/settings.js';
// #import {TestSyncBrowserProxy} from 'chrome://test/settings/test_sync_browser_proxy.m.js';
// #import {TestProfileInfoBrowserProxy} from 'chrome://test/settings/test_profile_info_browser_proxy.m.js';
// #import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.m.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {isChromeOS, webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
// #import {listenOnce} from 'chrome://resources/js/util.m.js';
// #import {simulateSyncStatus, simulateStoredAccounts} from 'chrome://test/settings/sync_test_util.m.js';
// #import {waitBeforeNextRender} from 'chrome://test/test_util.m.js';
// #import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
// clang-format on
cr.define('settings_people_page', function() {
/** @implements {settings.PeopleBrowserProxy} */
class TestPeopleBrowserProxy extends TestBrowserProxy {
......@@ -126,7 +140,7 @@ cr.define('settings_people_page', function() {
profileInfoBrowserProxy;
PolymerTest.clearBody();
await settings.forceLazyLoaded();
/* #ignore */ await settings.forceLazyLoaded();
peoplePage = document.createElement('settings-people-page');
peoplePage.pageVisibility = settings.pageVisibility;
document.body.appendChild(peoplePage);
......@@ -475,229 +489,5 @@ cr.define('settings_people_page', function() {
});
});
if (cr.isChromeOS) {
/** @implements {settings.AccountManagerBrowserProxy} */
class TestAccountManagerBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'getAccounts',
'addAccount',
'reauthenticateAccount',
'removeAccount',
'showWelcomeDialogIfRequired',
]);
}
/** @override */
getAccounts() {
this.methodCalled('getAccounts');
return Promise.resolve([{
id: '123',
accountType: 1,
isDeviceAccount: false,
isSignedIn: true,
unmigrated: false,
fullName: 'Primary Account',
email: 'user@gmail.com',
pic: 'data:image/png;base64,primaryAccountPicData',
}]);
}
/** @override */
addAccount() {
this.methodCalled('addAccount');
}
/** @override */
reauthenticateAccount(account_email) {
this.methodCalled('reauthenticateAccount', account_email);
}
/** @override */
removeAccount(account) {
this.methodCalled('removeAccount', account);
}
/** @override */
showWelcomeDialogIfRequired() {
this.methodCalled('showWelcomeDialogIfRequired');
}
}
/** @type {?settings.AccountManagerBrowserProxy} */
let accountManagerBrowserProxy = null;
// Preferences should exist for embedded 'personalization_options.html'.
// We don't perform tests on them.
const DEFAULT_PREFS = {
profile: {password_manager_leak_detection: {value: true}},
signin: {
allowed_on_next_startup:
{type: chrome.settingsPrivate.PrefType.BOOLEAN, value: true}
},
safebrowsing:
{enabled: {value: true}, scout_reporting_enabled: {value: true}},
};
suite('Chrome OS', function() {
suiteSetup(function() {
loadTimeData.overrideValues({
// Simulate SplitSettings (OS settings in their own surface).
showOSSettings: false,
// Simulate ChromeOSAccountManager (Google Accounts support).
isAccountManagerEnabled: true,
});
});
setup(async function() {
syncBrowserProxy = new TestSyncBrowserProxy();
settings.SyncBrowserProxyImpl.instance_ = syncBrowserProxy;
profileInfoBrowserProxy = new TestProfileInfoBrowserProxy();
settings.ProfileInfoBrowserProxyImpl.instance_ =
profileInfoBrowserProxy;
accountManagerBrowserProxy = new TestAccountManagerBrowserProxy();
settings.AccountManagerBrowserProxyImpl.instance_ =
accountManagerBrowserProxy;
PolymerTest.clearBody();
peoplePage = document.createElement('settings-people-page');
peoplePage.prefs = DEFAULT_PREFS;
peoplePage.pageVisibility = settings.pageVisibility;
document.body.appendChild(peoplePage);
await accountManagerBrowserProxy.whenCalled('getAccounts');
await syncBrowserProxy.whenCalled('getSyncStatus');
Polymer.dom.flush();
});
teardown(function() {
peoplePage.remove();
});
test('GAIA name and picture', async () => {
chai.assert.include(
peoplePage.$$('#profile-icon').style.backgroundImage,
'data:image/png;base64,primaryAccountPicData');
assertEquals(
'Primary Account',
peoplePage.$$('#profile-name').textContent.trim());
});
test('profile row is actionable', () => {
// Simulate a signed-in user.
sync_test_util.simulateSyncStatus({
signedIn: true,
});
// Profile row opens account manager, so the row is actionable.
const profileIcon = assert(peoplePage.$$('#profile-icon'));
assertTrue(profileIcon.hasAttribute('actionable'));
const profileRow = assert(peoplePage.$$('#profile-row'));
assertTrue(profileRow.hasAttribute('actionable'));
const subpageArrow = assert(peoplePage.$$('#profile-subpage-arrow'));
assertFalse(subpageArrow.hidden);
});
});
suite('Chrome OS with account manager disabled', function() {
suiteSetup(function() {
loadTimeData.overrideValues({
// Simulate SplitSettings (OS settings in their own surface).
showOSSettings: false,
// Disable ChromeOSAccountManager (Google Accounts support).
isAccountManagerEnabled: false,
});
});
setup(async function() {
syncBrowserProxy = new TestSyncBrowserProxy();
settings.SyncBrowserProxyImpl.instance_ = syncBrowserProxy;
profileInfoBrowserProxy = new TestProfileInfoBrowserProxy();
settings.ProfileInfoBrowserProxyImpl.instance_ =
profileInfoBrowserProxy;
PolymerTest.clearBody();
peoplePage = document.createElement('settings-people-page');
peoplePage.prefs = DEFAULT_PREFS;
peoplePage.pageVisibility = settings.pageVisibility;
document.body.appendChild(peoplePage);
await syncBrowserProxy.whenCalled('getSyncStatus');
Polymer.dom.flush();
});
teardown(function() {
peoplePage.remove();
});
test('profile row is not actionable', () => {
// Simulate a signed-in user.
sync_test_util.simulateSyncStatus({
signedIn: true,
});
// Account manager isn't available, so the row isn't actionable.
const profileIcon = assert(peoplePage.$$('#profile-icon'));
assertFalse(profileIcon.hasAttribute('actionable'));
const profileRow = assert(peoplePage.$$('#profile-row'));
assertFalse(profileRow.hasAttribute('actionable'));
const subpageArrow = assert(peoplePage.$$('#profile-subpage-arrow'));
assertTrue(subpageArrow.hidden);
// Clicking on profile icon doesn't navigate to a new route.
const oldRoute = settings.Router.getInstance().getCurrentRoute();
profileIcon.click();
assertEquals(oldRoute, settings.Router.getInstance().getCurrentRoute());
});
});
suite('Chrome OS with SplitSyncConsent', function() {
suiteSetup(function() {
loadTimeData.overrideValues({
splitSettingsSyncEnabled: true,
splitSyncConsent: true,
});
});
setup(async function() {
syncBrowserProxy = new TestSyncBrowserProxy();
settings.SyncBrowserProxyImpl.instance_ = syncBrowserProxy;
profileInfoBrowserProxy = new TestProfileInfoBrowserProxy();
settings.ProfileInfoBrowserProxyImpl.instance_ =
profileInfoBrowserProxy;
PolymerTest.clearBody();
peoplePage = document.createElement('settings-people-page');
peoplePage.prefs = DEFAULT_PREFS;
peoplePage.pageVisibility = settings.pageVisibility;
document.body.appendChild(peoplePage);
await syncBrowserProxy.whenCalled('getSyncStatus');
Polymer.dom.flush();
});
teardown(function() {
peoplePage.remove();
});
test('Sync account control is shown', () => {
sync_test_util.simulateSyncStatus({
syncSystemEnabled: true,
});
// Account control is visible.
const accountControl = peoplePage.$$('settings-sync-account-control');
assertNotEquals(
'none', window.getComputedStyle(accountControl).display);
// Profile row items are not available.
assertFalse(!!peoplePage.$$('#profile-icon'));
assertFalse(!!peoplePage.$$('#profile-row'));
});
});
}
// #cr_define_end
});
// 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://settings/lazy_load.js';
// #import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.m.js';
// #import {AccountManagerBrowserProxyImpl, ProfileInfoBrowserProxyImpl, pageVisibility, Router, SyncBrowserProxyImpl} from 'chrome://settings/settings.js';
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {TestSyncBrowserProxy} from 'chrome://test/settings/test_sync_browser_proxy.m.js';
// #import {TestProfileInfoBrowserProxy} from 'chrome://test/settings/test_profile_info_browser_proxy.m.js';
// #import {simulateSyncStatus} from 'chrome://test/settings/sync_test_util.m.js';
// clang-format on
cr.define('settings_people_page', function() {
/** @implements {settings.AccountManagerBrowserProxy} */
class TestAccountManagerBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'getAccounts',
'addAccount',
'reauthenticateAccount',
'removeAccount',
'showWelcomeDialogIfRequired',
]);
}
/** @override */
getAccounts() {
this.methodCalled('getAccounts');
return Promise.resolve([{
id: '123',
accountType: 1,
isDeviceAccount: false,
isSignedIn: true,
unmigrated: false,
fullName: 'Primary Account',
email: 'user@gmail.com',
pic: 'data:image/png;base64,primaryAccountPicData',
}]);
}
/** @override */
addAccount() {
this.methodCalled('addAccount');
}
/** @override */
reauthenticateAccount(account_email) {
this.methodCalled('reauthenticateAccount', account_email);
}
/** @override */
removeAccount(account) {
this.methodCalled('removeAccount', account);
}
/** @override */
showWelcomeDialogIfRequired() {
this.methodCalled('showWelcomeDialogIfRequired');
}
}
/** @type {?settings.AccountManagerBrowserProxy} */
let accountManagerBrowserProxy = null;
// Preferences should exist for embedded 'personalization_options.html'.
// We don't perform tests on them.
const DEFAULT_PREFS = {
profile: {password_manager_leak_detection: {value: true}},
signin: {
allowed_on_next_startup:
{type: chrome.settingsPrivate.PrefType.BOOLEAN, value: true}
},
safebrowsing:
{enabled: {value: true}, scout_reporting_enabled: {value: true}},
};
/** @type {?SettingsPeoplePageElement} */
let peoplePage = null;
/** @type {?settings.ProfileInfoBrowserProxy} */
let profileInfoBrowserProxy = null;
/** @type {?settings.SyncBrowserProxy} */
let syncBrowserProxy = null;
suite('Chrome OS', function() {
suiteSetup(function() {
loadTimeData.overrideValues({
// Simulate SplitSettings (OS settings in their own surface).
showOSSettings: false,
// Simulate ChromeOSAccountManager (Google Accounts support).
isAccountManagerEnabled: true,
});
});
setup(async function() {
syncBrowserProxy = new TestSyncBrowserProxy();
settings.SyncBrowserProxyImpl.instance_ = syncBrowserProxy;
profileInfoBrowserProxy = new TestProfileInfoBrowserProxy();
settings.ProfileInfoBrowserProxyImpl.instance_ = profileInfoBrowserProxy;
accountManagerBrowserProxy = new TestAccountManagerBrowserProxy();
settings.AccountManagerBrowserProxyImpl.instance_ =
accountManagerBrowserProxy;
PolymerTest.clearBody();
peoplePage = document.createElement('settings-people-page');
peoplePage.prefs = DEFAULT_PREFS;
peoplePage.pageVisibility = settings.pageVisibility;
document.body.appendChild(peoplePage);
await accountManagerBrowserProxy.whenCalled('getAccounts');
await syncBrowserProxy.whenCalled('getSyncStatus');
Polymer.dom.flush();
});
teardown(function() {
peoplePage.remove();
});
test('GAIA name and picture', async () => {
chai.assert.include(
peoplePage.$$('#profile-icon').style.backgroundImage,
'data:image/png;base64,primaryAccountPicData');
assertEquals(
'Primary Account', peoplePage.$$('#profile-name').textContent.trim());
});
test('profile row is actionable', () => {
// Simulate a signed-in user.
sync_test_util.simulateSyncStatus({
signedIn: true,
});
// Profile row opens account manager, so the row is actionable.
const profileIcon = peoplePage.$$('#profile-icon');
assertTrue(!!profileIcon);
assertTrue(profileIcon.hasAttribute('actionable'));
const profileRow = peoplePage.$$('#profile-row');
assertTrue(!!profileRow);
assertTrue(profileRow.hasAttribute('actionable'));
const subpageArrow = peoplePage.$$('#profile-subpage-arrow');
assertTrue(!!subpageArrow);
assertFalse(subpageArrow.hidden);
});
});
suite('Chrome OS with account manager disabled', function() {
suiteSetup(function() {
loadTimeData.overrideValues({
// Simulate SplitSettings (OS settings in their own surface).
showOSSettings: false,
// Disable ChromeOSAccountManager (Google Accounts support).
isAccountManagerEnabled: false,
});
});
setup(async function() {
syncBrowserProxy = new TestSyncBrowserProxy();
settings.SyncBrowserProxyImpl.instance_ = syncBrowserProxy;
profileInfoBrowserProxy = new TestProfileInfoBrowserProxy();
settings.ProfileInfoBrowserProxyImpl.instance_ = profileInfoBrowserProxy;
PolymerTest.clearBody();
peoplePage = document.createElement('settings-people-page');
peoplePage.prefs = DEFAULT_PREFS;
peoplePage.pageVisibility = settings.pageVisibility;
document.body.appendChild(peoplePage);
await syncBrowserProxy.whenCalled('getSyncStatus');
Polymer.dom.flush();
});
teardown(function() {
peoplePage.remove();
});
test('profile row is not actionable', () => {
// Simulate a signed-in user.
sync_test_util.simulateSyncStatus({
signedIn: true,
});
// Account manager isn't available, so the row isn't actionable.
const profileIcon = peoplePage.$$('#profile-icon');
assertTrue(!!profileIcon);
assertFalse(profileIcon.hasAttribute('actionable'));
const profileRow = peoplePage.$$('#profile-row');
assertTrue(!!profileRow);
assertFalse(profileRow.hasAttribute('actionable'));
const subpageArrow = peoplePage.$$('#profile-subpage-arrow');
assertTrue(!!subpageArrow);
assertTrue(subpageArrow.hidden);
// Clicking on profile icon doesn't navigate to a new route.
const oldRoute = settings.Router.getInstance().getCurrentRoute();
profileIcon.click();
assertEquals(oldRoute, settings.Router.getInstance().getCurrentRoute());
});
});
suite('Chrome OS with SplitSyncConsent', function() {
suiteSetup(function() {
loadTimeData.overrideValues({
splitSettingsSyncEnabled: true,
splitSyncConsent: true,
});
});
setup(async function() {
syncBrowserProxy = new TestSyncBrowserProxy();
settings.SyncBrowserProxyImpl.instance_ = syncBrowserProxy;
profileInfoBrowserProxy = new TestProfileInfoBrowserProxy();
settings.ProfileInfoBrowserProxyImpl.instance_ = profileInfoBrowserProxy;
PolymerTest.clearBody();
peoplePage = document.createElement('settings-people-page');
peoplePage.prefs = DEFAULT_PREFS;
peoplePage.pageVisibility = settings.pageVisibility;
document.body.appendChild(peoplePage);
await syncBrowserProxy.whenCalled('getSyncStatus');
Polymer.dom.flush();
});
teardown(function() {
peoplePage.remove();
});
test('Sync account control is shown', () => {
sync_test_util.simulateSyncStatus({
syncSystemEnabled: true,
});
// Account control is visible.
const accountControl = peoplePage.$$('settings-sync-account-control');
assertNotEquals('none', window.getComputedStyle(accountControl).display);
// Profile row items are not available.
assertFalse(!!peoplePage.$$('#profile-icon'));
assertFalse(!!peoplePage.$$('#profile-row'));
});
});
// #cr_define_end
});
......@@ -5,6 +5,7 @@
// clang-format off
// #import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {webUIListenerCallback} from 'chrome://resources/js/cr.m.js';
// #import {Route,Router,routes} from 'chrome://settings/settings.js';
// clang-format on
cr.define('sync_test_util', function() {
......@@ -44,7 +45,7 @@ cr.define('sync_test_util', function() {
};
}
function setupRouterWithSyncRoutes() {
/* #export */ function setupRouterWithSyncRoutes() {
const routes = {
BASIC: new settings.Route('/'),
};
......@@ -56,7 +57,7 @@ cr.define('sync_test_util', function() {
routes.SIGN_OUT.isNavigableDialog = true;
settings.Router.resetInstanceForTesting(new settings.Router(routes));
settings.routes = routes;
/* #ignore */ settings.routes = routes;
}
/** @param {!settings.SyncStatus} */
......@@ -66,7 +67,7 @@ cr.define('sync_test_util', function() {
}
/** @param {Array<!settings.StoredAccount>} */
function simulateStoredAccounts(accounts) {
/* #export */ function simulateStoredAccounts(accounts) {
cr.webUIListenerCallback('stored-accounts-updated', accounts);
Polymer.dom.flush();
}
......
......@@ -2,8 +2,10 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// #import {TestBrowserProxy} from 'chrome://test/test_browser_proxy.m.js';
/** @implements {settings.ProfileInfoBrowserProxy} */
class TestProfileInfoBrowserProxy extends TestBrowserProxy {
/* #export */ class TestProfileInfoBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'getProfileInfo',
......@@ -27,4 +29,4 @@ class TestProfileInfoBrowserProxy extends TestBrowserProxy {
getProfileStatsCount() {
this.methodCalled('getProfileStatsCount');
}
}
\ No newline at end of file
}
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