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 |