| Index: headless/lib/browser/headless_devtools_manager_delegate.cc
|
| diff --git a/headless/lib/browser/headless_devtools_manager_delegate.cc b/headless/lib/browser/headless_devtools_manager_delegate.cc
|
| index 77c7e54c02fdf90565c9929d7ff8609ed891df1f..989094c1c6c41fc7d8800f7eb082ee4efa10fb2e 100644
|
| --- a/headless/lib/browser/headless_devtools_manager_delegate.cc
|
| +++ b/headless/lib/browser/headless_devtools_manager_delegate.cc
|
| @@ -14,6 +14,7 @@
|
| #include "headless/grit/headless_lib_resources.h"
|
| #include "headless/lib/browser/headless_browser_context_impl.h"
|
| #include "headless/lib/browser/headless_browser_impl.h"
|
| +#include "headless/lib/browser/headless_download_manager_delegate.h"
|
| #include "headless/lib/browser/headless_web_contents_impl.h"
|
| #include "headless/public/devtools/domains/target.h"
|
| #include "printing/units.h"
|
| @@ -46,6 +47,10 @@ std::unique_ptr<base::DictionaryValue> CreateSuccessResponse(
|
| return response;
|
| }
|
|
|
| +std::unique_ptr<base::DictionaryValue> CreateSuccessResponse(int command_id) {
|
| + return CreateSuccessResponse(command_id, nullptr);
|
| +}
|
| +
|
| std::unique_ptr<base::DictionaryValue> CreateErrorResponse(
|
| int command_id,
|
| int error_code,
|
| @@ -169,6 +174,12 @@ HeadlessDevToolsManagerDelegate::HeadlessDevToolsManagerDelegate(
|
| command_map_["Target.disposeBrowserContext"] =
|
| base::Bind(&HeadlessDevToolsManagerDelegate::DisposeBrowserContext,
|
| base::Unretained(this));
|
| + command_map_["Browser.setDownloadBehavior"] =
|
| + base::Bind(&HeadlessDevToolsManagerDelegate::SetDownloadBehavior,
|
| + base::Unretained(this));
|
| + command_map_["Browser.setDownloadDirectory"] =
|
| + base::Bind(&HeadlessDevToolsManagerDelegate::SetDownloadDirectory,
|
| + base::Unretained(this));
|
|
|
| async_command_map_["Page.printToPDF"] = base::Bind(
|
| &HeadlessDevToolsManagerDelegate::PrintToPDF, base::Unretained(this));
|
| @@ -378,4 +389,56 @@ HeadlessDevToolsManagerDelegate::DisposeBrowserContext(
|
| return CreateSuccessResponse(command_id, std::move(result));
|
| }
|
|
|
| +std::unique_ptr<base::DictionaryValue>
|
| +HeadlessDevToolsManagerDelegate::SetDownloadBehavior(
|
| + int command_id,
|
| + const base::DictionaryValue* params) {
|
| + std::string behavior;
|
| + if (!params || !params->GetString("behavior", &behavior))
|
| + return CreateInvalidParamResponse(command_id, "behavior");
|
| +
|
| + HeadlessDownloadManagerDelegate::DownloadBehavior download_behaviour;
|
| + if (behavior == "allow") {
|
| + download_behaviour =
|
| + HeadlessDownloadManagerDelegate::DownloadBehavior::ALLOW;
|
| + } else if (behavior == "deny") {
|
| + download_behaviour =
|
| + HeadlessDownloadManagerDelegate::DownloadBehavior::DENY;
|
| + }
|
| +
|
| + for (HeadlessBrowserContext* hbc : browser_->GetAllBrowserContexts()) {
|
| + HeadlessBrowserContextImpl* hbci =
|
| + static_cast<HeadlessBrowserContextImpl*>(hbc);
|
| +
|
| + HeadlessDownloadManagerDelegate* download_delegate =
|
| + static_cast<HeadlessDownloadManagerDelegate*>(
|
| + hbci->GetDownloadManagerDelegate());
|
| +
|
| + download_delegate->SetDownloadBehavior(download_behaviour);
|
| + }
|
| +
|
| + return CreateSuccessResponse(command_id);
|
| +}
|
| +
|
| +std::unique_ptr<base::DictionaryValue>
|
| +HeadlessDevToolsManagerDelegate::SetDownloadDirectory(
|
| + int command_id,
|
| + const base::DictionaryValue* params) {
|
| + std::string path;
|
| + if (!params || !params->GetString("path", &path))
|
| + return CreateInvalidParamResponse(command_id, "path");
|
| +
|
| + for (HeadlessBrowserContext* hbc : browser_->GetAllBrowserContexts()) {
|
| + HeadlessBrowserContextImpl* hbci =
|
| + static_cast<HeadlessBrowserContextImpl*>(hbc);
|
| +
|
| + HeadlessDownloadManagerDelegate* download_delegate =
|
| + static_cast<HeadlessDownloadManagerDelegate*>(
|
| + hbci->GetDownloadManagerDelegate());
|
| +
|
| + download_delegate->SetDownloadDirectory(base::FilePath(path));
|
| + }
|
| + return CreateSuccessResponse(command_id);
|
| +}
|
| +
|
| } // namespace headless
|
|
|