Chromium Code Reviews| 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 291a7850383b18de42415402db3a4af7e0317659..b532b602b6d6af45754e46cca23589a0eba8453d 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" |
| @@ -51,6 +52,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, |
| @@ -167,6 +172,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)); |
| @@ -376,4 +387,47 @@ 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"); |
| + |
| + for (HeadlessBrowserContext* hbc : browser_->GetAllBrowserContexts()) { |
| + HeadlessBrowserContextImpl* hbci = |
| + static_cast<HeadlessBrowserContextImpl*>(hbc); |
| + |
| + HeadlessDownloadManagerDelegate* download_delegate = |
| + static_cast<HeadlessDownloadManagerDelegate*>( |
| + hbci->GetDownloadManagerDelegate()); |
| + |
| + download_delegate->SetDownloadBehavior(behavior); |
|
Sami
2017/05/17 13:20:40
Do we also need to apply this to contexts that get
Sami
2017/05/19 13:57:26
We could store the setting somewhere in |browser_|
|
| + } |
| + |
| + 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(path); |
|
Sami
2017/05/17 13:20:40
Same question here.
|
| + } |
| + return CreateSuccessResponse(command_id); |
| +} |
| + |
| } // namespace headless |