Commit 5ee474bc authored by Scott Chen's avatar Scott Chen Committed by Commit Bot

MD Extensions: pack-dialog success message

Bug: 795012
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: Ifab4bd719569504821dc18db8ac785fadfaa71b3
Reviewed-on: https://chromium-review.googlesource.com/828461
Commit-Queue: Scott Chen <scottchen@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524547}
parent 85bdc60d
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
</dialog> </dialog>
<template is="dom-if" if="[[lastResponse_]]" restamp> <template is="dom-if" if="[[lastResponse_]]" restamp>
<extensions-pack-dialog-alert model="[[lastResponse_]]" <extensions-pack-dialog-alert model="[[lastResponse_]]"
on-warning-confirmed="onWarningConfirmed_" on-close="resetResponse_"> on-close="onAlertClose_">
</extensions-pack-dialog-alert> </extensions-pack-dialog-alert>
</template> </template>
</template> </template>
......
...@@ -89,25 +89,33 @@ cr.define('extensions', function() { ...@@ -89,25 +89,33 @@ cr.define('extensions', function() {
* @private * @private
*/ */
onPackResponse_: function(response) { onPackResponse_: function(response) {
if (response.status === chrome.developerPrivate.PackStatus.SUCCESS) { this.lastResponse_ = response;
this.$.dialog.close();
} else {
this.set('lastResponse_', response);
}
}, },
/** /**
* The handler function when user chooses to 'Proceed Anyway' upon * In the case that the alert dialog was a success message, the entire
* receiving a waring. * pack-dialog should close. Otherwise, we detach the alert by setting
* lastResponse_ null. Additionally, if the user selected "proceed anyway"
* in the warning dialog, we pack the extension again with override flags.
* @param {!Event} e
* @private * @private
*/ */
onWarningConfirmed_: function() { onAlertClose_: function(e) {
e.stopPropagation();
if (this.lastResponse_.status ==
chrome.developerPrivate.PackStatus.SUCCESS) {
this.$.dialog.close();
return;
}
/* This is only possible for a warning dialog. */
if (this.$$('extensions-pack-dialog-alert').returnValue == 'success') {
this.delegate.packExtension( this.delegate.packExtension(
this.lastResponse_.item_path, this.lastResponse_.pem_path, this.lastResponse_.item_path, this.lastResponse_.pem_path,
this.lastResponse_.override_flags, this.onPackResponse_.bind(this)); this.lastResponse_.override_flags, this.onPackResponse_.bind(this));
}, }
resetResponse_: function() {
this.lastResponse_ = null; this.lastResponse_ = null;
}, },
}); });
......
...@@ -10,16 +10,19 @@ ...@@ -10,16 +10,19 @@
<dom-module id="extensions-pack-dialog-alert"> <dom-module id="extensions-pack-dialog-alert">
<template> <template>
<style include="cr-shared-style paper-button-style"> <style include="cr-shared-style paper-button-style">
.body {
white-space: pre-wrap;
word-break: break-word;
}
</style> </style>
<dialog is="cr-dialog" id="dialog" close-text="$i18n{close}"> <dialog is="cr-dialog" id="dialog" close-text="$i18n{close}">
<div class="title" slot="title">[[title_]]</div> <div class="title" slot="title">[[title_]]</div>
<div class="body" slot="body"> <!-- No whitespace or new-lines allowed within the div.body tag. -->
[[model.message]] <div class="body" slot="body">[[model.message]]</div>
</div>
<div class="button-container" slot="button-container"> <div class="button-container" slot="button-container">
<paper-button class="cancel-button" on-tap="onCancelTap_" <paper-button class$="[[getCancelButtonClass_(confirmLabel_)]]"
hidden="[[!cancelLabel_]]"> on-tap="onCancelTap_" hidden="[[!cancelLabel_]]">
[[cancelLabel_]] [[cancelLabel_]]
</paper-button> </paper-button>
<paper-button class="action-button" on-tap="onConfirmTap_" <paper-button class="action-button" on-tap="onConfirmTap_"
......
...@@ -20,8 +20,19 @@ cr.define('extensions', function() { ...@@ -20,8 +20,19 @@ cr.define('extensions', function() {
/** @private */ /** @private */
cancelLabel_: String, cancelLabel_: String,
/** @private */ /**
confirmLabel_: String, * This needs to be initialized to trigger data-binding.
* @private
*/
confirmLabel_: {
type: String,
value: '',
}
},
/** @return {string} */
get returnValue() {
return this.$.dialog.returnValue;
}, },
/** @override */ /** @override */
...@@ -41,8 +52,10 @@ cr.define('extensions', function() { ...@@ -41,8 +52,10 @@ cr.define('extensions', function() {
this.title_ = loadTimeData.getString('packDialogErrorTitle'); this.title_ = loadTimeData.getString('packDialogErrorTitle');
this.cancelLabel_ = loadTimeData.getString('ok'); this.cancelLabel_ = loadTimeData.getString('ok');
break; break;
// If status were success, this dialog should not be attached at all.
case chrome.developerPrivate.PackStatus.SUCCESS: case chrome.developerPrivate.PackStatus.SUCCESS:
this.title_ = loadTimeData.getString('packDialogTitle');
this.cancelLabel_ = loadTimeData.getString('ok');
break;
default: default:
assertNotReached(); assertNotReached();
return; return;
...@@ -54,6 +67,14 @@ cr.define('extensions', function() { ...@@ -54,6 +67,14 @@ cr.define('extensions', function() {
this.$.dialog.showModal(); this.$.dialog.showModal();
}, },
/**
* @return {string}
* @private
*/
getCancelButtonClass_: function() {
return this.confirmLabel_ ? 'cancel-button' : 'action-button';
},
/** @private */ /** @private */
onCancelTap_: function() { onCancelTap_: function() {
this.$.dialog.cancel(); this.$.dialog.cancel();
...@@ -63,7 +84,6 @@ cr.define('extensions', function() { ...@@ -63,7 +84,6 @@ cr.define('extensions', function() {
onConfirmTap_: function() { onConfirmTap_: function() {
// The confirm button should only be available in WARNING state. // The confirm button should only be available in WARNING state.
assert(this.model.status === chrome.developerPrivate.PackStatus.WARNING); assert(this.model.status === chrome.developerPrivate.PackStatus.WARNING);
this.fire('warning-confirmed');
this.$.dialog.close(); this.$.dialog.close();
} }
}); });
......
...@@ -105,6 +105,8 @@ cr.define('extension_pack_dialog_tests', function() { ...@@ -105,6 +105,8 @@ cr.define('extension_pack_dialog_tests', function() {
test(assert(TestNames.PackSuccess), function() { test(assert(TestNames.PackSuccess), function() {
var dialogElement = packDialog.$$('dialog'); var dialogElement = packDialog.$$('dialog');
var packDialogAlert;
var alertElement;
packDialog.show(); packDialog.show();
expectTrue(extension_test_util.isElementVisible(dialogElement)); expectTrue(extension_test_util.isElementVisible(dialogElement));
...@@ -125,6 +127,18 @@ cr.define('extension_pack_dialog_tests', function() { ...@@ -125,6 +127,18 @@ cr.define('extension_pack_dialog_tests', function() {
return PolymerTest.flushTasks(); return PolymerTest.flushTasks();
}) })
.then(() => { .then(() => {
packDialogAlert = packDialog.$$('extensions-pack-dialog-alert');
alertElement = packDialogAlert.$.dialog;
expectTrue(extension_test_util.isElementVisible(alertElement));
expectTrue(extension_test_util.isElementVisible(dialogElement));
expectTrue(!!packDialogAlert.$$('.action-button'));
// After 'ok', both dialogs should be closed.
MockInteractions.tap(packDialogAlert.$$('.action-button'));
return PolymerTest.flushTasks();
})
.then(() => {
expectFalse(extension_test_util.isElementVisible(alertElement));
expectFalse(extension_test_util.isElementVisible(dialogElement)); expectFalse(extension_test_util.isElementVisible(dialogElement));
}); });
}); });
...@@ -155,11 +169,11 @@ cr.define('extension_pack_dialog_tests', function() { ...@@ -155,11 +169,11 @@ cr.define('extension_pack_dialog_tests', function() {
alertElement = packDialogAlert.$.dialog; alertElement = packDialogAlert.$.dialog;
expectTrue(extension_test_util.isElementVisible(alertElement)); expectTrue(extension_test_util.isElementVisible(alertElement));
expectTrue(extension_test_util.isElementVisible(dialogElement)); expectTrue(extension_test_util.isElementVisible(dialogElement));
expectFalse(packDialogAlert.$$('.cancel-button').hidden); expectTrue(!!packDialogAlert.$$('.action-button'));
expectTrue(packDialogAlert.$$('.action-button').hidden);
// After cancel, original dialog is still open and values unchanged. // After cancel, original dialog is still open and values unchanged.
MockInteractions.tap(packDialogAlert.$$('.cancel-button')); MockInteractions.tap(packDialogAlert.$$('.action-button'));
Polymer.dom.flush();
expectFalse(extension_test_util.isElementVisible(alertElement)); expectFalse(extension_test_util.isElementVisible(alertElement));
expectTrue(extension_test_util.isElementVisible(dialogElement)); expectTrue(extension_test_util.isElementVisible(dialogElement));
expectEquals(kRootPath, packDialog.$$('#root-dir').value); expectEquals(kRootPath, packDialog.$$('#root-dir').value);
......
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