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

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

Issue 131443007: aura: Remove old GL paths from RenderWidgetHostViewAura. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: removecode: ackpreviousframe Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/memory/shared_memory.h" 8 #include "base/memory/shared_memory.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 149
150 class FakeRenderWidgetHostViewAura : public RenderWidgetHostViewAura { 150 class FakeRenderWidgetHostViewAura : public RenderWidgetHostViewAura {
151 public: 151 public:
152 FakeRenderWidgetHostViewAura(RenderWidgetHost* widget) 152 FakeRenderWidgetHostViewAura(RenderWidgetHost* widget)
153 : RenderWidgetHostViewAura(widget), has_resize_lock_(false) {} 153 : RenderWidgetHostViewAura(widget), has_resize_lock_(false) {}
154 154
155 virtual ~FakeRenderWidgetHostViewAura() {} 155 virtual ~FakeRenderWidgetHostViewAura() {}
156 156
157 virtual bool ShouldCreateResizeLock() OVERRIDE { 157 virtual bool ShouldCreateResizeLock() OVERRIDE {
158 gfx::Size desired_size = window()->bounds().size(); 158 gfx::Size desired_size = window()->bounds().size();
159 return desired_size != current_frame_size(); 159 return desired_size != current_frame_size_in_dip();
160 } 160 }
161 161
162 virtual scoped_ptr<ResizeLock> CreateResizeLock(bool defer_compositor_lock) 162 virtual scoped_ptr<ResizeLock> CreateResizeLock(bool defer_compositor_lock)
163 OVERRIDE { 163 OVERRIDE {
164 gfx::Size desired_size = window()->bounds().size(); 164 gfx::Size desired_size = window()->bounds().size();
165 return scoped_ptr<ResizeLock>( 165 return scoped_ptr<ResizeLock>(
166 new FakeResizeLock(desired_size, defer_compositor_lock)); 166 new FakeResizeLock(desired_size, defer_compositor_lock));
167 } 167 }
168 168
169 virtual void RequestCopyOfOutput(scoped_ptr<cc::CopyOutputRequest> request) 169 virtual void RequestCopyOfOutput(scoped_ptr<cc::CopyOutputRequest> request)
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 view_->UpdateCursorIfOverSelf(); 836 view_->UpdateCursorIfOverSelf();
837 EXPECT_EQ(0, cursor_client.calls_to_set_cursor()); 837 EXPECT_EQ(0, cursor_client.calls_to_set_cursor());
838 838
839 // Cursor is below the window. 839 // Cursor is below the window.
840 cursor_client.reset_calls_to_set_cursor(); 840 cursor_client.reset_calls_to_set_cursor();
841 aura::Env::GetInstance()->set_last_mouse_location(gfx::Point(161, 161)); 841 aura::Env::GetInstance()->set_last_mouse_location(gfx::Point(161, 161));
842 view_->UpdateCursorIfOverSelf(); 842 view_->UpdateCursorIfOverSelf();
843 EXPECT_EQ(0, cursor_client.calls_to_set_cursor()); 843 EXPECT_EQ(0, cursor_client.calls_to_set_cursor());
844 } 844 }
845 845
846 scoped_ptr<cc::CompositorFrame> MakeGLFrame(float scale_factor,
847 gfx::Size size,
848 gfx::Rect damage,
849 OwnedMailbox* owned_mailbox) {
850 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame);
851 frame->metadata.device_scale_factor = scale_factor;
852 frame->gl_frame_data.reset(new cc::GLFrameData);
853 DCHECK(owned_mailbox->sync_point());
854 frame->gl_frame_data->sync_point = owned_mailbox->sync_point();
855 memcpy(frame->gl_frame_data->mailbox.name,
856 owned_mailbox->mailbox().name,
857 sizeof(frame->gl_frame_data->mailbox.name));
858 frame->gl_frame_data->size = size;
859 frame->gl_frame_data->sub_buffer_rect = damage;
860 return frame.Pass();
861 }
862
863 scoped_ptr<cc::CompositorFrame> MakeSoftwareFrame(float scale_factor, 846 scoped_ptr<cc::CompositorFrame> MakeSoftwareFrame(float scale_factor,
864 gfx::Size size, 847 gfx::Size size,
865 gfx::Rect damage) { 848 gfx::Rect damage) {
866 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame); 849 scoped_ptr<cc::CompositorFrame> frame(new cc::CompositorFrame);
867 frame->metadata.device_scale_factor = scale_factor; 850 frame->metadata.device_scale_factor = scale_factor;
868 frame->software_frame_data.reset(new cc::SoftwareFrameData); 851 frame->software_frame_data.reset(new cc::SoftwareFrameData);
869 frame->software_frame_data->id = 1; 852 frame->software_frame_data->id = 1;
870 frame->software_frame_data->size = size; 853 frame->software_frame_data->size = size;
871 frame->software_frame_data->damage_rect = damage; 854 frame->software_frame_data->damage_rect = damage;
872 base::SharedMemory shm; 855 base::SharedMemory shm;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 // 0 is CreatingNew message. 895 // 0 is CreatingNew message.
913 const IPC::Message* msg = sink_->GetMessageAt(0); 896 const IPC::Message* msg = sink_->GetMessageAt(0);
914 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); 897 EXPECT_EQ(ViewMsg_Resize::ID, msg->type());
915 ViewMsg_Resize::Param params; 898 ViewMsg_Resize::Param params;
916 ViewMsg_Resize::Read(msg, &params); 899 ViewMsg_Resize::Read(msg, &params);
917 EXPECT_EQ("0,0 800x600", 900 EXPECT_EQ("0,0 800x600",
918 gfx::Rect(params.a.screen_info.availableRect).ToString()); 901 gfx::Rect(params.a.screen_info.availableRect).ToString());
919 EXPECT_EQ("800x600", params.a.new_size.ToString()); 902 EXPECT_EQ("800x600", params.a.new_size.ToString());
920 // Resizes are blocked until we swapped a frame of the correct size, and 903 // Resizes are blocked until we swapped a frame of the correct size, and
921 // we've committed it. 904 // we've committed it.
922 view_->OnSwapCompositorFrame(0, 905 view_->OnSwapCompositorFrame(
923 MakeGLFrame(1.f, 906 0,
924 params.a.new_size, 907 MakeDelegatedFrame(
925 gfx::Rect(params.a.new_size), 908 1.f, params.a.new_size, gfx::Rect(params.a.new_size)));
926 owned_mailbox.get()));
927 ui::DrawWaiterForTest::WaitForCommit( 909 ui::DrawWaiterForTest::WaitForCommit(
928 root_window->GetHost()->compositor()); 910 root_window->GetHost()->compositor());
929 } 911 }
930 912
931 widget_host_->ResetSizeAndRepaintPendingFlags(); 913 widget_host_->ResetSizeAndRepaintPendingFlags();
932 sink_->ClearMessages(); 914 sink_->ClearMessages();
933 915
934 // Make sure the corrent screen size is set along in the resize 916 // Make sure the corrent screen size is set along in the resize
935 // request when the screen size has changed. 917 // request when the screen size has changed.
936 aura_test_helper_->test_screen()->SetUIScale(0.5); 918 aura_test_helper_->test_screen()->SetUIScale(0.5);
937 EXPECT_EQ(1u, sink_->message_count()); 919 EXPECT_EQ(1u, sink_->message_count());
938 { 920 {
939 const IPC::Message* msg = sink_->GetMessageAt(0); 921 const IPC::Message* msg = sink_->GetMessageAt(0);
940 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); 922 EXPECT_EQ(ViewMsg_Resize::ID, msg->type());
941 ViewMsg_Resize::Param params; 923 ViewMsg_Resize::Param params;
942 ViewMsg_Resize::Read(msg, &params); 924 ViewMsg_Resize::Read(msg, &params);
943 EXPECT_EQ("0,0 1600x1200", 925 EXPECT_EQ("0,0 1600x1200",
944 gfx::Rect(params.a.screen_info.availableRect).ToString()); 926 gfx::Rect(params.a.screen_info.availableRect).ToString());
945 EXPECT_EQ("1600x1200", params.a.new_size.ToString()); 927 EXPECT_EQ("1600x1200", params.a.new_size.ToString());
946 view_->OnSwapCompositorFrame(0, 928 view_->OnSwapCompositorFrame(
947 MakeGLFrame(1.f, 929 0,
948 params.a.new_size, 930 MakeDelegatedFrame(
949 gfx::Rect(params.a.new_size), 931 1.f, params.a.new_size, gfx::Rect(params.a.new_size)));
950 owned_mailbox.get()));
951 ui::DrawWaiterForTest::WaitForCommit( 932 ui::DrawWaiterForTest::WaitForCommit(
952 root_window->GetHost()->compositor()); 933 root_window->GetHost()->compositor());
953 } 934 }
954 } 935 }
955 936
956 // Swapping a frame should notify the window. 937 // Swapping a frame should notify the window.
957 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) { 938 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) {
958 gfx::Size view_size(100, 100); 939 gfx::Size view_size(100, 100);
959 gfx::Rect view_rect(view_size); 940 gfx::Rect view_rect(view_size);
960 941
961 GLHelper* gl_helper = ImageTransportFactory::GetInstance()->GetGLHelper(); 942 GLHelper* gl_helper = ImageTransportFactory::GetInstance()->GetGLHelper();
962 scoped_refptr<OwnedMailbox> owned_mailbox = new OwnedMailbox(gl_helper); 943 scoped_refptr<OwnedMailbox> owned_mailbox = new OwnedMailbox(gl_helper);
963 gl_helper->ResizeTexture(owned_mailbox->texture_id(), gfx::Size(400, 400)); 944 gl_helper->ResizeTexture(owned_mailbox->texture_id(), gfx::Size(400, 400));
964 owned_mailbox->UpdateSyncPoint(gl_helper->InsertSyncPoint()); 945 owned_mailbox->UpdateSyncPoint(gl_helper->InsertSyncPoint());
965 946
966 view_->InitAsChild(NULL); 947 view_->InitAsChild(NULL);
967 aura::client::ParentWindowWithContext( 948 aura::client::ParentWindowWithContext(
968 view_->GetNativeView(), 949 view_->GetNativeView(),
969 parent_view_->GetNativeView()->GetRootWindow(), 950 parent_view_->GetNativeView()->GetRootWindow(),
970 gfx::Rect()); 951 gfx::Rect());
971 view_->SetSize(view_size); 952 view_->SetSize(view_size);
972 view_->WasShown(); 953 view_->WasShown();
973 954
974 MockWindowObserver observer; 955 MockWindowObserver observer;
975 view_->window_->AddObserver(&observer); 956 view_->window_->AddObserver(&observer);
976 957
977 // Swap a frame through the GPU path.
978 GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params params;
979 params.surface_id = widget_host_->surface_id();
980 params.route_id = widget_host_->GetRoutingID();
981 memcpy(params.mailbox.name,
982 owned_mailbox->mailbox().name,
983 sizeof(params.mailbox.name));
984 params.size = view_size;
985 params.scale_factor = 1.f;
986
987 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect));
988 view_->AcceleratedSurfaceBuffersSwapped(params, 0);
989 testing::Mock::VerifyAndClearExpectations(&observer);
990
991 // DSF = 2
992 params.size = gfx::Size(200, 200);
993 params.scale_factor = 2.f;
994 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect));
995 view_->AcceleratedSurfaceBuffersSwapped(params, 0);
996 testing::Mock::VerifyAndClearExpectations(&observer);
997
998 // Partial frames though GPU path
999 GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params post_params;
1000 post_params.surface_id = widget_host_->surface_id();
1001 post_params.route_id = widget_host_->GetRoutingID();
1002 memcpy(post_params.mailbox.name,
1003 owned_mailbox->mailbox().name,
1004 sizeof(params.mailbox.name));
1005 post_params.surface_size = gfx::Size(200, 200);
1006 post_params.surface_scale_factor = 2.f;
1007 post_params.x = 40;
1008 post_params.y = 40;
1009 post_params.width = 80;
1010 post_params.height = 80;
1011 // rect from params is upside down, and is inflated in RWHVA, just because.
1012 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_,
1013 gfx::Rect(19, 39, 42, 42)));
1014 view_->AcceleratedSurfacePostSubBuffer(post_params, 0);
1015 testing::Mock::VerifyAndClearExpectations(&observer);
1016
1017 // Composite-to-mailbox path
1018 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect));
1019 view_->OnSwapCompositorFrame(
1020 0, MakeGLFrame(1.f, view_size, view_rect, owned_mailbox.get()));
1021 testing::Mock::VerifyAndClearExpectations(&observer);
1022
1023 // rect from GL frame is upside down, and is inflated in RWHVA, just because.
1024 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_,
1025 gfx::Rect(4, 89, 7, 7)));
1026 view_->OnSwapCompositorFrame(
1027 0,
1028 MakeGLFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5), owned_mailbox.get()));
1029 testing::Mock::VerifyAndClearExpectations(&observer);
1030
1031 // Software path 958 // Software path
1032 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect)); 959 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, view_rect));
1033 view_->OnSwapCompositorFrame(0, MakeSoftwareFrame(1.f, view_size, view_rect)); 960 view_->OnSwapCompositorFrame(0, MakeSoftwareFrame(1.f, view_size, view_rect));
1034 testing::Mock::VerifyAndClearExpectations(&observer); 961 testing::Mock::VerifyAndClearExpectations(&observer);
1035 962
1036 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_, 963 EXPECT_CALL(observer, OnWindowPaintScheduled(view_->window_,
1037 gfx::Rect(5, 5, 5, 5))); 964 gfx::Rect(5, 5, 5, 5)));
1038 view_->OnSwapCompositorFrame( 965 view_->OnSwapCompositorFrame(
1039 0, MakeSoftwareFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5))); 966 0, MakeSoftwareFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5)));
1040 testing::Mock::VerifyAndClearExpectations(&observer); 967 testing::Mock::VerifyAndClearExpectations(&observer);
(...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after
1452 1379
1453 // Because the copy request callback may be holding state within it, that 1380 // Because the copy request callback may be holding state within it, that
1454 // state must handle the RWHVA and ImageTransportFactory going away before the 1381 // state must handle the RWHVA and ImageTransportFactory going away before the
1455 // callback is called. This test passes if it does not crash as a result of 1382 // callback is called. This test passes if it does not crash as a result of
1456 // these things being destroyed. 1383 // these things being destroyed.
1457 EXPECT_EQ(2, callback_count_); 1384 EXPECT_EQ(2, callback_count_);
1458 EXPECT_FALSE(result_); 1385 EXPECT_FALSE(result_);
1459 } 1386 }
1460 1387
1461 } // namespace content 1388 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_aura.cc ('k') | content/renderer/gpu/compositor_output_surface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698