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

Side by Side Diff: content/browser/frame_host/render_widget_host_view_guest_unittest.cc

Issue 1199963011: Force new surface on BrowserPluginGuest reattach. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test, and add check for null surface id in test. Created 5 years, 5 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
« no previous file with comments | « content/browser/frame_host/render_widget_host_view_guest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_widget_host_view_guest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698