Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(609)

Unified Diff: chrome/test/data/webui/print_preview/print_preview_tests.js

Issue 2962983002: Print Preview: change getPreview to cr.sendWithPromise (Closed)
Patch Set: Fix check Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/webui/print_preview/print_preview_tests.js
diff --git a/chrome/test/data/webui/print_preview/print_preview_tests.js b/chrome/test/data/webui/print_preview/print_preview_tests.js
index e06412d99c6407c2405f337f36cab1141d0bc5a4..e874df6fd7e62fdf2e848e68b48262973ed18f50 100644
--- a/chrome/test/data/webui/print_preview/print_preview_tests.js
+++ b/chrome/test/data/webui/print_preview/print_preview_tests.js
@@ -274,7 +274,7 @@ cr.define('print_preview_test', function() {
print_preview.PreviewArea.prototype.checkPluginCompatibility_ =
function() {
- return false;
+ return true;
};
});
@@ -302,6 +302,7 @@ cr.define('print_preview_test', function() {
print_preview.NativeLayer.setInstance(nativeLayer);
printPreview = new print_preview.PrintPreview();
previewArea = printPreview.getPreviewArea();
+ previewArea.setIsBrowserTest(true);
});
// Test some basic assumptions about the print preview WebUI.
@@ -1079,13 +1080,14 @@ cr.define('print_preview_test', function() {
// Test that changing the selected printer updates the preview.
test('PrinterChangeUpdatesPreview', function() {
- return setupSettingsAndDestinationsWithCapabilities().then(function() {
- var previewGenerator = mock(print_preview.PreviewGenerator);
- previewArea.previewGenerator_ = previewGenerator.proxy();
-
- // The number of settings that can change due to a change in the
- // destination that will therefore dispatch ticket item change events.
- previewGenerator.expects(exactly(9)).requestPreview();
+ return Promise.all([
+ setupSettingsAndDestinationsWithCapabilities(),
+ nativeLayer.whenCalled('getPreview'),
+ ]).then(function(args) {
+ expectEquals(0, args[1].requestId);
+ expectEquals('FooDevice', args[1].destination.id);
+ nativeLayer.resetResolver('getPrinterCapabilities');
+ nativeLayer.resetResolver('getPreview');
// Setup capabilities for BarDevice.
var device = getCddTemplate('BarDevice');
@@ -1095,7 +1097,6 @@ cr.define('print_preview_test', function() {
]
};
nativeLayer.setLocalDestinationCapabilities(device);
-
// Select BarDevice
var barDestination =
printPreview.destinationStore_.destinations().find(
@@ -1103,14 +1104,21 @@ cr.define('print_preview_test', function() {
return d.id == 'BarDevice';
});
printPreview.destinationStore_.selectDestination(barDestination);
- return nativeLayer.whenCalled('getPrinterCapabilities', 'BarDevice');
- }).then(function(){
- return whenAnimationDone('more-settings');
+ return Promise.all([
+ nativeLayer.whenCalled('getPrinterCapabilities'),
+ nativeLayer.whenCalled('getPreview'),
+ ]);
+ }).then(function(args) {
+ expectEquals(1, args[1].requestId);
+ expectEquals('BarDevice', args[1].destination.id);
});
});
// Test that error message is displayed when plugin doesn't exist.
test('NoPDFPluginErrorMessage', function() {
+ previewArea.checkPluginCompatibility_ = function() {
+ return false;
+ }
nativeLayer.setLocalDestinationCapabilities(getCddTemplate('FooDevice'));
setInitialSettings();
return nativeLayer.whenCalled('getInitialSettings').then(function() {
@@ -1247,22 +1255,21 @@ cr.define('print_preview_test', function() {
nativeLayer.setLocalDestinationCapabilities(getCddTemplate('ID2'))
nativeLayer.setLocalDestinationCapabilities(getCddTemplate('ID3'));
- // Use a real preview generator.
- previewArea.previewGenerator_ =
- new print_preview.PreviewGenerator(printPreview.destinationStore_,
- printPreview.printTicketStore_, nativeLayer,
- printPreview.documentInfo_);
-
- // Preview generator starts out with inFlightRequestId_ == -1. The id
- // increments by 1 for each startGetPreview call it makes. It should only
- // make one such call during initialization or there will be a race; see
- // crbug.com/666595
- expectEquals(-1, previewArea.previewGenerator_.inFlightRequestId_);
+ // For crbug.com/666595. If multiple destinations are fetched there may
+ // be multiple preview requests. This verifies the first fetch is for
+ // ID1, which ensures no other destinations are fetched earlier. The last
+ // destination retrieved before timeout will end up in the preview
+ // request. Ensure this is also ID1.
setInitialSettings();
- return nativeLayer.whenCalled('getInitialSettings').then(function() {
- return nativeLayer.whenCalled('getPrinterCapabilities', 'ID1');
- }).then(function() {
- expectEquals(0, previewArea.previewGenerator_.inFlightRequestId_);
+ var initialSettingsSet = nativeLayer.whenCalled('getInitialSettings');
+ return initialSettingsSet.then(function() {
+ return nativeLayer.whenCalled('getPrinterCapabilities');
+ }).then(function(id) {
+ expectEquals('ID1', id);
+ return nativeLayer.whenCalled('getPreview');
+ }).then(function(previewArgs) {
+ expectEquals(0, previewArgs.requestId);
+ expectEquals('ID1', previewArgs.destination.id);
});
});
@@ -1270,14 +1277,18 @@ cr.define('print_preview_test', function() {
// an error and that the preview dialog can be recovered by selecting a
// new destination.
test('InvalidSettingsError', function() {
- return setupSettingsAndDestinationsWithCapabilities().then(function() {
- // Manually enable the print header. This is needed since there is no
- // plugin during test, so it will be set as disabled normally.
- printPreview.printHeader_.isEnabled = true;
+ var barDevice = getCddTemplate('BarDevice');
+ nativeLayer.setLocalDestinationCapabilities(barDevice);
- // 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.
+ // FooDevice is the default printer, so will be selected for the initial
+ // preview request.
+ nativeLayer.setInvalidPrinterId('FooDevice');
+ return Promise.all([
+ setupSettingsAndDestinationsWithCapabilities(),
+ nativeLayer.whenCalled('getPreview'),
+ ]).then(function() {
+ // Print preview should have failed with invalid settings, since
+ // FooDevice was set as an invalid printer.
var previewAreaEl = $('preview-area');
var customMessageEl =
previewAreaEl.
@@ -1285,100 +1296,92 @@ cr.define('print_preview_test', function() {
expectFalse(customMessageEl.hidden);
var expectedMessageStart = 'The selected printer is not available or '
+ 'not installed correctly.'
- expectFalse(customMessageEl.textContent.includes(
+ expectTrue(customMessageEl.textContent.includes(
expectedMessageStart));
- // Verify that the print button is enabled.
- var printHeader = $('print-header');
- var printButton = printHeader.querySelector('button.print');
+ // Verify that the print button is disabled
+ var printButton = $('print-header').querySelector('button.print');
checkElementDisplayed(printButton, true);
- expectFalse(printButton.disabled);
-
- // Report invalid settings error.
- var invalidSettingsEvent =
- new Event(print_preview.NativeLayer.EventType.SETTINGS_INVALID);
- nativeLayer.getEventTarget().dispatchEvent(invalidSettingsEvent);
-
- // Should be in an error state, print button disabled, invalid custom
- // error message shown.
- expectFalse(customMessageEl.hidden);
- expectTrue(customMessageEl.textContent.includes(
- expectedMessageStart));
expectTrue(printButton.disabled);
+ // Reset
+ nativeLayer.resetResolver('getPrinterCapabilities');
+ nativeLayer.resetResolver('getPreview');
+
// Select a new destination
var barDestination =
printPreview.destinationStore_.destinations().find(
function(d) {
return d.id == 'BarDevice';
});
-
- var barDevice = getCddTemplate('BarDevice');
- nativeLayer.setLocalDestinationCapabilities(barDevice);
printPreview.destinationStore_.selectDestination(barDestination);
-
- return nativeLayer.whenCalled('getPrinterCapabilities', 'BarDevice')
- .then(function() {
- // Dispatch event indicating new preview has loaded.
- var previewDoneEvent = new Event(
- print_preview.PreviewArea.EventType.PREVIEW_GENERATION_DONE);
- previewArea.dispatchEvent(previewDoneEvent);
-
- // Has active print button and successfully 'prints', indicating
- // recovery from error state.
- expectFalse(printButton.disabled);
- printButton.click();
- // This should result in a call to print.
- return nativeLayer.whenCalled('print').then(
- /**
- * @param {{destination: !print_preview.Destination,
- * printTicketStore: !print_preview.PrintTicketStore,
- * cloudPrintInterface: print_preview
- * .CloudPrintInterface,
- * documentInfo: print_preview.DocumentInfo}} args
- * The arguments that print() was called with.
- */
- function(args) {
- // Sanity check some printing argument values.
- var printTicketStore = args.printTicketStore;
- expectEquals(barDevice.printerId, args.destination.id);
- expectEquals(
- getDefaultOrientation(barDevice) == 'LANDSCAPE',
- printTicketStore.landscape.getValue());
- expectEquals(1, printTicketStore.copies.getValueAsNumber());
- var mediaDefault = getDefaultMediaSize(barDevice);
- expectEquals(
- mediaDefault.width_microns,
- printTicketStore.mediaSize.getValue().width_microns);
- expectEquals(
- mediaDefault.height_microns,
- printTicketStore.mediaSize.getValue().height_microns);
- });
- });
- });
+ return Promise.all([
+ nativeLayer.whenCalled('getPrinterCapabilities'),
+ nativeLayer.whenCalled('getPreview'),
+ ]);
+ }).then(function() {
+ // Has active print button and successfully 'prints', indicating
+ // recovery from error state.
+ var printButton = $('print-header').querySelector('button.print');
+ expectFalse(printButton.disabled);
+ printButton.click();
+ // This should result in a call to print.
+ return nativeLayer.whenCalled('print');
+ }).then(
+ /**
+ * @param {{destination: !print_preview.Destination,
+ * printTicketStore: !print_preview.PrintTicketStore,
+ * cloudPrintInterface: print_preview
+ * .CloudPrintInterface,
+ * documentInfo: print_preview.DocumentInfo}} args
+ * The arguments that print() was called with.
+ */
+ function(args) {
+ // Sanity check some printing argument values.
+ var printTicketStore = args.printTicketStore;
+ expectEquals(barDevice.printerId, args.destination.id);
+ expectEquals(
+ getDefaultOrientation(barDevice) == 'LANDSCAPE',
+ printTicketStore.landscape.getValue());
+ expectEquals(1, printTicketStore.copies.getValueAsNumber());
+ var mediaDefault = getDefaultMediaSize(barDevice);
+ expectEquals(
+ mediaDefault.width_microns,
+ printTicketStore.mediaSize.getValue().width_microns);
+ expectEquals(
+ mediaDefault.height_microns,
+ printTicketStore.mediaSize.getValue().height_microns);
+ });
});
// Test the preview generator to make sure the generate draft parameter is
// set correctly. It should be false if the only change is the page range.
test('GenerateDraft', function() {
- // Use a real preview generator.
- previewArea.previewGenerator_ =
- new print_preview.PreviewGenerator(printPreview.destinationStore_,
- printPreview.printTicketStore_, nativeLayer,
- printPreview.documentInfo_);
- return setupSettingsAndDestinationsWithCapabilities().then(function() {
+ return Promise.all([
+ setupSettingsAndDestinationsWithCapabilities(),
+ nativeLayer.whenCalled('getPreview'),
+ ]).then(function(args) {
// The first request should generate draft because there was no
// previous print preview draft.
- expectTrue(nativeLayer.generateDraft());
+ expectTrue(args[1].generateDraft);
+ expectEquals(0, args[1].requestId);
+ nativeLayer.resetResolver('getPreview');
// Change the page range - no new draft needed.
printPreview.printTicketStore_.pageRange.updateValue('2');
- expectFalse(nativeLayer.generateDraft());
+ return nativeLayer.whenCalled('getPreview');
+ }).then(function(args) {
+ expectFalse(args.generateDraft);
+ expectEquals(1, args.requestId);
+ nativeLayer.resetResolver('getPreview');
// Change the margin type - need to regenerate again.
printPreview.printTicketStore_.marginsType.updateValue(
print_preview.ticket_items.MarginsTypeValue.NO_MARGINS);
- expectTrue(nativeLayer.generateDraft());
+ return nativeLayer.whenCalled('getPreview');
+ }).then(function(args) {
+ expectTrue(args.generateDraft);
+ expectEquals(2, args.requestId);
});
});
« no previous file with comments | « chrome/test/data/webui/print_preview/native_layer_stub.js ('k') | components/printing/renderer/print_web_view_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698