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

Unified Diff: content/browser/devtools/protocol/browser_handler.cc

Issue 2226323002: Resize DevTools target frames. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rename, add tests, fix comments/style, add support in shell. Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698