| Index: chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.js
|
| diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.js b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.js
|
| index c18265d2ba440549f3bef507af178acc9135d1c3..fbbc568147fd48e9af5ab62f97e058200c069b24 100644
|
| --- a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.js
|
| +++ b/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_browsing_data_dialog.js
|
| @@ -28,8 +28,9 @@ Polymer({
|
| */
|
| counters_: {
|
| type: Object,
|
| - value: {
|
| - // Will be filled as results are reported.
|
| + // Will be filled as results are reported.
|
| + value: function() {
|
| + return {};
|
| }
|
| },
|
|
|
| @@ -68,6 +69,28 @@ Polymer({
|
| type: Boolean,
|
| value: false,
|
| },
|
| +
|
| + /** @private {!Array<ImportantSite>} */
|
| + importantSites_: {
|
| + type: Array,
|
| + value: function() {
|
| + return [];
|
| + }
|
| + },
|
| +
|
| + /** @private */
|
| + importantSitesFlagEnabled_: {
|
| + type: Boolean,
|
| + value: function() {
|
| + return loadTimeData.getBoolean('importantSitesInCbd');
|
| + },
|
| + },
|
| +
|
| + /** @private */
|
| + showImportantSitesDialog_: {
|
| + type: Boolean,
|
| + value: false
|
| + },
|
| },
|
|
|
| /** @private {settings.ClearBrowsingDataBrowserProxy} */
|
| @@ -89,8 +112,14 @@ Polymer({
|
| this.browserProxy_ =
|
| settings.ClearBrowsingDataBrowserProxyImpl.getInstance();
|
| this.browserProxy_.initialize().then(function() {
|
| - this.$.dialog.showModal();
|
| + this.$.clearBrowsingDataDialog.showModal();
|
| }.bind(this));
|
| +
|
| + if (this.importantSitesFlagEnabled_) {
|
| + this.browserProxy_.getImportantSites().then(function(sites) {
|
| + this.importantSites_ = sites;
|
| + }.bind(this));
|
| + }
|
| },
|
|
|
| /**
|
| @@ -104,7 +133,7 @@ Polymer({
|
| updateFooter_: function(syncing, otherFormsOfBrowsingHistory) {
|
| this.$.googleFooter.hidden = !otherFormsOfBrowsingHistory;
|
| this.$.syncedDataSentence.hidden = !syncing;
|
| - this.$.dialog.classList.add('fully-rendered');
|
| + this.$.clearBrowsingDataDialog.classList.add('fully-rendered');
|
| },
|
|
|
| /**
|
| @@ -122,29 +151,99 @@ Polymer({
|
| },
|
|
|
| /**
|
| + * @return {boolean} Whether the ImportantSites dialog should be shown.
|
| + * @private
|
| + */
|
| + shouldShowImportantSites_: function() {
|
| + if (!this.importantSitesFlagEnabled_)
|
| + return false;
|
| + if (!this.$.cookiesCheckbox.checked && !this.$.cacheCheckbox.checked)
|
| + return false;
|
| +
|
| + var haveImportantSites = this.importantSites_.length > 0;
|
| + chrome.send(
|
| + 'metricsHandler:recordBooleanHistogram',
|
| + ['History.ClearBrowsingData.ImportantDialogShown', haveImportantSites]);
|
| + return haveImportantSites;
|
| + },
|
| +
|
| + /**
|
| * Handles the tap on the Clear Data button.
|
| * @private
|
| */
|
| onClearBrowsingDataTap_: function() {
|
| + if (this.shouldShowImportantSites_()) {
|
| + this.showImportantSitesDialog_ = true;
|
| + this.$.clearBrowsingDataDialog.close();
|
| + // Show important sites dialog after dom-if is applied.
|
| + this.async(function() {
|
| + this.$$('#importantSitesDialog').showModal();
|
| + });
|
| + } else {
|
| + this.clearBrowsingData_();
|
| + }
|
| + },
|
| +
|
| + /**
|
| + * Handles closing of the clear browsing data dialog. Stops the close
|
| + * event from propagating if another dialog is shown to prevent the
|
| + * privacy-page from closing this dialog.
|
| + * @private
|
| + */
|
| + onClearBrowsingDataDialogClose_: function(event) {
|
| + if (this.showImportantSitesDialog_)
|
| + event.stopPropagation();
|
| + },
|
| +
|
| + /**
|
| + * Clears browsing data and maybe shows a history notice.
|
| + * @private
|
| + */
|
| + clearBrowsingData_: function() {
|
| this.clearingInProgress_ = true;
|
|
|
| - this.browserProxy_.clearBrowsingData().then(
|
| - /**
|
| - * @param {boolean} shouldShowNotice Whether we should show the notice
|
| - * about other forms of browsing history before closing the dialog.
|
| - */
|
| - function(shouldShowNotice) {
|
| - this.clearingInProgress_ = false;
|
| - this.showHistoryDeletionDialog_ = shouldShowNotice;
|
| -
|
| - if (!shouldShowNotice)
|
| - this.$.dialog.close();
|
| - }.bind(this));
|
| + this.browserProxy_.clearBrowsingData(this.importantSites_)
|
| + .then(
|
| + /**
|
| + * @param {boolean} shouldShowNotice Whether we should show the
|
| + * notice about other forms of browsing history before closing the
|
| + * dialog.
|
| + */
|
| + function(shouldShowNotice) {
|
| + this.clearingInProgress_ = false;
|
| + this.showHistoryDeletionDialog_ = shouldShowNotice;
|
| + if (!shouldShowNotice)
|
| + this.closeDialogs_();
|
| + }.bind(this));
|
| + },
|
| +
|
| + /**
|
| + * Closes the clear browsing data or important site dialog if they are open.
|
| + * @private
|
| + */
|
| + closeDialogs_: function() {
|
| + if (this.$.clearBrowsingDataDialog.open)
|
| + this.$.clearBrowsingDataDialog.close();
|
| + if (this.showImportantSitesDialog_)
|
| + this.$$('#importantSitesDialog').close();
|
| },
|
|
|
| /** @private */
|
| onCancelTap_: function() {
|
| - this.$.dialog.cancel();
|
| + this.$.clearBrowsingDataDialog.cancel();
|
| + },
|
| +
|
| + /**
|
| + * Handles the tap confirm button in important sites.
|
| + * @private
|
| + */
|
| + onImportantSitesConfirmTap_: function() {
|
| + this.clearBrowsingData_();
|
| + },
|
| +
|
| + /** @private */
|
| + onImportantSitesCancelTap_: function() {
|
| + this.$$('#importantSitesDialog').cancel();
|
| },
|
|
|
| /**
|
| @@ -153,6 +252,6 @@ Polymer({
|
| */
|
| onHistoryDeletionDialogClose_: function() {
|
| this.showHistoryDeletionDialog_ = false;
|
| - this.$.dialog.close();
|
| - }
|
| + this.closeDialogs_();
|
| + },
|
| });
|
|
|