OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/frame_host/render_widget_host_view_guest.h" | 5 #include "content/browser/frame_host/render_widget_host_view_guest.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "cc/surfaces/surface.h" | 10 #include "cc/surfaces/surface.h" |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 class TestBrowserPluginGuest : public BrowserPluginGuest { | 94 class TestBrowserPluginGuest : public BrowserPluginGuest { |
95 public: | 95 public: |
96 TestBrowserPluginGuest(WebContentsImpl* web_contents, | 96 TestBrowserPluginGuest(WebContentsImpl* web_contents, |
97 BrowserPluginGuestDelegate* delegate): | 97 BrowserPluginGuestDelegate* delegate): |
98 BrowserPluginGuest(web_contents->HasOpener(), web_contents, delegate), | 98 BrowserPluginGuest(web_contents->HasOpener(), web_contents, delegate), |
99 last_scale_factor_received_(0.f), | 99 last_scale_factor_received_(0.f), |
100 update_scale_factor_received_(0.f), | 100 update_scale_factor_received_(0.f), |
101 received_delegated_frame_(false) {} | 101 received_delegated_frame_(false) {} |
102 ~TestBrowserPluginGuest() override {} | 102 ~TestBrowserPluginGuest() override {} |
103 | 103 |
| 104 void ResetTestData() { |
| 105 update_frame_size_received_= gfx::Size(); |
| 106 update_scale_factor_received_ = 0.f; |
| 107 last_surface_id_received_ = cc::SurfaceId(); |
| 108 last_frame_size_received_ = gfx::Size(); |
| 109 last_scale_factor_received_ = 0.f; |
| 110 received_delegated_frame_ = false; |
| 111 } |
| 112 |
| 113 void set_has_attached_since_surface_set(bool has_attached_since_surface_set) { |
| 114 BrowserPluginGuest::set_has_attached_since_surface_set_for_test( |
| 115 has_attached_since_surface_set); |
| 116 } |
| 117 |
| 118 void set_attached(bool attached) { |
| 119 BrowserPluginGuest::set_attached_for_test(attached); |
| 120 } |
| 121 |
104 void UpdateGuestSizeIfNecessary(const gfx::Size& frame_size, | 122 void UpdateGuestSizeIfNecessary(const gfx::Size& frame_size, |
105 float scale_factor) override { | 123 float scale_factor) override { |
106 update_frame_size_received_= frame_size; | 124 update_frame_size_received_= frame_size; |
107 update_scale_factor_received_ = scale_factor; | 125 update_scale_factor_received_ = scale_factor; |
108 } | 126 } |
109 | 127 |
110 void SwapCompositorFrame(uint32_t output_surface_id, | 128 void SwapCompositorFrame(uint32_t output_surface_id, |
111 int host_process_id, | 129 int host_process_id, |
112 int host_routing_id, | 130 int host_routing_id, |
113 scoped_ptr<cc::CompositorFrame> frame) override { | 131 scoped_ptr<cc::CompositorFrame> frame) override { |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 TEST_F(RenderWidgetHostViewGuestSurfaceTest, TestGuestSurface) { | 245 TEST_F(RenderWidgetHostViewGuestSurfaceTest, TestGuestSurface) { |
228 gfx::Size view_size(100, 100); | 246 gfx::Size view_size(100, 100); |
229 gfx::Rect view_rect(view_size); | 247 gfx::Rect view_rect(view_size); |
230 float scale_factor = 1.f; | 248 float scale_factor = 1.f; |
231 | 249 |
232 ASSERT_TRUE(browser_plugin_guest_); | 250 ASSERT_TRUE(browser_plugin_guest_); |
233 | 251 |
234 view_->SetSize(view_size); | 252 view_->SetSize(view_size); |
235 view_->Show(); | 253 view_->Show(); |
236 | 254 |
| 255 browser_plugin_guest_->set_attached(true); |
237 view_->OnSwapCompositorFrame( | 256 view_->OnSwapCompositorFrame( |
238 0, CreateDelegatedFrame(scale_factor, view_size, view_rect)); | 257 0, CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
239 | 258 |
240 EXPECT_EQ(view_size, browser_plugin_guest_->update_frame_size_received_); | 259 EXPECT_EQ(view_size, browser_plugin_guest_->update_frame_size_received_); |
241 EXPECT_EQ(scale_factor, | 260 EXPECT_EQ(scale_factor, |
242 browser_plugin_guest_->update_scale_factor_received_); | 261 browser_plugin_guest_->update_scale_factor_received_); |
243 | 262 |
244 if (UseSurfacesEnabled()) { | 263 if (UseSurfacesEnabled()) { |
245 cc::SurfaceId id = surface_id(); | 264 cc::SurfaceId id = surface_id(); |
246 if (!id.is_null()) { | 265 if (!id.is_null()) { |
(...skipping 10 matching lines...) Expand all Loading... |
257 EXPECT_EQ(id, browser_plugin_guest_->last_surface_id_received_); | 276 EXPECT_EQ(id, browser_plugin_guest_->last_surface_id_received_); |
258 EXPECT_EQ(view_size, browser_plugin_guest_->last_frame_size_received_); | 277 EXPECT_EQ(view_size, browser_plugin_guest_->last_frame_size_received_); |
259 EXPECT_EQ(scale_factor, | 278 EXPECT_EQ(scale_factor, |
260 browser_plugin_guest_->last_scale_factor_received_); | 279 browser_plugin_guest_->last_scale_factor_received_); |
261 } | 280 } |
262 } else { | 281 } else { |
263 EXPECT_TRUE(browser_plugin_guest_->received_delegated_frame_); | 282 EXPECT_TRUE(browser_plugin_guest_->received_delegated_frame_); |
264 EXPECT_EQ(view_size, browser_plugin_guest_->last_frame_size_received_); | 283 EXPECT_EQ(view_size, browser_plugin_guest_->last_frame_size_received_); |
265 EXPECT_EQ(scale_factor, browser_plugin_guest_->last_scale_factor_received_); | 284 EXPECT_EQ(scale_factor, browser_plugin_guest_->last_scale_factor_received_); |
266 } | 285 } |
| 286 |
| 287 browser_plugin_guest_->ResetTestData(); |
| 288 browser_plugin_guest_->set_has_attached_since_surface_set(true); |
| 289 |
| 290 view_->OnSwapCompositorFrame( |
| 291 0, CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
| 292 |
| 293 if (UseSurfacesEnabled()) { |
| 294 cc::SurfaceId id = surface_id(); |
| 295 if (!id.is_null()) { |
| 296 #if !defined(OS_ANDROID) |
| 297 ImageTransportFactory* factory = ImageTransportFactory::GetInstance(); |
| 298 cc::SurfaceManager* manager = factory->GetSurfaceManager(); |
| 299 cc::Surface* surface = manager->GetSurfaceForId(id); |
| 300 EXPECT_TRUE(surface); |
| 301 // There should be a SurfaceSequence created by the RWHVGuest. |
| 302 EXPECT_EQ(1u, surface->GetDestructionDependencyCount()); |
| 303 #endif |
| 304 // Surface ID should have been passed to BrowserPluginGuest to |
| 305 // be sent to the embedding renderer. |
| 306 EXPECT_EQ(id, browser_plugin_guest_->last_surface_id_received_); |
| 307 EXPECT_EQ(view_size, browser_plugin_guest_->last_frame_size_received_); |
| 308 EXPECT_EQ(scale_factor, |
| 309 browser_plugin_guest_->last_scale_factor_received_); |
| 310 } |
| 311 } else { |
| 312 EXPECT_TRUE(browser_plugin_guest_->received_delegated_frame_); |
| 313 EXPECT_EQ(view_size, browser_plugin_guest_->last_frame_size_received_); |
| 314 EXPECT_EQ(scale_factor, browser_plugin_guest_->last_scale_factor_received_); |
| 315 } |
| 316 |
| 317 browser_plugin_guest_->set_attached(false); |
| 318 browser_plugin_guest_->ResetTestData(); |
| 319 |
| 320 view_->OnSwapCompositorFrame( |
| 321 0, CreateDelegatedFrame(scale_factor, view_size, view_rect)); |
| 322 EXPECT_EQ(gfx::Size(), browser_plugin_guest_->update_frame_size_received_); |
| 323 EXPECT_EQ(0.f, browser_plugin_guest_->update_scale_factor_received_); |
| 324 if (UseSurfacesEnabled()) |
| 325 EXPECT_TRUE(surface_id().is_null()); |
267 } | 326 } |
268 | 327 |
269 } // namespace content | 328 } // namespace content |
OLD | NEW |