OLD | NEW |
---|---|
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/web_contents.h" | 13 #include "content/public/browser/web_contents.h" |
14 #include "headless/grit/headless_lib_resources.h" | 14 #include "headless/grit/headless_lib_resources.h" |
15 #include "headless/lib/browser/headless_browser_context_impl.h" | 15 #include "headless/lib/browser/headless_browser_context_impl.h" |
16 #include "headless/lib/browser/headless_browser_impl.h" | 16 #include "headless/lib/browser/headless_browser_impl.h" |
17 #include "headless/lib/browser/headless_print_manager.h" | |
18 #include "headless/lib/browser/headless_web_contents_impl.h" | 17 #include "headless/lib/browser/headless_web_contents_impl.h" |
19 #include "headless/public/devtools/domains/target.h" | 18 #include "headless/public/devtools/domains/target.h" |
19 #include "printing/features/features.h" | |
20 #include "ui/base/resource/resource_bundle.h" | 20 #include "ui/base/resource/resource_bundle.h" |
21 | 21 |
22 #if BUILDFLAG(ENABLE_BASIC_PRINTING) | |
23 #include "headless/lib/browser/headless_print_manager.h" | |
24 #endif | |
25 | |
22 namespace headless { | 26 namespace headless { |
23 | 27 |
24 namespace { | 28 namespace { |
25 const char kIdParam[] = "id"; | 29 const char kIdParam[] = "id"; |
26 const char kResultParam[] = "result"; | 30 const char kResultParam[] = "result"; |
27 const char kErrorParam[] = "error"; | 31 const char kErrorParam[] = "error"; |
28 const char kErrorCodeParam[] = "code"; | 32 const char kErrorCodeParam[] = "code"; |
29 const char kErrorMessageParam[] = "message"; | 33 const char kErrorMessageParam[] = "message"; |
30 | 34 |
31 // JSON RPC 2.0 spec: http://www.jsonrpc.org/specification#error_object | 35 // JSON RPC 2.0 spec: http://www.jsonrpc.org/specification#error_object |
(...skipping 29 matching lines...) Expand all Loading... | |
61 } | 65 } |
62 | 66 |
63 std::unique_ptr<base::DictionaryValue> CreateInvalidParamResponse( | 67 std::unique_ptr<base::DictionaryValue> CreateInvalidParamResponse( |
64 int command_id, | 68 int command_id, |
65 const std::string& param) { | 69 const std::string& param) { |
66 return CreateErrorResponse( | 70 return CreateErrorResponse( |
67 command_id, kErrorInvalidParam, | 71 command_id, kErrorInvalidParam, |
68 base::StringPrintf("Missing or invalid '%s' parameter", param.c_str())); | 72 base::StringPrintf("Missing or invalid '%s' parameter", param.c_str())); |
69 } | 73 } |
70 | 74 |
75 #if BUILDFLAG(ENABLE_BASIC_PRINTING) | |
71 void PDFCreated( | 76 void PDFCreated( |
72 const content::DevToolsManagerDelegate::CommandCallback& callback, | 77 const content::DevToolsManagerDelegate::CommandCallback& callback, |
73 int command_id, | 78 int command_id, |
74 printing::HeadlessPrintManager::PrintResult print_result, | 79 printing::HeadlessPrintManager::PrintResult print_result, |
75 const std::string& data) { | 80 const std::string& data) { |
76 std::unique_ptr<base::DictionaryValue> response; | 81 std::unique_ptr<base::DictionaryValue> response; |
77 if (print_result == printing::HeadlessPrintManager::PRINT_SUCCESS) { | 82 if (print_result == printing::HeadlessPrintManager::PRINT_SUCCESS) { |
78 response = CreateSuccessResponse( | 83 response = CreateSuccessResponse( |
79 command_id, | 84 command_id, |
80 printing::HeadlessPrintManager::PDFContentsToDictionaryValue(data)); | 85 printing::HeadlessPrintManager::PDFContentsToDictionaryValue(data)); |
81 } else { | 86 } else { |
82 response = CreateErrorResponse( | 87 response = CreateErrorResponse( |
83 command_id, kErrorServerError, | 88 command_id, kErrorServerError, |
84 printing::HeadlessPrintManager::PrintResultToString(print_result)); | 89 printing::HeadlessPrintManager::PrintResultToString(print_result)); |
85 } | 90 } |
86 callback.Run(std::move(response)); | 91 callback.Run(std::move(response)); |
87 } | 92 } |
93 #endif | |
88 | 94 |
89 } // namespace | 95 } // namespace |
90 | 96 |
91 HeadlessDevToolsManagerDelegate::HeadlessDevToolsManagerDelegate( | 97 HeadlessDevToolsManagerDelegate::HeadlessDevToolsManagerDelegate( |
92 base::WeakPtr<HeadlessBrowserImpl> browser) | 98 base::WeakPtr<HeadlessBrowserImpl> browser) |
93 : browser_(std::move(browser)) { | 99 : browser_(std::move(browser)) { |
94 command_map_["Target.createTarget"] = base::Bind( | 100 command_map_["Target.createTarget"] = base::Bind( |
95 &HeadlessDevToolsManagerDelegate::CreateTarget, base::Unretained(this)); | 101 &HeadlessDevToolsManagerDelegate::CreateTarget, base::Unretained(this)); |
96 command_map_["Target.closeTarget"] = base::Bind( | 102 command_map_["Target.closeTarget"] = base::Bind( |
97 &HeadlessDevToolsManagerDelegate::CloseTarget, base::Unretained(this)); | 103 &HeadlessDevToolsManagerDelegate::CloseTarget, base::Unretained(this)); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
176 std::string HeadlessDevToolsManagerDelegate::GetFrontendResource( | 182 std::string HeadlessDevToolsManagerDelegate::GetFrontendResource( |
177 const std::string& path) { | 183 const std::string& path) { |
178 return content::DevToolsFrontendHost::GetFrontendResource(path).as_string(); | 184 return content::DevToolsFrontendHost::GetFrontendResource(path).as_string(); |
179 } | 185 } |
180 | 186 |
181 void HeadlessDevToolsManagerDelegate::PrintToPDF( | 187 void HeadlessDevToolsManagerDelegate::PrintToPDF( |
182 content::DevToolsAgentHost* agent_host, | 188 content::DevToolsAgentHost* agent_host, |
183 int command_id, | 189 int command_id, |
184 const base::DictionaryValue* params, | 190 const base::DictionaryValue* params, |
185 const CommandCallback& callback) { | 191 const CommandCallback& callback) { |
192 #if !BUILDFLAG(ENABLE_BASIC_PRINTING) | |
Lei Zhang
2017/04/10 17:38:41
Maybe remove the '!' and swap the two bodies of co
jzfeng
2017/04/10 18:32:27
Done.
| |
193 DCHECK(callback); | |
194 callback.Run(CreateErrorResponse(command_id, kErrorServerError, | |
195 "Can't print to pdf. Please set " | |
196 "enable_basic_printing to true in " | |
197 "args.gn")); | |
Lei Zhang
2017/04/10 17:38:41
Just say something like "printing is not enabled"
jzfeng
2017/04/10 18:32:27
Done.
| |
198 #else | |
186 content::WebContents* web_contents = agent_host->GetWebContents(); | 199 content::WebContents* web_contents = agent_host->GetWebContents(); |
187 content::RenderFrameHost* rfh = web_contents->GetMainFrame(); | 200 content::RenderFrameHost* rfh = web_contents->GetMainFrame(); |
188 | 201 |
189 printing::HeadlessPrintManager::FromWebContents(web_contents) | 202 printing::HeadlessPrintManager::FromWebContents(web_contents) |
190 ->GetPDFContents(rfh, base::Bind(&PDFCreated, callback, command_id)); | 203 ->GetPDFContents(rfh, base::Bind(&PDFCreated, callback, command_id)); |
204 #endif | |
191 } | 205 } |
192 | 206 |
193 std::unique_ptr<base::DictionaryValue> | 207 std::unique_ptr<base::DictionaryValue> |
194 HeadlessDevToolsManagerDelegate::CreateTarget( | 208 HeadlessDevToolsManagerDelegate::CreateTarget( |
195 int command_id, | 209 int command_id, |
196 const base::DictionaryValue* params) { | 210 const base::DictionaryValue* params) { |
197 std::string url; | 211 std::string url; |
198 std::string browser_context_id; | 212 std::string browser_context_id; |
199 int width = browser_->options()->window_size.width(); | 213 int width = browser_->options()->window_size.width(); |
200 int height = browser_->options()->window_size.height(); | 214 int height = browser_->options()->window_size.height(); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
289 | 303 |
290 std::unique_ptr<base::Value> result( | 304 std::unique_ptr<base::Value> result( |
291 target::DisposeBrowserContextResult::Builder() | 305 target::DisposeBrowserContextResult::Builder() |
292 .SetSuccess(success) | 306 .SetSuccess(success) |
293 .Build() | 307 .Build() |
294 ->Serialize()); | 308 ->Serialize()); |
295 return CreateSuccessResponse(command_id, std::move(result)); | 309 return CreateSuccessResponse(command_id, std::move(result)); |
296 } | 310 } |
297 | 311 |
298 } // namespace headless | 312 } // namespace headless |
OLD | NEW |