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

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

Issue 2734123004: add a new set of commands to resize and position windows (Closed)
Patch Set: move DEPS include down to content/browser/devtools Created 3 years, 9 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/page_handler.cc
diff --git a/content/browser/devtools/protocol/page_handler.cc b/content/browser/devtools/protocol/page_handler.cc
index c31a27ecd24d5e9ce7fe1173af498aea53808243..28f79c0e11454d22ab3175097c99ce9e77f386a8 100644
--- a/content/browser/devtools/protocol/page_handler.cc
+++ b/content/browser/devtools/protocol/page_handler.cc
@@ -42,6 +42,7 @@
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_util.h"
#include "ui/snapshot/snapshot.h"
+#include "ui/views/widget/widget.h"
#include "url/gurl.h"
namespace content {
@@ -594,5 +595,80 @@ Response PageHandler::StopLoading() {
return Response::OK();
}
+Response PageHandler::MaximizeWindow() {
+ WebContentsImpl* web_contents = GetWebContents();
+ if (!web_contents)
+ return Response::InternalError();
+ views::Widget::GetWidgetForNativeWindow(
+ web_contents->GetTopLevelNativeWindow())
+ ->Maximize();
+ return Response::OK();
+}
+
+Response PageHandler::MinimizeWindow() {
+ WebContentsImpl* web_contents = GetWebContents();
+ if (!web_contents)
+ return Response::InternalError();
+ views::Widget::GetWidgetForNativeWindow(
+ web_contents->GetTopLevelNativeWindow())
+ ->Minimize();
+ return Response::OK();
+}
+
+Response PageHandler::SetWindowFullscreen(Maybe<bool> fullscreen) {
+ WebContentsImpl* web_contents = GetWebContents();
+ if (!web_contents)
+ return Response::InternalError();
+ views::Widget::GetWidgetForNativeWindow(
+ web_contents->GetTopLevelNativeWindow())
+ ->SetFullscreen(fullscreen.fromMaybe(true));
+ return Response::OK();
+}
+
+Response PageHandler::SetWindowBounds(Maybe<int> left,
+ Maybe<int> top,
+ Maybe<int> width,
+ Maybe<int> height) {
+ WebContentsImpl* web_contents = GetWebContents();
+ if (!web_contents)
+ return Response::InternalError();
+ if (width.fromMaybe(0) < 0 || height.fromMaybe(0) < 0)
+ return Response::InvalidParams("width and height values must be positive");
+ auto* widget = views::Widget::GetWidgetForNativeWindow(
dgozman 2017/03/08 19:50:11 I believe there are not ui::views on MacOS/Android
jzfeng 2017/03/13 09:09:15 I changed to use BrowserWindow, which also works f
samuong 2017/03/13 17:23:00 From ChromeDriver's point of view, I think it's OK
+ web_contents->GetTopLevelNativeWindow());
+ if (widget->IsFullscreen())
+ widget->SetFullscreen(false);
+ if (widget->IsMaximized())
+ widget->Restore();
+ gfx::Rect rect = widget->GetWindowBoundsInScreen();
+ if (left.isJust())
+ rect.set_x(left.takeJust());
+ if (top.isJust())
+ rect.set_y(top.takeJust());
+ if (width.isJust())
+ rect.set_width(width.takeJust());
+ if (height.isJust())
+ rect.set_height(height.takeJust());
+ widget->SetBounds(rect);
+ return Response::OK();
+}
+
+Response PageHandler::GetWindowBounds(int* left,
+ int* top,
+ int* width,
+ int* height) {
+ WebContentsImpl* web_contents = GetWebContents();
+ if (!web_contents)
+ return Response::InternalError();
+ auto* widget = views::Widget::GetWidgetForNativeWindow(
+ web_contents->GetTopLevelNativeWindow());
+ gfx::Rect rect = widget->GetWindowBoundsInScreen();
+ *left = rect.x();
+ *top = rect.y();
+ *width = rect.width();
+ *height = rect.height();
+ return Response::OK();
+}
+
} // namespace protocol
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698