Commit bf54b51c authored by Dave Schuyler's avatar Dave Schuyler Committed by Commit Bot

[MD extensions] browser test retrying extensions load

This CL adds a test for retrying the load of an extension that had errors.
Both a retry that fails and a retry that succeeds are tested.
This is a follow-up for CL 798123.

Bug: 789751
Cq-Include-Trybots: master.tryserver.chromium.linux:closure_compilation
Change-Id: I161f35127d5c37769d6c5e577c2e7d6689dbb482
Reviewed-on: https://chromium-review.googlesource.com/807448
Commit-Queue: Dave Schuyler <dschuyler@chromium.org>
Reviewed-by: default avatarDemetrios Papadopoulos <dpapad@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521920}
parent 167850c4
...@@ -92,7 +92,7 @@ cr.define('extensions', function() { ...@@ -92,7 +92,7 @@ cr.define('extensions', function() {
* a previously-specified load. * a previously-specified load.
* @param {string=} opt_retryGuid * @param {string=} opt_retryGuid
* @return {!Promise} A signal that loading finished, rejected if any error * @return {!Promise} A signal that loading finished, rejected if any error
* occured. * occurred.
* @private * @private
*/ */
loadUnpackedHelper_(opt_retryGuid) { loadUnpackedHelper_(opt_retryGuid) {
......
...@@ -284,8 +284,12 @@ var CrExtensionsLoadErrorTest = class extends CrExtensionsBrowserTest { ...@@ -284,8 +284,12 @@ var CrExtensionsLoadErrorTest = class extends CrExtensionsBrowserTest {
} }
}; };
TEST_F('CrExtensionsLoadErrorTest', 'Interaction', function() { TEST_F('CrExtensionsLoadErrorTest', 'RetryError', function() {
this.runMochaTest(extension_load_error_tests.TestNames.Interaction); this.runMochaTest(extension_load_error_tests.TestNames.RetryError);
});
TEST_F('CrExtensionsLoadErrorTest', 'RetrySuccess', function() {
this.runMochaTest(extension_load_error_tests.TestNames.RetrySuccess);
}); });
TEST_F('CrExtensionsLoadErrorTest', 'CodeSection', function() { TEST_F('CrExtensionsLoadErrorTest', 'CodeSection', function() {
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
cr.define('extension_load_error_tests', function() { cr.define('extension_load_error_tests', function() {
/** @enum {string} */ /** @enum {string} */
var TestNames = { var TestNames = {
Interaction: 'Interaction', RetryError: 'RetryError',
RetrySuccess: 'RetrySuccess',
CodeSection: 'Code Section', CodeSection: 'Code Section',
}; };
...@@ -36,25 +37,32 @@ cr.define('extension_load_error_tests', function() { ...@@ -36,25 +37,32 @@ cr.define('extension_load_error_tests', function() {
document.body.appendChild(loadError); document.body.appendChild(loadError);
}); });
test(assert(TestNames.Interaction), function() { test(assert(TestNames.RetryError), function() {
var dialogElement = loadError.$$('dialog'); var dialogElement = loadError.$$('dialog');
var isDialogVisible = function() { expectFalse(extension_test_util.isElementVisible(dialogElement));
var rect = dialogElement.getBoundingClientRect();
return rect.width * rect.height > 0;
};
expectFalse(isDialogVisible());
loadError.show(); loadError.show();
expectTrue(isDialogVisible()); expectTrue(extension_test_util.isElementVisible(dialogElement));
mockDelegate.setRetryLoadUnpackedError(stubLoadError);
MockInteractions.tap(loadError.$$('.action-button')); MockInteractions.tap(loadError.$$('.action-button'));
return mockDelegate.whenCalled('retryLoadUnpacked').then(arg => { return mockDelegate.whenCalled('retryLoadUnpacked').then(arg => {
expectEquals(fakeGuid, arg); expectEquals(fakeGuid, arg);
expectFalse(isDialogVisible()); expectTrue(extension_test_util.isElementVisible(dialogElement));
MockInteractions.tap(loadError.$$('.cancel-button'));
expectFalse(extension_test_util.isElementVisible(dialogElement));
});
});
test(assert(TestNames.RetrySuccess), function() {
var dialogElement = loadError.$$('dialog');
expectFalse(extension_test_util.isElementVisible(dialogElement));
loadError.show(); loadError.show();
MockInteractions.tap(loadError.$$('.cancel-button')); expectTrue(extension_test_util.isElementVisible(dialogElement));
expectFalse(isDialogVisible());
MockInteractions.tap(loadError.$$('.action-button'));
return mockDelegate.whenCalled('retryLoadUnpacked').then(arg => {
expectEquals(fakeGuid, arg);
expectFalse(extension_test_util.isElementVisible(dialogElement));
}); });
}); });
......
...@@ -19,6 +19,16 @@ cr.define('extensions', function() { ...@@ -19,6 +19,16 @@ cr.define('extensions', function() {
this.itemStateChangedTarget = new FakeChromeEvent(); this.itemStateChangedTarget = new FakeChromeEvent();
this.profileStateChangedTarget = new FakeChromeEvent(); this.profileStateChangedTarget = new FakeChromeEvent();
/** @private {!chrome.developerPrivate.LoadError} */
this.retryLoadUnpackedError_;
}
/**
* @param {!chrome.developerPrivate.LoadError} error
*/
setRetryLoadUnpackedError(error) {
this.retryLoadUnpackedError_ = error;
} }
/** @override */ /** @override */
...@@ -63,7 +73,9 @@ cr.define('extensions', function() { ...@@ -63,7 +73,9 @@ cr.define('extensions', function() {
/** @override */ /** @override */
retryLoadUnpacked(guid) { retryLoadUnpacked(guid) {
this.methodCalled('retryLoadUnpacked', guid); this.methodCalled('retryLoadUnpacked', guid);
return Promise.resolve(); return (this.retryLoadUnpackedError_ !== undefined) ?
Promise.reject(this.retryLoadUnpackedError_) :
Promise.resolve();
} }
/** @override */ /** @override */
......
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