| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6d35bfae461d890d9a9d3d529c413c6b3ec82aa7
|
| --- /dev/null
|
| +++ b/headless/lib/browser/headless_print_manager.h
|
| @@ -0,0 +1,79 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef HEADLESS_LIB_BROWSER_HEADLESS_PRINT_MANAGER_H_
|
| +#define HEADLESS_LIB_BROWSER_HEADLESS_PRINT_MANAGER_H_
|
| +
|
| +#include <memory>
|
| +#include <string>
|
| +
|
| +#include "components/printing/browser/print_manager.h"
|
| +#include "content/public/browser/render_frame_host.h"
|
| +#include "content/public/browser/web_contents_user_data.h"
|
| +
|
| +struct PrintHostMsg_DidPrintPage_Params;
|
| +
|
| +namespace printing {
|
| +
|
| +class HeadlessPrintManager
|
| + : public PrintManager,
|
| + public content::WebContentsUserData<HeadlessPrintManager> {
|
| + public:
|
| + enum PrintResult {
|
| + PRINT_SUCCESS,
|
| + PRINTING_FAILED,
|
| + INVALID_PRINTER_SETTINGS,
|
| + INVALID_MEMORY_HANDLE,
|
| + METAFILE_MAP_ERROR,
|
| + UNEXPECTED_VALID_MEMORY_HANDLE,
|
| + METAFILE_INVALID_HEADER,
|
| + METAFILE_GET_DATA_ERROR,
|
| + SIMULTANEOUS_PRINT_ACTIVE,
|
| + };
|
| +
|
| + using GetPDFCallback = base::Callback<void(PrintResult, const std::string&)>;
|
| +
|
| + ~HeadlessPrintManager() override;
|
| +
|
| + static std::string PrintResultToString(PrintResult result);
|
| + static std::unique_ptr<base::DictionaryValue> PDFContentsToDictionaryValue(
|
| + const std::string& data);
|
| +
|
| + // 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 GetPDFCallback& callback);
|
| +
|
| + private:
|
| + explicit HeadlessPrintManager(content::WebContents* web_contents);
|
| + friend class content::WebContentsUserData<HeadlessPrintManager>;
|
| +
|
| + // 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 OnShowInvalidPrinterSettingsError();
|
| + void OnPrintingFailed(int cookie) override;
|
| + void OnDidPrintPage(const PrintHostMsg_DidPrintPage_Params& params);
|
| +
|
| + void Reset();
|
| + void ReleaseJob(PrintResult result);
|
| +
|
| + content::RenderFrameHost* printing_rfh_;
|
| + GetPDFCallback callback_;
|
| + std::string data_;
|
| +
|
| + // Set to true when OnDidPrintPage() should be expecting the first page.
|
| + bool expecting_first_page_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(HeadlessPrintManager);
|
| +};
|
| +
|
| +} // namespace printing
|
| +
|
| +#endif // HEADLESS_LIB_BROWSER_HEADLESS_PRINT_MANAGER_H_
|
|
|