| 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 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 bool is_guest_view_hack) | 363 bool is_guest_view_hack) |
| 364 : host_(RenderWidgetHostImpl::From(host)), | 364 : host_(RenderWidgetHostImpl::From(host)), |
| 365 window_(nullptr), | 365 window_(nullptr), |
| 366 in_shutdown_(false), | 366 in_shutdown_(false), |
| 367 in_bounds_changed_(false), | 367 in_bounds_changed_(false), |
| 368 popup_parent_host_view_(nullptr), | 368 popup_parent_host_view_(nullptr), |
| 369 popup_child_host_view_(nullptr), | 369 popup_child_host_view_(nullptr), |
| 370 is_loading_(false), | 370 is_loading_(false), |
| 371 has_composition_text_(false), | 371 has_composition_text_(false), |
| 372 begin_frame_source_(nullptr), | 372 begin_frame_source_(nullptr), |
| 373 oldest_incorporated_frame_(0), |
| 373 needs_begin_frames_(false), | 374 needs_begin_frames_(false), |
| 374 needs_flush_input_(false), | 375 needs_flush_input_(false), |
| 375 added_frame_observer_(false), | 376 added_frame_observer_(false), |
| 376 cursor_visibility_state_in_renderer_(UNKNOWN), | 377 cursor_visibility_state_in_renderer_(UNKNOWN), |
| 377 #if defined(OS_WIN) | 378 #if defined(OS_WIN) |
| 378 legacy_render_widget_host_HWND_(nullptr), | 379 legacy_render_widget_host_HWND_(nullptr), |
| 379 legacy_window_destroyed_(false), | 380 legacy_window_destroyed_(false), |
| 380 virtual_keyboard_requested_(false), | 381 virtual_keyboard_requested_(false), |
| 381 #endif | 382 #endif |
| 382 has_snapped_to_boundary_(false), | 383 has_snapped_to_boundary_(false), |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 669 if (needs_frame == added_frame_observer_) | 670 if (needs_frame == added_frame_observer_) |
| 670 return; | 671 return; |
| 671 | 672 |
| 672 added_frame_observer_ = needs_frame; | 673 added_frame_observer_ = needs_frame; |
| 673 if (needs_frame) | 674 if (needs_frame) |
| 674 begin_frame_source_->AddObserver(this); | 675 begin_frame_source_->AddObserver(this); |
| 675 else | 676 else |
| 676 begin_frame_source_->RemoveObserver(this); | 677 begin_frame_source_->RemoveObserver(this); |
| 677 } | 678 } |
| 678 | 679 |
| 679 void RenderWidgetHostViewAura::OnBeginFrame( | 680 void RenderWidgetHostViewAura::OnBeginFrame(const cc::BeginFrameArgs& args) { |
| 680 const cc::BeginFrameArgs& args) { | 681 if (args.source_id != last_begin_frame_args_.source_id) { |
| 682 // Consider us up to date up to the previous BeginFrame. |
| 683 oldest_incorporated_frame_ = |
| 684 args.sequence_number > 0 ? args.sequence_number - 1 : 0; |
| 685 } |
| 686 |
| 681 needs_flush_input_ = false; | 687 needs_flush_input_ = false; |
| 682 host_->FlushInput(); | 688 host_->FlushInput(); |
| 683 UpdateNeedsBeginFramesInternal(); | 689 UpdateNeedsBeginFramesInternal(); |
| 684 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); | 690 host_->Send(new ViewMsg_BeginFrame(host_->GetRoutingID(), args)); |
| 685 last_begin_frame_args_ = args; | 691 last_begin_frame_args_ = args; |
| 686 } | 692 } |
| 687 | 693 |
| 688 const cc::BeginFrameArgs& RenderWidgetHostViewAura::LastUsedBeginFrameArgs() | 694 const cc::BeginFrameArgs& RenderWidgetHostViewAura::LastUsedBeginFrameArgs() |
| 689 const { | 695 const { |
| 690 return last_begin_frame_args_; | 696 return last_begin_frame_args_; |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 928 | 934 |
| 929 start_edge_top.Scale(viewportToDIPScale); | 935 start_edge_top.Scale(viewportToDIPScale); |
| 930 start_edge_bottom.Scale(viewportToDIPScale); | 936 start_edge_bottom.Scale(viewportToDIPScale); |
| 931 end_edge_top.Scale(viewportToDIPScale); | 937 end_edge_top.Scale(viewportToDIPScale); |
| 932 end_edge_bottom.Scale(viewportToDIPScale); | 938 end_edge_bottom.Scale(viewportToDIPScale); |
| 933 | 939 |
| 934 selection.start.SetEdge(start_edge_top, start_edge_bottom); | 940 selection.start.SetEdge(start_edge_top, start_edge_bottom); |
| 935 selection.end.SetEdge(end_edge_top, end_edge_bottom); | 941 selection.end.SetEdge(end_edge_top, end_edge_bottom); |
| 936 } | 942 } |
| 937 | 943 |
| 944 uint64_t begin_frame_source_id = frame.metadata.begin_frame_source_id; |
| 945 uint64_t begin_frame_number = frame.metadata.begin_frame_number; |
| 946 uint64_t oldest_incorporated_frame = frame.metadata.oldest_incorporated_frame; |
| 947 |
| 938 delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id, | 948 delegated_frame_host_->SwapDelegatedFrame(compositor_frame_sink_id, |
| 939 std::move(frame)); | 949 std::move(frame)); |
| 940 SelectionUpdated(selection.is_editable, selection.is_empty_text_form_control, | 950 SelectionUpdated(selection.is_editable, selection.is_empty_text_form_control, |
| 941 selection.start, selection.end); | 951 selection.start, selection.end); |
| 952 |
| 953 // The CompositorFrame's updates were only incorporated if it wasn't skipped. |
| 954 bool has_updates = false; |
| 955 if (!delegated_frame_host_->skipped_frames()) { |
| 956 oldest_incorporated_frame_ = oldest_incorporated_frame; |
| 957 has_updates = true; |
| 958 } |
| 959 |
| 960 cc::BeginFrameAck ack(begin_frame_source_id, begin_frame_number, |
| 961 oldest_incorporated_frame_, 0, has_updates); |
| 962 if (begin_frame_source_) |
| 963 begin_frame_source_->DidFinishFrame(this, ack); |
| 964 } |
| 965 |
| 966 void RenderWidgetHostViewAura::OnBeginFrameDidNotDraw(cc::BeginFrameAck ack) { |
| 967 // DelegatedFrameHost may have skipped the last frame(s). |
| 968 ack.oldest_incorporated_frame = oldest_incorporated_frame_; |
| 969 if (begin_frame_source_) |
| 970 begin_frame_source_->DidFinishFrame(this, ack); |
| 942 } | 971 } |
| 943 | 972 |
| 944 void RenderWidgetHostViewAura::ClearCompositorFrame() { | 973 void RenderWidgetHostViewAura::ClearCompositorFrame() { |
| 945 delegated_frame_host_->ClearDelegatedFrame(); | 974 delegated_frame_host_->ClearDelegatedFrame(); |
| 946 } | 975 } |
| 947 | 976 |
| 948 void RenderWidgetHostViewAura::DidStopFlinging() { | 977 void RenderWidgetHostViewAura::DidStopFlinging() { |
| 949 selection_controller_client_->OnScrollCompleted(); | 978 selection_controller_client_->OnScrollCompleted(); |
| 950 } | 979 } |
| 951 | 980 |
| (...skipping 1436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2388 | 2417 |
| 2389 void RenderWidgetHostViewAura::SetPopupChild( | 2418 void RenderWidgetHostViewAura::SetPopupChild( |
| 2390 RenderWidgetHostViewAura* popup_child_host_view) { | 2419 RenderWidgetHostViewAura* popup_child_host_view) { |
| 2391 popup_child_host_view_ = popup_child_host_view; | 2420 popup_child_host_view_ = popup_child_host_view; |
| 2392 event_handler_->SetPopupChild( | 2421 event_handler_->SetPopupChild( |
| 2393 popup_child_host_view, | 2422 popup_child_host_view, |
| 2394 popup_child_host_view ? popup_child_host_view->event_handler() : nullptr); | 2423 popup_child_host_view ? popup_child_host_view->event_handler() : nullptr); |
| 2395 } | 2424 } |
| 2396 | 2425 |
| 2397 } // namespace content | 2426 } // namespace content |
| OLD | NEW |