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

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

Issue 1473913003: Restore original WebView SurfaceId after showing interstitial. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
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_child_frame.h" 5 #include "content/browser/frame_host/render_widget_host_view_child_frame.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "cc/surfaces/surface.h" 10 #include "cc/surfaces/surface.h"
(...skipping 15 matching lines...) Expand all
26 #include "content/public/common/browser_plugin_guest_mode.h" 26 #include "content/public/common/browser_plugin_guest_mode.h"
27 #include "ui/gfx/geometry/size_conversions.h" 27 #include "ui/gfx/geometry/size_conversions.h"
28 #include "ui/gfx/geometry/size_f.h" 28 #include "ui/gfx/geometry/size_f.h"
29 29
30 namespace content { 30 namespace content {
31 31
32 RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame( 32 RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame(
33 RenderWidgetHost* widget_host) 33 RenderWidgetHost* widget_host)
34 : host_(RenderWidgetHostImpl::From(widget_host)), 34 : host_(RenderWidgetHostImpl::From(widget_host)),
35 use_surfaces_(UseSurfacesEnabled()), 35 use_surfaces_(UseSurfacesEnabled()),
36 next_surface_sequence_(1u),
37 last_output_surface_id_(0), 36 last_output_surface_id_(0),
38 current_surface_scale_factor_(1.f), 37 current_surface_scale_factor_(1.f),
39 ack_pending_count_(0), 38 ack_pending_count_(0),
40 frame_connector_(nullptr), 39 frame_connector_(nullptr),
41 weak_factory_(this) { 40 weak_factory_(this) {
42 if (use_surfaces_) { 41 if (use_surfaces_) {
43 id_allocator_ = CreateSurfaceIdAllocator(); 42 id_allocator_ = CreateSurfaceIdAllocator();
44 if (host_->delegate() && host_->delegate()->GetInputEventRouter()) { 43 if (host_->delegate() && host_->delegate()->GetInputEventRouter()) {
45 host_->delegate()->GetInputEventRouter()->AddSurfaceIdNamespaceOwner( 44 host_->delegate()->GetInputEventRouter()->AddSurfaceIdNamespaceOwner(
46 GetSurfaceIdNamespace(), this); 45 GetSurfaceIdNamespace(), this);
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 292
294 if (!surface_factory_) { 293 if (!surface_factory_) {
295 cc::SurfaceManager* manager = GetSurfaceManager(); 294 cc::SurfaceManager* manager = GetSurfaceManager();
296 surface_factory_ = make_scoped_ptr(new cc::SurfaceFactory(manager, this)); 295 surface_factory_ = make_scoped_ptr(new cc::SurfaceFactory(manager, this));
297 } 296 }
298 297
299 if (surface_id_.is_null()) { 298 if (surface_id_.is_null()) {
300 surface_id_ = id_allocator_->GenerateId(); 299 surface_id_ = id_allocator_->GenerateId();
301 surface_factory_->Create(surface_id_); 300 surface_factory_->Create(surface_id_);
302 301
303 cc::SurfaceSequence sequence = cc::SurfaceSequence( 302 surface_sequence_ = cc::SurfaceSequence(
304 id_allocator_->id_namespace(), next_surface_sequence_++); 303 id_allocator_->id_namespace(), surface_sequence_.sequence + 1);
305 // The renderer process will satisfy this dependency when it creates a 304 // The renderer process will satisfy this dependency when it creates a
306 // SurfaceLayer. 305 // SurfaceLayer.
307 cc::SurfaceManager* manager = GetSurfaceManager(); 306 cc::SurfaceManager* manager = GetSurfaceManager();
308 manager->GetSurfaceForId(surface_id_)->AddDestructionDependency(sequence); 307 manager->GetSurfaceForId(surface_id_)
308 ->AddDestructionDependency(surface_sequence_);
309 frame_connector_->SetChildFrameSurface(surface_id_, frame_size, 309 frame_connector_->SetChildFrameSurface(surface_id_, frame_size,
310 scale_factor, sequence); 310 scale_factor, surface_sequence_);
311 } 311 }
312 312
313 cc::SurfaceFactory::DrawCallback ack_callback = 313 cc::SurfaceFactory::DrawCallback ack_callback =
314 base::Bind(&RenderWidgetHostViewChildFrame::SurfaceDrawn, AsWeakPtr(), 314 base::Bind(&RenderWidgetHostViewChildFrame::SurfaceDrawn, AsWeakPtr(),
315 output_surface_id); 315 output_surface_id);
316 ack_pending_count_++; 316 ack_pending_count_++;
317 // If this value grows very large, something is going wrong. 317 // If this value grows very large, something is going wrong.
318 DCHECK_LT(ack_pending_count_, 1000U); 318 DCHECK_LT(ack_pending_count_, 1000U);
319 surface_factory_->SubmitCompositorFrame(surface_id_, frame.Pass(), 319 surface_factory_->SubmitCompositorFrame(surface_id_, frame.Pass(),
320 ack_callback); 320 ack_callback);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 #endif 484 #endif
485 } 485 }
486 486
487 void RenderWidgetHostViewChildFrame::ClearCompositorSurfaceIfNecessary() { 487 void RenderWidgetHostViewChildFrame::ClearCompositorSurfaceIfNecessary() {
488 if (surface_factory_ && !surface_id_.is_null()) 488 if (surface_factory_ && !surface_id_.is_null())
489 surface_factory_->Destroy(surface_id_); 489 surface_factory_->Destroy(surface_id_);
490 surface_id_ = cc::SurfaceId(); 490 surface_id_ = cc::SurfaceId();
491 } 491 }
492 492
493 } // namespace content 493 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698