Avi Drissman | 4a8573c | 2022-09-09 19:35:54 | [diff] [blame] | 1 | // Copyright 2017 The Chromium Authors |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #ifndef CHROME_BROWSER_DEVTOOLS_PROTOCOL_PAGE_HANDLER_H_ |
| 6 | #define CHROME_BROWSER_DEVTOOLS_PROTOCOL_PAGE_HANDLER_H_ |
| 7 | |
Peter Kvitek | 802b2be | 2021-08-20 20:46:11 | [diff] [blame] | 8 | #include <memory> |
| 9 | |
Avi Drissman | 20f9241 | 2021-08-15 00:09:20 | [diff] [blame] | 10 | #include "base/memory/weak_ptr.h" |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 11 | #include "chrome/browser/devtools/protocol/page.h" |
Wolfgang Beyer | f548933 | 2021-08-23 09:51:41 | [diff] [blame] | 12 | #include "components/webapps/browser/installable/installable_manager.h" |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 13 | #include "content/public/browser/devtools_agent_host.h" |
Wolfgang Beyer | f548933 | 2021-08-23 09:51:41 | [diff] [blame] | 14 | #include "content/public/browser/web_contents_observer.h" |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 15 | #include "printing/buildflags/buildflags.h" |
Wolfgang Beyer | f548933 | 2021-08-23 09:51:41 | [diff] [blame] | 16 | #include "third_party/blink/public/common/manifest/manifest.h" |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 17 | |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 18 | #if BUILDFLAG(ENABLE_PRINTING) |
Peter Kvitek | 9d9c4ef | 2022-07-21 18:48:52 | [diff] [blame] | 19 | #include "components/printing/browser/headless/headless_print_manager.h" |
| 20 | #include "components/printing/browser/print_to_pdf/pdf_print_result.h" |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 21 | #endif // BUILDFLAG(ENABLE_PRINTING) |
| 22 | |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 23 | namespace content { |
Mandy Chen | 29078014 | 2020-01-23 03:21:56 | [diff] [blame] | 24 | struct InstallabilityError; |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 25 | class WebContents; |
Peter Kvitek | 802b2be | 2021-08-20 20:46:11 | [diff] [blame] | 26 | } // namespace content |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 27 | |
Jan Scheffler | 2a81b32 | 2019-12-14 09:09:00 | [diff] [blame] | 28 | class SkBitmap; |
| 29 | |
Avi Drissman | 20f9241 | 2021-08-15 00:09:20 | [diff] [blame] | 30 | class PageHandler : public protocol::Page::Backend { |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 31 | public: |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 32 | PageHandler(scoped_refptr<content::DevToolsAgentHost> agent_host, |
| 33 | content::WebContents* web_contents, |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 34 | protocol::UberDispatcher* dispatcher); |
Peter Boström | 53c6c595 | 2021-09-17 09:41:26 | [diff] [blame] | 35 | |
| 36 | PageHandler(const PageHandler&) = delete; |
| 37 | PageHandler& operator=(const PageHandler&) = delete; |
| 38 | |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 39 | ~PageHandler() override; |
| 40 | |
| 41 | void ToggleAdBlocking(bool enabled); |
| 42 | |
| 43 | // Page::Backend: |
| 44 | protocol::Response Enable() override; |
| 45 | protocol::Response Disable() override; |
| 46 | protocol::Response SetAdBlockingEnabled(bool enabled) override; |
Stephen McGruer | a3d64f2c4 | 2021-11-04 21:22:55 | [diff] [blame] | 47 | protocol::Response SetSPCTransactionMode( |
| 48 | const protocol::String& mode) override; |
Javier Fernández García-Boente | c0e7055 | 2023-02-03 09:41:13 | [diff] [blame] | 49 | protocol::Response SetRPHRegistrationMode( |
| 50 | const protocol::String& mode) override; |
Pavel Feldman | c9465362 | 2019-04-11 03:02:17 | [diff] [blame] | 51 | void GetInstallabilityErrors( |
| 52 | std::unique_ptr<GetInstallabilityErrorsCallback> callback) override; |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 53 | |
Jan Scheffler | 2a81b32 | 2019-12-14 09:09:00 | [diff] [blame] | 54 | void GetManifestIcons( |
| 55 | std::unique_ptr<GetManifestIconsCallback> callback) override; |
| 56 | |
Peter Kvitek | 802b2be | 2021-08-20 20:46:11 | [diff] [blame] | 57 | void PrintToPDF(protocol::Maybe<bool> landscape, |
| 58 | protocol::Maybe<bool> display_header_footer, |
| 59 | protocol::Maybe<bool> print_background, |
| 60 | protocol::Maybe<double> scale, |
| 61 | protocol::Maybe<double> paper_width, |
| 62 | protocol::Maybe<double> paper_height, |
| 63 | protocol::Maybe<double> margin_top, |
| 64 | protocol::Maybe<double> margin_bottom, |
| 65 | protocol::Maybe<double> margin_left, |
| 66 | protocol::Maybe<double> margin_right, |
| 67 | protocol::Maybe<protocol::String> page_ranges, |
Peter Kvitek | 802b2be | 2021-08-20 20:46:11 | [diff] [blame] | 68 | protocol::Maybe<protocol::String> header_template, |
| 69 | protocol::Maybe<protocol::String> footer_template, |
| 70 | protocol::Maybe<bool> prefer_css_page_size, |
| 71 | protocol::Maybe<protocol::String> transfer_mode, |
| 72 | std::unique_ptr<PrintToPDFCallback> callback) override; |
| 73 | |
Wolfgang Beyer | f548933 | 2021-08-23 09:51:41 | [diff] [blame] | 74 | void GetAppId(std::unique_ptr<GetAppIdCallback> callback) override; |
| 75 | |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 76 | private: |
Pavel Feldman | c9465362 | 2019-04-11 03:02:17 | [diff] [blame] | 77 | static void GotInstallabilityErrors( |
| 78 | std::unique_ptr<GetInstallabilityErrorsCallback> callback, |
Mandy Chen | 29078014 | 2020-01-23 03:21:56 | [diff] [blame] | 79 | std::vector<content::InstallabilityError> installability_errors); |
Pavel Feldman | c9465362 | 2019-04-11 03:02:17 | [diff] [blame] | 80 | |
Jan Scheffler | 2a81b32 | 2019-12-14 09:09:00 | [diff] [blame] | 81 | static void GotManifestIcons( |
| 82 | std::unique_ptr<GetManifestIconsCallback> callback, |
| 83 | const SkBitmap* primary_icon); |
| 84 | |
Wolfgang Beyer | f548933 | 2021-08-23 09:51:41 | [diff] [blame] | 85 | void OnDidGetManifest(std::unique_ptr<GetAppIdCallback> callback, |
| 86 | const webapps::InstallableData& data); |
| 87 | |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 88 | #if BUILDFLAG(ENABLE_PRINTING) |
| 89 | void OnPDFCreated(bool return_as_stream, |
| 90 | std::unique_ptr<PrintToPDFCallback> callback, |
Peter Kvitek | a6b36c8 | 2022-07-16 00:07:16 | [diff] [blame] | 91 | print_to_pdf::PdfPrintResult print_result, |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 92 | scoped_refptr<base::RefCountedMemory> data); |
| 93 | #endif |
| 94 | |
| 95 | scoped_refptr<content::DevToolsAgentHost> agent_host_; |
Avi Drissman | 20f9241 | 2021-08-15 00:09:20 | [diff] [blame] | 96 | base::WeakPtr<content::WebContents> web_contents_; |
Peter Kvitek | 802b2be | 2021-08-20 20:46:11 | [diff] [blame] | 97 | |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 98 | bool enabled_ = false; |
Peter Kvitek | 07e0030 | 2021-08-27 21:53:42 | [diff] [blame] | 99 | |
Wolfgang Beyer | f548933 | 2021-08-23 09:51:41 | [diff] [blame] | 100 | base::WeakPtrFactory<PageHandler> weak_ptr_factory_{this}; |
Sadrul Habib Chowdhury | 3377046 | 2017-09-26 20:36:19 | [diff] [blame] | 101 | }; |
| 102 | |
| 103 | #endif // CHROME_BROWSER_DEVTOOLS_PROTOCOL_PAGE_HANDLER_H_ |