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

Side by Side 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: Refactored print_preview.js and the browsertest. Made browsertest multiplatform compatible. Created 6 years, 5 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
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 // TODO(rltoscano): Move data/* into print_preview.data namespace 5 // TODO(rltoscano): Move data/* into print_preview.data namespace
6 6
7 var localStrings = new LocalStrings(templateData); 7 var localStrings = new LocalStrings(templateData);
8 8
9 <include src="component.js"/> 9 <include src="component.js"/>
10 10
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 print_preview.NativeLayer.EventType.SETTINGS_INVALID, 278 print_preview.NativeLayer.EventType.SETTINGS_INVALID,
279 this.onSettingsInvalid_.bind(this)); 279 this.onSettingsInvalid_.bind(this));
280 this.tracker.add( 280 this.tracker.add(
281 this.nativeLayer_, 281 this.nativeLayer_,
282 print_preview.NativeLayer.EventType.DISABLE_SCALING, 282 print_preview.NativeLayer.EventType.DISABLE_SCALING,
283 this.onDisableScaling_.bind(this)); 283 this.onDisableScaling_.bind(this));
284 this.tracker.add( 284 this.tracker.add(
285 this.nativeLayer_, 285 this.nativeLayer_,
286 print_preview.NativeLayer.EventType.PRIVET_PRINT_FAILED, 286 print_preview.NativeLayer.EventType.PRIVET_PRINT_FAILED,
287 this.onPrivetPrintFailed_.bind(this)); 287 this.onPrivetPrintFailed_.bind(this));
288 288 this.tracker.add(
289 this.nativeLayer_,
290 print_preview.NativeLayer.EventType.MANIPULATE_SETTINGS_FOR_TEST,
291 this.onManipulateSettingsForTest_.bind(this));
289 292
290 this.tracker.add( 293 this.tracker.add(
291 $('system-dialog-link'), 294 $('system-dialog-link'),
292 'click', 295 'click',
293 this.openSystemPrintDialog_.bind(this)); 296 this.openSystemPrintDialog_.bind(this));
294 this.tracker.add( 297 this.tracker.add(
295 $('cloud-print-dialog-link'), 298 $('cloud-print-dialog-link'),
296 'click', 299 'click',
297 this.onCloudPrintDialogLinkClick_.bind(this)); 300 this.onCloudPrintDialogLinkClick_.bind(this));
298 this.tracker.add( 301 this.tracker.add(
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 this.isPreviewGenerationInProgress_ = true; 687 this.isPreviewGenerationInProgress_ = true;
685 }, 688 },
686 689
687 /** 690 /**
688 * Called when the preview area's preview generation is complete. 691 * Called when the preview area's preview generation is complete.
689 * @private 692 * @private
690 */ 693 */
691 onPreviewGenerationDone_: function() { 694 onPreviewGenerationDone_: function() {
692 this.isPreviewGenerationInProgress_ = false; 695 this.isPreviewGenerationInProgress_ = false;
693 this.printHeader_.isPrintButtonEnabled = true; 696 this.printHeader_.isPrintButtonEnabled = true;
697 this.nativeLayer_.previewReadyForTest();
694 this.printIfReady_(); 698 this.printIfReady_();
695 }, 699 },
696 700
697 /** 701 /**
698 * Called when the preview area's preview failed to load. 702 * Called when the preview area's preview failed to load.
699 * @private 703 * @private
700 */ 704 */
701 onPreviewGenerationFail_: function() { 705 onPreviewGenerationFail_: function() {
702 this.isPreviewGenerationInProgress_ = false; 706 this.isPreviewGenerationInProgress_ = false;
703 this.printHeader_.isPrintButtonEnabled = false; 707 this.printHeader_.isPrintButtonEnabled = false;
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
883 * @private 887 * @private
884 */ 888 */
885 onPrivetPrintFailed_: function(event) { 889 onPrivetPrintFailed_: function(event) {
886 console.error('Privet printing failed with error code ' + 890 console.error('Privet printing failed with error code ' +
887 event.httpError); 891 event.httpError);
888 this.printHeader_.setErrorMessage( 892 this.printHeader_.setErrorMessage(
889 localStrings.getString('couldNotPrint')); 893 localStrings.getString('couldNotPrint'));
890 }, 894 },
891 895
892 /** 896 /**
897 * Called when the print preview settings need to be changed for testing.
898 * @param {Event} event Event object that contains the option that is to
899 * be changed and what to set that option.
900 * @private
901 */
902 onManipulateSettingsForTest_: function(event) {
903 if ('selectSaveAsPdfDestination' in event.settings) {
904 this.saveAsPdfForTest_(); // No parameters needed.
ivandavid 2014/07/03 03:12:03 I split up this function and not native_layer.onMa
905 } else if ('layoutSettings' in event.settings) {
906 this.setLayoutSettingsForTest_(event.settings.layoutSettings.portrait);
907 } else if ('pageRange' in event.settings) {
908 this.setPageRangeForTest_(event.settings.pageRange);
909 } else if ('headersAndFooters' in event.settings) {
910 this.setHeadersAndFootersForTest_(event.settings.headersAndFooters);
911 } else if ('backgroundColorsAndImages' in event.settings) {
912 this.setBackgroundColorsAndImagesForTest_(
913 event.settings.backgroundColorsAndImages);
914 } else if ('margins' in event.settings) {
915 this.setMarginsForTest_(event.settings.margins);
916 }
917 },
918
919 /**
920 * Called by onManipulateSettingsForTest_(). Sets the print destination
921 * as a pdf.
922 * @private
923 */
924 saveAsPdfForTest_: function() {
925 if (print_preview.Destination.GooglePromotedId.SAVE_AS_PDF ==
926 this.destinationStore_.selectedDestination.id) {
927 this.nativeLayer_.previewReadyForTest();
928 return;
929 }
930
931 var destinations = this.destinationStore_.destinations();
932 var pdfDestination = null;
933 for (var i = 0; i < destinations.length; i++) {
934 if (destinations[i].id ==
935 print_preview.Destination.GooglePromotedId.SAVE_AS_PDF) {
936 pdfDestination = destinations[i];
937 break;
938 }
939 }
940
941 if (pdfDestination)
942 this.destinationStore_.selectDestination(pdfDestination);
943 else
944 this.nativeLayer_.previewFailedForTest();
Dan Beam 2014/07/07 23:08:12 indent off
ivandavid 2014/07/08 01:07:42 Done.
945 },
946
947 /**
948 * Called by onManipulateSettingsForTest_(). Sets the layout settings to
949 * either portrait or landscape.
950 * @param {boolean} portrait If true then the portrait settings is to be
Dan Beam 2014/07/07 23:08:12 nit: @param {boolean} portrait Whether to use port
ivandavid 2014/07/08 01:07:42 Done.
951 * set, otherwise, the landscape settings is set.
952 * @private
953 */
954 setLayoutSettingsForTest_: function(portrait) {
955 var element = document.querySelector(
956 portrait ?
957 '.layout-settings-portrait-radio' :
958 '.layout-settings-landscape-radio');
959 if (element.checked)
960 this.nativeLayer_.previewReadyForTest();
961 else
962 element.click();
Dan Beam 2014/07/07 23:08:12 indent off
ivandavid 2014/07/08 01:07:42 Done.
963 },
964
965 /**
966 * Called by onManipulateSettingsForTest_(). Sets the page range for
967 * for the print preview settings.
968 * @param {string} pageRange Sets the page range to the desired value(s).
Dan Beam 2014/07/07 23:08:12 nit * @param {string} pageRange A comma separated
ivandavid 2014/07/08 01:07:42 Done.
969 *
970 * |pageRange| is a comma separated page range.
971 * Example: "1-5,9" will print pages 1 through 5 and page 9.
972 * The pages specified must be less than or equal to the maximum
973 * page number.
974 * @private
975 */
976 setPageRangeForTest_: function(pageRange) {
977 var textbox = document.querySelector('.page-settings-custom-input');
978 if (textbox.value == pageRange) {
979 this.nativeLayer_.previewReadyForTest();
980 } else {
981 textbox.value = pageRange;
982 document.querySelector('.page-settings-custom-radio').click();
Dan Beam 2014/07/07 23:08:12 can you just do .click() event when the value's th
ivandavid 2014/07/08 01:07:42 No, it doesn't cause the preview area to be genera
Dan Beam 2014/07/08 04:25:13 ok
983 }
984 },
985
986 /**
987 * Called by onManipulateSettings_(). Checks or unchecks the headers and
988 * footers option on print preview.
989 * @param {boolean} headersAndFooters If true, the checkbox should be
Dan Beam 2014/07/07 23:08:12 Whether the "Headers and footer" checkbox should b
ivandavid 2014/07/08 01:07:42 Done.
990 * checked. Otherwise it should be unchecked.
991 * @private
992 */
993 setHeadersAndFootersForTest_: function(headersAndFooters) {
994 var checkbox = document.querySelector('.header-footer-checkbox');
995 if (headersAndFooters == checkbox.checked)
996 this.nativeLayer_.previewReadyForTest();
997 else
998 checkbox.click();
999 },
1000
1001 /**
1002 * Called by onManipulateSettings_(). Checks or unchecks the background
1003 * colors and images option on print preview.
1004 * @param {boolean} backgroundColorsAndImages If true, the checkbox should
1005 * be checked. Otherwise it should be unchecked.
1006 * @private
1007 */
1008 setBackgroundColorsAndImagesForTest_: function(backgroundColorsAndImages) {
1009 var checkbox = document.querySelector('.css-background-checkbox');
1010 if (backgroundColorsAndImages == checkbox.checked)
1011 this.nativeLayer_.previewReadyForTest();
1012 else
1013 checkbox.click();
1014 },
1015
1016 /**
1017 * Called by onManipulateSettings_(). Sets the margin settings
1018 * that are desired. Custom margin settings aren't currently supported.
1019 * @param {number} margins The desired margins combobox index. Must be
1020 * a valid index or else the test fails.
Dan Beam 2014/07/07 23:08:12 @private
ivandavid 2014/07/08 01:07:42 Done.
1021 */
1022 setMarginsForTest_: function(margins) {
1023 var combobox = document.querySelector('.margin-settings-select');
1024 if (margins == combobox.selectedIndex) {
1025 this.nativeLayer_.previewReadyForTest();
1026 } else if (margins >= 0 && margins < combobox.length) {
1027 combobox.selectedIndex = margins;
1028 this.marginSettings_.onSelectChange_();
1029 } else {
1030 this.nativeLayer_.previewFailedForTest();
1031 }
1032 },
1033
1034 /**
ivandavid 2014/07/08 01:07:42 Sorry for the double indents. I was writing python
893 * Called when the open-cloud-print-dialog link is clicked. Opens the Google 1035 * Called when the open-cloud-print-dialog link is clicked. Opens the Google
894 * Cloud Print web dialog. 1036 * Cloud Print web dialog.
895 * @private 1037 * @private
896 */ 1038 */
897 onCloudPrintDialogLinkClick_: function() { 1039 onCloudPrintDialogLinkClick_: function() {
898 assert(this.uiState_ == PrintPreview.UiState_.READY, 1040 assert(this.uiState_ == PrintPreview.UiState_.READY,
899 'Opening Google Cloud Print dialog when not in ready state: ' + 1041 'Opening Google Cloud Print dialog when not in ready state: ' +
900 this.uiState_); 1042 this.uiState_);
901 setIsVisible($('cloud-print-dialog-throbber'), true); 1043 setIsVisible($('cloud-print-dialog-throbber'), true);
902 this.setIsEnabled_(false); 1044 this.setIsEnabled_(false);
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 <include src="search/recent_destination_list.js"/> 1176 <include src="search/recent_destination_list.js"/>
1035 <include src="search/destination_list_item.js"/> 1177 <include src="search/destination_list_item.js"/>
1036 <include src="search/destination_search.js"/> 1178 <include src="search/destination_search.js"/>
1037 <include src="search/search_box.js"/> 1179 <include src="search/search_box.js"/>
1038 <include src="search/fedex_tos.js"/> 1180 <include src="search/fedex_tos.js"/>
1039 1181
1040 window.addEventListener('DOMContentLoaded', function() { 1182 window.addEventListener('DOMContentLoaded', function() {
1041 printPreview = new print_preview.PrintPreview(); 1183 printPreview = new print_preview.PrintPreview();
1042 printPreview.initialize(); 1184 printPreview.initialize();
1043 }); 1185 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698