Chromium Code Reviews| 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..2ee153098bc3b485bdbf1c4eb75e965cc1fab4fe 100644 |
| --- a/headless/lib/browser/headless_print_manager.h |
| +++ b/headless/lib/browser/headless_print_manager.h |
| @@ -7,15 +7,39 @@ |
| #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 { |
| +struct HeadlessPrintSettings { |
| + HeadlessPrintSettings() |
| + : landscape(false), |
| + display_header_footer(false), |
| + should_print_backgrounds(false), |
| + scale(1) {} |
| + |
| + gfx::Size paper_size_in_points; |
| + PageMargins margins_in_points; |
| + |
| + bool landscape; |
| + bool display_header_footer; |
| + bool should_print_backgrounds; |
| + // scale = 1 means 100%. |
| + double scale; |
| + |
| + std::string page_ranges; |
| +}; |
| + |
| class HeadlessPrintManager |
| : public PrintManager, |
| public content::WebContentsUserData<HeadlessPrintManager> { |
| @@ -30,6 +54,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 +71,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, |
|
Lei Zhang
2017/05/04 07:29:37
Can you pass in a base::StringPiece instead?
jzfeng
2017/05/05 02:41:34
Done. When shall I use base::StringPiece? I see th
|
| + 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( |
|
Lei Zhang
2017/05/04 07:29:37
Rename to GetPrintParamsFromSettings?
jzfeng
2017/05/05 02:41:34
Done.
|
| + HeadlessPrintSettings settings); |
|
Lei Zhang
2017/05/04 07:29:37
Pass by const ref.
jzfeng
2017/05/05 02:41:34
Done.
|
| // 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 +107,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. |