Commit 008482bb authored by Nnamdi Theodore Johnson-Kanu's avatar Nnamdi Theodore Johnson-Kanu Committed by Commit Bot

[CrOS cellular] Update esim UI and button states

- Add close button functionality
- Update ESim flow ui to use iron pages

screenshot: https://screenshot.googleplex.com/A7ZxANAamWYTxs3.png

Bug: 1093185
Change-Id: I755d40eefa068398a6a3c1cab6428f8f5aed7ee5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2424830
Commit-Queue: Nnamdi Theodore Johnson-kanu <tjohnsonkanu@google.com>
Reviewed-by: default avatarAzeem Arshad <azeemarshad@chromium.org>
Reviewed-by: default avatarKyle Horimoto <khorimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811463}
parent 5c3cbb2f
...@@ -22,8 +22,17 @@ Polymer({ ...@@ -22,8 +22,17 @@ Polymer({
this.delegate_ = new settings.CellularSetupSettingsDelegate(); this.delegate_ = new settings.CellularSetupSettingsDelegate();
}, },
listeners: {
'exit-cellular-setup': 'onExitCellularSetup_',
},
/** @override */ /** @override */
attached() { attached() {
this.$.dialog.showModal(); this.$.dialog.showModal();
}, },
onExitCellularSetup_() {
this.$.dialog.close();
}
}); });
...@@ -13,6 +13,11 @@ cr.define('settings', function() { ...@@ -13,6 +13,11 @@ cr.define('settings', function() {
shouldShowPageTitle() { shouldShowPageTitle() {
return false; return false;
} }
/** @override */
shouldShowCancelButton() {
return true;
}
} }
// #cr_define_end // #cr_define_end
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
// #import 'chrome://resources/cr_components/chromeos/cellular_setup/esim_flow_ui.m.js'; // #import 'chrome://resources/cr_components/chromeos/cellular_setup/esim_flow_ui.m.js';
// #import {flush, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; // #import {flush, Polymer} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
// #import {ButtonState} from 'chrome://resources/cr_components/chromeos/cellular_setup/cellular_types.m.js';
// #import {ESimPageName} from 'chrome://resources/cr_components/chromeos/cellular_setup/esim_flow_ui.m.js';
// #import {assertTrue} from '../../../chai_assert.js'; // #import {assertTrue} from '../../../chai_assert.js';
// #import {FakeCellularSetupDelegate} from './fake_cellular_setup_delegate.m.js'; // #import {FakeCellularSetupDelegate} from './fake_cellular_setup_delegate.m.js';
// clang-format on // clang-format on
...@@ -16,12 +18,33 @@ suite('CrComponentsEsimFlowUiTest', function() { ...@@ -16,12 +18,33 @@ suite('CrComponentsEsimFlowUiTest', function() {
setup(function() { setup(function() {
eSimPage = document.createElement('esim-flow-ui'); eSimPage = document.createElement('esim-flow-ui');
eSimPage.delegate = new cellular_setup.FakeCellularSetupDelegate(); eSimPage.delegate = new cellular_setup.FakeCellularSetupDelegate();
eSimPage.initSubflow();
document.body.appendChild(eSimPage); document.body.appendChild(eSimPage);
Polymer.dom.flush(); Polymer.dom.flush();
}); });
test('Base test', function() { test('Forward navigation goes to final page', function() {
const crInput = eSimPage.$$('cr-input'); assertTrue(
assertTrue(!!crInput); eSimPage.selectedESimPageName_ === cellular_setup.ESimPageName.ESIM);
eSimPage.navigateForward();
Polymer.dom.flush();
assertTrue(
eSimPage.selectedESimPageName_ === cellular_setup.ESimPageName.FINAL);
});
test('Enable next button', function() {
assertTrue(
eSimPage.buttonState.next ===
cellularSetup.ButtonState.SHOWN_BUT_DISABLED);
eSimPage.activationCode_ = 'ACTIVATION CODE';
Polymer.dom.flush();
assertTrue(
eSimPage.buttonState.next ===
cellularSetup.ButtonState.SHOWN_AND_ENABLED);
}); });
}); });
...@@ -13,6 +13,11 @@ cr.define('cellular_setup', function() { ...@@ -13,6 +13,11 @@ cr.define('cellular_setup', function() {
shouldShowPageTitle() { shouldShowPageTitle() {
return false; return false;
} }
/** @override */
shouldShowCancelButton() {
return true;
}
} }
// #cr_define_end // #cr_define_end
......
...@@ -87,6 +87,7 @@ js_library("esim_flow_ui") { ...@@ -87,6 +87,7 @@ js_library("esim_flow_ui") {
deps = [ deps = [
":cellular_setup_delegate", ":cellular_setup_delegate",
":cellular_types", ":cellular_types",
":final_page",
":subflow_behavior", ":subflow_behavior",
"//ui/webui/resources/js:i18n_behavior", "//ui/webui/resources/js:i18n_behavior",
] ]
...@@ -269,7 +270,9 @@ js_library("esim_flow_ui.m") { ...@@ -269,7 +270,9 @@ js_library("esim_flow_ui.m") {
deps = [ deps = [
":cellular_setup_delegate.m", ":cellular_setup_delegate.m",
":cellular_types.m", ":cellular_types.m",
":final_page.m",
":subflow_behavior.m", ":subflow_behavior.m",
"//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled",
"//ui/webui/resources/js:i18n_behavior.m", "//ui/webui/resources/js:i18n_behavior.m",
] ]
extra_deps = [ ":esim_flow_ui_module" ] extra_deps = [ ":esim_flow_ui_module" ]
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
</cr-button> </cr-button>
<cr-button id="cancel" <cr-button id="cancel"
class="cancel-button" class="cancel-button"
on-click="onBackwardButtonClicked_" on-click="onCancelButtonClicked_"
disabled="[[isButtonDisabled_(Button.CANCEL, buttonState.*)]]" disabled="[[isButtonDisabled_(Button.CANCEL, buttonState.*)]]"
hidden$="[[isButtonHidden_(Button.CANCEL, buttonState.*)]]"> hidden$="[[isButtonHidden_(Button.CANCEL, buttonState.*)]]">
[[i18n('cancel')]] [[i18n('cancel')]]
......
...@@ -51,6 +51,11 @@ Polymer({ ...@@ -51,6 +51,11 @@ Polymer({
this.fire('backward-nav-requested'); this.fire('backward-nav-requested');
}, },
/** @private */
onCancelButtonClicked_() {
this.fire('cancel-requested');
},
/** @private */ /** @private */
onTryAgainButtonClicked_() { onTryAgainButtonClicked_() {
this.fire('retry-requested'); this.fire('retry-requested');
......
...@@ -59,6 +59,7 @@ Polymer({ ...@@ -59,6 +59,7 @@ Polymer({
'retry-requested': 'onRetryRequested_', 'retry-requested': 'onRetryRequested_',
'complete-flow-requested': 'onCompleteFlowRequested_', 'complete-flow-requested': 'onCompleteFlowRequested_',
'forward-nav-requested': 'onForwardNavRequested_', 'forward-nav-requested': 'onForwardNavRequested_',
'cancel-requested': 'onCancelRequested_',
}, },
/** @private */ /** @private */
...@@ -81,6 +82,10 @@ Polymer({ ...@@ -81,6 +82,10 @@ Polymer({
} }
}, },
onCancelRequested_() {
this.fire('exit-cellular-setup');
},
/** @private */ /** @private */
onRetryRequested_() { onRetryRequested_() {
// TODO(crbug.com/1093185): Add try again logic. // TODO(crbug.com/1093185): Add try again logic.
......
...@@ -15,6 +15,11 @@ cr.define('cellular_setup', function() { ...@@ -15,6 +15,11 @@ cr.define('cellular_setup', function() {
* @return {boolean} true if base page title text should be visible. * @return {boolean} true if base page title text should be visible.
*/ */
shouldShowPageTitle() {} shouldShowPageTitle() {}
/**
* @return {boolean} true if cancel button should be visible.
*/
shouldShowCancelButton() {}
} }
// #cr_define_end // #cr_define_end
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<link rel="import" href="subflow_behavior.html"> <link rel="import" href="subflow_behavior.html">
<link rel="import" href="cellular_types.html"> <link rel="import" href="cellular_types.html">
<link rel="import" href="cellular_setup_delegate.html"> <link rel="import" href="cellular_setup_delegate.html">
<link rel="import" href="chrome://resources/polymer/v1_0/iron-pages/iron-pages.html">
<dom-module id="esim-flow-ui"> <dom-module id="esim-flow-ui">
<template> <template>
...@@ -22,13 +23,24 @@ ...@@ -22,13 +23,24 @@
margin: 10px 0; margin: 10px 0;
} }
</style> </style>
[[i18n('scanQRCode')]] <iron-pages attr-for-selected="id"
<!-- TODO(crbug.com/1093185): Add QR code detection--> selected="[[selectedESimPageName_]]">
<div id="esim-qrcode-detection"></div> <!-- TODO(crbug.com/1093185): Move to separate page-->
<cr-input id="activation-code" <div id="qr-code-page">
label="[[i18n('activationCode')]]" [[i18n('scanQRCode')]]
value="{{activationCode_}}"> <!-- TODO(crbug.com/1093185): Add QR code detection-->
</cr-input> <div id="esim-qrcode-detection"></div>
<cr-input id="activation-code"
label="[[i18n('activationCode')]]"
value="{{activationCode_}}">
</cr-input>
</div>
<final-page
id="final-page"
delegate="[[delegate]]"
show-error="[[showError_]]">
</final-page>
</iron-pages>
</template> </template>
<script src="esim_flow_ui.js"></script> <script src="esim_flow_ui.js"></script>
</dom-module> </dom-module>
\ No newline at end of file
...@@ -2,36 +2,93 @@ ...@@ -2,36 +2,93 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
/** cr.define('cellular_setup', function() {
* Root element for the eSIM cellular setup flow. This element interacts with /** @enum{string} */
* the CellularSetup service to carry out the esim activation flow. /* #export */ const ESimPageName = {
*/ ESIM: 'qr-code-page',
Polymer({ FINAL: 'final-page',
is: 'esim-flow-ui', };
/**
behaviors: [ * Root element for the eSIM cellular setup flow. This element interacts with
I18nBehavior, * the CellularSetup service to carry out the esim activation flow.
SubflowBehavior, */
], Polymer({
is: 'esim-flow-ui',
properties: {
/** @type {!cellular_setup.CellularSetupDelegate} */ behaviors: [
delegate: Object, I18nBehavior,
SubflowBehavior,
],
properties: {
/** @type {!cellular_setup.CellularSetupDelegate} */
delegate: Object,
/**
* @type {string}
* @private
*/
activationCode_: {
type: String,
value: '',
observer: 'onActivationCodeChanged_',
},
/**
* Element name of the current selected sub-page.
* @type {!cellular_setup.ESimPageName}
* @private
*/
selectedESimPageName_: {
type: String,
value: ESimPageName.ESIM,
},
/**
* Whether error state should be shown for the current page.
* @private {boolean}
*/
showError_: {
type: Boolean,
value: false,
},
},
initSubflow() {
this.buttonState = {
backward: cellularSetup.ButtonState.SHOWN_AND_ENABLED,
cancel: this.delegate.shouldShowCancelButton() ?
cellularSetup.ButtonState.SHOWN_AND_ENABLED :
cellularSetup.ButtonState.HIDDEN,
done: cellularSetup.ButtonState.HIDDEN,
next: cellularSetup.ButtonState.SHOWN_BUT_DISABLED,
tryAgain: cellularSetup.ButtonState.HIDDEN
};
},
navigateForward() {
this.selectedESimPageName_ = ESimPageName.FINAL;
},
/** /**
* @type {string} * @returns {boolean} true if backward navigation was handled
* @private
*/ */
activationCode_: String, attemptBackwardNavigation() {
}, // TODO(crbug.com/1093185): Handle state when camera is used
return false;
initSubflow() { },
this.buttonState = {
backward: cellularSetup.ButtonState.HIDDEN, /** @private */
cancel: cellularSetup.ButtonState.SHOWN_AND_ENABLED, onActivationCodeChanged_() {
done: cellularSetup.ButtonState.HIDDEN, if (!this.activationCode_) {
next: cellularSetup.ButtonState.SHOWN_AND_ENABLED, this.buttonState.next = cellularSetup.ButtonState.SHOWN_BUT_DISABLED;
tryAgain: cellularSetup.ButtonState.HIDDEN return;
}; }
},
}); this.buttonState.next = cellularSetup.ButtonState.SHOWN_AND_ENABLED;
}
});
// #cr_define_end
return {ESimPageName: ESimPageName};
});
\ No newline at end of file
...@@ -15,6 +15,7 @@ Polymer({ ...@@ -15,6 +15,7 @@ Polymer({
], ],
properties: { properties: {
/** /**
* Element name of the current selected sub-page. * Element name of the current selected sub-page.
* @private {!cellularSetup.CellularSetupPageName} * @private {!cellularSetup.CellularSetupPageName}
......
...@@ -10,6 +10,7 @@ cr_components_chromeos_namespace_rewrites = [ ...@@ -10,6 +10,7 @@ cr_components_chromeos_namespace_rewrites = [
"cellularSetup.Button|Button", "cellularSetup.Button|Button",
"cellularSetup.ButtonBarState|ButtonBarState", "cellularSetup.ButtonBarState|ButtonBarState",
"cellularSetup.CellularSetupPageName|CellularSetupPageName", "cellularSetup.CellularSetupPageName|CellularSetupPageName",
"cellular_setup.ESimPageName|ESimPageName",
"cellularSetup.PSimPageName|PSimPageName", "cellularSetup.PSimPageName|PSimPageName",
"cellularSetup.PSimUIState|PSimUIState", "cellularSetup.PSimUIState|PSimUIState",
"cellularSetup.getTimeoutMsForPSimUIState|getTimeoutMsForPSimUIState", "cellularSetup.getTimeoutMsForPSimUIState|getTimeoutMsForPSimUIState",
......
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