diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-07 23:48:37 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-06-07 23:48:37 +0000 |
commit | 702484bde5a044d224230f08ea12aeeb7cd069d6 (patch) | |
tree | 351e4cd5286f8eb82454289e027c696903fb03f3 | |
parent | 35f156649669568f85f992745a4528e829b7f921 (diff) | |
download | chromium_src-702484bde5a044d224230f08ea12aeeb7cd069d6.zip chromium_src-702484bde5a044d224230f08ea12aeeb7cd069d6.tar.gz chromium_src-702484bde5a044d224230f08ea12aeeb7cd069d6.tar.bz2 |
Revert 275646 "Generalize printer color model handling, get rid ..."
Speculative revert.
Something breaks "Linux ASan LSan Tests", TaskManagerNewPrintPreview.
> Generalize printer color model handling, get rid of CUPS specific case. Enable supported paper szes reporting for all platforms.
>
> BUG=239879
>
> Review URL: https://codereview.chromium.org/324523002
TBR=alekseys@chromium.org
Review URL: https://codereview.chromium.org/319373004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275711 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/resources/print_preview/data/print_ticket_store.js | 16 | ||||
-rw-r--r-- | chrome/browser/resources/print_preview/data/ticket_items/color.js | 90 | ||||
-rw-r--r-- | chrome/browser/resources/print_preview/native_layer.js | 23 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview/print_preview_handler.cc | 87 | ||||
-rw-r--r-- | chrome/browser/ui/webui/print_preview/print_preview_handler.h | 6 | ||||
-rw-r--r-- | chrome/common/chrome_utility_messages.h | 9 | ||||
-rw-r--r-- | chrome/common/cloud_print/cloud_print_cdd_conversion.cc | 10 | ||||
-rw-r--r-- | chrome/test/data/webui/print_preview.js | 158 | ||||
-rw-r--r-- | printing/backend/print_backend.cc | 5 | ||||
-rw-r--r-- | printing/backend/print_backend.h | 10 | ||||
-rw-r--r-- | printing/backend/print_backend_win.cc | 2 |
11 files changed, 190 insertions, 226 deletions
diff --git a/chrome/browser/resources/print_preview/data/print_ticket_store.js b/chrome/browser/resources/print_preview/data/print_ticket_store.js index a39a8db..0b902f4 100644 --- a/chrome/browser/resources/print_preview/data/print_ticket_store.js +++ b/chrome/browser/resources/print_preview/data/print_ticket_store.js @@ -376,13 +376,19 @@ cr.define('print_preview', function() { cjt.print.collate = {collate: this.collate.getValue()}; } if (this.color.isCapabilityAvailable() && this.color.isUserEdited()) { - var selectedOption = this.color.getSelectedOption(); - if (!selectedOption) { + var colorType = this.color.getValue() ? + 'STANDARD_COLOR' : 'STANDARD_MONOCHROME'; + // Find option with this colorType to read its vendor_id. + var selectedOptions = destination.capabilities.printer.color.option. + filter(function(option) { + return option.type == colorType; + }); + if (selectedOptions.length == 0) { console.error('Could not find correct color option'); } else { - cjt.print.color = {type: selectedOption.type}; - if (selectedOption.hasOwnProperty('vendor_id')) { - cjt.print.color.vendor_id = selectedOption.vendor_id; + cjt.print.color = {type: colorType}; + if (selectedOptions[0].hasOwnProperty('vendor_id')) { + cjt.print.color.vendor_id = selectedOptions[0].vendor_id; } } } diff --git a/chrome/browser/resources/print_preview/data/ticket_items/color.js b/chrome/browser/resources/print_preview/data/ticket_items/color.js index e3d5238..fefe538 100644 --- a/chrome/browser/resources/print_preview/data/ticket_items/color.js +++ b/chrome/browser/resources/print_preview/data/ticket_items/color.js @@ -23,18 +23,6 @@ cr.define('print_preview.ticket_items', function() { destinationStore); }; - /* - * @private {!Array.<string>} List of capability types considered color. - * @const - */ - Color.COLOR_TYPES_ = ['STANDARD_COLOR', 'CUSTOM_COLOR']; - - /* - * @private {!Array.<string>} List of capability types considered monochrome. - * @const - */ - Color.MONOCHROME_TYPES_ = ['STANDARD_MONOCHROME', 'CUSTOM_MONOCHROME']; - Color.prototype = { __proto__: print_preview.ticket_items.TicketItem.prototype, @@ -45,72 +33,56 @@ cr.define('print_preview.ticket_items', function() { /** @override */ isCapabilityAvailable: function() { - var capability = this.capability; - if (!capability) { + var colorCap = this.getColorCapability_(); + if (!colorCap) { return false; } var hasColor = false; var hasMonochrome = false; - capability.option.forEach(function(option) { - hasColor = hasColor || (Color.COLOR_TYPES_.indexOf(option.type) >= 0); - hasMonochrome = hasMonochrome || - (Color.MONOCHROME_TYPES_.indexOf(option.type) >= 0); + colorCap.option.forEach(function(option) { + hasColor = hasColor || option.type == 'STANDARD_COLOR'; + hasMonochrome = hasMonochrome || option.type == 'STANDARD_MONOCHROME'; }); return hasColor && hasMonochrome; }, - /** @return {Object} Color capability of the selected destination. */ - get capability() { - var dest = this.getSelectedDestInternal(); - return (dest && - dest.capabilities && - dest.capabilities.printer && - dest.capabilities.printer.color) || - null; - }, - - /** @return {Object} Color option corresponding to the current value. */ - getSelectedOption: function() { - var capability = this.capability; - var options = capability ? capability.option : null; - if (options) { - var typesToLookFor = - this.getValue() ? Color.COLOR_TYPES_ : Color.MONOCHROME_TYPES_; - for (var i = 0; i < typesToLookFor.length; i++) { - var matchingOptions = options.filter(function(option) { - return option.type == typesToLookFor[i]; - }); - if (matchingOptions.length > 0) { - return matchingOptions[0]; - } - } - } - return null; - }, - /** @override */ getDefaultValueInternal: function() { - var capability = this.capability; - var defaultOption = capability ? - this.getDefaultColorOption_(capability.option) : null; - return defaultOption && - (Color.COLOR_TYPES_.indexOf(defaultOption.type) >= 0); + var colorCap = this.getColorCapability_(); + var defaultOption = this.getDefaultColorOption_(colorCap.option); + return defaultOption && defaultOption.type == 'STANDARD_COLOR'; }, /** @override */ getCapabilityNotAvailableValueInternal: function() { + var colorCap = this.getColorCapability_(); + var defaultOption = colorCap ? + this.getDefaultColorOption_(colorCap.option) : null; + // TODO(rltoscano): Get rid of this check based on destination ID. These // destinations should really update their CDDs to have only one color // option that has type 'STANDARD_COLOR'. var dest = this.getSelectedDestInternal(); - if (dest) { - if (dest.id == print_preview.Destination.GooglePromotedId.DOCS || - dest.id == print_preview.Destination.GooglePromotedId.FEDEX || - dest.type == print_preview.Destination.Type.MOBILE) { - return true; - } + if (!dest) { + return false; } - return this.getDefaultValueInternal(); + return dest.id == print_preview.Destination.GooglePromotedId.DOCS || + dest.id == print_preview.Destination.GooglePromotedId.FEDEX || + dest.type == print_preview.Destination.Type.MOBILE || + defaultOption && defaultOption.type == 'STANDARD_COLOR'; + }, + + /** + * @return {Object} Color capability of the selected destination. + * @private + */ + getColorCapability_: function() { + var dest = this.getSelectedDestInternal(); + return (dest && + dest.capabilities && + dest.capabilities.printer && + dest.capabilities.printer.color) || + null; }, /** diff --git a/chrome/browser/resources/print_preview/native_layer.js b/chrome/browser/resources/print_preview/native_layer.js index 0111ccd..efdd55b 100644 --- a/chrome/browser/resources/print_preview/native_layer.js +++ b/chrome/browser/resources/print_preview/native_layer.js @@ -168,23 +168,6 @@ cr.define('print_preview', function() { }, /** - * @param {!print_preview.Destination} destination Destination to print to. - * @param {!print_preview.ticket_items.Color} color Color ticket item. - * @return {number} Native layer color model. - * @private - */ - getNativeColorModel_: function(destination, color) { - // For non-local printers native color model is ignored anyway. - var option = destination.isLocal ? color.getSelectedOption() : null; - var nativeColorModel = parseInt(option ? option.vendor_id : null); - if (isNaN(nativeColorModel)) { - return color.getValue() ? - NativeLayer.ColorMode_.COLOR : NativeLayer.ColorMode_.GRAY; - } - return nativeColorModel; - }, - - /** * Requests that a preview be generated. The following events may be * dispatched in response: * - PAGE_COUNT_READY @@ -207,7 +190,8 @@ cr.define('print_preview', function() { 'pageRange': printTicketStore.pageRange.getDocumentPageRanges(), 'mediaSize': printTicketStore.mediaSize.getValue(), 'landscape': printTicketStore.landscape.getValue(), - 'color': this.getNativeColorModel_(destination, printTicketStore.color), + 'color': printTicketStore.color.getValue() ? + NativeLayer.ColorMode_.COLOR : NativeLayer.ColorMode_.GRAY, 'headerFooterEnabled': printTicketStore.headerFooter.getValue(), 'marginsType': printTicketStore.marginsType.getValue(), 'isFirstRequest': requestId == 0, @@ -279,7 +263,8 @@ cr.define('print_preview', function() { 'pageRange': printTicketStore.pageRange.getDocumentPageRanges(), 'pageCount': printTicketStore.pageRange.getPageNumberSet().size, 'landscape': printTicketStore.landscape.getValue(), - 'color': this.getNativeColorModel_(destination, printTicketStore.color), + 'color': printTicketStore.color.getValue() ? + NativeLayer.ColorMode_.COLOR : NativeLayer.ColorMode_.GRAY, 'headerFooterEnabled': printTicketStore.headerFooter.getValue(), 'marginsType': printTicketStore.marginsType.getValue(), 'generateDraftData': true, // TODO(rltoscano): What should this be? diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc index ede72df..81b0d40 100644 --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc @@ -22,7 +22,6 @@ #include "base/metrics/histogram.h" #include "base/path_service.h" #include "base/prefs/pref_service.h" -#include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" @@ -191,6 +190,10 @@ const char kLocalPdfPrinterId[] = "Save as PDF"; // Additional printer capability setting keys. const char kPrinterId[] = "printerId"; const char kPrinterCapabilities[] = "capabilities"; +#if defined(USE_CUPS) +const char kCUPSsColorModel[] = "cupsColorModel"; +const char kCUPSsBWModel[] = "cupsBWModel"; +#endif // Get the print job settings dictionary from |args|. The caller takes // ownership of the returned DictionaryValue. Returns NULL on failure. @@ -314,11 +317,7 @@ scoped_ptr<base::DictionaryValue> GetPdfCapabilitiesOnFileThread( orientation.SaveTo(&description); ColorCapability color; - { - Color standard_color(STANDARD_COLOR); - standard_color.vendor_id = base::IntToString(printing::COLOR); - color.AddDefaultOption(standard_color, true); - } + color.AddDefaultOption(Color(STANDARD_COLOR), true); color.SaveTo(&description); static const cloud_devices::printer::MediaType kPdfMedia[] = { @@ -377,6 +376,11 @@ scoped_ptr<base::DictionaryValue> GetLocalPrinterCapabilitiesOnFileThread( return scoped_ptr<base::DictionaryValue>(); } +#if defined(USE_CUPS) + // TODO(alekseys): Use CUSTOM_COLOR/MONOCHROME instead. + description->SetInteger(kCUPSsColorModel, info.color_model); + description->SetInteger(kCUPSsBWModel, info.bw_model); +#endif return description.Pass(); } @@ -469,6 +473,14 @@ printing::StickySettings* GetStickySettings() { } // namespace +#if defined(USE_CUPS) +struct PrintPreviewHandler::CUPSPrinterColorModels { + std::string printer_name; + printing::ColorModel color_model; + printing::ColorModel bw_model; +}; +#endif + class PrintPreviewHandler::AccessTokenService : public OAuth2TokenService::Consumer { public: @@ -868,6 +880,11 @@ void PrintPreviewHandler::HandlePrint(const base::ListValue* args) { // Reset selection only flag for the same reason. settings->SetBoolean(printing::kSettingShouldPrintSelectionOnly, false); +#if defined(USE_CUPS) + if (!open_pdf_in_preview) // We can get here even for cloud printers. + ConvertColorSettingToCUPSColorModel(settings.get()); +#endif + // Set ID to know whether printing is for preview. settings->SetInteger(printing::kPreviewUIID, print_preview_ui->GetIDForPrintPreviewUI()); @@ -1212,6 +1229,11 @@ void PrintPreviewHandler::SendAccessToken(const std::string& type, void PrintPreviewHandler::SendPrinterCapabilities( const base::DictionaryValue* settings_info) { VLOG(1) << "Get printer capabilities finished"; + +#if defined(USE_CUPS) + SaveCUPSColorSetting(settings_info); +#endif + web_ui()->CallJavascriptFunction("updateWithPrinterCapabilities", *settings_info); } @@ -1388,6 +1410,59 @@ bool PrintPreviewHandler::GetPreviewDataAndTitle( return true; } +#if defined(USE_CUPS) +void PrintPreviewHandler::SaveCUPSColorSetting( + const base::DictionaryValue* settings) { + cups_printer_color_models_.reset(new CUPSPrinterColorModels); + settings->GetString(kPrinterId, &cups_printer_color_models_->printer_name); + const base::DictionaryValue* capabilities = NULL; + if (!settings->GetDictionary(kPrinterCapabilities, &capabilities) || + !capabilities) { + NOTREACHED(); + return; + } + capabilities->GetInteger( + kCUPSsColorModel, + reinterpret_cast<int*>(&cups_printer_color_models_->color_model)); + capabilities->GetInteger( + kCUPSsBWModel, + reinterpret_cast<int*>(&cups_printer_color_models_->bw_model)); +} + +void PrintPreviewHandler::ConvertColorSettingToCUPSColorModel( + base::DictionaryValue* settings) const { + if (!cups_printer_color_models_) + return; + + // Sanity check the printer name. + std::string printer_name; + if (!settings->GetString(printing::kSettingDeviceName, &printer_name) || + printer_name != cups_printer_color_models_->printer_name) { + NOTREACHED(); + return; + } + + int color; + if (!settings->GetInteger(printing::kSettingColor, &color)) { + NOTREACHED(); + return; + } + + if (color == printing::GRAY) { + if (cups_printer_color_models_->bw_model != printing::UNKNOWN_COLOR_MODEL) { + settings->SetInteger(printing::kSettingColor, + cups_printer_color_models_->bw_model); + } + return; + } + + printing::ColorModel color_model = cups_printer_color_models_->color_model; + if (color_model != printing::UNKNOWN_COLOR_MODEL) + settings->SetInteger(printing::kSettingColor, color_model); +} + +#endif // defined(USE_CUPS) + #if defined(ENABLE_SERVICE_DISCOVERY) void PrintPreviewHandler::LocalPrinterChanged( bool added, diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.h b/chrome/browser/ui/webui/print_preview/print_preview_handler.h index 2a263fa..70464a8 100644 --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.h +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.h @@ -99,6 +99,7 @@ class PrintPreviewHandler private: class AccessTokenService; + struct CUPSPrinterColorModels; static bool PrivetPrintingEnabled(); @@ -295,6 +296,11 @@ class PrintPreviewHandler // Holds token service to get OAuth2 access tokens. scoped_ptr<AccessTokenService> token_service_; +#if defined(USE_CUPS) + // The color capabilities from the last printer queried. + scoped_ptr<CUPSPrinterColorModels> cups_printer_color_models_; +#endif + #if defined(ENABLE_SERVICE_DISCOVERY) scoped_refptr<local_discovery::ServiceDiscoverySharedClient> service_discovery_client_; diff --git a/chrome/common/chrome_utility_messages.h b/chrome/common/chrome_utility_messages.h index b706ee54..a926690 100644 --- a/chrome/common/chrome_utility_messages.h +++ b/chrome/common/chrome_utility_messages.h @@ -48,13 +48,14 @@ IPC_STRUCT_TRAITS_BEGIN(printing::PrinterCapsAndDefaults) IPC_STRUCT_TRAITS_MEMBER(defaults_mime_type) IPC_STRUCT_TRAITS_END() -IPC_ENUM_TRAITS_MAX_VALUE(printing::ColorModel, printing::PROCESSCOLORMODEL_RGB) -IPC_ENUM_TRAITS_MAX_VALUE(printing::DuplexMode, printing::SHORT_EDGE) +IPC_ENUM_TRAITS(printing::DuplexMode) +#if defined(OS_WIN) IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults::Paper) IPC_STRUCT_TRAITS_MEMBER(name) IPC_STRUCT_TRAITS_MEMBER(size_um) IPC_STRUCT_TRAITS_END() +#endif IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults) IPC_STRUCT_TRAITS_MEMBER(collate_capable) @@ -64,12 +65,16 @@ IPC_STRUCT_TRAITS_BEGIN(printing::PrinterSemanticCapsAndDefaults) IPC_STRUCT_TRAITS_MEMBER(duplex_default) IPC_STRUCT_TRAITS_MEMBER(color_changeable) IPC_STRUCT_TRAITS_MEMBER(color_default) +#if defined(USE_CUPS) IPC_STRUCT_TRAITS_MEMBER(color_model) IPC_STRUCT_TRAITS_MEMBER(bw_model) +#endif +#if defined(OS_WIN) IPC_STRUCT_TRAITS_MEMBER(papers) IPC_STRUCT_TRAITS_MEMBER(default_paper) IPC_STRUCT_TRAITS_MEMBER(dpis) IPC_STRUCT_TRAITS_MEMBER(default_dpi) +#endif IPC_STRUCT_TRAITS_END() IPC_ENUM_TRAITS(printing::PwgRasterTransformType); diff --git a/chrome/common/cloud_print/cloud_print_cdd_conversion.cc b/chrome/common/cloud_print/cloud_print_cdd_conversion.cc index 8c20950..549b27d 100644 --- a/chrome/common/cloud_print/cloud_print_cdd_conversion.cc +++ b/chrome/common/cloud_print/cloud_print_cdd_conversion.cc @@ -4,7 +4,6 @@ #include "chrome/common/cloud_print/cloud_print_cdd_conversion.h" -#include "base/strings/string_number_conversions.h" #include "components/cloud_devices/common/printer_description.h" #include "printing/backend/print_backend.h" @@ -43,14 +42,11 @@ scoped_ptr<base::DictionaryValue> PrinterSemanticCapsAndDefaultsToCdd( ColorCapability color; if (semantic_info.color_default || semantic_info.color_changeable) { - Color standard_color(STANDARD_COLOR); - standard_color.vendor_id = base::IntToString(semantic_info.color_model); - color.AddDefaultOption(standard_color, semantic_info.color_default); + color.AddDefaultOption(Color(STANDARD_COLOR), semantic_info.color_default); } if (!semantic_info.color_default || semantic_info.color_changeable) { - Color standard_monochrome(STANDARD_MONOCHROME); - standard_monochrome.vendor_id = base::IntToString(semantic_info.bw_model); - color.AddDefaultOption(standard_monochrome, !semantic_info.color_default); + color.AddDefaultOption(Color(STANDARD_MONOCHROME), + !semantic_info.color_default); } color.SaveTo(&description); diff --git a/chrome/test/data/webui/print_preview.js b/chrome/test/data/webui/print_preview.js index b0b7221..a7d8bdf 100644 --- a/chrome/test/data/webui/print_preview.js +++ b/chrome/test/data/webui/print_preview.js @@ -87,18 +87,6 @@ PrintPreviewWebUITest.prototype = { }.bind(this)); }, - setUpPreview: function() { - var initialSettingsSetEvent = - new Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); - initialSettingsSetEvent.initialSettings = this.initialSettings_; - this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); - - var localDestsSetEvent = - new Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); - localDestsSetEvent.destinationInfos = this.localDestinationInfos_; - this.nativeLayer_.dispatchEvent(localDestsSetEvent); - }, - /** * Generate a real C++ class; don't typedef. * @type {?string} @@ -596,139 +584,59 @@ TEST_F('PrintPreviewWebUITest', true); }); -// Test that the color settings, one option, standard monochrome. -TEST_F('PrintPreviewWebUITest', 'TestColorSettingsMonochrome', function() { - this.setUpPreview(); - - // Only one option, standard monochrome. - var capsSetEvent = - new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); - capsSetEvent.settingsInfo = getCddTemplate("FooDevice"); - capsSetEvent.settingsInfo.capabilities.printer.color = { - "option": [ - {"is_default": true, "type": "STANDARD_MONOCHROME"} - ] - }; - this.nativeLayer_.dispatchEvent(capsSetEvent); - - checkSectionVisible($('color-settings'), false); -}); +// Test that the color settings are set according to the printer capabilities. +TEST_F('PrintPreviewWebUITest', 'TestColorSettingsTrue', function() { + var initialSettingsSetEvent = + new Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); + initialSettingsSetEvent.initialSettings = this.initialSettings_; + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); -// Test that the color settings, one option, custom monochrome. -TEST_F('PrintPreviewWebUITest', 'TestColorSettingsCustomMonochrome', - function() { - this.setUpPreview(); + var localDestsSetEvent = + new Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; + this.nativeLayer_.dispatchEvent(localDestsSetEvent); - // Only one option, standard monochrome. var capsSetEvent = new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); capsSetEvent.settingsInfo = getCddTemplate("FooDevice"); - capsSetEvent.settingsInfo.capabilities.printer.color = { - "option": [ - {"is_default": true, "type": "CUSTOM_MONOCHROME", "vendor_id": "42"} - ] - }; this.nativeLayer_.dispatchEvent(capsSetEvent); - checkSectionVisible($('color-settings'), false); -}); - -// Test that the color settings, one option, standard color. -TEST_F('PrintPreviewWebUITest', 'TestColorSettingsColor', function() { - this.setUpPreview(); - - var capsSetEvent = - new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); - capsSetEvent.settingsInfo = getCddTemplate("FooDevice"); - capsSetEvent.settingsInfo.capabilities.printer.color = { - "option": [ - {"is_default": true, "type": "STANDARD_COLOR"} - ] - }; - this.nativeLayer_.dispatchEvent(capsSetEvent); + checkSectionVisible($('color-settings'), true); - checkSectionVisible($('color-settings'), false); + var colorOption = $('color-settings').querySelector('.color-option'); + var bwOption = $('color-settings').querySelector('.bw-option'); + expectTrue(colorOption.checked); + expectFalse(bwOption.checked); }); -// Test that the color settings, one option, custom color. -TEST_F('PrintPreviewWebUITest', 'TestColorSettingsCustomColor', function() { - this.setUpPreview(); - - var capsSetEvent = - new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); - capsSetEvent.settingsInfo = getCddTemplate("FooDevice"); - capsSetEvent.settingsInfo.capabilities.printer.color = { - "option": [ - {"is_default": true, "type": "CUSTOM_COLOR", "vendor_id": "42"} - ] - }; - this.nativeLayer_.dispatchEvent(capsSetEvent); - - checkSectionVisible($('color-settings'), false); -}); +//Test that the color settings are set according to the printer capabilities. +TEST_F('PrintPreviewWebUITest', 'TestColorSettingsFalse', function() { + var initialSettingsSetEvent = + new Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); + initialSettingsSetEvent.initialSettings = this.initialSettings_; + this.nativeLayer_.dispatchEvent(initialSettingsSetEvent); -// Test that the color settings, two options, both standard, defaults to color. -TEST_F('PrintPreviewWebUITest', 'TestColorSettingsBothStandardDefaultColor', - function() { - this.setUpPreview(); + var localDestsSetEvent = + new Event(print_preview.NativeLayer.EventType.LOCAL_DESTINATIONS_SET); + localDestsSetEvent.destinationInfos = this.localDestinationInfos_; + this.nativeLayer_.dispatchEvent(localDestsSetEvent); var capsSetEvent = new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); capsSetEvent.settingsInfo = getCddTemplate("FooDevice"); capsSetEvent.settingsInfo.capabilities.printer.color = { "option": [ - {"type": "STANDARD_MONOCHROME"}, - {"is_default": true, "type": "STANDARD_COLOR"} + {"is_default": true, "type": "STANDARD_MONOCHROME"} ] }; this.nativeLayer_.dispatchEvent(capsSetEvent); - checkSectionVisible($('color-settings'), true); - expectTrue($('color-settings').querySelector('.color-option').checked); - expectFalse($('color-settings').querySelector('.bw-option').checked); -}); - -// Test that the color settings, two options, both standard, defaults to -// monochrome. -TEST_F('PrintPreviewWebUITest', - 'TestColorSettingsBothStandardDefaultMonochrome', function() { - this.setUpPreview(); - - var capsSetEvent = - new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); - capsSetEvent.settingsInfo = getCddTemplate("FooDevice"); - capsSetEvent.settingsInfo.capabilities.printer.color = { - "option": [ - {"is_default": true, "type": "STANDARD_MONOCHROME"}, - {"type": "STANDARD_COLOR"} - ] - }; - this.nativeLayer_.dispatchEvent(capsSetEvent); - - checkSectionVisible($('color-settings'), true); - expectFalse($('color-settings').querySelector('.color-option').checked); - expectTrue($('color-settings').querySelector('.bw-option').checked); -}); - -// Test that the color settings, two options, both custom, defaults to color. -TEST_F('PrintPreviewWebUITest', - 'TestColorSettingsBothCustomDefaultColor', function() { - this.setUpPreview(); - - var capsSetEvent = - new Event(print_preview.NativeLayer.EventType.CAPABILITIES_SET); - capsSetEvent.settingsInfo = getCddTemplate("FooDevice"); - capsSetEvent.settingsInfo.capabilities.printer.color = { - "option": [ - {"type": "CUSTOM_MONOCHROME", "vendor_id": "42"}, - {"is_default": true, "type": "CUSTOM_COLOR", "vendor_id": "43"} - ] - }; - this.nativeLayer_.dispatchEvent(capsSetEvent); + checkSectionVisible($('color-settings'), false); - checkSectionVisible($('color-settings'), true); - expectTrue($('color-settings').querySelector('.color-option').checked); - expectFalse($('color-settings').querySelector('.bw-option').checked); + var colorOption = $('color-settings').querySelector('.color-option'); + var bwOption = $('color-settings').querySelector('.bw-option'); + expectFalse(colorOption.checked); + expectTrue(bwOption.checked); }); // Test to verify that duplex settings are set according to the printer @@ -758,8 +666,8 @@ TEST_F('PrintPreviewWebUITest', 'TestDuplexSettingsTrue', function() { expectFalse(duplexCheckbox.checked); }); -// Test to verify that duplex settings are set according to the printer -// capabilities. +//Test to verify that duplex settings are set according to the printer +//capabilities. TEST_F('PrintPreviewWebUITest', 'TestDuplexSettingsFalse', function() { var initialSettingsSetEvent = new Event(print_preview.NativeLayer.EventType.INITIAL_SETTINGS_SET); diff --git a/printing/backend/print_backend.cc b/printing/backend/print_backend.cc index fefa789..d071201 100644 --- a/printing/backend/print_backend.cc +++ b/printing/backend/print_backend.cc @@ -19,9 +19,12 @@ PrinterSemanticCapsAndDefaults::PrinterSemanticCapsAndDefaults() duplex_capable(false), duplex_default(UNKNOWN_DUPLEX_MODE), color_changeable(false), - color_default(false), + color_default(false) +#if defined (OS_POSIX) + , color_model(UNKNOWN_COLOR_MODEL), bw_model(UNKNOWN_COLOR_MODEL) +#endif {} PrinterSemanticCapsAndDefaults::~PrinterSemanticCapsAndDefaults() {} diff --git a/printing/backend/print_backend.h b/printing/backend/print_backend.h index 3b307f1..30e4512 100644 --- a/printing/backend/print_backend.h +++ b/printing/backend/print_backend.h @@ -48,18 +48,28 @@ struct PRINTING_EXPORT PrinterSemanticCapsAndDefaults { bool color_changeable; bool color_default; + + // These are CUPS specific data, which soon be removed altogether. They are + // not defined under USE_CUPS to do not pull CUPS dependency into common code. +#if defined(OS_POSIX) + // TODO(alekseys): Resolve color model within printing context, do not expose + // it outside of the context. ColorModel color_model; ColorModel bw_model; +#endif +#if defined(OS_WIN) struct Paper { std::string name; gfx::Size size_um; }; + std::vector<Paper> papers; Paper default_paper; std::vector<gfx::Size> dpis; gfx::Size default_dpi; +#endif }; struct PRINTING_EXPORT PrinterCapsAndDefaults { diff --git a/printing/backend/print_backend_win.cc b/printing/backend/print_backend_win.cc index 87c69ee..75c562a 100644 --- a/printing/backend/print_backend_win.cc +++ b/printing/backend/print_backend_win.cc @@ -267,8 +267,6 @@ bool PrintBackendWin::GetPrinterSemanticCapsAndDefaults( // http://msdn.microsoft.com/en-us/library/windows/desktop/dd183552(v=vs.85).aspx caps.color_changeable = (DeviceCapabilities(name, port, DC_COLORDEVICE, NULL, NULL) == 1); - caps.color_model = printing::COLOR; - caps.bw_model = printing::GRAY; caps.duplex_capable = (DeviceCapabilities(name, port, DC_DUPLEX, NULL, NULL) == 1); |