| 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" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 const std::string& param) { | 64 const std::string& param) { |
| 65 return CreateErrorResponse( | 65 return CreateErrorResponse( |
| 66 command_id, kErrorInvalidParam, | 66 command_id, kErrorInvalidParam, |
| 67 base::StringPrintf("Missing or invalid '%s' parameter", param.c_str())); | 67 base::StringPrintf("Missing or invalid '%s' parameter", param.c_str())); |
| 68 } | 68 } |
| 69 } // namespace | 69 } // namespace |
| 70 | 70 |
| 71 HeadlessDevToolsManagerDelegate::HeadlessDevToolsManagerDelegate( | 71 HeadlessDevToolsManagerDelegate::HeadlessDevToolsManagerDelegate( |
| 72 base::WeakPtr<HeadlessBrowserImpl> browser) | 72 base::WeakPtr<HeadlessBrowserImpl> browser) |
| 73 : browser_(std::move(browser)) { | 73 : browser_(std::move(browser)) { |
| 74 command_map_["Target.createTarget"] = | 74 command_map_["Target.createTarget"] = base::Bind( |
| 75 &HeadlessDevToolsManagerDelegate::CreateTarget; | 75 &HeadlessDevToolsManagerDelegate::CreateTarget, base::Unretained(this)); |
| 76 command_map_["Target.closeTarget"] = | 76 command_map_["Target.closeTarget"] = base::Bind( |
| 77 &HeadlessDevToolsManagerDelegate::CloseTarget; | 77 &HeadlessDevToolsManagerDelegate::CloseTarget, base::Unretained(this)); |
| 78 command_map_["Target.createBrowserContext"] = | 78 command_map_["Target.createBrowserContext"] = |
| 79 &HeadlessDevToolsManagerDelegate::CreateBrowserContext; | 79 base::Bind(&HeadlessDevToolsManagerDelegate::CreateBrowserContext, |
| 80 base::Unretained(this)); |
| 80 command_map_["Target.disposeBrowserContext"] = | 81 command_map_["Target.disposeBrowserContext"] = |
| 81 &HeadlessDevToolsManagerDelegate::DisposeBrowserContext; | 82 base::Bind(&HeadlessDevToolsManagerDelegate::DisposeBrowserContext, |
| 83 base::Unretained(this)); |
| 82 } | 84 } |
| 83 | 85 |
| 84 HeadlessDevToolsManagerDelegate::~HeadlessDevToolsManagerDelegate() {} | 86 HeadlessDevToolsManagerDelegate::~HeadlessDevToolsManagerDelegate() {} |
| 85 | 87 |
| 86 base::DictionaryValue* HeadlessDevToolsManagerDelegate::HandleCommand( | 88 base::DictionaryValue* HeadlessDevToolsManagerDelegate::HandleCommand( |
| 87 content::DevToolsAgentHost* agent_host, | 89 content::DevToolsAgentHost* agent_host, |
| 88 base::DictionaryValue* command) { | 90 base::DictionaryValue* command) { |
| 89 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 91 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 90 | 92 |
| 91 if (!browser_) | 93 if (!browser_) |
| 92 return nullptr; | 94 return nullptr; |
| 93 | 95 |
| 94 int id; | 96 int id; |
| 95 std::string method; | 97 std::string method; |
| 96 if (!command->GetInteger("id", &id) || | 98 if (!command->GetInteger("id", &id) || !command->GetString("method", &method)) |
| 97 !command->GetString("method", &method)) { | |
| 98 return nullptr; | 99 return nullptr; |
| 99 } | 100 |
| 100 auto find_it = command_map_.find(method); | 101 auto find_it = command_map_.find(method); |
| 101 if (find_it == command_map_.end()) | 102 if (find_it == command_map_.end()) |
| 102 return nullptr; | 103 return nullptr; |
| 103 CommandMemberFnPtr command_fn_ptr = find_it->second; | 104 |
| 104 const base::DictionaryValue* params = nullptr; | 105 const base::DictionaryValue* params = nullptr; |
| 105 command->GetDictionary("params", ¶ms); | 106 command->GetDictionary("params", ¶ms); |
| 106 std::unique_ptr<base::DictionaryValue> cmd_result( | 107 auto cmd_result = find_it->second.Run(id, params); |
| 107 ((this)->*command_fn_ptr)(id, params)); | |
| 108 return cmd_result.release(); | 108 return cmd_result.release(); |
| 109 } | 109 } |
| 110 | 110 |
| 111 scoped_refptr<content::DevToolsAgentHost> | 111 scoped_refptr<content::DevToolsAgentHost> |
| 112 HeadlessDevToolsManagerDelegate::CreateNewTarget(const GURL& url) { | 112 HeadlessDevToolsManagerDelegate::CreateNewTarget(const GURL& url) { |
| 113 HeadlessBrowserContext* context = browser_->GetDefaultBrowserContext(); | 113 HeadlessBrowserContext* context = browser_->GetDefaultBrowserContext(); |
| 114 HeadlessWebContentsImpl* web_contents_impl = HeadlessWebContentsImpl::From( | 114 HeadlessWebContentsImpl* web_contents_impl = HeadlessWebContentsImpl::From( |
| 115 context->CreateWebContentsBuilder() | 115 context->CreateWebContentsBuilder() |
| 116 .SetInitialURL(url) | 116 .SetInitialURL(url) |
| 117 .SetWindowSize(browser_->options()->window_size) | 117 .SetWindowSize(browser_->options()->window_size) |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 | 230 |
| 231 std::unique_ptr<base::Value> result( | 231 std::unique_ptr<base::Value> result( |
| 232 target::DisposeBrowserContextResult::Builder() | 232 target::DisposeBrowserContextResult::Builder() |
| 233 .SetSuccess(success) | 233 .SetSuccess(success) |
| 234 .Build() | 234 .Build() |
| 235 ->Serialize()); | 235 ->Serialize()); |
| 236 return CreateSuccessResponse(command_id, std::move(result)); | 236 return CreateSuccessResponse(command_id, std::move(result)); |
| 237 } | 237 } |
| 238 | 238 |
| 239 } // namespace headless | 239 } // namespace headless |
| OLD | NEW |