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_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 <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 30 matching lines...) Expand all Loading... |
41 RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame( | 41 RenderWidgetHostViewChildFrame::RenderWidgetHostViewChildFrame( |
42 RenderWidgetHost* widget_host) | 42 RenderWidgetHost* widget_host) |
43 : host_(RenderWidgetHostImpl::From(widget_host)), | 43 : host_(RenderWidgetHostImpl::From(widget_host)), |
44 next_surface_sequence_(1u), | 44 next_surface_sequence_(1u), |
45 last_output_surface_id_(0), | 45 last_output_surface_id_(0), |
46 current_surface_scale_factor_(1.f), | 46 current_surface_scale_factor_(1.f), |
47 ack_pending_count_(0), | 47 ack_pending_count_(0), |
48 frame_connector_(nullptr), | 48 frame_connector_(nullptr), |
49 begin_frame_source_(nullptr), | 49 begin_frame_source_(nullptr), |
50 observing_begin_frame_source_(false), | 50 observing_begin_frame_source_(false), |
51 parent_surface_id_namespace_(0), | 51 parent_surface_client_id_(0), |
52 weak_factory_(this) { | 52 weak_factory_(this) { |
53 id_allocator_ = CreateSurfaceIdAllocator(); | 53 id_allocator_ = CreateSurfaceIdAllocator(); |
54 RegisterSurfaceNamespaceId(); | 54 RegisterSurfaceNamespaceId(); |
55 | 55 |
56 host_->SetView(this); | 56 host_->SetView(this); |
57 } | 57 } |
58 | 58 |
59 RenderWidgetHostViewChildFrame::~RenderWidgetHostViewChildFrame() { | 59 RenderWidgetHostViewChildFrame::~RenderWidgetHostViewChildFrame() { |
60 if (!surface_id_.is_null()) | 60 if (!surface_id_.is_null()) |
61 surface_factory_->Destroy(surface_id_); | 61 surface_factory_->Destroy(surface_id_); |
62 } | 62 } |
63 | 63 |
64 void RenderWidgetHostViewChildFrame::SetCrossProcessFrameConnector( | 64 void RenderWidgetHostViewChildFrame::SetCrossProcessFrameConnector( |
65 CrossProcessFrameConnector* frame_connector) { | 65 CrossProcessFrameConnector* frame_connector) { |
66 if (frame_connector_ == frame_connector) | 66 if (frame_connector_ == frame_connector) |
67 return; | 67 return; |
68 | 68 |
69 if (frame_connector_) { | 69 if (frame_connector_) { |
70 if (parent_surface_id_namespace_) { | 70 if (parent_surface_client_id_) { |
71 GetSurfaceManager()->UnregisterSurfaceNamespaceHierarchy( | 71 GetSurfaceManager()->UnregisterSurfaceNamespaceHierarchy( |
72 parent_surface_id_namespace_, GetSurfaceIdNamespace()); | 72 parent_surface_client_id_, GetSurfaceClientId()); |
73 } | 73 } |
74 // Unregister the client here, as it is not guaranteed in tests that the | 74 // Unregister the client here, as it is not guaranteed in tests that the |
75 // destructor will be called. | 75 // destructor will be called. |
76 GetSurfaceManager()->UnregisterSurfaceFactoryClient( | 76 GetSurfaceManager()->UnregisterSurfaceFactoryClient( |
77 id_allocator_->id_namespace()); | 77 id_allocator_->client_id()); |
78 | 78 |
79 parent_surface_id_namespace_ = 0; | 79 parent_surface_client_id_ = 0; |
80 } | 80 } |
81 frame_connector_ = frame_connector; | 81 frame_connector_ = frame_connector; |
82 if (frame_connector_) { | 82 if (frame_connector_) { |
83 GetSurfaceManager()->RegisterSurfaceFactoryClient( | 83 GetSurfaceManager()->RegisterSurfaceFactoryClient( |
84 id_allocator_->id_namespace(), this); | 84 id_allocator_->client_id(), this); |
85 RenderWidgetHostViewBase* parent_view = | 85 RenderWidgetHostViewBase* parent_view = |
86 frame_connector_->GetParentRenderWidgetHostView(); | 86 frame_connector_->GetParentRenderWidgetHostView(); |
87 if (parent_view) { | 87 if (parent_view) { |
88 parent_surface_id_namespace_ = parent_view->GetSurfaceIdNamespace(); | 88 parent_surface_client_id_ = parent_view->GetSurfaceClientId(); |
89 DCHECK_NE(parent_surface_id_namespace_, 0u); | 89 DCHECK_NE(parent_surface_client_id_, 0u); |
90 GetSurfaceManager()->RegisterSurfaceNamespaceHierarchy( | 90 GetSurfaceManager()->RegisterSurfaceNamespaceHierarchy( |
91 parent_surface_id_namespace_, GetSurfaceIdNamespace()); | 91 parent_surface_client_id_, GetSurfaceClientId()); |
92 } | 92 } |
93 } | 93 } |
94 } | 94 } |
95 | 95 |
96 void RenderWidgetHostViewChildFrame::InitAsChild( | 96 void RenderWidgetHostViewChildFrame::InitAsChild( |
97 gfx::NativeView parent_view) { | 97 gfx::NativeView parent_view) { |
98 NOTREACHED(); | 98 NOTREACHED(); |
99 } | 99 } |
100 | 100 |
101 bool RenderWidgetHostViewChildFrame::OnMessageReceived( | 101 bool RenderWidgetHostViewChildFrame::OnMessageReceived( |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
261 | 261 |
262 void RenderWidgetHostViewChildFrame::RenderProcessGone( | 262 void RenderWidgetHostViewChildFrame::RenderProcessGone( |
263 base::TerminationStatus status, | 263 base::TerminationStatus status, |
264 int error_code) { | 264 int error_code) { |
265 if (frame_connector_) | 265 if (frame_connector_) |
266 frame_connector_->RenderProcessGone(); | 266 frame_connector_->RenderProcessGone(); |
267 Destroy(); | 267 Destroy(); |
268 } | 268 } |
269 | 269 |
270 void RenderWidgetHostViewChildFrame::Destroy() { | 270 void RenderWidgetHostViewChildFrame::Destroy() { |
271 // SurfaceIdNamespaces registered with RenderWidgetHostInputEventRouter | 271 // SurfaceClientIds registered with RenderWidgetHostInputEventRouter |
272 // have already been cleared when RenderWidgetHostViewBase notified its | 272 // have already been cleared when RenderWidgetHostViewBase notified its |
273 // observers of our impending destruction. | 273 // observers of our impending destruction. |
274 if (frame_connector_) { | 274 if (frame_connector_) { |
275 frame_connector_->set_view(nullptr); | 275 frame_connector_->set_view(nullptr); |
276 SetCrossProcessFrameConnector(nullptr); | 276 SetCrossProcessFrameConnector(nullptr); |
277 } | 277 } |
278 | 278 |
279 // We notify our observers about shutdown here since we are about to release | 279 // We notify our observers about shutdown here since we are about to release |
280 // host_ and do not want any event calls coming from | 280 // host_ and do not want any event calls coming from |
281 // RenderWidgetHostInputEventRouter afterwards. | 281 // RenderWidgetHostInputEventRouter afterwards. |
(...skipping 21 matching lines...) Expand all Loading... |
303 | 303 |
304 void RenderWidgetHostViewChildFrame::UnlockCompositingSurface() { | 304 void RenderWidgetHostViewChildFrame::UnlockCompositingSurface() { |
305 NOTIMPLEMENTED(); | 305 NOTIMPLEMENTED(); |
306 } | 306 } |
307 | 307 |
308 void RenderWidgetHostViewChildFrame::RegisterSurfaceNamespaceId() { | 308 void RenderWidgetHostViewChildFrame::RegisterSurfaceNamespaceId() { |
309 // If Destroy() has been called before we get here, host_ may be null. | 309 // If Destroy() has been called before we get here, host_ may be null. |
310 if (host_ && host_->delegate() && host_->delegate()->GetInputEventRouter()) { | 310 if (host_ && host_->delegate() && host_->delegate()->GetInputEventRouter()) { |
311 RenderWidgetHostInputEventRouter* router = | 311 RenderWidgetHostInputEventRouter* router = |
312 host_->delegate()->GetInputEventRouter(); | 312 host_->delegate()->GetInputEventRouter(); |
313 if (!router->is_registered(GetSurfaceIdNamespace())) | 313 if (!router->is_registered(GetSurfaceClientId())) |
314 router->AddSurfaceIdNamespaceOwner(GetSurfaceIdNamespace(), this); | 314 router->AddSurfaceClientIdOwner(GetSurfaceClientId(), this); |
315 } | 315 } |
316 } | 316 } |
317 | 317 |
318 void RenderWidgetHostViewChildFrame::UnregisterSurfaceNamespaceId() { | 318 void RenderWidgetHostViewChildFrame::UnregisterSurfaceNamespaceId() { |
319 DCHECK(host_); | 319 DCHECK(host_); |
320 if (host_->delegate() && host_->delegate()->GetInputEventRouter()) { | 320 if (host_->delegate() && host_->delegate()->GetInputEventRouter()) { |
321 host_->delegate()->GetInputEventRouter()->RemoveSurfaceIdNamespaceOwner( | 321 host_->delegate()->GetInputEventRouter()->RemoveSurfaceClientIdOwner( |
322 GetSurfaceIdNamespace()); | 322 GetSurfaceClientId()); |
323 } | 323 } |
324 } | 324 } |
325 | 325 |
326 void RenderWidgetHostViewChildFrame::GestureEventAck( | 326 void RenderWidgetHostViewChildFrame::GestureEventAck( |
327 const blink::WebGestureEvent& event, | 327 const blink::WebGestureEvent& event, |
328 InputEventAckState ack_result) { | 328 InputEventAckState ack_result) { |
329 bool not_consumed = ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED || | 329 bool not_consumed = ack_result == INPUT_EVENT_ACK_STATE_NOT_CONSUMED || |
330 ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS; | 330 ack_result == INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS; |
331 // GestureScrollBegin is consumed by the target frame and not forwarded, | 331 // GestureScrollBegin is consumed by the target frame and not forwarded, |
332 // because we don't know whether we will need to bubble scroll until we | 332 // because we don't know whether we will need to bubble scroll until we |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 if (!surface_factory_) { | 391 if (!surface_factory_) { |
392 cc::SurfaceManager* manager = GetSurfaceManager(); | 392 cc::SurfaceManager* manager = GetSurfaceManager(); |
393 surface_factory_ = base::WrapUnique(new cc::SurfaceFactory(manager, this)); | 393 surface_factory_ = base::WrapUnique(new cc::SurfaceFactory(manager, this)); |
394 } | 394 } |
395 | 395 |
396 if (surface_id_.is_null()) { | 396 if (surface_id_.is_null()) { |
397 surface_id_ = id_allocator_->GenerateId(); | 397 surface_id_ = id_allocator_->GenerateId(); |
398 surface_factory_->Create(surface_id_); | 398 surface_factory_->Create(surface_id_); |
399 | 399 |
400 cc::SurfaceSequence sequence = cc::SurfaceSequence( | 400 cc::SurfaceSequence sequence = cc::SurfaceSequence( |
401 id_allocator_->id_namespace(), next_surface_sequence_++); | 401 id_allocator_->client_id(), next_surface_sequence_++); |
402 // The renderer process will satisfy this dependency when it creates a | 402 // The renderer process will satisfy this dependency when it creates a |
403 // SurfaceLayer. | 403 // SurfaceLayer. |
404 cc::SurfaceManager* manager = GetSurfaceManager(); | 404 cc::SurfaceManager* manager = GetSurfaceManager(); |
405 manager->GetSurfaceForId(surface_id_)->AddDestructionDependency(sequence); | 405 manager->GetSurfaceForId(surface_id_)->AddDestructionDependency(sequence); |
406 frame_connector_->SetChildFrameSurface(surface_id_, frame_size, | 406 frame_connector_->SetChildFrameSurface(surface_id_, frame_size, |
407 scale_factor, sequence); | 407 scale_factor, sequence); |
408 } | 408 } |
409 | 409 |
410 cc::SurfaceFactory::DrawCallback ack_callback = | 410 cc::SurfaceFactory::DrawCallback ack_callback = |
411 base::Bind(&RenderWidgetHostViewChildFrame::SurfaceDrawn, AsWeakPtr(), | 411 base::Bind(&RenderWidgetHostViewChildFrame::SurfaceDrawn, AsWeakPtr(), |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
472 | 472 |
473 RenderWidgetHostViewBase* root_view = | 473 RenderWidgetHostViewBase* root_view = |
474 frame_connector_->GetRootRenderWidgetHostView(); | 474 frame_connector_->GetRootRenderWidgetHostView(); |
475 | 475 |
476 if (root_view) | 476 if (root_view) |
477 return root_view->IsMouseLocked(); | 477 return root_view->IsMouseLocked(); |
478 | 478 |
479 return false; | 479 return false; |
480 } | 480 } |
481 | 481 |
482 uint32_t RenderWidgetHostViewChildFrame::GetSurfaceIdNamespace() { | 482 uint32_t RenderWidgetHostViewChildFrame::GetSurfaceClientId() { |
483 return id_allocator_->id_namespace(); | 483 return id_allocator_->client_id(); |
484 } | 484 } |
485 | 485 |
486 void RenderWidgetHostViewChildFrame::ProcessKeyboardEvent( | 486 void RenderWidgetHostViewChildFrame::ProcessKeyboardEvent( |
487 const NativeWebKeyboardEvent& event) { | 487 const NativeWebKeyboardEvent& event) { |
488 host_->ForwardKeyboardEvent(event); | 488 host_->ForwardKeyboardEvent(event); |
489 } | 489 } |
490 | 490 |
491 void RenderWidgetHostViewChildFrame::ProcessMouseEvent( | 491 void RenderWidgetHostViewChildFrame::ProcessMouseEvent( |
492 const blink::WebMouseEvent& event, | 492 const blink::WebMouseEvent& event, |
493 const ui::LatencyInfo& latency) { | 493 const ui::LatencyInfo& latency) { |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 | 683 |
684 bool RenderWidgetHostViewChildFrame::IsChildFrameForTesting() const { | 684 bool RenderWidgetHostViewChildFrame::IsChildFrameForTesting() const { |
685 return true; | 685 return true; |
686 } | 686 } |
687 | 687 |
688 cc::SurfaceId RenderWidgetHostViewChildFrame::SurfaceIdForTesting() const { | 688 cc::SurfaceId RenderWidgetHostViewChildFrame::SurfaceIdForTesting() const { |
689 return surface_id_; | 689 return surface_id_; |
690 }; | 690 }; |
691 | 691 |
692 } // namespace content | 692 } // namespace content |
OLD | NEW |