OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/browser/devtools/protocol/page_handler.h" | 5 #include "content/browser/devtools/protocol/page_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 24 matching lines...) Expand all Loading... | |
35 #include "content/public/browser/web_contents_delegate.h" | 35 #include "content/public/browser/web_contents_delegate.h" |
36 #include "content/public/common/referrer.h" | 36 #include "content/public/common/referrer.h" |
37 #include "third_party/skia/include/core/SkBitmap.h" | 37 #include "third_party/skia/include/core/SkBitmap.h" |
38 #include "ui/base/page_transition_types.h" | 38 #include "ui/base/page_transition_types.h" |
39 #include "ui/gfx/codec/jpeg_codec.h" | 39 #include "ui/gfx/codec/jpeg_codec.h" |
40 #include "ui/gfx/codec/png_codec.h" | 40 #include "ui/gfx/codec/png_codec.h" |
41 #include "ui/gfx/geometry/size_conversions.h" | 41 #include "ui/gfx/geometry/size_conversions.h" |
42 #include "ui/gfx/image/image.h" | 42 #include "ui/gfx/image/image.h" |
43 #include "ui/gfx/image/image_util.h" | 43 #include "ui/gfx/image/image_util.h" |
44 #include "ui/snapshot/snapshot.h" | 44 #include "ui/snapshot/snapshot.h" |
45 #include "ui/views/widget/widget.h" | |
45 #include "url/gurl.h" | 46 #include "url/gurl.h" |
46 | 47 |
47 namespace content { | 48 namespace content { |
48 namespace protocol { | 49 namespace protocol { |
49 | 50 |
50 namespace { | 51 namespace { |
51 | 52 |
52 static const char kPng[] = "png"; | 53 static const char kPng[] = "png"; |
53 static const char kJpeg[] = "jpeg"; | 54 static const char kJpeg[] = "jpeg"; |
54 static int kDefaultScreenshotQuality = 80; | 55 static int kDefaultScreenshotQuality = 80; |
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
587 } | 588 } |
588 | 589 |
589 Response PageHandler::StopLoading() { | 590 Response PageHandler::StopLoading() { |
590 WebContentsImpl* web_contents = GetWebContents(); | 591 WebContentsImpl* web_contents = GetWebContents(); |
591 if (!web_contents) | 592 if (!web_contents) |
592 return Response::InternalError(); | 593 return Response::InternalError(); |
593 web_contents->Stop(); | 594 web_contents->Stop(); |
594 return Response::OK(); | 595 return Response::OK(); |
595 } | 596 } |
596 | 597 |
598 Response PageHandler::MaximizeWindow() { | |
599 WebContentsImpl* web_contents = GetWebContents(); | |
600 if (!web_contents) | |
601 return Response::InternalError(); | |
602 views::Widget::GetWidgetForNativeWindow( | |
603 web_contents->GetTopLevelNativeWindow()) | |
604 ->Maximize(); | |
605 return Response::OK(); | |
606 } | |
607 | |
608 Response PageHandler::MinimizeWindow() { | |
609 WebContentsImpl* web_contents = GetWebContents(); | |
610 if (!web_contents) | |
611 return Response::InternalError(); | |
612 views::Widget::GetWidgetForNativeWindow( | |
613 web_contents->GetTopLevelNativeWindow()) | |
614 ->Minimize(); | |
615 return Response::OK(); | |
616 } | |
617 | |
618 Response PageHandler::SetWindowFullscreen(Maybe<bool> fullscreen) { | |
619 WebContentsImpl* web_contents = GetWebContents(); | |
620 if (!web_contents) | |
621 return Response::InternalError(); | |
622 views::Widget::GetWidgetForNativeWindow( | |
623 web_contents->GetTopLevelNativeWindow()) | |
624 ->SetFullscreen(fullscreen.fromMaybe(true)); | |
625 return Response::OK(); | |
626 } | |
627 | |
628 Response PageHandler::SetWindowBounds(Maybe<int> left, | |
629 Maybe<int> top, | |
630 Maybe<int> width, | |
631 Maybe<int> height) { | |
632 WebContentsImpl* web_contents = GetWebContents(); | |
633 if (!web_contents) | |
634 return Response::InternalError(); | |
635 if (width.fromMaybe(0) < 0 || height.fromMaybe(0) < 0) | |
636 return Response::InvalidParams("width and height values must be positive"); | |
637 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
| |
638 web_contents->GetTopLevelNativeWindow()); | |
639 if (widget->IsFullscreen()) | |
640 widget->SetFullscreen(false); | |
641 if (widget->IsMaximized()) | |
642 widget->Restore(); | |
643 gfx::Rect rect = widget->GetWindowBoundsInScreen(); | |
644 if (left.isJust()) | |
645 rect.set_x(left.takeJust()); | |
646 if (top.isJust()) | |
647 rect.set_y(top.takeJust()); | |
648 if (width.isJust()) | |
649 rect.set_width(width.takeJust()); | |
650 if (height.isJust()) | |
651 rect.set_height(height.takeJust()); | |
652 widget->SetBounds(rect); | |
653 return Response::OK(); | |
654 } | |
655 | |
656 Response PageHandler::GetWindowBounds(int* left, | |
657 int* top, | |
658 int* width, | |
659 int* height) { | |
660 WebContentsImpl* web_contents = GetWebContents(); | |
661 if (!web_contents) | |
662 return Response::InternalError(); | |
663 auto* widget = views::Widget::GetWidgetForNativeWindow( | |
664 web_contents->GetTopLevelNativeWindow()); | |
665 gfx::Rect rect = widget->GetWindowBoundsInScreen(); | |
666 *left = rect.x(); | |
667 *top = rect.y(); | |
668 *width = rect.width(); | |
669 *height = rect.height(); | |
670 return Response::OK(); | |
671 } | |
672 | |
597 } // namespace protocol | 673 } // namespace protocol |
598 } // namespace content | 674 } // namespace content |
OLD | NEW |