Index: chrome/test/data/webui/settings/privacy_page_test.js |
diff --git a/chrome/test/data/webui/settings/privacy_page_test.js b/chrome/test/data/webui/settings/privacy_page_test.js |
index 0488099c61caf12b4cc1e8dd97dfd7fcc128c55a..db8b46aaac983300094d04eafc6c638d9957de2c 100644 |
--- a/chrome/test/data/webui/settings/privacy_page_test.js |
+++ b/chrome/test/data/webui/settings/privacy_page_test.js |
@@ -9,10 +9,8 @@ cr.define('settings_privacy_page', function() { |
* @implements {settings.ClearBrowsingDataBrowserProxy} |
*/ |
function TestClearBrowsingDataBrowserProxy() { |
- settings.TestBrowserProxy.call(this, [ |
- 'initialize', |
- 'clearBrowsingData', |
- ]); |
+ settings.TestBrowserProxy.call( |
+ this, ['initialize', 'clearBrowsingData', 'fetchImportantSites']); |
/** |
* The promise to return from |clearBrowsingData|. |
@@ -21,6 +19,13 @@ cr.define('settings_privacy_page', function() { |
* @private {?Promise} |
*/ |
this.clearBrowsingDataPromise_ = null; |
+ |
+ /** |
+ * Default response for fetchImportantSites. It tells the ui that important |
+ * sites are disabled. |
+ * @private {!ImportantSitesResponse} |
+ */ |
+ this.importantSitesResponse_ = {flagEnabled: false, importantSites: []}; |
} |
TestClearBrowsingDataBrowserProxy.prototype = { |
@@ -32,13 +37,24 @@ cr.define('settings_privacy_page', function() { |
}, |
/** @override */ |
- clearBrowsingData: function() { |
- this.methodCalled('clearBrowsingData'); |
+ clearBrowsingData: function(importantSites) { |
+ this.methodCalled('clearBrowsingData', importantSites); |
cr.webUIListenerCallback('browsing-data-removing', true); |
return this.clearBrowsingDataPromise_ !== null ? |
this.clearBrowsingDataPromise_ : Promise.resolve(); |
}, |
+ /** @param {!ImportantSitesResponse} response */ |
+ setImportantSitesResponse: function(response) { |
+ this.importantSitesResponse_ = response; |
+ }, |
+ |
+ /** @override */ |
+ fetchImportantSites: function() { |
+ this.methodCalled('fetchImportantSites'); |
+ return Promise.resolve(this.importantSitesResponse_); |
+ }, |
+ |
/** @override */ |
initialize: function() { |
this.methodCalled('initialize'); |
@@ -113,13 +129,17 @@ cr.define('settings_privacy_page', function() { |
PolymerTest.clearBody(); |
element = document.createElement('settings-clear-browsing-data-dialog'); |
document.body.appendChild(element); |
- return testBrowserProxy.whenCalled('initialize'); |
+ return testBrowserProxy.whenCalled('initialize').then(function() { |
+ return testBrowserProxy.whenCalled('fetchImportantSites'); |
+ }); |
}); |
teardown(function() { element.remove(); }); |
test('ClearBrowsingDataTap', function() { |
assertTrue(element.$.dialog.open); |
+ assertFalse(element.importantSitesFlagEnabled_); |
+ assertEquals(element.dialogState_, 'clearBrowsingData'); |
var cancelButton = element.$$('.cancel-button'); |
assertTrue(!!cancelButton); |
@@ -136,12 +156,13 @@ cr.define('settings_privacy_page', function() { |
testBrowserProxy.setClearBrowsingDataPromise(promiseResolver.promise); |
MockInteractions.tap(actionButton); |
- return testBrowserProxy.whenCalled('clearBrowsingData').then( |
- function() { |
+ return testBrowserProxy.whenCalled('clearBrowsingData') |
+ .then(function(importantSites) { |
assertTrue(element.$.dialog.open); |
assertTrue(cancelButton.disabled); |
assertTrue(actionButton.disabled); |
assertTrue(spinner.active); |
+ assertTrue(importantSites.length == 0); |
// Simulate signal from browser indicating that clearing has |
// completed. |
@@ -150,12 +171,15 @@ cr.define('settings_privacy_page', function() { |
// Yields to the message loop to allow the callback chain of the |
// Promise that was just resolved to execute before the |
// assertions. |
- }).then(function() { |
+ }) |
+ .then(function() { |
assertFalse(element.$.dialog.open); |
assertFalse(cancelButton.disabled); |
assertFalse(actionButton.disabled); |
assertFalse(spinner.active); |
assertFalse(!!element.$$('#notice')); |
+ // Check that the dialog didn't switch to important sites. |
+ assertEquals(element.dialogState_, 'clearBrowsingData'); |
}); |
}); |
@@ -232,6 +256,70 @@ cr.define('settings_privacy_page', function() { |
}); |
} |
+ suite('ImportantSites', function() { |
+ /** @type {settings.TestClearBrowsingDataBrowserProxy} */ |
+ var testBrowserProxy; |
+ |
+ /** @type {SettingsClearBrowsingDataDialogElement} */ |
+ var element; |
+ |
+ /** @type {Array<ImportantSite>} */ |
+ var importantSites = [ |
+ {registerableDomain: 'google.com', isChecked: true}, |
+ {registerableDomain: 'yahoo.com', isChecked: true} |
+ ] |
+ |
+ setup(function() { |
+ testBrowserProxy = new TestClearBrowsingDataBrowserProxy(); |
+ testBrowserProxy.setImportantSitesResponse({ |
+ flagEnabled: true, |
+ importantSites: importantSites, |
+ }); |
+ settings.ClearBrowsingDataBrowserProxyImpl.instance_ = testBrowserProxy; |
+ PolymerTest.clearBody(); |
+ element = document.createElement('settings-clear-browsing-data-dialog'); |
+ document.body.appendChild(element); |
+ return testBrowserProxy.whenCalled('initialize').then(function() { |
+ return testBrowserProxy.whenCalled('fetchImportantSites'); |
+ }); |
+ }); |
+ |
+ teardown(function() { |
+ element.remove(); |
+ }); |
+ |
+ test('fetchImportantSites', function() { |
+ assertTrue(element.$.dialog.open); |
+ assertEquals(element.dialogState_, 'clearBrowsingData'); |
+ // Select an entry that can have important storage. |
+ element.$.cookiesCheckbox.checked = true; |
+ var actionButton = element.$$('.action-button'); |
+ assertTrue(!!actionButton); |
+ // Clear browsing data. |
+ MockInteractions.tap(actionButton); |
+ assertEquals(element.dialogState_, 'importantSites'); |
+ |
+ Polymer.dom.flush(); |
+ var firstImportantSite = element.$$('important-site-checkbox') |
+ assertTrue(!!firstImportantSite); |
+ assertEquals(firstImportantSite.site.registerableDomain, 'google.com'); |
+ assertTrue(firstImportantSite.site.isChecked) |
+ // Choose to keep storage for google.com. |
+ MockInteractions.tap(firstImportantSite.$.checkbox); |
+ assertFalse(firstImportantSite.site.isChecked) |
+ // Confirm deletion. |
+ MockInteractions.tap(actionButton); |
+ return testBrowserProxy.whenCalled('clearBrowsingData') |
+ .then(function(sites) { |
+ assertEquals(sites.length, 2); |
+ assertEquals(sites[0].registerableDomain, 'google.com'); |
+ assertFalse(sites[0].isChecked); |
+ assertEquals(sites[1].registerableDomain, 'yahoo.com'); |
+ assertTrue(sites[1].isChecked); |
+ }); |
+ }); |
+ }); |
+ |
function registerSafeBrowsingExtendedReportingTests() { |
suite('SafeBrowsingExtendedReporting', function() { |
/** @type {settings.TestPrivacyPageBrowserProxy} */ |