OLD | NEW |
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 <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <tuple> | 10 #include <tuple> |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 using ui::WebInputEventTraits; | 112 using ui::WebInputEventTraits; |
113 | 113 |
114 namespace content { | 114 namespace content { |
115 | 115 |
116 void InstallDelegatedFrameHostClient( | 116 void InstallDelegatedFrameHostClient( |
117 RenderWidgetHostViewAura* render_widget_host_view, | 117 RenderWidgetHostViewAura* render_widget_host_view, |
118 std::unique_ptr<DelegatedFrameHostClient> delegated_frame_host_client); | 118 std::unique_ptr<DelegatedFrameHostClient> delegated_frame_host_client); |
119 | 119 |
120 namespace { | 120 namespace { |
121 | 121 |
| 122 const cc::LocalSurfaceId kArbitraryLocalSurfaceId( |
| 123 1, |
| 124 base::UnguessableToken::Deserialize(2, 3)); |
| 125 |
| 126 cc::LocalSurfaceId CreateLocalSurfaceId() { |
| 127 return cc::LocalSurfaceId(1, base::UnguessableToken::Create()); |
| 128 } |
| 129 |
122 class TestOverscrollDelegate : public OverscrollControllerDelegate { | 130 class TestOverscrollDelegate : public OverscrollControllerDelegate { |
123 public: | 131 public: |
124 explicit TestOverscrollDelegate(RenderWidgetHostView* view) | 132 explicit TestOverscrollDelegate(RenderWidgetHostView* view) |
125 : view_(view), | 133 : view_(view), |
126 current_mode_(OVERSCROLL_NONE), | 134 current_mode_(OVERSCROLL_NONE), |
127 completed_mode_(OVERSCROLL_NONE), | 135 completed_mode_(OVERSCROLL_NONE), |
128 delta_x_(0.f), | 136 delta_x_(0.f), |
129 delta_y_(0.f) {} | 137 delta_y_(0.f) {} |
130 | 138 |
131 ~TestOverscrollDelegate() override {} | 139 ~TestOverscrollDelegate() override {} |
(...skipping 1790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1922 gfx::Rect()); | 1930 gfx::Rect()); |
1923 view_->SetSize(view_size); | 1931 view_->SetSize(view_size); |
1924 view_->Show(); | 1932 view_->Show(); |
1925 sink_->ClearMessages(); | 1933 sink_->ClearMessages(); |
1926 | 1934 |
1927 // Submit a frame with resources. | 1935 // Submit a frame with resources. |
1928 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, view_size, view_rect); | 1936 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, view_size, view_rect); |
1929 cc::TransferableResource resource; | 1937 cc::TransferableResource resource; |
1930 resource.id = 1; | 1938 resource.id = 1; |
1931 frame.resource_list.push_back(resource); | 1939 frame.resource_list.push_back(resource); |
1932 view_->OnSwapCompositorFrame(0, std::move(frame)); | 1940 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
1933 EXPECT_EQ(0u, sink_->message_count()); | 1941 EXPECT_EQ(0u, sink_->message_count()); |
1934 | 1942 |
1935 // Swap another CompositorFrame but this time from another | 1943 // Swap another CompositorFrame but this time from another |
1936 // compositor_frame_sink_id. The resources for the previous frame are old and | 1944 // compositor_frame_sink_id. The resources for the previous frame are old and |
1937 // should not be returned. | 1945 // should not be returned. |
1938 view_->OnSwapCompositorFrame(1, | 1946 view_->OnSwapCompositorFrame(1, CreateLocalSurfaceId(), |
1939 MakeDelegatedFrame(1.f, view_size, view_rect)); | 1947 MakeDelegatedFrame(1.f, view_size, view_rect)); |
1940 EXPECT_EQ(0u, sink_->message_count()); | 1948 EXPECT_EQ(0u, sink_->message_count()); |
1941 | 1949 |
1942 // Report that the surface is drawn to trigger an ACK. | 1950 // Report that the surface is drawn to trigger an ACK. |
1943 cc::Surface* surface = manager->GetSurfaceForId(view_->surface_id()); | 1951 cc::Surface* surface = manager->GetSurfaceForId(view_->surface_id()); |
1944 EXPECT_TRUE(surface); | 1952 EXPECT_TRUE(surface); |
1945 surface->RunDrawCallbacks(); | 1953 surface->RunDrawCallbacks(); |
1946 EXPECT_EQ(1u, sink_->message_count()); | 1954 EXPECT_EQ(1u, sink_->message_count()); |
1947 { | 1955 { |
1948 const IPC::Message* msg = sink_->GetMessageAt(0); | 1956 const IPC::Message* msg = sink_->GetMessageAt(0); |
(...skipping 25 matching lines...) Expand all Loading... |
1974 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); | 1982 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); |
1975 ViewMsg_Resize::Param params; | 1983 ViewMsg_Resize::Param params; |
1976 ViewMsg_Resize::Read(msg, ¶ms); | 1984 ViewMsg_Resize::Read(msg, ¶ms); |
1977 EXPECT_EQ( | 1985 EXPECT_EQ( |
1978 "0,0 800x600", | 1986 "0,0 800x600", |
1979 std::get<0>(params).screen_info.available_rect.ToString()); | 1987 std::get<0>(params).screen_info.available_rect.ToString()); |
1980 EXPECT_EQ("800x600", std::get<0>(params).new_size.ToString()); | 1988 EXPECT_EQ("800x600", std::get<0>(params).new_size.ToString()); |
1981 // Resizes are blocked until we swapped a frame of the correct size, and | 1989 // Resizes are blocked until we swapped a frame of the correct size, and |
1982 // we've committed it. | 1990 // we've committed it. |
1983 view_->OnSwapCompositorFrame( | 1991 view_->OnSwapCompositorFrame( |
1984 0, MakeDelegatedFrame(1.f, std::get<0>(params).new_size, | 1992 0, kArbitraryLocalSurfaceId, |
1985 gfx::Rect(std::get<0>(params).new_size))); | 1993 MakeDelegatedFrame(1.f, std::get<0>(params).new_size, |
| 1994 gfx::Rect(std::get<0>(params).new_size))); |
1986 ui::DrawWaiterForTest::WaitForCommit( | 1995 ui::DrawWaiterForTest::WaitForCommit( |
1987 root_window->GetHost()->compositor()); | 1996 root_window->GetHost()->compositor()); |
1988 } | 1997 } |
1989 | 1998 |
1990 widget_host_->ResetSizeAndRepaintPendingFlags(); | 1999 widget_host_->ResetSizeAndRepaintPendingFlags(); |
1991 sink_->ClearMessages(); | 2000 sink_->ClearMessages(); |
1992 | 2001 |
1993 // Make sure the corrent screen size is set along in the resize | 2002 // Make sure the corrent screen size is set along in the resize |
1994 // request when the screen size has changed. | 2003 // request when the screen size has changed. |
1995 aura_test_helper_->test_screen()->SetUIScale(0.5); | 2004 aura_test_helper_->test_screen()->SetUIScale(0.5); |
1996 EXPECT_EQ(1u, sink_->message_count()); | 2005 EXPECT_EQ(1u, sink_->message_count()); |
1997 { | 2006 { |
1998 const IPC::Message* msg = sink_->GetMessageAt(0); | 2007 const IPC::Message* msg = sink_->GetMessageAt(0); |
1999 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); | 2008 EXPECT_EQ(ViewMsg_Resize::ID, msg->type()); |
2000 ViewMsg_Resize::Param params; | 2009 ViewMsg_Resize::Param params; |
2001 ViewMsg_Resize::Read(msg, ¶ms); | 2010 ViewMsg_Resize::Read(msg, ¶ms); |
2002 EXPECT_EQ( | 2011 EXPECT_EQ( |
2003 "0,0 1600x1200", | 2012 "0,0 1600x1200", |
2004 std::get<0>(params).screen_info.available_rect.ToString()); | 2013 std::get<0>(params).screen_info.available_rect.ToString()); |
2005 EXPECT_EQ("1600x1200", std::get<0>(params).new_size.ToString()); | 2014 EXPECT_EQ("1600x1200", std::get<0>(params).new_size.ToString()); |
2006 view_->OnSwapCompositorFrame( | 2015 view_->OnSwapCompositorFrame( |
2007 0, MakeDelegatedFrame(1.f, std::get<0>(params).new_size, | 2016 0, kArbitraryLocalSurfaceId, |
2008 gfx::Rect(std::get<0>(params).new_size))); | 2017 MakeDelegatedFrame(1.f, std::get<0>(params).new_size, |
| 2018 gfx::Rect(std::get<0>(params).new_size))); |
2009 ui::DrawWaiterForTest::WaitForCommit( | 2019 ui::DrawWaiterForTest::WaitForCommit( |
2010 root_window->GetHost()->compositor()); | 2020 root_window->GetHost()->compositor()); |
2011 } | 2021 } |
2012 } | 2022 } |
2013 | 2023 |
2014 // Swapping a frame should notify the window. | 2024 // Swapping a frame should notify the window. |
2015 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) { | 2025 TEST_F(RenderWidgetHostViewAuraTest, SwapNotifiesWindow) { |
2016 gfx::Size view_size(100, 100); | 2026 gfx::Size view_size(100, 100); |
2017 gfx::Rect view_rect(view_size); | 2027 gfx::Rect view_rect(view_size); |
2018 | 2028 |
2019 view_->InitAsChild(nullptr); | 2029 view_->InitAsChild(nullptr); |
2020 aura::client::ParentWindowWithContext( | 2030 aura::client::ParentWindowWithContext( |
2021 view_->GetNativeView(), | 2031 view_->GetNativeView(), |
2022 parent_view_->GetNativeView()->GetRootWindow(), | 2032 parent_view_->GetNativeView()->GetRootWindow(), |
2023 gfx::Rect()); | 2033 gfx::Rect()); |
2024 view_->SetSize(view_size); | 2034 view_->SetSize(view_size); |
2025 view_->Show(); | 2035 view_->Show(); |
2026 | 2036 |
2027 MockWindowObserver observer; | 2037 MockWindowObserver observer; |
2028 view_->window_->AddObserver(&observer); | 2038 view_->window_->AddObserver(&observer); |
2029 | 2039 |
2030 // Delegated renderer path | 2040 // Delegated renderer path |
2031 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2041 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
2032 view_->OnSwapCompositorFrame( | 2042 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
2033 0, MakeDelegatedFrame(1.f, view_size, view_rect)); | 2043 MakeDelegatedFrame(1.f, view_size, view_rect)); |
2034 testing::Mock::VerifyAndClearExpectations(&observer); | 2044 testing::Mock::VerifyAndClearExpectations(&observer); |
2035 | 2045 |
2036 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, | 2046 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, |
2037 gfx::Rect(5, 5, 5, 5))); | 2047 gfx::Rect(5, 5, 5, 5))); |
2038 view_->OnSwapCompositorFrame( | 2048 view_->OnSwapCompositorFrame( |
2039 0, MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5))); | 2049 0, kArbitraryLocalSurfaceId, |
| 2050 MakeDelegatedFrame(1.f, view_size, gfx::Rect(5, 5, 5, 5))); |
2040 testing::Mock::VerifyAndClearExpectations(&observer); | 2051 testing::Mock::VerifyAndClearExpectations(&observer); |
2041 | 2052 |
2042 view_->window_->RemoveObserver(&observer); | 2053 view_->window_->RemoveObserver(&observer); |
2043 } | 2054 } |
2044 | 2055 |
2045 // Mirroring the layers for a window should cause Surface destruction to | 2056 // Mirroring the layers for a window should cause Surface destruction to |
2046 // depend on both layers. | 2057 // depend on both layers. |
2047 TEST_F(RenderWidgetHostViewAuraTest, MirrorLayers) { | 2058 TEST_F(RenderWidgetHostViewAuraTest, MirrorLayers) { |
2048 gfx::Size view_size(100, 100); | 2059 gfx::Size view_size(100, 100); |
2049 gfx::Rect view_rect(view_size); | 2060 gfx::Rect view_rect(view_size); |
2050 aura::Window* const root = parent_view_->GetNativeView()->GetRootWindow(); | 2061 aura::Window* const root = parent_view_->GetNativeView()->GetRootWindow(); |
2051 | 2062 |
2052 view_->InitAsChild(nullptr); | 2063 view_->InitAsChild(nullptr); |
2053 aura::client::ParentWindowWithContext( | 2064 aura::client::ParentWindowWithContext( |
2054 view_->GetNativeView(), root, gfx::Rect()); | 2065 view_->GetNativeView(), root, gfx::Rect()); |
2055 view_->SetSize(view_size); | 2066 view_->SetSize(view_size); |
2056 view_->Show(); | 2067 view_->Show(); |
2057 | 2068 |
2058 view_->OnSwapCompositorFrame(0, | 2069 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
2059 MakeDelegatedFrame(1.f, view_size, view_rect)); | 2070 MakeDelegatedFrame(1.f, view_size, view_rect)); |
2060 std::unique_ptr<ui::LayerTreeOwner> mirror(wm::MirrorLayers( | 2071 std::unique_ptr<ui::LayerTreeOwner> mirror(wm::MirrorLayers( |
2061 view_->GetNativeView(), false /* sync_bounds */)); | 2072 view_->GetNativeView(), false /* sync_bounds */)); |
2062 | 2073 |
2063 cc::SurfaceId id = view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); | 2074 cc::SurfaceId id = view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); |
2064 if (id.is_valid()) { | 2075 if (id.is_valid()) { |
2065 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); | 2076 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
2066 cc::SurfaceManager* manager = | 2077 cc::SurfaceManager* manager = |
2067 factory->GetContextFactoryPrivate()->GetSurfaceManager(); | 2078 factory->GetContextFactoryPrivate()->GetSurfaceManager(); |
2068 cc::Surface* surface = manager->GetSurfaceForId(id); | 2079 cc::Surface* surface = manager->GetSurfaceForId(id); |
(...skipping 22 matching lines...) Expand all Loading... |
2091 | 2102 |
2092 view_->InitAsChild(nullptr); | 2103 view_->InitAsChild(nullptr); |
2093 aura::client::ParentWindowWithContext( | 2104 aura::client::ParentWindowWithContext( |
2094 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), | 2105 view_->GetNativeView(), parent_view_->GetNativeView()->GetRootWindow(), |
2095 gfx::Rect()); | 2106 gfx::Rect()); |
2096 view_->SetSize(large_size); | 2107 view_->SetSize(large_size); |
2097 view_->Show(); | 2108 view_->Show(); |
2098 cc::CompositorFrame frame = | 2109 cc::CompositorFrame frame = |
2099 MakeDelegatedFrame(1.f, small_size, gfx::Rect(small_size)); | 2110 MakeDelegatedFrame(1.f, small_size, gfx::Rect(small_size)); |
2100 frame.metadata.root_background_color = SK_ColorRED; | 2111 frame.metadata.root_background_color = SK_ColorRED; |
2101 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2112 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
2102 | 2113 |
2103 ui::Layer* parent_layer = view_->GetNativeView()->layer(); | 2114 ui::Layer* parent_layer = view_->GetNativeView()->layer(); |
2104 | 2115 |
2105 ASSERT_EQ(2u, parent_layer->children().size()); | 2116 ASSERT_EQ(2u, parent_layer->children().size()); |
2106 EXPECT_EQ(gfx::Rect(40, 0, 60, 100), parent_layer->children()[0]->bounds()); | 2117 EXPECT_EQ(gfx::Rect(40, 0, 60, 100), parent_layer->children()[0]->bounds()); |
2107 EXPECT_EQ(SK_ColorRED, parent_layer->children()[0]->background_color()); | 2118 EXPECT_EQ(SK_ColorRED, parent_layer->children()[0]->background_color()); |
2108 EXPECT_EQ(gfx::Rect(0, 45, 40, 55), parent_layer->children()[1]->bounds()); | 2119 EXPECT_EQ(gfx::Rect(0, 45, 40, 55), parent_layer->children()[1]->bounds()); |
2109 EXPECT_EQ(SK_ColorRED, parent_layer->children()[1]->background_color()); | 2120 EXPECT_EQ(SK_ColorRED, parent_layer->children()[1]->background_color()); |
2110 | 2121 |
2111 delegates_.back()->set_is_fullscreen(true); | 2122 delegates_.back()->set_is_fullscreen(true); |
2112 view_->SetSize(medium_size); | 2123 view_->SetSize(medium_size); |
2113 | 2124 |
2114 // Right gutter is unnecessary. | 2125 // Right gutter is unnecessary. |
2115 ASSERT_EQ(1u, parent_layer->children().size()); | 2126 ASSERT_EQ(1u, parent_layer->children().size()); |
2116 EXPECT_EQ(gfx::Rect(0, 45, 40, 50), parent_layer->children()[0]->bounds()); | 2127 EXPECT_EQ(gfx::Rect(0, 45, 40, 50), parent_layer->children()[0]->bounds()); |
2117 | 2128 |
2118 // RWH is fullscreen, so gutters should be black. | 2129 // RWH is fullscreen, so gutters should be black. |
2119 EXPECT_EQ(SK_ColorBLACK, parent_layer->children()[0]->background_color()); | 2130 EXPECT_EQ(SK_ColorBLACK, parent_layer->children()[0]->background_color()); |
2120 | 2131 |
2121 frame = MakeDelegatedFrame(1.f, medium_size, gfx::Rect(medium_size)); | 2132 frame = MakeDelegatedFrame(1.f, medium_size, gfx::Rect(medium_size)); |
2122 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2133 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
2123 EXPECT_EQ(0u, parent_layer->children().size()); | 2134 EXPECT_EQ(0u, parent_layer->children().size()); |
2124 | 2135 |
2125 view_->SetSize(large_size); | 2136 view_->SetSize(large_size); |
2126 ASSERT_EQ(2u, parent_layer->children().size()); | 2137 ASSERT_EQ(2u, parent_layer->children().size()); |
2127 | 2138 |
2128 // This should evict the frame and remove the gutter layers. | 2139 // This should evict the frame and remove the gutter layers. |
2129 view_->Hide(); | 2140 view_->Hide(); |
2130 view_->SetSize(small_size); | 2141 view_->SetSize(small_size); |
2131 ASSERT_EQ(0u, parent_layer->children().size()); | 2142 ASSERT_EQ(0u, parent_layer->children().size()); |
2132 } | 2143 } |
2133 | 2144 |
2134 TEST_F(RenderWidgetHostViewAuraTest, Resize) { | 2145 TEST_F(RenderWidgetHostViewAuraTest, Resize) { |
2135 gfx::Size size1(100, 100); | 2146 gfx::Size size1(100, 100); |
2136 gfx::Size size2(200, 200); | 2147 gfx::Size size2(200, 200); |
2137 gfx::Size size3(300, 300); | 2148 gfx::Size size3(300, 300); |
2138 | 2149 |
2139 aura::Window* root_window = parent_view_->GetNativeView()->GetRootWindow(); | 2150 aura::Window* root_window = parent_view_->GetNativeView()->GetRootWindow(); |
2140 view_->InitAsChild(nullptr); | 2151 view_->InitAsChild(nullptr); |
2141 aura::client::ParentWindowWithContext( | 2152 aura::client::ParentWindowWithContext( |
2142 view_->GetNativeView(), root_window, gfx::Rect(size1)); | 2153 view_->GetNativeView(), root_window, gfx::Rect(size1)); |
2143 view_->Show(); | 2154 view_->Show(); |
2144 view_->SetSize(size1); | 2155 view_->SetSize(size1); |
2145 view_->OnSwapCompositorFrame( | 2156 view_->OnSwapCompositorFrame( |
2146 0, MakeDelegatedFrame(1.f, size1, gfx::Rect(size1))); | 2157 0, kArbitraryLocalSurfaceId, |
| 2158 MakeDelegatedFrame(1.f, size1, gfx::Rect(size1))); |
2147 ui::DrawWaiterForTest::WaitForCommit( | 2159 ui::DrawWaiterForTest::WaitForCommit( |
2148 root_window->GetHost()->compositor()); | 2160 root_window->GetHost()->compositor()); |
2149 ViewHostMsg_UpdateRect_Params update_params; | 2161 ViewHostMsg_UpdateRect_Params update_params; |
2150 update_params.view_size = size1; | 2162 update_params.view_size = size1; |
2151 update_params.flags = ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK; | 2163 update_params.flags = ViewHostMsg_UpdateRect_Flags::IS_RESIZE_ACK; |
2152 widget_host_->OnMessageReceived( | 2164 widget_host_->OnMessageReceived( |
2153 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params)); | 2165 ViewHostMsg_UpdateRect(widget_host_->GetRoutingID(), update_params)); |
2154 sink_->ClearMessages(); | 2166 sink_->ClearMessages(); |
2155 // Resize logic is idle (no pending resize, no pending commit). | 2167 // Resize logic is idle (no pending resize, no pending commit). |
2156 EXPECT_EQ(size1.ToString(), view_->GetRequestedRendererSize().ToString()); | 2168 EXPECT_EQ(size1.ToString(), view_->GetRequestedRendererSize().ToString()); |
(...skipping 17 matching lines...) Expand all Loading... |
2174 | 2186 |
2175 // Resize renderer again, before receiving a frame. Should not produce a | 2187 // Resize renderer again, before receiving a frame. Should not produce a |
2176 // Resize message. | 2188 // Resize message. |
2177 view_->SetSize(size3); | 2189 view_->SetSize(size3); |
2178 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); | 2190 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); |
2179 EXPECT_EQ(0u, sink_->message_count()); | 2191 EXPECT_EQ(0u, sink_->message_count()); |
2180 | 2192 |
2181 // Receive a frame of the new size, should be skipped and not produce a Resize | 2193 // Receive a frame of the new size, should be skipped and not produce a Resize |
2182 // message. | 2194 // message. |
2183 view_->OnSwapCompositorFrame( | 2195 view_->OnSwapCompositorFrame( |
2184 0, MakeDelegatedFrame(1.f, size3, gfx::Rect(size3))); | 2196 0, kArbitraryLocalSurfaceId, |
| 2197 MakeDelegatedFrame(1.f, size3, gfx::Rect(size3))); |
2185 // Expect the frame ack; | 2198 // Expect the frame ack; |
2186 EXPECT_EQ(1u, sink_->message_count()); | 2199 EXPECT_EQ(1u, sink_->message_count()); |
2187 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, | 2200 EXPECT_EQ(ViewMsg_ReclaimCompositorResources::ID, |
2188 sink_->GetMessageAt(0)->type()); | 2201 sink_->GetMessageAt(0)->type()); |
2189 sink_->ClearMessages(); | 2202 sink_->ClearMessages(); |
2190 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); | 2203 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); |
2191 | 2204 |
2192 // Receive a frame of the correct size, should not be skipped and, and should | 2205 // Receive a frame of the correct size, should not be skipped and, and should |
2193 // produce a Resize message after the commit. | 2206 // produce a Resize message after the commit. |
2194 view_->OnSwapCompositorFrame( | 2207 view_->OnSwapCompositorFrame( |
2195 0, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); | 2208 0, kArbitraryLocalSurfaceId, |
| 2209 MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); |
2196 cc::SurfaceId surface_id = view_->surface_id(); | 2210 cc::SurfaceId surface_id = view_->surface_id(); |
2197 if (!surface_id.is_valid()) { | 2211 if (!surface_id.is_valid()) { |
2198 // No frame ack yet. | 2212 // No frame ack yet. |
2199 EXPECT_EQ(0u, sink_->message_count()); | 2213 EXPECT_EQ(0u, sink_->message_count()); |
2200 } else { | 2214 } else { |
2201 // Frame isn't desired size, so early ack. | 2215 // Frame isn't desired size, so early ack. |
2202 EXPECT_EQ(1u, sink_->message_count()); | 2216 EXPECT_EQ(1u, sink_->message_count()); |
2203 } | 2217 } |
2204 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); | 2218 EXPECT_EQ(size2.ToString(), view_->GetRequestedRendererSize().ToString()); |
2205 | 2219 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2256 view_->GetNativeView(), | 2270 view_->GetNativeView(), |
2257 parent_view_->GetNativeView()->GetRootWindow(), | 2271 parent_view_->GetNativeView()->GetRootWindow(), |
2258 gfx::Rect()); | 2272 gfx::Rect()); |
2259 view_->SetSize(view_rect.size()); | 2273 view_->SetSize(view_rect.size()); |
2260 | 2274 |
2261 MockWindowObserver observer; | 2275 MockWindowObserver observer; |
2262 view_->window_->AddObserver(&observer); | 2276 view_->window_->AddObserver(&observer); |
2263 | 2277 |
2264 // A full frame of damage. | 2278 // A full frame of damage. |
2265 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2279 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
2266 view_->OnSwapCompositorFrame( | 2280 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
2267 0, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2281 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2268 testing::Mock::VerifyAndClearExpectations(&observer); | 2282 testing::Mock::VerifyAndClearExpectations(&observer); |
2269 view_->RunOnCompositingDidCommit(); | 2283 view_->RunOnCompositingDidCommit(); |
2270 | 2284 |
2271 // A partial damage frame. | 2285 // A partial damage frame. |
2272 gfx::Rect partial_view_rect(30, 30, 20, 20); | 2286 gfx::Rect partial_view_rect(30, 30, 20, 20); |
2273 EXPECT_CALL(observer, | 2287 EXPECT_CALL(observer, |
2274 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); | 2288 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); |
2275 view_->OnSwapCompositorFrame( | 2289 view_->OnSwapCompositorFrame( |
2276 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); | 2290 0, kArbitraryLocalSurfaceId, |
| 2291 MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); |
2277 testing::Mock::VerifyAndClearExpectations(&observer); | 2292 testing::Mock::VerifyAndClearExpectations(&observer); |
2278 view_->RunOnCompositingDidCommit(); | 2293 view_->RunOnCompositingDidCommit(); |
2279 | 2294 |
2280 // Lock the compositor. Now we should drop frames. | 2295 // Lock the compositor. Now we should drop frames. |
2281 view_rect = gfx::Rect(150, 150); | 2296 view_rect = gfx::Rect(150, 150); |
2282 view_->SetSize(view_rect.size()); | 2297 view_->SetSize(view_rect.size()); |
2283 | 2298 |
2284 // This frame is dropped. | 2299 // This frame is dropped. |
2285 gfx::Rect dropped_damage_rect_1(10, 20, 30, 40); | 2300 gfx::Rect dropped_damage_rect_1(10, 20, 30, 40); |
2286 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); | 2301 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); |
2287 view_->OnSwapCompositorFrame( | 2302 view_->OnSwapCompositorFrame( |
2288 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1)); | 2303 0, kArbitraryLocalSurfaceId, |
| 2304 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_1)); |
2289 testing::Mock::VerifyAndClearExpectations(&observer); | 2305 testing::Mock::VerifyAndClearExpectations(&observer); |
2290 view_->RunOnCompositingDidCommit(); | 2306 view_->RunOnCompositingDidCommit(); |
2291 | 2307 |
2292 gfx::Rect dropped_damage_rect_2(40, 50, 10, 20); | 2308 gfx::Rect dropped_damage_rect_2(40, 50, 10, 20); |
2293 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); | 2309 EXPECT_CALL(observer, OnDelegatedFrameDamage(_, _)).Times(0); |
2294 view_->OnSwapCompositorFrame( | 2310 view_->OnSwapCompositorFrame( |
2295 0, MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2)); | 2311 0, kArbitraryLocalSurfaceId, |
| 2312 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect_2)); |
2296 testing::Mock::VerifyAndClearExpectations(&observer); | 2313 testing::Mock::VerifyAndClearExpectations(&observer); |
2297 view_->RunOnCompositingDidCommit(); | 2314 view_->RunOnCompositingDidCommit(); |
2298 | 2315 |
2299 // Unlock the compositor. This frame should damage everything. | 2316 // Unlock the compositor. This frame should damage everything. |
2300 frame_size = view_rect.size(); | 2317 frame_size = view_rect.size(); |
2301 | 2318 |
2302 gfx::Rect new_damage_rect(5, 6, 10, 10); | 2319 gfx::Rect new_damage_rect(5, 6, 10, 10); |
2303 EXPECT_CALL(observer, | 2320 EXPECT_CALL(observer, |
2304 OnDelegatedFrameDamage(view_->window_, view_rect)); | 2321 OnDelegatedFrameDamage(view_->window_, view_rect)); |
2305 view_->OnSwapCompositorFrame( | 2322 view_->OnSwapCompositorFrame( |
2306 0, MakeDelegatedFrame(1.f, frame_size, new_damage_rect)); | 2323 0, kArbitraryLocalSurfaceId, |
| 2324 MakeDelegatedFrame(1.f, frame_size, new_damage_rect)); |
2307 testing::Mock::VerifyAndClearExpectations(&observer); | 2325 testing::Mock::VerifyAndClearExpectations(&observer); |
2308 view_->RunOnCompositingDidCommit(); | 2326 view_->RunOnCompositingDidCommit(); |
2309 | 2327 |
2310 // A partial damage frame, this should not be dropped. | 2328 // A partial damage frame, this should not be dropped. |
2311 EXPECT_CALL(observer, | 2329 EXPECT_CALL(observer, |
2312 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); | 2330 OnDelegatedFrameDamage(view_->window_, partial_view_rect)); |
2313 view_->OnSwapCompositorFrame( | 2331 view_->OnSwapCompositorFrame( |
2314 0, MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); | 2332 0, kArbitraryLocalSurfaceId, |
| 2333 MakeDelegatedFrame(1.f, frame_size, partial_view_rect)); |
2315 testing::Mock::VerifyAndClearExpectations(&observer); | 2334 testing::Mock::VerifyAndClearExpectations(&observer); |
2316 view_->RunOnCompositingDidCommit(); | 2335 view_->RunOnCompositingDidCommit(); |
2317 | 2336 |
2318 | 2337 |
2319 // Resize to something empty. | 2338 // Resize to something empty. |
2320 view_rect = gfx::Rect(100, 0); | 2339 view_rect = gfx::Rect(100, 0); |
2321 view_->SetSize(view_rect.size()); | 2340 view_->SetSize(view_rect.size()); |
2322 | 2341 |
2323 // We're never expecting empty frames, resize to something non-empty. | 2342 // We're never expecting empty frames, resize to something non-empty. |
2324 view_rect = gfx::Rect(100, 100); | 2343 view_rect = gfx::Rect(100, 100); |
2325 view_->SetSize(view_rect.size()); | 2344 view_->SetSize(view_rect.size()); |
2326 | 2345 |
2327 // This frame should not be dropped. | 2346 // This frame should not be dropped. |
2328 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2347 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
2329 view_->OnSwapCompositorFrame( | 2348 view_->OnSwapCompositorFrame( |
2330 0, MakeDelegatedFrame(1.f, view_rect.size(), view_rect)); | 2349 0, kArbitraryLocalSurfaceId, |
| 2350 MakeDelegatedFrame(1.f, view_rect.size(), view_rect)); |
2331 testing::Mock::VerifyAndClearExpectations(&observer); | 2351 testing::Mock::VerifyAndClearExpectations(&observer); |
2332 view_->RunOnCompositingDidCommit(); | 2352 view_->RunOnCompositingDidCommit(); |
2333 | 2353 |
2334 view_->window_->RemoveObserver(&observer); | 2354 view_->window_->RemoveObserver(&observer); |
2335 } | 2355 } |
2336 | 2356 |
2337 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) { | 2357 TEST_F(RenderWidgetHostViewAuraTest, OutputSurfaceIdChange) { |
2338 gfx::Rect view_rect(100, 100); | 2358 gfx::Rect view_rect(100, 100); |
2339 gfx::Size frame_size = view_rect.size(); | 2359 gfx::Size frame_size = view_rect.size(); |
2340 | 2360 |
2341 view_->InitAsChild(nullptr); | 2361 view_->InitAsChild(nullptr); |
2342 aura::client::ParentWindowWithContext( | 2362 aura::client::ParentWindowWithContext( |
2343 view_->GetNativeView(), | 2363 view_->GetNativeView(), |
2344 parent_view_->GetNativeView()->GetRootWindow(), | 2364 parent_view_->GetNativeView()->GetRootWindow(), |
2345 gfx::Rect()); | 2365 gfx::Rect()); |
2346 view_->SetSize(view_rect.size()); | 2366 view_->SetSize(view_rect.size()); |
2347 | 2367 |
2348 MockWindowObserver observer; | 2368 MockWindowObserver observer; |
2349 view_->window_->AddObserver(&observer); | 2369 view_->window_->AddObserver(&observer); |
2350 | 2370 |
2351 // Swap a frame. | 2371 // Swap a frame. |
2352 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2372 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
2353 view_->OnSwapCompositorFrame( | 2373 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, |
2354 0, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2374 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2355 testing::Mock::VerifyAndClearExpectations(&observer); | 2375 testing::Mock::VerifyAndClearExpectations(&observer); |
2356 view_->RunOnCompositingDidCommit(); | 2376 view_->RunOnCompositingDidCommit(); |
2357 | 2377 |
2358 // Swap a frame with a different surface id. | 2378 // Swap a frame with a different surface id. |
2359 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2379 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
2360 view_->OnSwapCompositorFrame( | 2380 view_->OnSwapCompositorFrame(1, CreateLocalSurfaceId(), |
2361 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2381 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2362 testing::Mock::VerifyAndClearExpectations(&observer); | 2382 testing::Mock::VerifyAndClearExpectations(&observer); |
2363 view_->RunOnCompositingDidCommit(); | 2383 view_->RunOnCompositingDidCommit(); |
2364 | 2384 |
2365 // Swap an empty frame, with a different surface id. | 2385 // Swap an empty frame, with a different surface id. |
2366 view_->OnSwapCompositorFrame( | 2386 view_->OnSwapCompositorFrame( |
2367 2, MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect())); | 2387 2, CreateLocalSurfaceId(), |
| 2388 MakeDelegatedFrame(1.f, gfx::Size(), gfx::Rect())); |
2368 testing::Mock::VerifyAndClearExpectations(&observer); | 2389 testing::Mock::VerifyAndClearExpectations(&observer); |
2369 view_->RunOnCompositingDidCommit(); | 2390 view_->RunOnCompositingDidCommit(); |
2370 | 2391 |
2371 // Swap another frame, with a different surface id. | 2392 // Swap another frame, with a different surface id. |
2372 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); | 2393 EXPECT_CALL(observer, OnDelegatedFrameDamage(view_->window_, view_rect)); |
2373 view_->OnSwapCompositorFrame(3, | 2394 view_->OnSwapCompositorFrame(3, CreateLocalSurfaceId(), |
2374 MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2395 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2375 testing::Mock::VerifyAndClearExpectations(&observer); | 2396 testing::Mock::VerifyAndClearExpectations(&observer); |
2376 view_->RunOnCompositingDidCommit(); | 2397 view_->RunOnCompositingDidCommit(); |
2377 | 2398 |
2378 view_->window_->RemoveObserver(&observer); | 2399 view_->window_->RemoveObserver(&observer); |
2379 } | 2400 } |
2380 | 2401 |
2381 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) { | 2402 TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFrames) { |
2382 view_->InitAsChild(nullptr); | 2403 view_->InitAsChild(nullptr); |
2383 | 2404 |
(...skipping 24 matching lines...) Expand all Loading... |
2408 views[i]->GetNativeView(), | 2429 views[i]->GetNativeView(), |
2409 parent_view_->GetNativeView()->GetRootWindow(), | 2430 parent_view_->GetNativeView()->GetRootWindow(), |
2410 gfx::Rect()); | 2431 gfx::Rect()); |
2411 views[i]->SetSize(view_rect.size()); | 2432 views[i]->SetSize(view_rect.size()); |
2412 } | 2433 } |
2413 | 2434 |
2414 // Make each renderer visible, and swap a frame on it, then make it invisible. | 2435 // Make each renderer visible, and swap a frame on it, then make it invisible. |
2415 for (size_t i = 0; i < renderer_count; ++i) { | 2436 for (size_t i = 0; i < renderer_count; ++i) { |
2416 views[i]->Show(); | 2437 views[i]->Show(); |
2417 views[i]->OnSwapCompositorFrame( | 2438 views[i]->OnSwapCompositorFrame( |
2418 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2439 1, kArbitraryLocalSurfaceId, |
| 2440 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2419 EXPECT_TRUE(views[i]->HasFrameData()); | 2441 EXPECT_TRUE(views[i]->HasFrameData()); |
2420 views[i]->Hide(); | 2442 views[i]->Hide(); |
2421 } | 2443 } |
2422 | 2444 |
2423 // There should be max_renderer_frames with a frame in it, and one without it. | 2445 // There should be max_renderer_frames with a frame in it, and one without it. |
2424 // Since the logic is LRU eviction, the first one should be without. | 2446 // Since the logic is LRU eviction, the first one should be without. |
2425 EXPECT_FALSE(views[0]->HasFrameData()); | 2447 EXPECT_FALSE(views[0]->HasFrameData()); |
2426 for (size_t i = 1; i < renderer_count; ++i) | 2448 for (size_t i = 1; i < renderer_count; ++i) |
2427 EXPECT_TRUE(views[i]->HasFrameData()); | 2449 EXPECT_TRUE(views[i]->HasFrameData()); |
2428 | 2450 |
2429 // LRU renderer is [0], make it visible, it shouldn't evict anything yet. | 2451 // LRU renderer is [0], make it visible, it shouldn't evict anything yet. |
2430 views[0]->Show(); | 2452 views[0]->Show(); |
2431 EXPECT_FALSE(views[0]->HasFrameData()); | 2453 EXPECT_FALSE(views[0]->HasFrameData()); |
2432 EXPECT_TRUE(views[1]->HasFrameData()); | 2454 EXPECT_TRUE(views[1]->HasFrameData()); |
2433 // Since [0] doesn't have a frame, it should be waiting for the renderer to | 2455 // Since [0] doesn't have a frame, it should be waiting for the renderer to |
2434 // give it one. | 2456 // give it one. |
2435 EXPECT_TRUE(views[0]->released_front_lock_active()); | 2457 EXPECT_TRUE(views[0]->released_front_lock_active()); |
2436 | 2458 |
2437 // Swap a frame on it, it should evict the next LRU [1]. | 2459 // Swap a frame on it, it should evict the next LRU [1]. |
2438 views[0]->OnSwapCompositorFrame( | 2460 views[0]->OnSwapCompositorFrame( |
2439 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2461 1, kArbitraryLocalSurfaceId, |
| 2462 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2440 EXPECT_TRUE(views[0]->HasFrameData()); | 2463 EXPECT_TRUE(views[0]->HasFrameData()); |
2441 EXPECT_FALSE(views[1]->HasFrameData()); | 2464 EXPECT_FALSE(views[1]->HasFrameData()); |
2442 // Now that [0] got a frame, it shouldn't be waiting any more. | 2465 // Now that [0] got a frame, it shouldn't be waiting any more. |
2443 EXPECT_FALSE(views[0]->released_front_lock_active()); | 2466 EXPECT_FALSE(views[0]->released_front_lock_active()); |
2444 views[0]->Hide(); | 2467 views[0]->Hide(); |
2445 | 2468 |
2446 // LRU renderer is [1], still hidden. Swap a frame on it, it should evict | 2469 // LRU renderer is [1], still hidden. Swap a frame on it, it should evict |
2447 // the next LRU [2]. | 2470 // the next LRU [2]. |
2448 views[1]->OnSwapCompositorFrame( | 2471 views[1]->OnSwapCompositorFrame( |
2449 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2472 1, kArbitraryLocalSurfaceId, |
| 2473 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2450 EXPECT_TRUE(views[0]->HasFrameData()); | 2474 EXPECT_TRUE(views[0]->HasFrameData()); |
2451 EXPECT_TRUE(views[1]->HasFrameData()); | 2475 EXPECT_TRUE(views[1]->HasFrameData()); |
2452 EXPECT_FALSE(views[2]->HasFrameData()); | 2476 EXPECT_FALSE(views[2]->HasFrameData()); |
2453 for (size_t i = 3; i < renderer_count; ++i) | 2477 for (size_t i = 3; i < renderer_count; ++i) |
2454 EXPECT_TRUE(views[i]->HasFrameData()); | 2478 EXPECT_TRUE(views[i]->HasFrameData()); |
2455 | 2479 |
2456 // Make all renderers but [0] visible and swap a frame on them, keep [0] | 2480 // Make all renderers but [0] visible and swap a frame on them, keep [0] |
2457 // hidden, it becomes the LRU. | 2481 // hidden, it becomes the LRU. |
2458 for (size_t i = 1; i < renderer_count; ++i) { | 2482 for (size_t i = 1; i < renderer_count; ++i) { |
2459 views[i]->Show(); | 2483 views[i]->Show(); |
2460 // The renderers who don't have a frame should be waiting. The ones that | 2484 // The renderers who don't have a frame should be waiting. The ones that |
2461 // have a frame should not. | 2485 // have a frame should not. |
2462 // In practice, [1] has a frame, but anything after has its frame evicted. | 2486 // In practice, [1] has a frame, but anything after has its frame evicted. |
2463 EXPECT_EQ(!views[i]->HasFrameData(), | 2487 EXPECT_EQ(!views[i]->HasFrameData(), |
2464 views[i]->released_front_lock_active()); | 2488 views[i]->released_front_lock_active()); |
2465 views[i]->OnSwapCompositorFrame( | 2489 views[i]->OnSwapCompositorFrame( |
2466 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2490 1, kArbitraryLocalSurfaceId, |
| 2491 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2467 // Now everyone has a frame. | 2492 // Now everyone has a frame. |
2468 EXPECT_FALSE(views[i]->released_front_lock_active()); | 2493 EXPECT_FALSE(views[i]->released_front_lock_active()); |
2469 EXPECT_TRUE(views[i]->HasFrameData()); | 2494 EXPECT_TRUE(views[i]->HasFrameData()); |
2470 } | 2495 } |
2471 EXPECT_FALSE(views[0]->HasFrameData()); | 2496 EXPECT_FALSE(views[0]->HasFrameData()); |
2472 | 2497 |
2473 // Swap a frame on [0], it should be evicted immediately. | 2498 // Swap a frame on [0], it should be evicted immediately. |
2474 views[0]->OnSwapCompositorFrame( | 2499 views[0]->OnSwapCompositorFrame( |
2475 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2500 1, kArbitraryLocalSurfaceId, |
| 2501 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2476 EXPECT_FALSE(views[0]->HasFrameData()); | 2502 EXPECT_FALSE(views[0]->HasFrameData()); |
2477 | 2503 |
2478 // Make [0] visible, and swap a frame on it. Nothing should be evicted | 2504 // Make [0] visible, and swap a frame on it. Nothing should be evicted |
2479 // although we're above the limit. | 2505 // although we're above the limit. |
2480 views[0]->Show(); | 2506 views[0]->Show(); |
2481 // We don't have a frame, wait. | 2507 // We don't have a frame, wait. |
2482 EXPECT_TRUE(views[0]->released_front_lock_active()); | 2508 EXPECT_TRUE(views[0]->released_front_lock_active()); |
2483 views[0]->OnSwapCompositorFrame( | 2509 views[0]->OnSwapCompositorFrame( |
2484 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2510 1, kArbitraryLocalSurfaceId, |
| 2511 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2485 EXPECT_FALSE(views[0]->released_front_lock_active()); | 2512 EXPECT_FALSE(views[0]->released_front_lock_active()); |
2486 for (size_t i = 0; i < renderer_count; ++i) | 2513 for (size_t i = 0; i < renderer_count; ++i) |
2487 EXPECT_TRUE(views[i]->HasFrameData()); | 2514 EXPECT_TRUE(views[i]->HasFrameData()); |
2488 | 2515 |
2489 // Make [0] hidden, it should evict its frame. | 2516 // Make [0] hidden, it should evict its frame. |
2490 views[0]->Hide(); | 2517 views[0]->Hide(); |
2491 EXPECT_FALSE(views[0]->HasFrameData()); | 2518 EXPECT_FALSE(views[0]->HasFrameData()); |
2492 | 2519 |
2493 // Make [0] visible, don't give it a frame, it should be waiting. | 2520 // Make [0] visible, don't give it a frame, it should be waiting. |
2494 views[0]->Show(); | 2521 views[0]->Show(); |
2495 EXPECT_TRUE(views[0]->released_front_lock_active()); | 2522 EXPECT_TRUE(views[0]->released_front_lock_active()); |
2496 // Make [0] hidden, it should stop waiting. | 2523 // Make [0] hidden, it should stop waiting. |
2497 views[0]->Hide(); | 2524 views[0]->Hide(); |
2498 EXPECT_FALSE(views[0]->released_front_lock_active()); | 2525 EXPECT_FALSE(views[0]->released_front_lock_active()); |
2499 | 2526 |
2500 // Make [1] hidden, resize it. It should drop its frame. | 2527 // Make [1] hidden, resize it. It should drop its frame. |
2501 views[1]->Hide(); | 2528 views[1]->Hide(); |
2502 EXPECT_TRUE(views[1]->HasFrameData()); | 2529 EXPECT_TRUE(views[1]->HasFrameData()); |
2503 gfx::Size size2(200, 200); | 2530 gfx::Size size2(200, 200); |
2504 views[1]->SetSize(size2); | 2531 views[1]->SetSize(size2); |
2505 EXPECT_FALSE(views[1]->HasFrameData()); | 2532 EXPECT_FALSE(views[1]->HasFrameData()); |
2506 // Show it, it should block until we give it a frame. | 2533 // Show it, it should block until we give it a frame. |
2507 views[1]->Show(); | 2534 views[1]->Show(); |
2508 EXPECT_TRUE(views[1]->released_front_lock_active()); | 2535 EXPECT_TRUE(views[1]->released_front_lock_active()); |
2509 views[1]->OnSwapCompositorFrame( | 2536 views[1]->OnSwapCompositorFrame( |
2510 1, MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); | 2537 1, kArbitraryLocalSurfaceId, |
| 2538 MakeDelegatedFrame(1.f, size2, gfx::Rect(size2))); |
2511 EXPECT_FALSE(views[1]->released_front_lock_active()); | 2539 EXPECT_FALSE(views[1]->released_front_lock_active()); |
2512 | 2540 |
2513 for (size_t i = 0; i < renderer_count - 1; ++i) | 2541 for (size_t i = 0; i < renderer_count - 1; ++i) |
2514 views[i]->Hide(); | 2542 views[i]->Hide(); |
2515 | 2543 |
2516 // Allocate enough bitmaps so that two frames (proportionally) would be | 2544 // Allocate enough bitmaps so that two frames (proportionally) would be |
2517 // enough hit the handle limit. | 2545 // enough hit the handle limit. |
2518 int handles_per_frame = 5; | 2546 int handles_per_frame = 5; |
2519 RendererFrameManager::GetInstance()->set_max_handles(handles_per_frame * 2); | 2547 RendererFrameManager::GetInstance()->set_max_handles(handles_per_frame * 2); |
2520 | 2548 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2574 parent_view_->GetNativeView()->GetRootWindow(), | 2602 parent_view_->GetNativeView()->GetRootWindow(), |
2575 gfx::Rect()); | 2603 gfx::Rect()); |
2576 views[i]->SetSize(view_rect.size()); | 2604 views[i]->SetSize(view_rect.size()); |
2577 } | 2605 } |
2578 | 2606 |
2579 // Make each renderer visible and swap a frame on it. No eviction should | 2607 // Make each renderer visible and swap a frame on it. No eviction should |
2580 // occur because all frames are visible. | 2608 // occur because all frames are visible. |
2581 for (size_t i = 0; i < renderer_count; ++i) { | 2609 for (size_t i = 0; i < renderer_count; ++i) { |
2582 views[i]->Show(); | 2610 views[i]->Show(); |
2583 views[i]->OnSwapCompositorFrame( | 2611 views[i]->OnSwapCompositorFrame( |
2584 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2612 1, i ? CreateLocalSurfaceId() : kArbitraryLocalSurfaceId, |
| 2613 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2585 EXPECT_TRUE(views[i]->HasFrameData()); | 2614 EXPECT_TRUE(views[i]->HasFrameData()); |
2586 } | 2615 } |
2587 | 2616 |
2588 // If we hide [0], then [0] should be evicted. | 2617 // If we hide [0], then [0] should be evicted. |
2589 views[0]->Hide(); | 2618 views[0]->Hide(); |
2590 EXPECT_FALSE(views[0]->HasFrameData()); | 2619 EXPECT_FALSE(views[0]->HasFrameData()); |
2591 | 2620 |
2592 // If we lock [0] before hiding it, then [0] should not be evicted. | 2621 // If we lock [0] before hiding it, then [0] should not be evicted. |
2593 views[0]->Show(); | 2622 views[0]->Show(); |
2594 views[0]->OnSwapCompositorFrame( | 2623 views[0]->OnSwapCompositorFrame( |
2595 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2624 1, kArbitraryLocalSurfaceId, |
| 2625 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2596 EXPECT_TRUE(views[0]->HasFrameData()); | 2626 EXPECT_TRUE(views[0]->HasFrameData()); |
2597 views[0]->GetDelegatedFrameHost()->LockResources(); | 2627 views[0]->GetDelegatedFrameHost()->LockResources(); |
2598 views[0]->Hide(); | 2628 views[0]->Hide(); |
2599 EXPECT_TRUE(views[0]->HasFrameData()); | 2629 EXPECT_TRUE(views[0]->HasFrameData()); |
2600 | 2630 |
2601 // If we unlock [0] now, then [0] should be evicted. | 2631 // If we unlock [0] now, then [0] should be evicted. |
2602 views[0]->GetDelegatedFrameHost()->UnlockResources(); | 2632 views[0]->GetDelegatedFrameHost()->UnlockResources(); |
2603 EXPECT_FALSE(views[0]->HasFrameData()); | 2633 EXPECT_FALSE(views[0]->HasFrameData()); |
2604 | 2634 |
2605 for (size_t i = 0; i < renderer_count; ++i) { | 2635 for (size_t i = 0; i < renderer_count; ++i) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2645 parent_view_->GetNativeView()->GetRootWindow(), | 2675 parent_view_->GetNativeView()->GetRootWindow(), |
2646 gfx::Rect()); | 2676 gfx::Rect()); |
2647 views[i]->SetSize(view_rect.size()); | 2677 views[i]->SetSize(view_rect.size()); |
2648 } | 2678 } |
2649 | 2679 |
2650 // Make each renderer visible and swap a frame on it. No eviction should | 2680 // Make each renderer visible and swap a frame on it. No eviction should |
2651 // occur because all frames are visible. | 2681 // occur because all frames are visible. |
2652 for (size_t i = 0; i < renderer_count; ++i) { | 2682 for (size_t i = 0; i < renderer_count; ++i) { |
2653 views[i]->Show(); | 2683 views[i]->Show(); |
2654 views[i]->OnSwapCompositorFrame( | 2684 views[i]->OnSwapCompositorFrame( |
2655 1, MakeDelegatedFrame(1.f, frame_size, view_rect)); | 2685 1, kArbitraryLocalSurfaceId, |
| 2686 MakeDelegatedFrame(1.f, frame_size, view_rect)); |
2656 EXPECT_TRUE(views[i]->HasFrameData()); | 2687 EXPECT_TRUE(views[i]->HasFrameData()); |
2657 } | 2688 } |
2658 | 2689 |
2659 // If we hide one, it should not get evicted. | 2690 // If we hide one, it should not get evicted. |
2660 views[0]->Hide(); | 2691 views[0]->Hide(); |
2661 base::RunLoop().RunUntilIdle(); | 2692 base::RunLoop().RunUntilIdle(); |
2662 EXPECT_TRUE(views[0]->HasFrameData()); | 2693 EXPECT_TRUE(views[0]->HasFrameData()); |
2663 // Using a lesser memory pressure event however, should evict. | 2694 // Using a lesser memory pressure event however, should evict. |
2664 SimulateMemoryPressure( | 2695 SimulateMemoryPressure( |
2665 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE); | 2696 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE); |
2666 base::RunLoop().RunUntilIdle(); | 2697 base::RunLoop().RunUntilIdle(); |
2667 EXPECT_FALSE(views[0]->HasFrameData()); | 2698 EXPECT_FALSE(views[0]->HasFrameData()); |
2668 | 2699 |
2669 // Check the same for a higher pressure event. | 2700 // Check the same for a higher pressure event. |
2670 views[1]->Hide(); | 2701 views[1]->Hide(); |
2671 base::RunLoop().RunUntilIdle(); | 2702 base::RunLoop().RunUntilIdle(); |
2672 EXPECT_TRUE(views[1]->HasFrameData()); | 2703 EXPECT_TRUE(views[1]->HasFrameData()); |
2673 SimulateMemoryPressure( | 2704 SimulateMemoryPressure( |
2674 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); | 2705 base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL); |
2675 base::RunLoop().RunUntilIdle(); | 2706 base::RunLoop().RunUntilIdle(); |
2676 EXPECT_FALSE(views[1]->HasFrameData()); | 2707 EXPECT_FALSE(views[1]->HasFrameData()); |
2677 | 2708 |
2678 for (size_t i = 0; i < renderer_count; ++i) { | 2709 for (size_t i = 0; i < renderer_count; ++i) { |
2679 views[i]->Destroy(); | 2710 views[i]->Destroy(); |
2680 delete hosts[i]; | 2711 delete hosts[i]; |
2681 } | 2712 } |
2682 } | 2713 } |
2683 | 2714 |
2684 TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) { | |
2685 gfx::Rect view_rect(100, 100); | |
2686 gfx::Size frame_size(100, 100); | |
2687 | |
2688 view_->InitAsChild(nullptr); | |
2689 aura::client::ParentWindowWithContext( | |
2690 view_->GetNativeView(), | |
2691 parent_view_->GetNativeView()->GetRootWindow(), | |
2692 gfx::Rect()); | |
2693 view_->SetSize(view_rect.size()); | |
2694 view_->Show(); | |
2695 | |
2696 // With a 1x DPI UI and 1x DPI Renderer. | |
2697 view_->OnSwapCompositorFrame( | |
2698 1, MakeDelegatedFrame(1.f, frame_size, gfx::Rect(frame_size))); | |
2699 | |
2700 cc::SurfaceId surface_id = view_->surface_id(); | |
2701 | |
2702 // This frame will have the same number of physical pixels, but has a new | |
2703 // scale on it. | |
2704 view_->OnSwapCompositorFrame( | |
2705 1, MakeDelegatedFrame(2.f, frame_size, gfx::Rect(frame_size))); | |
2706 | |
2707 // When we get a new frame with the same frame size in physical pixels, but | |
2708 // a different scale, we should generate a surface, as the final result will | |
2709 // need to be scaled differently to the screen. | |
2710 EXPECT_NE(surface_id, view_->surface_id()); | |
2711 } | |
2712 | |
2713 TEST_F(RenderWidgetHostViewAuraTest, SourceEventTypeExistsInLatencyInfo) { | 2715 TEST_F(RenderWidgetHostViewAuraTest, SourceEventTypeExistsInLatencyInfo) { |
2714 // WHEEL source exists. | 2716 // WHEEL source exists. |
2715 ui::ScrollEvent scroll(ui::ET_SCROLL, gfx::Point(2, 2), ui::EventTimeForNow(), | 2717 ui::ScrollEvent scroll(ui::ET_SCROLL, gfx::Point(2, 2), ui::EventTimeForNow(), |
2716 0, 0, 0, 0, 0, 2); | 2718 0, 0, 0, 0, 0, 2); |
2717 view_->OnScrollEvent(&scroll); | 2719 view_->OnScrollEvent(&scroll); |
2718 EXPECT_EQ(widget_host_->lastWheelOrTouchEventLatencyInfo.source_event_type(), | 2720 EXPECT_EQ(widget_host_->lastWheelOrTouchEventLatencyInfo.source_event_type(), |
2719 ui::SourceEventType::WHEEL); | 2721 ui::SourceEventType::WHEEL); |
2720 | 2722 |
2721 // TOUCH source exists. | 2723 // TOUCH source exists. |
2722 ui::TouchEvent press( | 2724 ui::TouchEvent press( |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2779 | 2781 |
2780 { | 2782 { |
2781 cc::BeginFrameArgs args = | 2783 cc::BeginFrameArgs args = |
2782 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 5u); | 2784 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 5u); |
2783 source.TestOnBeginFrame(args); | 2785 source.TestOnBeginFrame(args); |
2784 | 2786 |
2785 // Ack from CompositorFrame is forwarded. | 2787 // Ack from CompositorFrame is forwarded. |
2786 cc::BeginFrameAck ack(source_id, 5, 4, 0, true); | 2788 cc::BeginFrameAck ack(source_id, 5, 4, 0, true); |
2787 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); | 2789 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); |
2788 frame.metadata.begin_frame_ack = ack; | 2790 frame.metadata.begin_frame_ack = ack; |
2789 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2791 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
2790 view_->RunOnCompositingDidCommit(); | 2792 view_->RunOnCompositingDidCommit(); |
2791 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2793 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
2792 } | 2794 } |
2793 | 2795 |
2794 { | 2796 { |
2795 cc::BeginFrameArgs args = | 2797 cc::BeginFrameArgs args = |
2796 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 6u); | 2798 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 6u); |
2797 source.TestOnBeginFrame(args); | 2799 source.TestOnBeginFrame(args); |
2798 | 2800 |
2799 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. | 2801 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. |
(...skipping 12 matching lines...) Expand all Loading... |
2812 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 7u); | 2814 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, source_id, 7u); |
2813 source.TestOnBeginFrame(args); | 2815 source.TestOnBeginFrame(args); |
2814 | 2816 |
2815 // Ack from CompositorFrame is forwarded with old | 2817 // Ack from CompositorFrame is forwarded with old |
2816 // latest_confirmed_sequence_number and without damage. | 2818 // latest_confirmed_sequence_number and without damage. |
2817 cc::BeginFrameAck ack(source_id, 7, 7, 0, true); | 2819 cc::BeginFrameAck ack(source_id, 7, 7, 0, true); |
2818 gfx::Rect dropped_damage_rect(10, 20, 30, 40); | 2820 gfx::Rect dropped_damage_rect(10, 20, 30, 40); |
2819 cc::CompositorFrame frame = | 2821 cc::CompositorFrame frame = |
2820 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); | 2822 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); |
2821 frame.metadata.begin_frame_ack = ack; | 2823 frame.metadata.begin_frame_ack = ack; |
2822 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2824 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
2823 view_->RunOnCompositingDidCommit(); | 2825 view_->RunOnCompositingDidCommit(); |
2824 ack.latest_confirmed_sequence_number = 4; | 2826 ack.latest_confirmed_sequence_number = 4; |
2825 ack.has_damage = false; | 2827 ack.has_damage = false; |
2826 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2828 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
2827 } | 2829 } |
2828 | 2830 |
2829 // Change source_id known to the view. This should reset the | 2831 // Change source_id known to the view. This should reset the |
2830 // latest_confirmed_sequence_number tracked by the view. | 2832 // latest_confirmed_sequence_number tracked by the view. |
2831 source_id = cc::BeginFrameArgs::kManualSourceId; | 2833 source_id = cc::BeginFrameArgs::kManualSourceId; |
2832 | 2834 |
2833 { | 2835 { |
2834 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2836 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
2835 BEGINFRAME_FROM_HERE, source_id, 10u); | 2837 BEGINFRAME_FROM_HERE, source_id, 10u); |
2836 source.TestOnBeginFrame(args); | 2838 source.TestOnBeginFrame(args); |
2837 | 2839 |
2838 // Ack from CompositorFrame is forwarded with invalid | 2840 // Ack from CompositorFrame is forwarded with invalid |
2839 // latest_confirmed_sequence_number and without damage. | 2841 // latest_confirmed_sequence_number and without damage. |
2840 cc::BeginFrameAck ack(source_id, 10, 10, 0, true); | 2842 cc::BeginFrameAck ack(source_id, 10, 10, 0, true); |
2841 gfx::Rect dropped_damage_rect(10, 20, 30, 40); | 2843 gfx::Rect dropped_damage_rect(10, 20, 30, 40); |
2842 cc::CompositorFrame frame = | 2844 cc::CompositorFrame frame = |
2843 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); | 2845 MakeDelegatedFrame(1.f, frame_size, dropped_damage_rect); |
2844 frame.metadata.begin_frame_ack = ack; | 2846 frame.metadata.begin_frame_ack = ack; |
2845 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2847 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
2846 view_->RunOnCompositingDidCommit(); | 2848 view_->RunOnCompositingDidCommit(); |
2847 ack.latest_confirmed_sequence_number = | 2849 ack.latest_confirmed_sequence_number = |
2848 cc::BeginFrameArgs::kInvalidFrameNumber; | 2850 cc::BeginFrameArgs::kInvalidFrameNumber; |
2849 ack.has_damage = false; | 2851 ack.has_damage = false; |
2850 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2852 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
2851 } | 2853 } |
2852 | 2854 |
2853 { | 2855 { |
2854 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2856 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
2855 BEGINFRAME_FROM_HERE, source_id, 11u); | 2857 BEGINFRAME_FROM_HERE, source_id, 11u); |
(...skipping 13 matching lines...) Expand all Loading... |
2869 | 2871 |
2870 { | 2872 { |
2871 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2873 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
2872 BEGINFRAME_FROM_HERE, source_id, 12u); | 2874 BEGINFRAME_FROM_HERE, source_id, 12u); |
2873 source.TestOnBeginFrame(args); | 2875 source.TestOnBeginFrame(args); |
2874 | 2876 |
2875 // Ack from CompositorFrame is forwarded. | 2877 // Ack from CompositorFrame is forwarded. |
2876 cc::BeginFrameAck ack(source_id, 12, 12, 0, true); | 2878 cc::BeginFrameAck ack(source_id, 12, 12, 0, true); |
2877 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); | 2879 cc::CompositorFrame frame = MakeDelegatedFrame(1.f, frame_size, view_rect); |
2878 frame.metadata.begin_frame_ack = ack; | 2880 frame.metadata.begin_frame_ack = ack; |
2879 view_->OnSwapCompositorFrame(0, std::move(frame)); | 2881 view_->OnSwapCompositorFrame(0, kArbitraryLocalSurfaceId, std::move(frame)); |
2880 view_->RunOnCompositingDidCommit(); | 2882 view_->RunOnCompositingDidCommit(); |
2881 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); | 2883 EXPECT_EQ(ack, source.LastAckForObserver(observer_tracker.last_observer_)); |
2882 } | 2884 } |
2883 | 2885 |
2884 { | 2886 { |
2885 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( | 2887 cc::BeginFrameArgs args = cc::CreateBeginFrameArgsForTesting( |
2886 BEGINFRAME_FROM_HERE, source_id, 13u); | 2888 BEGINFRAME_FROM_HERE, source_id, 13u); |
2887 source.TestOnBeginFrame(args); | 2889 source.TestOnBeginFrame(args); |
2888 | 2890 |
2889 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. | 2891 // Explicit ack through OnBeginFrameDidNotSwap is forwarded. |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2941 } | 2943 } |
2942 | 2944 |
2943 void InstallFakeTickClock() { | 2945 void InstallFakeTickClock() { |
2944 // Create a fake tick clock and transfer ownership to the frame host. | 2946 // Create a fake tick clock and transfer ownership to the frame host. |
2945 tick_clock_ = new base::SimpleTestTickClock(); | 2947 tick_clock_ = new base::SimpleTestTickClock(); |
2946 view_->GetDelegatedFrameHost()->tick_clock_ = base::WrapUnique(tick_clock_); | 2948 view_->GetDelegatedFrameHost()->tick_clock_ = base::WrapUnique(tick_clock_); |
2947 } | 2949 } |
2948 | 2950 |
2949 void OnSwapCompositorFrame() { | 2951 void OnSwapCompositorFrame() { |
2950 view_->OnSwapCompositorFrame( | 2952 view_->OnSwapCompositorFrame( |
2951 1, MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_)); | 2953 1, kArbitraryLocalSurfaceId, |
| 2954 MakeDelegatedFrame(1.f, view_rect_.size(), view_rect_)); |
2952 cc::SurfaceId surface_id = | 2955 cc::SurfaceId surface_id = |
2953 view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); | 2956 view_->GetDelegatedFrameHost()->SurfaceIdForTesting(); |
2954 if (surface_id.is_valid()) | 2957 if (surface_id.is_valid()) |
2955 view_->GetDelegatedFrameHost()->WillDrawSurface( | 2958 view_->GetDelegatedFrameHost()->WillDrawSurface( |
2956 surface_id.local_surface_id(), view_rect_); | 2959 surface_id.local_surface_id(), view_rect_); |
2957 ASSERT_TRUE(view_->last_copy_request_); | 2960 ASSERT_TRUE(view_->last_copy_request_); |
2958 } | 2961 } |
2959 | 2962 |
2960 void ReleaseSwappedFrame() { | 2963 void ReleaseSwappedFrame() { |
2961 std::unique_ptr<cc::CopyOutputRequest> request = | 2964 std::unique_ptr<cc::CopyOutputRequest> request = |
(...skipping 2042 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5004 // There is no composition in the beginning. | 5007 // There is no composition in the beginning. |
5005 EXPECT_FALSE(has_composition_text()); | 5008 EXPECT_FALSE(has_composition_text()); |
5006 SetHasCompositionTextToTrue(); | 5009 SetHasCompositionTextToTrue(); |
5007 view->ImeCancelComposition(); | 5010 view->ImeCancelComposition(); |
5008 // The composition must have been canceled. | 5011 // The composition must have been canceled. |
5009 EXPECT_FALSE(has_composition_text()); | 5012 EXPECT_FALSE(has_composition_text()); |
5010 } | 5013 } |
5011 } | 5014 } |
5012 | 5015 |
5013 } // namespace content | 5016 } // namespace content |
OLD | NEW |