| Index: headless/lib/browser/headless_print_manager.h
|
| diff --git a/headless/lib/browser/headless_print_manager.h b/headless/lib/browser/headless_print_manager.h
|
| index 6d35bfae461d890d9a9d3d529c413c6b3ec82aa7..88acce26d839bb886d37045a81daf81d84795d5d 100644
|
| --- a/headless/lib/browser/headless_print_manager.h
|
| +++ b/headless/lib/browser/headless_print_manager.h
|
| @@ -7,16 +7,59 @@
|
|
|
| #include <memory>
|
| #include <string>
|
| +#include <vector>
|
|
|
| #include "components/printing/browser/print_manager.h"
|
| #include "content/public/browser/render_frame_host.h"
|
| #include "content/public/browser/web_contents_user_data.h"
|
| +#include "printing/print_settings.h"
|
| +#include "printing/printing_export.h"
|
|
|
| struct PrintHostMsg_DidPrintPage_Params;
|
| +struct PrintHostMsg_ScriptedPrint_Params;
|
| +struct PrintMsg_PrintPages_Params;
|
|
|
| namespace printing {
|
|
|
| -class HeadlessPrintManager
|
| +// Exported for tests.
|
| +class PRINTING_EXPORT HeadlessPrintSettings {
|
| + public:
|
| + enum PaperType {
|
| + NA_LETTER,
|
| + NA_LEGAL,
|
| + ISO_A4,
|
| + ISO_A3,
|
| + CUSTOM,
|
| + };
|
| +
|
| + HeadlessPrintSettings();
|
| + HeadlessPrintSettings(const HeadlessPrintSettings& obj);
|
| + ~HeadlessPrintSettings();
|
| +
|
| + gfx::Size PaperSizeInPoints();
|
| + PageMargins MarginInPoints();
|
| +
|
| + PaperType paper_type;
|
| + double paper_width_in_inch;
|
| + double paper_height_in_inch;
|
| +
|
| + MarginType margin_type;
|
| + double margin_top_in_inch;
|
| + double margin_bottom_in_inch;
|
| + double margin_left_in_inch;
|
| + double margin_right_in_inch;
|
| +
|
| + bool landscape;
|
| + bool display_header_footer;
|
| + bool should_print_backgrounds;
|
| + // scale = 1 means 100%.
|
| + double scale;
|
| +
|
| + std::string page_ranges;
|
| +};
|
| +
|
| +// Exported for tests.
|
| +class PRINTING_EXPORT HeadlessPrintManager
|
| : public PrintManager,
|
| public content::WebContentsUserData<HeadlessPrintManager> {
|
| public:
|
| @@ -30,6 +73,14 @@ class HeadlessPrintManager
|
| METAFILE_INVALID_HEADER,
|
| METAFILE_GET_DATA_ERROR,
|
| SIMULTANEOUS_PRINT_ACTIVE,
|
| + PAGE_RANGE_SYNTAX_ERROR,
|
| + PAGE_COUNT_EXCEEDED,
|
| + };
|
| +
|
| + enum PageRangeStatus {
|
| + NO_ERROR,
|
| + SYNTAX_ERROR,
|
| + LIMIT_ERROR,
|
| };
|
|
|
| using GetPDFCallback = base::Callback<void(PrintResult, const std::string&)>;
|
| @@ -39,26 +90,35 @@ class HeadlessPrintManager
|
| static std::string PrintResultToString(PrintResult result);
|
| static std::unique_ptr<base::DictionaryValue> PDFContentsToDictionaryValue(
|
| const std::string& data);
|
| + static PageRangeStatus PageRangeTextToPages(std::string page_range_text,
|
| + int pages_count,
|
| + std::vector<int>* pages);
|
|
|
| // Prints the current document immediately. Since the rendering is
|
| // asynchronous, the actual printing will not be completed on the return of
|
| // this function, and |callback| will always get called when printing
|
| // finishes.
|
| void GetPDFContents(content::RenderFrameHost* rfh,
|
| + const HeadlessPrintSettings& settings,
|
| const GetPDFCallback& callback);
|
|
|
| private:
|
| explicit HeadlessPrintManager(content::WebContents* web_contents);
|
| friend class content::WebContentsUserData<HeadlessPrintManager>;
|
|
|
| + std::unique_ptr<PrintMsg_PrintPages_Params> PrintParams(
|
| + HeadlessPrintSettings settings);
|
| // content::WebContentsObserver implementation.
|
| bool OnMessageReceived(const IPC::Message& message,
|
| content::RenderFrameHost* render_frame_host) override;
|
|
|
| // IPC Message handlers.
|
| void OnGetDefaultPrintSettings(IPC::Message* reply_msg);
|
| + void OnScriptedPrint(const PrintHostMsg_ScriptedPrint_Params& params,
|
| + IPC::Message* reply_msg);
|
| void OnShowInvalidPrinterSettingsError();
|
| void OnPrintingFailed(int cookie) override;
|
| + void OnDidGetPrintedPagesCount(int cookie, int number_pages) override;
|
| void OnDidPrintPage(const PrintHostMsg_DidPrintPage_Params& params);
|
|
|
| void Reset();
|
| @@ -66,6 +126,8 @@ class HeadlessPrintManager
|
|
|
| content::RenderFrameHost* printing_rfh_;
|
| GetPDFCallback callback_;
|
| + std::unique_ptr<PrintMsg_PrintPages_Params> print_params_;
|
| + std::string page_ranges_text_;
|
| std::string data_;
|
|
|
| // Set to true when OnDidPrintPage() should be expecting the first page.
|
|
|