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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_browsertest.cc

Issue 462173002: Fix set_area sizes for RequestCopyOfOutput, and related tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove 'middle 3 columns' exception, per sky@. Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_base.h ('k') | ui/snapshot/snapshot.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/message_loop/message_loop_proxy.h" 6 #include "base/message_loop/message_loop_proxy.h"
7 #include "base/path_service.h" 7 #include "base/path_service.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "content/browser/gpu/compositor_util.h" 9 #include "content/browser/gpu/compositor_util.h"
10 #include "content/browser/gpu/gpu_data_manager_impl.h" 10 #include "content/browser/gpu/gpu_data_manager_impl.h"
(...skipping 11 matching lines...) Expand all
22 #include "content/public/test/content_browser_test.h" 22 #include "content/public/test/content_browser_test.h"
23 #include "content/public/test/content_browser_test_utils.h" 23 #include "content/public/test/content_browser_test_utils.h"
24 #include "content/shell/browser/shell.h" 24 #include "content/shell/browser/shell.h"
25 #include "media/base/video_frame.h" 25 #include "media/base/video_frame.h"
26 #include "media/filters/skcanvas_video_renderer.h" 26 #include "media/filters/skcanvas_video_renderer.h"
27 #include "net/base/filename_util.h" 27 #include "net/base/filename_util.h"
28 #include "third_party/skia/include/core/SkBitmap.h" 28 #include "third_party/skia/include/core/SkBitmap.h"
29 #include "third_party/skia/include/core/SkCanvas.h" 29 #include "third_party/skia/include/core/SkCanvas.h"
30 #include "ui/base/layout.h" 30 #include "ui/base/layout.h"
31 #include "ui/base/ui_base_switches.h" 31 #include "ui/base/ui_base_switches.h"
32 #include "ui/gfx/size_conversions.h" 32 #include "ui/gfx/geometry/size_conversions.h"
33 #include "ui/gfx/switches.h" 33 #include "ui/gfx/switches.h"
34 #include "ui/gl/gl_switches.h" 34 #include "ui/gl/gl_switches.h"
35 35
36 #if defined(OS_WIN) 36 #if defined(OS_WIN)
37 #include "base/win/windows_version.h" 37 #include "base/win/windows_version.h"
38 #include "ui/gfx/win/dpi.h" 38 #include "ui/gfx/win/dpi.h"
39 #endif 39 #endif
40 40
41 namespace content { 41 namespace content {
42 namespace { 42 namespace {
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
516 516
517 virtual GURL TestUrl() OVERRIDE { 517 virtual GURL TestUrl() OVERRIDE {
518 return GURL(test_url_); 518 return GURL(test_url_);
519 } 519 }
520 520
521 void SetTestUrl(std::string url) { test_url_ = url; } 521 void SetTestUrl(std::string url) { test_url_ = url; }
522 522
523 // Loads a page two boxes side-by-side, each half the width of 523 // Loads a page two boxes side-by-side, each half the width of
524 // |html_rect_size|, and with different background colors. The test then 524 // |html_rect_size|, and with different background colors. The test then
525 // copies from |copy_rect| region of the page into a bitmap of size 525 // copies from |copy_rect| region of the page into a bitmap of size
526 // |output_size|, and compares that with a bitmap of size 526 // |output_size|, and examines the resulting bitmap/VideoFrame.
527 // |expected_bitmap_size|.
528 // Note that |output_size| may not have the same size as |copy_rect| (e.g. 527 // Note that |output_size| may not have the same size as |copy_rect| (e.g.
529 // when the output is scaled). Also note that |expected_bitmap_size| may not 528 // when the output is scaled).
530 // be the same as |output_size| (e.g. when the device scale factor is not 1).
531 void PerformTestWithLeftRightRects(const gfx::Size& html_rect_size, 529 void PerformTestWithLeftRightRects(const gfx::Size& html_rect_size,
532 const gfx::Rect& copy_rect, 530 const gfx::Rect& copy_rect,
533 const gfx::Size& output_size, 531 const gfx::Size& output_size,
534 const gfx::Size& expected_bitmap_size,
535 bool video_frame) { 532 bool video_frame) {
536 const gfx::Size box_size(html_rect_size.width() / 2, 533 const gfx::Size box_size(html_rect_size.width() / 2,
537 html_rect_size.height()); 534 html_rect_size.height());
538 SetTestUrl(base::StringPrintf( 535 SetTestUrl(base::StringPrintf(
539 "data:text/html,<!doctype html>" 536 "data:text/html,<!doctype html>"
540 "<div class='left'>" 537 "<div class='left'>"
541 " <div class='right'></div>" 538 " <div class='right'></div>"
542 "</div>" 539 "</div>"
543 "<style>" 540 "<style>"
544 "body { padding: 0; margin: 0; }" 541 "body { padding: 0; margin: 0; }"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 } 582 }
586 583
587 // The page is loaded in the renderer, wait for a new frame to arrive. 584 // The page is loaded in the renderer, wait for a new frame to arrive.
588 uint32 frame = rwhvp->RendererFrameNumber(); 585 uint32 frame = rwhvp->RendererFrameNumber();
589 while (!GetRenderWidgetHost()->ScheduleComposite()) 586 while (!GetRenderWidgetHost()->ScheduleComposite())
590 GiveItSomeTime(); 587 GiveItSomeTime();
591 while (rwhvp->RendererFrameNumber() == frame) 588 while (rwhvp->RendererFrameNumber() == frame)
592 GiveItSomeTime(); 589 GiveItSomeTime();
593 590
594 SkBitmap expected_bitmap; 591 SkBitmap expected_bitmap;
595 SetupLeftRightBitmap(expected_bitmap_size, &expected_bitmap); 592 SetupLeftRightBitmap(output_size, &expected_bitmap);
596 SetExpectedCopyFromCompositingSurfaceResult(true, expected_bitmap); 593 SetExpectedCopyFromCompositingSurfaceResult(true, expected_bitmap);
597 594
598 base::RunLoop run_loop; 595 base::RunLoop run_loop;
599 if (video_frame) { 596 if (video_frame) {
600 // Allow pixel differences as long as we have the right idea. 597 // Allow pixel differences as long as we have the right idea.
601 SetAllowableError(0x10); 598 SetAllowableError(0x10);
602 // Exclude the middle two columns which are blended between the two sides. 599 // Exclude the middle two columns which are blended between the two sides.
603 SetExcludeRect( 600 SetExcludeRect(
604 gfx::Rect(output_size.width() / 2 - 1, 0, 2, output_size.height())); 601 gfx::Rect(output_size.width() / 2 - 1, 0, 2, output_size.height()));
605 602
606 scoped_refptr<media::VideoFrame> video_frame = 603 scoped_refptr<media::VideoFrame> video_frame =
607 media::VideoFrame::CreateFrame(media::VideoFrame::YV12, 604 media::VideoFrame::CreateFrame(media::VideoFrame::YV12,
608 expected_bitmap_size, 605 output_size,
609 gfx::Rect(expected_bitmap_size), 606 gfx::Rect(output_size),
610 expected_bitmap_size, 607 output_size,
611 base::TimeDelta()); 608 base::TimeDelta());
612 609
613 base::Callback<void(bool success)> callback = 610 base::Callback<void(bool success)> callback =
614 base::Bind(&CompositingRenderWidgetHostViewBrowserTestTabCapture:: 611 base::Bind(&CompositingRenderWidgetHostViewBrowserTestTabCapture::
615 CopyFromCompositingSurfaceCallbackForVideo, 612 CopyFromCompositingSurfaceCallbackForVideo,
616 base::Unretained(this), 613 base::Unretained(this),
617 video_frame, 614 video_frame,
618 run_loop.QuitClosure()); 615 run_loop.QuitClosure());
619 rwhvp->CopyFromCompositingSurfaceToVideoFrame(copy_rect, 616 rwhvp->CopyFromCompositingSurfaceToVideoFrame(copy_rect,
620 video_frame, 617 video_frame,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 SkBitmap expected_copy_from_compositing_surface_bitmap_; 669 SkBitmap expected_copy_from_compositing_surface_bitmap_;
673 int allowable_error_; 670 int allowable_error_;
674 gfx::Rect exclude_rect_; 671 gfx::Rect exclude_rect_;
675 std::string test_url_; 672 std::string test_url_;
676 }; 673 };
677 674
678 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture, 675 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture,
679 CopyFromCompositingSurface_Origin_Unscaled) { 676 CopyFromCompositingSurface_Origin_Unscaled) {
680 gfx::Rect copy_rect(400, 300); 677 gfx::Rect copy_rect(400, 300);
681 gfx::Size output_size = copy_rect.size(); 678 gfx::Size output_size = copy_rect.size();
682 gfx::Size expected_bitmap_size = output_size;
683 gfx::Size html_rect_size(400, 300); 679 gfx::Size html_rect_size(400, 300);
684 bool video_frame = false; 680 bool video_frame = false;
685 PerformTestWithLeftRightRects(html_rect_size, 681 PerformTestWithLeftRightRects(html_rect_size,
686 copy_rect, 682 copy_rect,
687 output_size, 683 output_size,
688 expected_bitmap_size,
689 video_frame); 684 video_frame);
690 } 685 }
691 686
692 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture, 687 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture,
693 CopyFromCompositingSurface_Origin_Scaled) { 688 CopyFromCompositingSurface_Origin_Scaled) {
694 gfx::Rect copy_rect(400, 300); 689 gfx::Rect copy_rect(400, 300);
695 gfx::Size output_size(200, 100); 690 gfx::Size output_size(200, 100);
696 gfx::Size expected_bitmap_size = output_size;
697 gfx::Size html_rect_size(400, 300); 691 gfx::Size html_rect_size(400, 300);
698 bool video_frame = false; 692 bool video_frame = false;
699 PerformTestWithLeftRightRects(html_rect_size, 693 PerformTestWithLeftRightRects(html_rect_size,
700 copy_rect, 694 copy_rect,
701 output_size, 695 output_size,
702 expected_bitmap_size,
703 video_frame); 696 video_frame);
704 } 697 }
705 698
706 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture, 699 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture,
707 CopyFromCompositingSurface_Cropped_Unscaled) { 700 CopyFromCompositingSurface_Cropped_Unscaled) {
708 // Grab 60x60 pixels from the center of the tab contents. 701 // Grab 60x60 pixels from the center of the tab contents.
709 gfx::Rect copy_rect(400, 300); 702 gfx::Rect copy_rect(400, 300);
710 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(30, 30), 703 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(30, 30),
711 gfx::Size(60, 60)); 704 gfx::Size(60, 60));
712 gfx::Size output_size = copy_rect.size(); 705 gfx::Size output_size = copy_rect.size();
713 gfx::Size expected_bitmap_size = output_size;
714 gfx::Size html_rect_size(400, 300); 706 gfx::Size html_rect_size(400, 300);
715 bool video_frame = false; 707 bool video_frame = false;
716 PerformTestWithLeftRightRects(html_rect_size, 708 PerformTestWithLeftRightRects(html_rect_size,
717 copy_rect, 709 copy_rect,
718 output_size, 710 output_size,
719 expected_bitmap_size,
720 video_frame); 711 video_frame);
721 } 712 }
722 713
723 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture, 714 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture,
724 CopyFromCompositingSurface_Cropped_Scaled) { 715 CopyFromCompositingSurface_Cropped_Scaled) {
725 // Grab 60x60 pixels from the center of the tab contents. 716 // Grab 60x60 pixels from the center of the tab contents.
726 gfx::Rect copy_rect(400, 300); 717 gfx::Rect copy_rect(400, 300);
727 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(30, 30), 718 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(30, 30),
728 gfx::Size(60, 60)); 719 gfx::Size(60, 60));
729 gfx::Size output_size(20, 10); 720 gfx::Size output_size(20, 10);
730 gfx::Size expected_bitmap_size = output_size;
731 gfx::Size html_rect_size(400, 300); 721 gfx::Size html_rect_size(400, 300);
732 bool video_frame = false; 722 bool video_frame = false;
733 PerformTestWithLeftRightRects(html_rect_size, 723 PerformTestWithLeftRightRects(html_rect_size,
734 copy_rect, 724 copy_rect,
735 output_size, 725 output_size,
736 expected_bitmap_size,
737 video_frame); 726 video_frame);
738 } 727 }
739 728
740 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture, 729 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture,
741 CopyFromCompositingSurface_ForVideoFrame) { 730 CopyFromCompositingSurface_ForVideoFrame) {
742 // Grab 90x60 pixels from the center of the tab contents. 731 // Grab 90x60 pixels from the center of the tab contents.
743 gfx::Rect copy_rect(400, 300); 732 gfx::Rect copy_rect(400, 300);
744 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(45, 30), 733 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(45, 30),
745 gfx::Size(90, 60)); 734 gfx::Size(90, 60));
746 gfx::Size output_size = copy_rect.size(); 735 gfx::Size output_size = copy_rect.size();
747 gfx::Size expected_bitmap_size = output_size;
748 gfx::Size html_rect_size(400, 300); 736 gfx::Size html_rect_size(400, 300);
749 bool video_frame = true; 737 bool video_frame = true;
750 PerformTestWithLeftRightRects(html_rect_size, 738 PerformTestWithLeftRightRects(html_rect_size,
751 copy_rect, 739 copy_rect,
752 output_size, 740 output_size,
753 expected_bitmap_size,
754 video_frame); 741 video_frame);
755 } 742 }
756 743
757 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture, 744 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewBrowserTestTabCapture,
758 CopyFromCompositingSurface_ForVideoFrame_Scaled) { 745 CopyFromCompositingSurface_ForVideoFrame_Scaled) {
759 // Grab 90x60 pixels from the center of the tab contents. 746 // Grab 90x60 pixels from the center of the tab contents.
760 gfx::Rect copy_rect(400, 300); 747 gfx::Rect copy_rect(400, 300);
761 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(45, 30), 748 copy_rect = gfx::Rect(copy_rect.CenterPoint() - gfx::Vector2d(45, 30),
762 gfx::Size(90, 60)); 749 gfx::Size(90, 60));
763 // Scale to 30 x 20 (preserve aspect ratio). 750 // Scale to 30 x 20 (preserve aspect ratio).
764 gfx::Size output_size(30, 20); 751 gfx::Size output_size(30, 20);
765 gfx::Size expected_bitmap_size = output_size;
766 gfx::Size html_rect_size(400, 300); 752 gfx::Size html_rect_size(400, 300);
767 bool video_frame = true; 753 bool video_frame = true;
768 PerformTestWithLeftRightRects(html_rect_size, 754 PerformTestWithLeftRightRects(html_rect_size,
769 copy_rect, 755 copy_rect,
770 output_size, 756 output_size,
771 expected_bitmap_size,
772 video_frame); 757 video_frame);
773 } 758 }
774 759
775 class CompositingRenderWidgetHostViewTabCaptureHighDPI 760 class CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI
776 : public CompositingRenderWidgetHostViewBrowserTestTabCapture { 761 : public CompositingRenderWidgetHostViewBrowserTestTabCapture {
777 public: 762 public:
778 CompositingRenderWidgetHostViewTabCaptureHighDPI() : kScale(2.f) {} 763 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI() {}
779 764
780 virtual void SetUpOnMainThread() OVERRIDE { 765 protected:
781 base::CommandLine* cmd = base::CommandLine::ForCurrentProcess(); 766 virtual void SetUpCommandLine(base::CommandLine* cmd) OVERRIDE {
767 CompositingRenderWidgetHostViewBrowserTestTabCapture::SetUpCommandLine(cmd);
782 cmd->AppendSwitchASCII(switches::kForceDeviceScaleFactor, 768 cmd->AppendSwitchASCII(switches::kForceDeviceScaleFactor,
783 base::StringPrintf("%f", scale())); 769 base::StringPrintf("%f", scale()));
784 #if defined(OS_WIN)
785 gfx::ForceHighDPISupportForTesting(scale());
786 gfx::EnableHighDPISupport();
787 #endif
788 } 770 }
789 771
790 float scale() const { return kScale; }
791
792 private:
793 virtual bool ShouldContinueAfterTestURLLoad() OVERRIDE { 772 virtual bool ShouldContinueAfterTestURLLoad() OVERRIDE {
794 // Short-circuit a pass for platforms where setting up high-DPI fails. 773 // Short-circuit a pass for platforms where setting up high-DPI fails.
795 if (ui::GetScaleForScaleFactor(ui::GetSupportedScaleFactor( 774 const float actual_scale_factor =
796 GetScaleFactorForView(GetRenderWidgetHostView()))) != scale()) { 775 GetScaleFactorForView(GetRenderWidgetHostView());
797 LOG(WARNING) << "Blindly passing this test: failed to set up " 776 if (actual_scale_factor != scale()) {
798 "scale factor: " << scale(); 777 LOG(WARNING) << "Blindly passing this test; unable to force device scale "
778 << "factor: seems to be " << actual_scale_factor
779 << " but expected " << scale();
799 return false; 780 return false;
800 } 781 }
782 VLOG(1) << ("Successfully forced device scale factor. Moving forward with "
783 "this test! :-)");
801 return true; 784 return true;
802 } 785 }
803 786
804 const float kScale; 787 static float scale() { return 2.0f; }
805 788
806 DISALLOW_COPY_AND_ASSIGN(CompositingRenderWidgetHostViewTabCaptureHighDPI); 789 private:
790 DISALLOW_COPY_AND_ASSIGN(
791 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI);
807 }; 792 };
808 793
809 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewTabCaptureHighDPI, 794 // ImageSkia (related to ResourceBundle) implementation crashes the process on
810 CopyFromCompositingSurface) { 795 // Windows when this content_browsertest forces a device scale factor.
796 // http://crbug.com/399349
797 #if defined(OS_WIN)
798 #define MAYBE_CopyToBitmap_EntireRegion DISABLED_CopyToBitmap_EntireRegion
799 #define MAYBE_CopyToBitmap_CenterRegion DISABLED_CopyToBitmap_CenterRegion
800 #define MAYBE_CopyToBitmap_ScaledResult DISABLED_CopyToBitmap_ScaledResult
801 #define MAYBE_CopyToVideoFrame_EntireRegion \
802 DISABLED_CopyToVideoFrame_EntireRegion
803 #define MAYBE_CopyToVideoFrame_CenterRegion \
804 DISABLED_CopyToVideoFrame_CenterRegion
805 #define MAYBE_CopyToVideoFrame_ScaledResult \
806 DISABLED_CopyToVideoFrame_ScaledResult
807 #else
808 #define MAYBE_CopyToBitmap_EntireRegion CopyToBitmap_EntireRegion
809 #define MAYBE_CopyToBitmap_CenterRegion CopyToBitmap_CenterRegion
810 #define MAYBE_CopyToBitmap_ScaledResult CopyToBitmap_ScaledResult
811 #define MAYBE_CopyToVideoFrame_EntireRegion CopyToVideoFrame_EntireRegion
812 #define MAYBE_CopyToVideoFrame_CenterRegion CopyToVideoFrame_CenterRegion
813 #define MAYBE_CopyToVideoFrame_ScaledResult CopyToVideoFrame_ScaledResult
814 #endif
815
816 IN_PROC_BROWSER_TEST_P(
817 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI,
818 MAYBE_CopyToBitmap_EntireRegion) {
819 gfx::Size html_rect_size(200, 150);
811 gfx::Rect copy_rect(200, 150); 820 gfx::Rect copy_rect(200, 150);
812 gfx::Size output_size = copy_rect.size(); 821 // Scale the output size so that, internally, scaling is not occurring.
813 gfx::Size expected_bitmap_size = 822 gfx::Size output_size =
814 gfx::ToFlooredSize(gfx::ScaleSize(output_size, scale(), scale())); 823 gfx::ToRoundedSize(gfx::ScaleSize(copy_rect.size(), scale()));
815 gfx::Size html_rect_size(200, 150);
816 bool video_frame = false; 824 bool video_frame = false;
817 PerformTestWithLeftRightRects(html_rect_size, 825 PerformTestWithLeftRightRects(html_rect_size,
818 copy_rect, 826 copy_rect,
819 output_size, 827 output_size,
820 expected_bitmap_size,
821 video_frame); 828 video_frame);
822 } 829 }
823 830
824 IN_PROC_BROWSER_TEST_P(CompositingRenderWidgetHostViewTabCaptureHighDPI, 831 IN_PROC_BROWSER_TEST_P(
825 CopyFromCompositingSurfaceVideoFrame) { 832 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI,
833 MAYBE_CopyToBitmap_CenterRegion) {
826 gfx::Size html_rect_size(200, 150); 834 gfx::Size html_rect_size(200, 150);
827 // Grab 90x60 pixels from the center of the tab contents. 835 // Grab 90x60 pixels from the center of the tab contents.
828 gfx::Rect copy_rect = 836 gfx::Rect copy_rect =
829 gfx::Rect(gfx::Rect(html_rect_size).CenterPoint() - gfx::Vector2d(45, 30), 837 gfx::Rect(gfx::Rect(html_rect_size).CenterPoint() - gfx::Vector2d(45, 30),
830 gfx::Size(90, 60)); 838 gfx::Size(90, 60));
831 gfx::Size output_size = copy_rect.size(); 839 // Scale the output size so that, internally, scaling is not occurring.
832 gfx::Size expected_bitmap_size = 840 gfx::Size output_size =
833 gfx::ToFlooredSize(gfx::ScaleSize(output_size, scale(), scale())); 841 gfx::ToRoundedSize(gfx::ScaleSize(copy_rect.size(), scale()));
842 bool video_frame = false;
843 PerformTestWithLeftRightRects(html_rect_size,
844 copy_rect,
845 output_size,
846 video_frame);
847 }
848
849 IN_PROC_BROWSER_TEST_P(
850 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI,
851 MAYBE_CopyToBitmap_ScaledResult) {
852 gfx::Size html_rect_size(200, 100);
853 gfx::Rect copy_rect(200, 100);
854 // Output is being down-scaled since output_size is in phyiscal pixels.
855 gfx::Size output_size(200, 100);
856 bool video_frame = false;
857 PerformTestWithLeftRightRects(html_rect_size,
858 copy_rect,
859 output_size,
860 video_frame);
861 }
862
863 IN_PROC_BROWSER_TEST_P(
864 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI,
865 MAYBE_CopyToVideoFrame_EntireRegion) {
866 gfx::Size html_rect_size(200, 150);
867 gfx::Rect copy_rect(200, 150);
868 // Scale the output size so that, internally, scaling is not occurring.
869 gfx::Size output_size =
870 gfx::ToRoundedSize(gfx::ScaleSize(copy_rect.size(), scale()));
834 bool video_frame = true; 871 bool video_frame = true;
835 PerformTestWithLeftRightRects(html_rect_size, 872 PerformTestWithLeftRightRects(html_rect_size,
836 copy_rect, 873 copy_rect,
837 output_size, 874 output_size,
838 expected_bitmap_size,
839 video_frame); 875 video_frame);
840 } 876 }
841 877
842 #if !defined(USE_AURA) && !defined(OS_MACOSX) 878 IN_PROC_BROWSER_TEST_P(
843 // TODO(danakj): Remove this case when GTK linux is no more and move the 879 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI,
844 // values inline to testing::Values() below. 880 MAYBE_CopyToVideoFrame_CenterRegion) {
845 static const CompositingMode kAllCompositingModes[] = {GL_COMPOSITING}; 881 gfx::Size html_rect_size(200, 150);
846 #else 882 // Grab 90x60 pixels from the center of the tab contents.
847 static const CompositingMode kAllCompositingModes[] = {GL_COMPOSITING, 883 gfx::Rect copy_rect =
848 SOFTWARE_COMPOSITING}; 884 gfx::Rect(gfx::Rect(html_rect_size).CenterPoint() - gfx::Vector2d(45, 30),
849 #endif 885 gfx::Size(90, 60));
886 // Scale the output size so that, internally, scaling is not occurring.
887 gfx::Size output_size =
888 gfx::ToRoundedSize(gfx::ScaleSize(copy_rect.size(), scale()));
889 bool video_frame = true;
890 PerformTestWithLeftRightRects(html_rect_size,
891 copy_rect,
892 output_size,
893 video_frame);
894 }
895
896 IN_PROC_BROWSER_TEST_P(
897 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI,
898 MAYBE_CopyToVideoFrame_ScaledResult) {
899 gfx::Size html_rect_size(200, 100);
900 gfx::Rect copy_rect(200, 100);
901 // Output is being down-scaled since output_size is in phyiscal pixels.
902 gfx::Size output_size(200, 100);
903 bool video_frame = true;
904 PerformTestWithLeftRightRects(html_rect_size,
905 copy_rect,
906 output_size,
907 video_frame);
908 }
850 909
851 INSTANTIATE_TEST_CASE_P(GLAndSoftwareCompositing, 910 INSTANTIATE_TEST_CASE_P(GLAndSoftwareCompositing,
852 CompositingRenderWidgetHostViewBrowserTest, 911 CompositingRenderWidgetHostViewBrowserTest,
853 testing::ValuesIn(kAllCompositingModes)); 912 testing::Values(GL_COMPOSITING, SOFTWARE_COMPOSITING));
854 INSTANTIATE_TEST_CASE_P(GLAndSoftwareCompositing, 913 INSTANTIATE_TEST_CASE_P(GLAndSoftwareCompositing,
855 CompositingRenderWidgetHostViewBrowserTestTabCapture, 914 CompositingRenderWidgetHostViewBrowserTestTabCapture,
856 testing::ValuesIn(kAllCompositingModes)); 915 testing::Values(GL_COMPOSITING, SOFTWARE_COMPOSITING));
857 INSTANTIATE_TEST_CASE_P(GLAndSoftwareCompositing, 916 INSTANTIATE_TEST_CASE_P(
858 CompositingRenderWidgetHostViewTabCaptureHighDPI, 917 GLAndSoftwareCompositing,
859 testing::ValuesIn(kAllCompositingModes)); 918 CompositingRenderWidgetHostViewBrowserTestTabCaptureHighDPI,
919 testing::Values(GL_COMPOSITING, SOFTWARE_COMPOSITING));
860 920
861 #endif // !defined(OS_ANDROID) && !defined(OS_IOS) 921 #endif // !defined(OS_ANDROID) && !defined(OS_IOS)
862 922
863 } // namespace 923 } // namespace
864 } // namespace content 924 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_base.h ('k') | ui/snapshot/snapshot.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698