Chromium Code Reviews| Index: chrome/test/data/webui/print_preview.js |
| diff --git a/chrome/test/data/webui/print_preview.js b/chrome/test/data/webui/print_preview.js |
| index 2743ce8ed98a97ae60ecaf0cfe1a9bf0ed4786c0..d14f9f222dd8973d2063b58b588f1ca1e2305ab6 100644 |
| --- a/chrome/test/data/webui/print_preview.js |
| +++ b/chrome/test/data/webui/print_preview.js |
| @@ -151,6 +151,17 @@ PrintPreviewWebUITest.prototype = { |
| }, |
| /** |
| + * Dispatch the SETTINGS_INVALID event. This call is NOT async and will |
| + * happen in the same thread. |
| + */ |
| + invalidSettings: function() { |
|
dpapad
2017/04/28 17:13:30
Nit: |invalidSettings| sounds more like a data var
rbpotter
2017/04/29 00:07:11
Done.
|
| + var invalidSettingsEvent = |
| + new Event(print_preview.NativeLayer.EventType.SETTINGS_INVALID); |
| + this.nativeLayer_.dispatchEvent(invalidSettingsEvent); |
| + }, |
| + |
| + |
| + /** |
| * Even though animation duration and delay is set to zero, it is necessary to |
| * wait until the animation has finished. |
| */ |
| @@ -1356,3 +1367,57 @@ TEST_F('PrintPreviewWebUITest', 'TestInitIssuesOneRequest', function() { |
| 0); |
| testDone(); |
| }); |
| + |
| +// Test that invalid settings errors disable the print preview and display |
| +// an error and that the preview dialog can be recovered by selecting a |
| +// new destination. |
| +TEST_F('PrintPreviewWebUITest', 'TestInvalidSettingsError', function() { |
| + // Setup |
| + this.setInitialSettings(); |
| + this.setLocalDestinations(); |
| + expectEquals('ready', printPreview.uiState_); |
|
dpapad
2017/04/28 17:13:30
Is there a way to avoid referring to a private var
rbpotter
2017/04/29 00:07:11
Done.
|
| + |
| + // There will be an error message in the preview area since the plugin is |
| + // not running. However, it should not be the invalid settings error. |
| + var previewAreaEl = $('preview-area'); |
| + var customMessageEl = |
| + previewAreaEl.getElementsByClassName('preview-area-custom-message')[0]; |
| + expectEquals(false, customMessageEl.hidden); |
| + var expectedMessageStart = 'The selected printer is not available or not ' + |
| + 'installed correctly.' |
| + expectEquals(-1, customMessageEl.textContent.search(expectedMessageStart)); |
| + |
| + // Manually enable the print button to verify it is disabled. |
| + var printHeader = $('print-header'); |
| + var printButton = printHeader.querySelector('button.print'); |
| + checkElementDisplayed(printButton, true); |
| + printButton.disabled = false; |
| + expectEquals(false, printButton.disabled); |
| + |
| + // Report invalid settings error. |
| + this.invalidSettings(); |
| + |
| + // Should be in an error state, print button disabled, invalid custom error |
| + // message shown. |
| + expectEquals('error', printPreview.uiState_); |
| + expectEquals(false, customMessageEl.hidden); |
| + expectEquals(true, |
| + customMessageEl.textContent.search(expectedMessageStart) > -1); |
| + expectEquals(true, printButton.disabled); |
| + |
| + // Select a new destination |
| + var barDestination; |
| + var destinations = printPreview.destinationStore_.destinations(); |
| + for (var destination, i = 0; destination = destinations[i]; i++) { |
| + if (destination.id == 'BarDevice') { |
| + barDestination = destination; |
| + break; |
| + } |
| + } |
| + printPreview.destinationStore_.selectDestination(barDestination); |
| + |
| + // Should now have recovered. Error message does not change and the button |
| + // will not be re-enabled since the preview never actually loads. |
| + expectEquals('ready', printPreview.uiState_); |
| + testDone(); |
| +}); |