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

Side by Side Diff: chrome/test/data/webui/print_preview.js

Issue 2849733002: Fix Print Preview failure state and add test (Closed)
Patch Set: Created 3 years, 7 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/resources/print_preview/print_preview.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 GEN('#include "base/feature_list.h"'); 5 GEN('#include "base/feature_list.h"');
6 GEN('#include "chrome/common/chrome_features.h"'); 6 GEN('#include "chrome/common/chrome_features.h"');
7 7
8 /** 8 /**
9 * Test fixture for print preview WebUI testing. 9 * Test fixture for print preview WebUI testing.
10 * @constructor 10 * @constructor
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 * @device - The device whose capabilities should be dispatched. 144 * @device - The device whose capabilities should be dispatched.
145 */ 145 */
146 setCapabilities: function(device) { 146 setCapabilities: function(device) {
147 var capsSetEvent = 147 var capsSetEvent =
148 new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); 148 new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET);
149 capsSetEvent.settingsInfo = device; 149 capsSetEvent.settingsInfo = device;
150 this.nativeLayer_.dispatchEvent(capsSetEvent); 150 this.nativeLayer_.dispatchEvent(capsSetEvent);
151 }, 151 },
152 152
153 /** 153 /**
154 * Dispatch the SETTINGS_INVALID event. This call is NOT async and will
155 * happen in the same thread.
156 */
157 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.
158 var invalidSettingsEvent =
159 new Event(print_preview.NativeLayer.EventType.SETTINGS_INVALID);
160 this.nativeLayer_.dispatchEvent(invalidSettingsEvent);
161 },
162
163
164 /**
154 * Even though animation duration and delay is set to zero, it is necessary to 165 * Even though animation duration and delay is set to zero, it is necessary to
155 * wait until the animation has finished. 166 * wait until the animation has finished.
156 */ 167 */
157 waitForAnimationToEnd: function(elementId) { 168 waitForAnimationToEnd: function(elementId) {
158 // add a listener for the animation end event 169 // add a listener for the animation end event
159 document.addEventListener('animationend', function f(e) { 170 document.addEventListener('animationend', function f(e) {
160 if (e.target.id == elementId) { 171 if (e.target.id == elementId) {
161 document.removeEventListener(f, 'animationend'); 172 document.removeEventListener(f, 'animationend');
162 testDone(); 173 testDone();
163 } 174 }
(...skipping 1185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1349 // increments by 1 for each startGetPreview call it makes. It should only 1360 // increments by 1 for each startGetPreview call it makes. It should only
1350 // make one such call during initialization or there will be a race; see 1361 // make one such call during initialization or there will be a race; see
1351 // crbug.com/666595 1362 // crbug.com/666595
1352 expectEquals(printPreview.previewArea_.previewGenerator_.inFlightRequestId_, 1363 expectEquals(printPreview.previewArea_.previewGenerator_.inFlightRequestId_,
1353 -1); 1364 -1);
1354 this.setInitialSettings(); 1365 this.setInitialSettings();
1355 expectEquals(printPreview.previewArea_.previewGenerator_.inFlightRequestId_, 1366 expectEquals(printPreview.previewArea_.previewGenerator_.inFlightRequestId_,
1356 0); 1367 0);
1357 testDone(); 1368 testDone();
1358 }); 1369 });
1370
1371 // Test that invalid settings errors disable the print preview and display
1372 // an error and that the preview dialog can be recovered by selecting a
1373 // new destination.
1374 TEST_F('PrintPreviewWebUITest', 'TestInvalidSettingsError', function() {
1375 // Setup
1376 this.setInitialSettings();
1377 this.setLocalDestinations();
1378 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.
1379
1380 // There will be an error message in the preview area since the plugin is
1381 // not running. However, it should not be the invalid settings error.
1382 var previewAreaEl = $('preview-area');
1383 var customMessageEl =
1384 previewAreaEl.getElementsByClassName('preview-area-custom-message')[0];
1385 expectEquals(false, customMessageEl.hidden);
1386 var expectedMessageStart = 'The selected printer is not available or not ' +
1387 'installed correctly.'
1388 expectEquals(-1, customMessageEl.textContent.search(expectedMessageStart));
1389
1390 // Manually enable the print button to verify it is disabled.
1391 var printHeader = $('print-header');
1392 var printButton = printHeader.querySelector('button.print');
1393 checkElementDisplayed(printButton, true);
1394 printButton.disabled = false;
1395 expectEquals(false, printButton.disabled);
1396
1397 // Report invalid settings error.
1398 this.invalidSettings();
1399
1400 // Should be in an error state, print button disabled, invalid custom error
1401 // message shown.
1402 expectEquals('error', printPreview.uiState_);
1403 expectEquals(false, customMessageEl.hidden);
1404 expectEquals(true,
1405 customMessageEl.textContent.search(expectedMessageStart) > -1);
1406 expectEquals(true, printButton.disabled);
1407
1408 // Select a new destination
1409 var barDestination;
1410 var destinations = printPreview.destinationStore_.destinations();
1411 for (var destination, i = 0; destination = destinations[i]; i++) {
1412 if (destination.id == 'BarDevice') {
1413 barDestination = destination;
1414 break;
1415 }
1416 }
1417 printPreview.destinationStore_.selectDestination(barDestination);
1418
1419 // Should now have recovered. Error message does not change and the button
1420 // will not be re-enabled since the preview never actually loads.
1421 expectEquals('ready', printPreview.uiState_);
1422 testDone();
1423 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/print_preview/print_preview.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698