Index: content/browser/devtools/protocol/browser_handler.cc |
diff --git a/content/browser/devtools/protocol/browser_handler.cc b/content/browser/devtools/protocol/browser_handler.cc |
index be31b84ce8a8cc9629b6442953fda0884184a84b..a719d2218666cab569f65360d54b2366f59a4a4d 100644 |
--- a/content/browser/devtools/protocol/browser_handler.cc |
+++ b/content/browser/devtools/protocol/browser_handler.cc |
@@ -4,6 +4,10 @@ |
#include "content/browser/devtools/protocol/browser_handler.h" |
+#include "content/public/browser/render_widget_host_view.h" |
+#include "content/public/browser/web_contents.h" |
+#include "ui/gfx/geometry/size.h" |
+ |
namespace content { |
namespace devtools { |
namespace browser { |
@@ -18,11 +22,9 @@ const char kTargetTypeServiceOther[] = "other"; |
using Response = DevToolsProtocolClient::Response; |
-BrowserHandler::BrowserHandler() { |
-} |
+BrowserHandler::BrowserHandler() {} |
-BrowserHandler::~BrowserHandler() { |
-} |
+BrowserHandler::~BrowserHandler() {} |
void BrowserHandler::SetClient(std::unique_ptr<Client> client) { |
client_.swap(client); |
@@ -87,18 +89,62 @@ Response BrowserHandler::GetTargets(TargetInfos* infos) { |
set_type(GetTypeString(agent_host))-> |
set_title(agent_host->GetTitle())-> |
set_url(agent_host->GetURL().spec()); |
+ infos->push_back(info); |
} |
return Response::OK(); |
} |
+Response BrowserHandler::GetFrameSize(const std::string& target_id, |
+ int* width, |
+ int* height) { |
+ scoped_refptr<DevToolsAgentHost> agent_host = |
+ DevToolsAgentHost::GetForId(target_id); |
+ if (!agent_host) |
+ return Response::ServerError("No target with given id found"); |
+ |
+ // Get size of frame from RWHV if available. |
+ WebContents* web_contents = agent_host->GetWebContents(); |
+ RenderWidgetHostView* view = |
+ web_contents ? web_contents->GetRenderWidgetHostView() : nullptr; |
+ if (!view) |
+ return Response::ServerError("Target does not support GetFrameSize"); |
+ |
+ gfx::Size size = view->GetViewBounds().size(); |
+ *width = size.width(); |
+ *height = size.height(); |
+ return Response::OK(); |
+} |
+ |
+Response BrowserHandler::SetFrameSize(const std::string& target_id, |
+ int width, |
+ int height) { |
+ scoped_refptr<DevToolsAgentHost> agent_host = |
+ DevToolsAgentHost::GetForId(target_id); |
+ if (!agent_host) |
+ return Response::ServerError("No target with given id found"); |
+ |
+ if (width < 0 || height < 0) |
+ return Response::InvalidParams("Width and height must be non-negative"); |
+ |
+ // Set size of frame by resizing RWHV if available. |
+ WebContents* web_contents = agent_host->GetWebContents(); |
+ RenderWidgetHostView* view = |
+ web_contents ? web_contents->GetRenderWidgetHostView() : nullptr; |
+ if (!view) |
+ return Response::ServerError("Target does not support SetFrameSize"); |
+ |
+ view->SetSize(gfx::Size(width, height)); |
+ return Response::OK(); |
+} |
+ |
Response BrowserHandler::Attach(const std::string& targetId) { |
scoped_refptr<DevToolsAgentHost> agent_host = |
DevToolsAgentHost::GetForId(targetId); |
if (!agent_host) |
return Response::ServerError("No target with given id found"); |
bool success = agent_host->AttachClient(this); |
- return success ? Response::OK() : |
- Response::ServerError("Target is already being debugged"); |
+ return success ? Response::OK() |
+ : Response::ServerError("Target is already being debugged"); |
} |
Response BrowserHandler::Detach(const std::string& targetId) { |
@@ -107,8 +153,8 @@ Response BrowserHandler::Detach(const std::string& targetId) { |
if (!agent_host) |
return Response::ServerError("No target with given id found"); |
bool success = agent_host->DetachClient(this); |
- return success ? Response::OK() : |
- Response::ServerError("Target is not being debugged"); |
+ return success ? Response::OK() |
+ : Response::ServerError("Target is not being debugged"); |
} |
Response BrowserHandler::SendMessage(const std::string& targetId, |
@@ -121,16 +167,15 @@ Response BrowserHandler::SendMessage(const std::string& targetId, |
return Response::OK(); |
} |
-void BrowserHandler::DispatchProtocolMessage( |
- DevToolsAgentHost* agent_host, const std::string& message) { |
- client_->DispatchMessage(DispatchMessageParams::Create()-> |
- set_target_id(agent_host->GetId())-> |
- set_message(message)); |
+void BrowserHandler::DispatchProtocolMessage(DevToolsAgentHost* agent_host, |
+ const std::string& message) { |
+ client_->DispatchMessage(DispatchMessageParams::Create() |
+ ->set_target_id(agent_host->GetId()) |
+ ->set_message(message)); |
} |
void BrowserHandler::AgentHostClosed(DevToolsAgentHost* agent_host, |
- bool replaced_with_another_client) { |
-} |
+ bool replaced_with_another_client) {} |
} // namespace browser |
} // namespace devtools |