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

Side by Side 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, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "headless/lib/browser/headless_devtools_manager_delegate.h" 5 #include "headless/lib/browser/headless_devtools_manager_delegate.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
11 #include "content/public/browser/devtools_agent_host.h" 11 #include "content/public/browser/devtools_agent_host.h"
12 #include "content/public/browser/devtools_frontend_host.h" 12 #include "content/public/browser/devtools_frontend_host.h"
13 #include "content/public/browser/render_widget_host_view.h" 13 #include "content/public/browser/render_widget_host_view.h"
14 #include "content/public/browser/web_contents.h" 14 #include "content/public/browser/web_contents.h"
15 #include "headless/grit/headless_lib_resources.h" 15 #include "headless/grit/headless_lib_resources.h"
16 #include "headless/lib/browser/headless_browser_context_impl.h" 16 #include "headless/lib/browser/headless_browser_context_impl.h"
17 #include "headless/lib/browser/headless_browser_impl.h" 17 #include "headless/lib/browser/headless_browser_impl.h"
18 #include "headless/lib/browser/headless_download_manager_delegate.h"
18 #include "headless/lib/browser/headless_web_contents_impl.h" 19 #include "headless/lib/browser/headless_web_contents_impl.h"
19 #include "headless/public/devtools/domains/target.h" 20 #include "headless/public/devtools/domains/target.h"
20 #include "printing/units.h" 21 #include "printing/units.h"
21 #include "ui/base/resource/resource_bundle.h" 22 #include "ui/base/resource/resource_bundle.h"
22 23
23 namespace headless { 24 namespace headless {
24 25
25 namespace { 26 namespace {
26 const char kIdParam[] = "id"; 27 const char kIdParam[] = "id";
27 const char kResultParam[] = "result"; 28 const char kResultParam[] = "result";
(...skipping 12 matching lines...) Expand all
40 std::unique_ptr<base::Value> result) { 41 std::unique_ptr<base::Value> result) {
41 if (!result) 42 if (!result)
42 result = base::MakeUnique<base::DictionaryValue>(); 43 result = base::MakeUnique<base::DictionaryValue>();
43 44
44 auto response = base::MakeUnique<base::DictionaryValue>(); 45 auto response = base::MakeUnique<base::DictionaryValue>();
45 response->SetInteger(kIdParam, command_id); 46 response->SetInteger(kIdParam, command_id);
46 response->Set(kResultParam, std::move(result)); 47 response->Set(kResultParam, std::move(result));
47 return response; 48 return response;
48 } 49 }
49 50
51 std::unique_ptr<base::DictionaryValue> CreateSuccessResponse(int command_id) {
52 return CreateSuccessResponse(command_id, nullptr);
53 }
54
50 std::unique_ptr<base::DictionaryValue> CreateErrorResponse( 55 std::unique_ptr<base::DictionaryValue> CreateErrorResponse(
51 int command_id, 56 int command_id,
52 int error_code, 57 int error_code,
53 const std::string& error_message) { 58 const std::string& error_message) {
54 auto error_object = base::MakeUnique<base::DictionaryValue>(); 59 auto error_object = base::MakeUnique<base::DictionaryValue>();
55 error_object->SetInteger(kErrorCodeParam, error_code); 60 error_object->SetInteger(kErrorCodeParam, error_code);
56 error_object->SetString(kErrorMessageParam, error_message); 61 error_object->SetString(kErrorMessageParam, error_message);
57 62
58 auto response = base::MakeUnique<base::DictionaryValue>(); 63 auto response = base::MakeUnique<base::DictionaryValue>();
59 response->SetInteger(kIdParam, command_id); 64 response->SetInteger(kIdParam, command_id);
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 base::Unretained(this)); 190 base::Unretained(this));
186 command_map_["Browser.getWindowForTarget"] = 191 command_map_["Browser.getWindowForTarget"] =
187 base::Bind(&HeadlessDevToolsManagerDelegate::GetWindowForTarget, 192 base::Bind(&HeadlessDevToolsManagerDelegate::GetWindowForTarget,
188 base::Unretained(this)); 193 base::Unretained(this));
189 command_map_["Browser.getWindowBounds"] = 194 command_map_["Browser.getWindowBounds"] =
190 base::Bind(&HeadlessDevToolsManagerDelegate::GetWindowBounds, 195 base::Bind(&HeadlessDevToolsManagerDelegate::GetWindowBounds,
191 base::Unretained(this)); 196 base::Unretained(this));
192 command_map_["Browser.setWindowBounds"] = 197 command_map_["Browser.setWindowBounds"] =
193 base::Bind(&HeadlessDevToolsManagerDelegate::SetWindowBounds, 198 base::Bind(&HeadlessDevToolsManagerDelegate::SetWindowBounds,
194 base::Unretained(this)); 199 base::Unretained(this));
200 command_map_["Browser.setDownloadBehavior"] =
201 base::Bind(&HeadlessDevToolsManagerDelegate::SetDownloadBehavior,
202 base::Unretained(this));
203 command_map_["Browser.setDownloadDirectory"] =
204 base::Bind(&HeadlessDevToolsManagerDelegate::SetDownloadDirectory,
205 base::Unretained(this));
195 206
196 async_command_map_["Page.printToPDF"] = base::Bind( 207 async_command_map_["Page.printToPDF"] = base::Bind(
197 &HeadlessDevToolsManagerDelegate::PrintToPDF, base::Unretained(this)); 208 &HeadlessDevToolsManagerDelegate::PrintToPDF, base::Unretained(this));
198 } 209 }
199 210
200 HeadlessDevToolsManagerDelegate::~HeadlessDevToolsManagerDelegate() {} 211 HeadlessDevToolsManagerDelegate::~HeadlessDevToolsManagerDelegate() {}
201 212
202 base::DictionaryValue* HeadlessDevToolsManagerDelegate::HandleCommand( 213 base::DictionaryValue* HeadlessDevToolsManagerDelegate::HandleCommand(
203 content::DevToolsAgentHost* agent_host, 214 content::DevToolsAgentHost* agent_host,
204 base::DictionaryValue* command) { 215 base::DictionaryValue* command) {
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 command_id, kErrorServerError, 522 command_id, kErrorServerError,
512 "To resize minimized/maximized/fullscreen window, restore it to normal " 523 "To resize minimized/maximized/fullscreen window, restore it to normal "
513 "state first."); 524 "state first.");
514 } 525 }
515 526
516 web_contents->set_window_state(window_state); 527 web_contents->set_window_state(window_state);
517 web_contents->web_contents()->GetRenderWidgetHostView()->SetBounds(bounds); 528 web_contents->web_contents()->GetRenderWidgetHostView()->SetBounds(bounds);
518 return CreateSuccessResponse(command_id, nullptr); 529 return CreateSuccessResponse(command_id, nullptr);
519 } 530 }
520 531
532 std::unique_ptr<base::DictionaryValue>
533 HeadlessDevToolsManagerDelegate::SetDownloadBehavior(
534 int command_id,
535 const base::DictionaryValue* params) {
536 std::string behavior;
537 if (!params || !params->GetString("behavior", &behavior))
538 return CreateInvalidParamResponse(command_id, "behavior");
539
540 HeadlessDownloadManagerDelegate::DownloadBehavior download_behaviour =
541 HeadlessDownloadManagerDelegate::DownloadBehavior::DENY;
542
543 if (behavior == "allow") {
544 download_behaviour =
545 HeadlessDownloadManagerDelegate::DownloadBehavior::ALLOW;
546 } else if (behavior == "deny") {
547 download_behaviour =
548 HeadlessDownloadManagerDelegate::DownloadBehavior::DENY;
549 }
550
551 browser_->SetDownloadBehavior(download_behaviour);
552 return CreateSuccessResponse(command_id);
553 }
554
555 std::unique_ptr<base::DictionaryValue>
556 HeadlessDevToolsManagerDelegate::SetDownloadDirectory(
557 int command_id,
558 const base::DictionaryValue* params) {
559 std::string path;
560 if (!params || !params->GetString("path", &path))
561 return CreateInvalidParamResponse(command_id, "path");
562
563 browser_->SetDownloadDirectory(base::FilePath(path));
564 return CreateSuccessResponse(command_id);
565 }
566
521 } // namespace headless 567 } // namespace headless
OLDNEW
« no previous file with comments | « headless/lib/browser/headless_devtools_manager_delegate.h ('k') | headless/lib/browser/headless_download_manager_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698