blob: 31346cf283fcf853aa0924aceadee85318cdca8b [file] [log] [blame]
// 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('multidevice', function() {
/**
* Default Host device for PageContentData.
*/
const HOST_DEVICE = 'Pixel XL';
/**
* Test value for messages for web permissions origin.
*/
const TEST_ANDROID_SMS_ORIGIN = 'http://foo.com';
/**
* Builds fake pageContentData for the specified mode. If it is a mode
* corresponding to a set host, it will set the hostDeviceName to the provided
* name or else default to HOST_DEVICE.
* @param {settings.MultiDeviceSettingsMode} mode
* @param {string=} opt_hostDeviceName Overrides default if |mode| corresponds
* to a set host.
* @return {!MultiDevicePageContentData}
*/
function createFakePageContentData(mode, opt_hostDeviceName) {
let pageContentData = {mode: mode};
if ([
settings.MultiDeviceSettingsMode.HOST_SET_WAITING_FOR_SERVER,
settings.MultiDeviceSettingsMode.HOST_SET_WAITING_FOR_VERIFICATION,
settings.MultiDeviceSettingsMode.HOST_SET_VERIFIED,
].includes(mode)) {
pageContentData.hostDeviceName = opt_hostDeviceName || HOST_DEVICE;
}
return pageContentData;
}
/**
* @implements {settings.MultideviceBrowserProxy}
* Note: Only showMultiDeviceSetupDialog is used by the multidevice-page
* element.
*/
class TestMultideviceBrowserProxy extends TestBrowserProxy {
constructor() {
super([
'showMultiDeviceSetupDialog',
'getPageContentData',
'setFeatureEnabledState',
'setUpAndroidSms',
'getSmartLockSignInEnabled',
'setSmartLockSignInEnabled',
'getSmartLockSignInAllowed',
'getAndroidSmsInfo',
]);
this.data = createFakePageContentData(
settings.MultiDeviceSettingsMode.NO_HOST_SET);
this.androidSmsInfo = {origin: TEST_ANDROID_SMS_ORIGIN, enabled: true};
this.smartLockSignInAllowed = true;
}
/** @override */
getPageContentData() {
this.methodCalled('getPageContentData');
return Promise.resolve(this.data);
}
/** @override */
showMultiDeviceSetupDialog() {
this.methodCalled('showMultiDeviceSetupDialog');
}
/** @override */
setFeatureEnabledState(feature, enabled, opt_authToken) {
this.methodCalled(
'setFeatureEnabledState', [feature, enabled, opt_authToken]);
if (feature === settings.MultiDeviceFeature.MESSAGES) {
this.androidSmsInfo.enabled = enabled;
cr.webUIListenerCallback(
'settings.onAndroidSmsInfoChange', this.androidSmsInfo);
}
}
/** @override */
setUpAndroidSms() {
this.methodCalled('setUpAndroidSms');
}
/** @override */
getSmartLockSignInEnabled() {
this.methodCalled('getSmartLockSignInEnabled');
return Promise.resolve(true);
}
/** @override */
setSmartLockSignInEnabled(enabled, opt_authToken) {
this.methodCalled('setSmartLockSignInEnabled', [enabled, opt_authToken]);
cr.webUIListenerCallback('smart-lock-signin-enabled-changed', enabled);
}
/** @override */
getSmartLockSignInAllowed() {
this.methodCalled('getSmartLockSignInAllowed');
return Promise.resolve(this.smartLockSignInAllowed);
}
/** @override */
getAndroidSmsInfo() {
this.methodCalled('getAndroidSmsInfo');
return Promise.resolve(this.androidSmsInfo);
}
}
return {
TestMultideviceBrowserProxy: TestMultideviceBrowserProxy,
createFakePageContentData: createFakePageContentData,
TEST_ANDROID_SMS_ORIGIN: TEST_ANDROID_SMS_ORIGIN,
HOST_DEVICE: HOST_DEVICE
};
});