| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_PRINT_PREVIEW_UTILS_H_ |
| #define CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_PRINT_PREVIEW_UTILS_H_ |
| |
| #include "base/values.h" |
| #include "chrome/browser/ui/webui/print_preview/printer_handler.h" |
| #include "printing/backend/print_backend.h" |
| |
| namespace content { |
| class WebContents; |
| } |
| |
| namespace printing { |
| |
| // Printer capability setting keys. |
| extern const char kOptionKey[]; |
| extern const char kResetToDefaultKey[]; |
| extern const char kTypeKey[]; |
| extern const char kSelectCapKey[]; |
| extern const char kSelectString[]; |
| extern const char kTypeKey[]; |
| extern const char kVendorCapabilityKey[]; |
| |
| // Converts `printer_list` to a base::Value::List form, runs `callback` with the |
| // converted list as the argument if it is not empty, and runs `done_callback`. |
| void ConvertPrinterListForCallback( |
| PrinterHandler::AddedPrintersCallback callback, |
| PrinterHandler::GetPrintersDoneCallback done_callback, |
| const PrinterList& printer_list); |
| |
| // Returns a sanitized version of `cdd` to prevent possible JS |
| // errors in Print Preview. Will remove null items from lists or options lists |
| // and remove any lists/options that are empty or only contain null values. |
| // Will also check some CDD entries to make sure the input conforms to the |
| // requirements for those entries, although not comprehensively. |
| // On failure, returns an empty dict. |
| base::Value::Dict ValidateCddForPrintPreview(base::Value::Dict cdd); |
| |
| // Returns an updated version of `cdd` and ensures it has a valid value for the |
| // DPI capability. Uses the existing validated value if it exists, or fills in a |
| // reasonable default if the capability is missing. Having a DPI is not required |
| // in the CDD, but it is crucial for performing page setup. |
| // |
| // Assumes `cdd` is the output from ValidateCddForPrintPreview(). |
| base::Value::Dict UpdateCddWithDpiIfMissing(base::Value::Dict cdd); |
| |
| // Returns the list of media size options from the `cdd`, or nullptr if it does |
| // not exist. Returns a pointer into `cdd`. |
| const base::Value::List* GetMediaSizeOptionsFromCdd( |
| const base::Value::Dict& cdd); |
| |
| // Updates `cdd` by removing all continuous feed media size options. |
| void FilterContinuousFeedMediaSizes(base::Value::Dict& cdd); |
| |
| // Starts a local print of `print_data` with print settings dictionary |
| // `job_settings`. Runs `callback` on failure or success. |
| void StartLocalPrint(base::Value::Dict job_settings, |
| scoped_refptr<base::RefCountedMemory> print_data, |
| content::WebContents* preview_web_contents, |
| PrinterHandler::PrintCallback callback); |
| |
| } // namespace printing |
| |
| #endif // CHROME_BROWSER_UI_WEBUI_PRINT_PREVIEW_PRINT_PREVIEW_UTILS_H_ |