Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(329)

Unified Diff: headless/lib/browser/headless_devtools_manager_delegate.cc

Issue 2886693002: initial version of the headless download manager delegate
Patch Set: initial version of the headless download manager delegate Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698