Chromium Code Reviews| 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 <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/auto_reset.h" | 10 #include "base/auto_reset.h" |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 380 bool is_guest_view_hack) | 380 bool is_guest_view_hack) |
| 381 : host_(RenderWidgetHostImpl::From(host)), | 381 : host_(RenderWidgetHostImpl::From(host)), |
| 382 window_(nullptr), | 382 window_(nullptr), |
| 383 in_shutdown_(false), | 383 in_shutdown_(false), |
| 384 in_bounds_changed_(false), | 384 in_bounds_changed_(false), |
| 385 popup_parent_host_view_(nullptr), | 385 popup_parent_host_view_(nullptr), |
| 386 popup_child_host_view_(nullptr), | 386 popup_child_host_view_(nullptr), |
| 387 is_loading_(false), | 387 is_loading_(false), |
| 388 has_composition_text_(false), | 388 has_composition_text_(false), |
| 389 begin_frame_source_(nullptr), | 389 begin_frame_source_(nullptr), |
| 390 latest_confirmed_begin_frame_sequence_number_( | |
| 391 cc::BeginFrameArgs::kInvalidFrameNumber), | |
| 390 needs_begin_frames_(false), | 392 needs_begin_frames_(false), |
| 391 needs_flush_input_(false), | 393 needs_flush_input_(false), |
| 392 added_frame_observer_(false), | 394 added_frame_observer_(false), |
| 393 cursor_visibility_state_in_renderer_(UNKNOWN), | 395 cursor_visibility_state_in_renderer_(UNKNOWN), |
| 394 #if defined(OS_WIN) | 396 #if defined(OS_WIN) |
| 395 legacy_render_widget_host_HWND_(nullptr), | 397 legacy_render_widget_host_HWND_(nullptr), |
| 396 legacy_window_destroyed_(false), | 398 legacy_window_destroyed_(false), |
| 397 virtual_keyboard_requested_(false), | 399 virtual_keyboard_requested_(false), |
| 398 #endif | 400 #endif |
| 399 has_snapped_to_boundary_(false), | 401 has_snapped_to_boundary_(false), |
| (...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 668 if (needs_frame == added_frame_observer_) | 670 if (needs_frame == added_frame_observer_) |
| 669 return; | 671 return; |
| 670 | 672 |
| 671 added_frame_observer_ = needs_frame; | 673 added_frame_observer_ = needs_frame; |
| 672 if (needs_frame) | 674 if (needs_frame) |
| 673 begin_frame_source_->AddObserver(this); | 675 begin_frame_source_->AddObserver(this); |
| 674 else | 676 else |
| 675 begin_frame_source_->RemoveObserver(this); | 677 begin_frame_source_->RemoveObserver(this); |
| 676 } | 678 } |
| 677 | 679 |
| 678 void RenderWidgetHostViewAura::OnBeginFrame( | 680 void RenderWidgetHostViewAura::OnBeginFrame(const cc::BeginFrameArgs& args) { |
| 679 const cc::BeginFrameArgs& args) { | 681 if (args.source_id != last_begin_frame_args_.source_id) { |
| 682 // Source changed, we don't know our freshness anymore. | |
| 683 latest_confirmed_begin_frame_sequence_number_ = | |
| 684 cc::BeginFrameArgs::kInvalidFrameNumber; | |
| 685 } | |
| 686 | |
| 680 needs_flush_input_ = false; | 687 needs_flush_input_ = false; |
| 681 host_->FlushInput(); | 688 host_->FlushInput(); |
| 682 UpdateNeedsBeginFramesInternal(); | 689 UpdateNeedsBeginFramesInternal(); |
| 683 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); | 690 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); |
| 684 last_begin_frame_args_ = args; | 691 last_begin_frame_args_ = args; |
| 685 } | 692 } |
| 686 | 693 |
| 687 const cc::BeginFrameArgs& RenderWidgetHostViewAura::LastUsedBeginFrameArgs() | 694 const cc::BeginFrameArgs& RenderWidgetHostViewAura::LastUsedBeginFrameArgs() |
| 688 const { | 695 const { |
| 689 return last_begin_frame_args_; | 696 return last_begin_frame_args_; |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 943 selection.start.SetEdge(start_edge_top, start_edge_bottom); | 950 selection.start.SetEdge(start_edge_top, start_edge_bottom); |
| 944 selection.end.SetEdge(end_edge_top, end_edge_bottom); | 951 selection.end.SetEdge(end_edge_top, end_edge_bottom); |
| 945 } | 952 } |
| 946 | 953 |
| 947 if (delegated_frame_host_) { | 954 if (delegated_frame_host_) { |
| 948 delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id, | 955 delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id, |
| 949 std::move(frame)); | 956 std::move(frame)); |
| 950 } | 957 } |
| 951 selection_controller_->OnSelectionBoundsChanged(selection.start, | 958 selection_controller_->OnSelectionBoundsChanged(selection.start, |
| 952 selection.end); | 959 selection.end); |
| 960 | |
| 961 cc::BeginFrameAck ack(frame.metadata.begin_frame_ack); | |
| 962 DCHECK_LE(cc::BeginFrameArgs::kStartingFrameNumber, ack.sequence_number); | |
| 963 // The CompositorFrame's damage was only incorporated if it wasn't skipped. | |
| 964 if (delegated_frame_host_->skipped_frames()) { | |
| 965 ack.has_damage = false; | |
| 966 ack.latest_confirmed_sequence_number = | |
| 967 latest_confirmed_begin_frame_sequence_number_; | |
| 968 } else { | |
| 969 DCHECK(ack.has_damage); | |
| 970 latest_confirmed_begin_frame_sequence_number_ = | |
| 971 ack.latest_confirmed_sequence_number; | |
| 972 } | |
| 973 | |
| 974 if (begin_frame_source_) | |
| 975 begin_frame_source_->DidFinishFrame(this, ack); | |
|
Eric Seckler
2017/03/14 11:13:41
+fsamuel, +brianderson:
Regarding the discussion
Fady Samuel
2017/03/14 11:31:38
Could we do this from Surface::ActivateFrame then,
| |
| 976 } | |
| 977 | |
| 978 void RenderWidgetHostViewAura::OnBeginFrameDidNotDraw( | |
| 979 const cc::BeginFrameAck& ack) { | |
| 980 DCHECK_LE(cc::BeginFrameArgs::kStartingFrameNumber, ack.sequence_number); | |
| 981 DCHECK(!ack.has_damage); | |
| 982 cc::BeginFrameAck modified_ack = ack; | |
| 983 if (delegated_frame_host_->skipped_frames()) { | |
| 984 // If DelegatedFrameHost skipped the last frame(s), we need to wait for a | |
| 985 // newly submitted CompositorFrame before confirming newer sequence numbers. | |
| 986 modified_ack.latest_confirmed_sequence_number = | |
| 987 latest_confirmed_begin_frame_sequence_number_; | |
| 988 } | |
| 989 if (begin_frame_source_) | |
| 990 begin_frame_source_->DidFinishFrame(this, modified_ack); | |
| 953 } | 991 } |
| 954 | 992 |
| 955 void RenderWidgetHostViewAura::ClearCompositorFrame() { | 993 void RenderWidgetHostViewAura::ClearCompositorFrame() { |
| 956 if (delegated_frame_host_) | 994 if (delegated_frame_host_) |
| 957 delegated_frame_host_->ClearDelegatedFrame(); | 995 delegated_frame_host_->ClearDelegatedFrame(); |
| 958 } | 996 } |
| 959 | 997 |
| 960 void RenderWidgetHostViewAura::DidStopFlinging() { | 998 void RenderWidgetHostViewAura::DidStopFlinging() { |
| 961 selection_controller_client_->OnScrollCompleted(); | 999 selection_controller_client_->OnScrollCompleted(); |
| 962 } | 1000 } |
| (...skipping 1413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2376 | 2414 |
| 2377 void RenderWidgetHostViewAura::SetPopupChild( | 2415 void RenderWidgetHostViewAura::SetPopupChild( |
| 2378 RenderWidgetHostViewAura* popup_child_host_view) { | 2416 RenderWidgetHostViewAura* popup_child_host_view) { |
| 2379 popup_child_host_view_ = popup_child_host_view; | 2417 popup_child_host_view_ = popup_child_host_view; |
| 2380 event_handler_->SetPopupChild( | 2418 event_handler_->SetPopupChild( |
| 2381 popup_child_host_view, | 2419 popup_child_host_view, |
| 2382 popup_child_host_view ? popup_child_host_view->event_handler() : nullptr); | 2420 popup_child_host_view ? popup_child_host_view->event_handler() : nullptr); |
| 2383 } | 2421 } |
| 2384 | 2422 |
| 2385 } // namespace content | 2423 } // namespace content |
| OLD | NEW |