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

Unified Diff: chrome/browser/resources/print_preview/print_preview.js

Issue 335583004: Added a test that currently is able to print to pdf. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed 'if else' bracket style issues. Created 6 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/browser/resources/print_preview/print_preview.js
diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js
index ac3a0ab789135db2746d6fe3b522398b759867d9..28219eff25a6052589e36c7d1ee6f05fe56875ee 100644
--- a/chrome/browser/resources/print_preview/print_preview.js
+++ b/chrome/browser/resources/print_preview/print_preview.js
@@ -285,7 +285,10 @@ cr.define('print_preview', function() {
this.nativeLayer_,
print_preview.NativeLayer.EventType.PRIVET_PRINT_FAILED,
this.onPrivetPrintFailed_.bind(this));
-
+ this.tracker.add(
+ this.nativeLayer_,
+ print_preview.NativeLayer.EventType.MANIPULATE_SETTINGS_FOR_TEST,
+ this.onManipulateSettingsForTest_.bind(this));
this.tracker.add(
$('system-dialog-link'),
@@ -691,6 +694,7 @@ cr.define('print_preview', function() {
onPreviewGenerationDone_: function() {
this.isPreviewGenerationInProgress_ = false;
this.printHeader_.isPrintButtonEnabled = true;
+ this.nativeLayer_.previewReadyForTest();
this.printIfReady_();
},
@@ -890,6 +894,95 @@ cr.define('print_preview', function() {
},
/**
+ * Called when the print preview settings need to be changed for testing.
+ * @param {Event} event Event object that contains the option that is to
+ * be changed and what to set that option.
+ * @private
+ */
+ onManipulateSettingsForTest_: function(event) {
+ if ('selectSaveAsPdfDestination' in event.settings) {
Dan Beam 2014/06/21 02:44:11 one strategy for splitting this up if ('selectSav
Dan Beam 2014/06/21 02:44:11 another strategy would be to simply make different
Aleksey Shlyapnikov 2014/06/23 19:34:46 I would support keeping native_layer.js involvemen
ivandavid 2014/06/24 18:49:52 I felt that keeping all the code in one function i
+ var destinations = this.destinationStore_.destinations();
+ var didSet = false;
+ for (var i = 0; i < destinations.length; i++) {
+ if (destinations[i].id == print_preview.Destination.GooglePromotedId.
+ SAVE_AS_PDF) {
Aleksey Shlyapnikov 2014/06/20 22:13:49 if (destinations[i].id == print_pre
ivandavid 2014/06/24 18:49:52 Done.
+ this.destinationStore_.selectDestination(destinations[i]);
+ didSet = true;
+ break;
Dan Beam 2014/06/21 02:44:11 return;
ivandavid 2014/06/24 18:49:52 Done.
+ }
+ }
+ if (!didSet)
Dan Beam 2014/06/21 02:44:11 ^ remove didSet
ivandavid 2014/06/24 18:49:52 Done.
+ this.nativeLayer_.previewFailedForTest();
Aleksey Shlyapnikov 2014/06/20 22:13:50 var pdfDestination = null; ... pdfDestination = de
ivandavid 2014/06/24 18:49:52 Done.
+ } else if ('layoutSettings' in event.settings) {
Aleksey Shlyapnikov 2014/06/20 22:13:50 I know that one liners do not require brackets, bu
Dan Beam 2014/06/21 02:27:51 an overwhelming majority of chrome/browser/resourc
ivandavid 2014/06/24 18:49:52 After removing all the unnecessary !element sort o
+ var element = document.querySelector(
+ event.settings.layoutSettings.portrait ?
+ '.layout-settings-portrait-radio' :
+ '.layout-settings-landscape-radio');
Aleksey Shlyapnikov 2014/06/20 22:13:50 4 more spaces indent for these two lines.
+ if (element) {
Dan Beam 2014/06/21 02:44:11 if (!element) { this.nativeLayer_.previewFailedF
+ if (element.clicked)
+ this.nativeLayer_.previewReadyForTest();
+ else
+ element.click();
+ } else
+ this.nativeLayer_.previewFailedForTest();
Aleksey Shlyapnikov 2014/06/20 22:13:49 I think if one part of the statement has braces th
Dan Beam 2014/06/21 02:27:51 yes, should've mentioned this ^
ivandavid 2014/06/24 18:49:52 Done.
+
+ } else if ('pageRange' in event.settings) {
+ var textbox = document.querySelector('.page-settings-custom-input');
+ if (textbox) {
Dan Beam 2014/06/21 02:44:11 if (!textbox) { this.nativeLayer_.previewFailedF
Aleksey Shlyapnikov 2014/06/23 19:34:46 I don't see my extensive comment on the same matte
ivandavid 2014/06/24 18:49:52 Done.
ivandavid 2014/06/24 18:49:52 I think I finally understand what you are saying a
+ if (textbox.value == event.settings.pageRange)
+ this.nativeLayer_.previewReadyForTest();
+ else {
+ // Assuming that the string format is correct for now.
+ // TODO: Will need a way to validate it just so the test doesn't
+ // hang mysteriously if the string isn't correct.
Aleksey Shlyapnikov 2014/06/20 22:13:49 No indent is required.
ivandavid 2014/06/24 18:49:52 I just got rid of the comment.
+ textbox.value = event.settings.pageRange;
+
+ // Triggers the re-rendering of the preview area as
+ // just setting the value isn't sufficient.
+ var radio = document.querySelector('.page-settings-custom-radio');
+ if (radio)
Dan Beam 2014/06/21 02:44:11 if (!radio) { ... usual failure stuff + return ...
+ radio.click();
+ else
+ this.nativeLayer_.previewFailedForTest();
+ }
+ } else
+ this.nativeLayer_.previewFailedForTest();
+ } else if ('headersAndFooters' in event.settings) {
+ var checkbox = document.querySelector(
+ '.header-footer-checkbox');
Aleksey Shlyapnikov 2014/06/20 22:13:49 Fits one line.
ivandavid 2014/06/24 18:49:52 Done.
ivandavid 2014/06/24 18:49:52 Done.
ivandavid 2014/06/24 18:49:52 Done.
+ if (checkbox) {
+ if (event.settings.headersAndFooters == checkbox.checked)
+ this.nativeLayer_.previewReadyForTest();
+ else
+ checkbox.click();
+ } else
+ this.nativeLayer_.previewFailedForTest();
+ } else if ('backgroundColorsAndImages' in event.settings) {
+ var checkbox = document.querySelector('.css-background-checkbox');
+ if (checkbox) {
+ if (event.settings.backgroundColorsAndImages == checkbox.checked)
+ this.nativeLayer_.previewReadyForTest();
+ else
+ checkbox.click();
+ } else
+ this.nativeLayer_.previewFailedForTest();
+ } else if ('margins' in event.settings) {
+ var element = document.querySelector('.margin-settings-select');
+ if (element) {
+ if (event.settings.margins == element.selectedIndex)
+ this.nativeLayer_.previewReadyForTest();
+ else if (event.settings.margins >= 0 &&
+ event.settings.margins < element.length) {
Aleksey Shlyapnikov 2014/06/20 22:13:50 Fix indent.
ivandavid 2014/06/24 18:49:52 Done.
+ element.selectedIndex = event.settings.margins;
+ this.marginSettings_.onSelectChange_();
+ } else
+ this.nativeLayer_.previewFailedForTest();
+ } else
+ this.nativeLayer_.previewFailedForTest();
+ }
Dan Beam 2014/06/21 02:44:11 feel free to return early or break this method int
+ },
+
+ /**
* Called when the open-cloud-print-dialog link is clicked. Opens the Google
* Cloud Print web dialog.
* @private

Powered by Google App Engine
This is Rietveld 408576698