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() {
* a previously-specified load.
* @param {string=} opt_retryGuid
* @return {!Promise} A signal that loading finished, rejected if any error
* occured.
* occurred.
* @private
*/
loadUnpackedHelper_(opt_retryGuid) {
......
......@@ -284,8 +284,12 @@ var CrExtensionsLoadErrorTest = class extends CrExtensionsBrowserTest {
}
};
TEST_F('CrExtensionsLoadErrorTest', 'Interaction', function() {
this.runMochaTest(extension_load_error_tests.TestNames.Interaction);
TEST_F('CrExtensionsLoadErrorTest', 'RetryError', function() {
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() {
......
......@@ -6,7 +6,8 @@
cr.define('extension_load_error_tests', function() {
/** @enum {string} */
var TestNames = {
Interaction: 'Interaction',
RetryError: 'RetryError',
RetrySuccess: 'RetrySuccess',
CodeSection: 'Code Section',
};
......@@ -36,25 +37,32 @@ cr.define('extension_load_error_tests', function() {
document.body.appendChild(loadError);
});
test(assert(TestNames.Interaction), function() {
test(assert(TestNames.RetryError), function() {
var dialogElement = loadError.$$('dialog');
var isDialogVisible = function() {
var rect = dialogElement.getBoundingClientRect();
return rect.width * rect.height > 0;
};
expectFalse(isDialogVisible());
expectFalse(extension_test_util.isElementVisible(dialogElement));
loadError.show();
expectTrue(isDialogVisible());
expectTrue(extension_test_util.isElementVisible(dialogElement));
mockDelegate.setRetryLoadUnpackedError(stubLoadError);
MockInteractions.tap(loadError.$$('.action-button'));
return mockDelegate.whenCalled('retryLoadUnpacked').then(arg => {
expectEquals(fakeGuid, arg);
expectFalse(isDialogVisible());
loadError.show();
expectTrue(extension_test_util.isElementVisible(dialogElement));
MockInteractions.tap(loadError.$$('.cancel-button'));
expectFalse(isDialogVisible());
expectFalse(extension_test_util.isElementVisible(dialogElement));
});
});
test(assert(TestNames.RetrySuccess), function() {
var dialogElement = loadError.$$('dialog');
expectFalse(extension_test_util.isElementVisible(dialogElement));
loadError.show();
expectTrue(extension_test_util.isElementVisible(dialogElement));
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() {
this.itemStateChangedTarget = new FakeChromeEvent();
this.profileStateChangedTarget = new FakeChromeEvent();
/** @private {!chrome.developerPrivate.LoadError} */
this.retryLoadUnpackedError_;
}
/**
* @param {!chrome.developerPrivate.LoadError} error
*/
setRetryLoadUnpackedError(error) {
this.retryLoadUnpackedError_ = error;
}
/** @override */
......@@ -63,7 +73,9 @@ cr.define('extensions', function() {
/** @override */
retryLoadUnpacked(guid) {
this.methodCalled('retryLoadUnpacked', guid);
return Promise.resolve();
return (this.retryLoadUnpackedError_ !== undefined) ?
Promise.reject(this.retryLoadUnpackedError_) :
Promise.resolve();
}
/** @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