| Index: content/browser/renderer_host/render_widget_host_impl.cc
|
| diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
|
| index ccf246bebdf8795eb1103e34fab9d9b23588c3e5..bbb533c7d0e99502406ac8fad1db8e970a49f004 100644
|
| --- a/content/browser/renderer_host/render_widget_host_impl.cc
|
| +++ b/content/browser/renderer_host/render_widget_host_impl.cc
|
| @@ -183,7 +183,6 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
|
| pending_mouse_lock_request_(false),
|
| allow_privileged_mouse_lock_(false),
|
| has_touch_handler_(false),
|
| - last_input_number_(static_cast<int64>(GetProcess()->GetID()) << 32),
|
| subscribe_uniform_enabled_(false),
|
| next_browser_snapshot_id_(1),
|
| weak_factory_(this) {
|
| @@ -218,6 +217,8 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
|
| if (!hidden)
|
| process_->WidgetRestored();
|
|
|
| + latency_tracker_.Initialize(routing_id_, GetProcess()->GetID());
|
| +
|
| input_router_.reset(new InputRouterImpl(
|
| process_, this, this, routing_id_, GetInputRouterConfigForPlatform()));
|
|
|
| @@ -885,11 +886,6 @@ void RenderWidgetHostImpl::ForwardMouseEventWithLatencyInfo(
|
| const ui::LatencyInfo& ui_latency) {
|
| TRACE_EVENT2("input", "RenderWidgetHostImpl::ForwardMouseEvent",
|
| "x", mouse_event.x, "y", mouse_event.y);
|
| - ui::LatencyInfo::InputCoordinate logical_coordinate(mouse_event.x,
|
| - mouse_event.y);
|
| -
|
| - ui::LatencyInfo latency_info = CreateInputEventLatencyInfoIfNotExist(
|
| - &ui_latency, mouse_event.type, &logical_coordinate, 1);
|
|
|
| for (size_t i = 0; i < mouse_event_callbacks_.size(); ++i) {
|
| if (mouse_event_callbacks_[i].Run(mouse_event))
|
| @@ -902,8 +898,9 @@ void RenderWidgetHostImpl::ForwardMouseEventWithLatencyInfo(
|
| if (touch_emulator_ && touch_emulator_->HandleMouseEvent(mouse_event))
|
| return;
|
|
|
| - input_router_->SendMouseEvent(MouseEventWithLatencyInfo(mouse_event,
|
| - latency_info));
|
| + MouseEventWithLatencyInfo mouse_with_latency(mouse_event, ui_latency);
|
| + latency_tracker_.OnInputEvent(mouse_event, &mouse_with_latency.latency);
|
| + input_router_->SendMouseEvent(mouse_with_latency);
|
|
|
| // Pass mouse state to gpu service if the subscribe uniform
|
| // extension is enabled.
|
| @@ -934,20 +931,15 @@ void RenderWidgetHostImpl::ForwardWheelEventWithLatencyInfo(
|
| const ui::LatencyInfo& ui_latency) {
|
| TRACE_EVENT0("input", "RenderWidgetHostImpl::ForwardWheelEvent");
|
|
|
| - ui::LatencyInfo::InputCoordinate logical_coordinate(wheel_event.x,
|
| - wheel_event.y);
|
| -
|
| - ui::LatencyInfo latency_info = CreateInputEventLatencyInfoIfNotExist(
|
| - &ui_latency, wheel_event.type, &logical_coordinate, 1);
|
| -
|
| if (IgnoreInputEvents())
|
| return;
|
|
|
| if (touch_emulator_ && touch_emulator_->HandleMouseWheelEvent(wheel_event))
|
| return;
|
|
|
| - input_router_->SendWheelEvent(MouseWheelEventWithLatencyInfo(wheel_event,
|
| - latency_info));
|
| + MouseWheelEventWithLatencyInfo wheel_with_latency(wheel_event, ui_latency);
|
| + latency_tracker_.OnInputEvent(wheel_event, &wheel_with_latency.latency);
|
| + input_router_->SendWheelEvent(wheel_with_latency);
|
| }
|
|
|
| void RenderWidgetHostImpl::ForwardGestureEvent(
|
| @@ -966,35 +958,8 @@ void RenderWidgetHostImpl::ForwardGestureEventWithLatencyInfo(
|
| if (delegate_->PreHandleGestureEvent(gesture_event))
|
| return;
|
|
|
| - ui::LatencyInfo::InputCoordinate logical_coordinate(gesture_event.x,
|
| - gesture_event.y);
|
| -
|
| - ui::LatencyInfo latency_info = CreateInputEventLatencyInfoIfNotExist(
|
| - &ui_latency, gesture_event.type, &logical_coordinate, 1);
|
| -
|
| - if (gesture_event.type == blink::WebInputEvent::GestureScrollUpdate) {
|
| - latency_info.AddLatencyNumber(
|
| - ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_RWH_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - ++last_input_number_);
|
| -
|
| - // Make a copy of the INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT with a
|
| - // different name INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT.
|
| - // So we can track the latency specifically for scroll update events.
|
| - ui::LatencyInfo::LatencyComponent original_component;
|
| - if (latency_info.FindLatency(ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT,
|
| - 0,
|
| - &original_component)) {
|
| - latency_info.AddLatencyNumberWithTimestamp(
|
| - ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - original_component.sequence_number,
|
| - original_component.event_time,
|
| - original_component.event_count);
|
| - }
|
| - }
|
| -
|
| - GestureEventWithLatencyInfo gesture_with_latency(gesture_event, latency_info);
|
| + GestureEventWithLatencyInfo gesture_with_latency(gesture_event, ui_latency);
|
| + latency_tracker_.OnInputEvent(gesture_event, &gesture_with_latency.latency);
|
| input_router_->SendGestureEvent(gesture_with_latency);
|
| }
|
|
|
| @@ -1002,19 +967,8 @@ void RenderWidgetHostImpl::ForwardEmulatedTouchEvent(
|
| const blink::WebTouchEvent& touch_event) {
|
| TRACE_EVENT0("input", "RenderWidgetHostImpl::ForwardEmulatedTouchEvent");
|
|
|
| - ui::LatencyInfo::InputCoordinate
|
| - logical_coordinates[ui::LatencyInfo::kMaxInputCoordinates];
|
| - size_t logical_coordinates_size =
|
| - std::min(arraysize(logical_coordinates),
|
| - static_cast<size_t>(touch_event.touchesLength));
|
| - for (size_t i = 0; i < logical_coordinates_size; i++) {
|
| - logical_coordinates[i] = ui::LatencyInfo::InputCoordinate(
|
| - touch_event.touches[i].position.x, touch_event.touches[i].position.y);
|
| - }
|
| -
|
| - ui::LatencyInfo latency_info = CreateInputEventLatencyInfoIfNotExist(
|
| - NULL, touch_event.type, logical_coordinates, logical_coordinates_size);
|
| - TouchEventWithLatencyInfo touch_with_latency(touch_event, latency_info);
|
| + TouchEventWithLatencyInfo touch_with_latency(touch_event);
|
| + latency_tracker_.OnInputEvent(touch_event, &touch_with_latency.latency);
|
| input_router_->SendTouchEvent(touch_with_latency);
|
| }
|
|
|
| @@ -1026,23 +980,7 @@ void RenderWidgetHostImpl::ForwardTouchEventWithLatencyInfo(
|
| // Always forward TouchEvents for touch stream consistency. They will be
|
| // ignored if appropriate in FilterInputEvent().
|
|
|
| - ui::LatencyInfo::InputCoordinate
|
| - logical_coordinates[ui::LatencyInfo::kMaxInputCoordinates];
|
| - size_t logical_coordinates_size =
|
| - std::min(arraysize(logical_coordinates),
|
| - static_cast<size_t>(touch_event.touchesLength));
|
| - for (size_t i = 0; i < logical_coordinates_size; i++) {
|
| - logical_coordinates[i] = ui::LatencyInfo::InputCoordinate(
|
| - touch_event.touches[i].position.x, touch_event.touches[i].position.y);
|
| - }
|
| -
|
| - ui::LatencyInfo latency_info = CreateInputEventLatencyInfoIfNotExist(
|
| - &ui_latency,
|
| - touch_event.type,
|
| - logical_coordinates,
|
| - logical_coordinates_size);
|
| - TouchEventWithLatencyInfo touch_with_latency(touch_event, latency_info);
|
| -
|
| + TouchEventWithLatencyInfo touch_with_latency(touch_event, ui_latency);
|
| if (touch_emulator_ &&
|
| touch_emulator_->HandleTouchEvent(touch_with_latency.event)) {
|
| if (view_) {
|
| @@ -1052,6 +990,7 @@ void RenderWidgetHostImpl::ForwardTouchEventWithLatencyInfo(
|
| return;
|
| }
|
|
|
| + latency_tracker_.OnInputEvent(touch_event, &touch_with_latency.latency);
|
| input_router_->SendTouchEvent(touch_with_latency);
|
| }
|
|
|
| @@ -1119,10 +1058,9 @@ void RenderWidgetHostImpl::ForwardKeyboardEvent(
|
| if (touch_emulator_ && touch_emulator_->HandleKeyboardEvent(key_event))
|
| return;
|
|
|
| - input_router_->SendKeyboardEvent(
|
| - key_event,
|
| - CreateInputEventLatencyInfoIfNotExist(NULL, key_event.type, NULL, 0),
|
| - is_shortcut);
|
| + ui::LatencyInfo latency;
|
| + latency_tracker_.OnInputEvent(key_event, &latency);
|
| + input_router_->SendKeyboardEvent(key_event, latency, is_shortcut);
|
| }
|
|
|
| void RenderWidgetHostImpl::QueueSyntheticGesture(
|
| @@ -1155,7 +1093,7 @@ void RenderWidgetHostImpl::SendCursorVisibilityState(bool is_visible) {
|
| }
|
|
|
| int64 RenderWidgetHostImpl::GetLatencyComponentId() const {
|
| - return GetRoutingID() | (static_cast<int64>(GetProcess()->GetID()) << 32);
|
| + return latency_tracker_.latency_component_id();
|
| }
|
|
|
| // static
|
| @@ -1163,42 +1101,6 @@ void RenderWidgetHostImpl::DisableResizeAckCheckForTesting() {
|
| g_check_for_pending_resize_ack = false;
|
| }
|
|
|
| -ui::LatencyInfo RenderWidgetHostImpl::CreateInputEventLatencyInfoIfNotExist(
|
| - const ui::LatencyInfo* original,
|
| - WebInputEvent::Type type,
|
| - const ui::LatencyInfo::InputCoordinate* logical_coordinates,
|
| - size_t logical_coordinates_size) {
|
| - ui::LatencyInfo info;
|
| - if (original)
|
| - info = *original;
|
| - // In Aura, gesture event will already carry its original touch event's
|
| - // INPUT_EVENT_LATENCY_RWH_COMPONENT.
|
| - if (!info.FindLatency(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - NULL)) {
|
| - info.AddLatencyNumber(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - ++last_input_number_);
|
| - info.TraceEventType(WebInputEventTraits::GetName(type));
|
| -
|
| - // Convert logical coordinates to physical coordinates, based on the
|
| - // device scale factor.
|
| - float device_scale_factor =
|
| - screen_info_ ? screen_info_->deviceScaleFactor : 1;
|
| - DCHECK(logical_coordinates_size <= ui::LatencyInfo::kMaxInputCoordinates);
|
| - info.input_coordinates_size = logical_coordinates_size;
|
| - for (size_t i = 0; i < info.input_coordinates_size; i++) {
|
| - info.input_coordinates[i].x =
|
| - logical_coordinates[i].x * device_scale_factor;
|
| - info.input_coordinates[i].y =
|
| - logical_coordinates[i].y * device_scale_factor;
|
| - }
|
| - }
|
| -
|
| - return info;
|
| -}
|
| -
|
| -
|
| void RenderWidgetHostImpl::AddKeyPressEventCallback(
|
| const KeyPressEventCallback& callback) {
|
| key_press_event_callbacks_.push_back(callback);
|
| @@ -1236,6 +1138,7 @@ void RenderWidgetHostImpl::GetWebScreenInfo(blink::WebScreenInfo* result) {
|
| view_->GetScreenInfo(result);
|
| else
|
| RenderWidgetHostViewBase::GetDefaultScreenInfo(result);
|
| + latency_tracker_.set_device_scale_factor(result->deviceScaleFactor);
|
| screen_info_out_of_date_ = false;
|
| }
|
|
|
| @@ -1541,8 +1444,7 @@ bool RenderWidgetHostImpl::OnSwapCompositorFrame(
|
| std::vector<IPC::Message> messages_to_deliver_with_frame;
|
| messages_to_deliver_with_frame.swap(param.c);
|
|
|
| - for (size_t i = 0; i < frame->metadata.latency_info.size(); i++)
|
| - AddLatencyInfoComponentIds(&frame->metadata.latency_info[i]);
|
| + latency_tracker_.OnSwapCompositorFrame(&frame->metadata.latency_info);
|
|
|
| input_router_->OnViewUpdated(
|
| GetInputRouterViewFlagsFromCompositorFrameMetadata(frame->metadata));
|
| @@ -1934,17 +1836,7 @@ void RenderWidgetHostImpl::OnKeyboardEventAck(
|
| void RenderWidgetHostImpl::OnWheelEventAck(
|
| const MouseWheelEventWithLatencyInfo& wheel_event,
|
| InputEventAckState ack_result) {
|
| - ui::LatencyInfo latency = wheel_event.latency;
|
| - latency.AddLatencyNumber(
|
| - ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT, 0, 0);
|
| - if (!wheel_event.latency.FindLatency(
|
| - ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_COMPONENT, 0, NULL)) {
|
| - // MouseWheelEvent latency ends when it is acked but does not cause any
|
| - // rendering scheduled.
|
| - latency.AddLatencyNumber(
|
| - ui::INPUT_EVENT_LATENCY_TERMINATED_MOUSE_COMPONENT, 0, 0);
|
| - }
|
| - ComputeInputLatencyHistograms(blink::WebInputEvent::MouseWheel, latency);
|
| + latency_tracker_.OnInputEventAck(wheel_event.event, &wheel_event.latency);
|
|
|
| if (!is_hidden() && view_) {
|
| if (ack_result != INPUT_EVENT_ACK_STATE_CONSUMED &&
|
| @@ -1958,14 +1850,7 @@ void RenderWidgetHostImpl::OnWheelEventAck(
|
| void RenderWidgetHostImpl::OnGestureEventAck(
|
| const GestureEventWithLatencyInfo& event,
|
| InputEventAckState ack_result) {
|
| - if (!event.latency.FindLatency(
|
| - ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_COMPONENT, 0, NULL)) {
|
| - // GestureEvent latency ends when it is acked but does not cause any
|
| - // rendering scheduled.
|
| - ui::LatencyInfo latency = event.latency;
|
| - latency.AddLatencyNumber(
|
| - ui::INPUT_EVENT_LATENCY_TERMINATED_GESTURE_COMPONENT, 0 ,0);
|
| - }
|
| + latency_tracker_.OnInputEventAck(event.event, &event.latency);
|
|
|
| if (ack_result != INPUT_EVENT_ACK_STATE_CONSUMED) {
|
| if (delegate_->HandleGestureEvent(event.event))
|
| @@ -1979,17 +1864,7 @@ void RenderWidgetHostImpl::OnGestureEventAck(
|
| void RenderWidgetHostImpl::OnTouchEventAck(
|
| const TouchEventWithLatencyInfo& event,
|
| InputEventAckState ack_result) {
|
| - TouchEventWithLatencyInfo touch_event = event;
|
| - touch_event.latency.AddLatencyNumber(
|
| - ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT, 0, 0);
|
| - // TouchEvent latency ends at ack if it didn't cause any rendering.
|
| - if (!touch_event.latency.FindLatency(
|
| - ui::INPUT_EVENT_LATENCY_RENDERING_SCHEDULED_COMPONENT, 0, NULL)) {
|
| - touch_event.latency.AddLatencyNumber(
|
| - ui::INPUT_EVENT_LATENCY_TERMINATED_TOUCH_COMPONENT, 0, 0);
|
| - }
|
| - ComputeInputLatencyHistograms(
|
| - blink::WebInputEvent::TouchTypeFirst, touch_event.latency);
|
| + latency_tracker_.OnInputEventAck(event.event, &event.latency);
|
|
|
| if (touch_emulator_ &&
|
| touch_emulator_->HandleTouchEventAck(event.event, ack_result)) {
|
| @@ -1997,7 +1872,7 @@ void RenderWidgetHostImpl::OnTouchEventAck(
|
| }
|
|
|
| if (view_)
|
| - view_->ProcessAckedTouchEvent(touch_event, ack_result);
|
| + view_->ProcessAckedTouchEvent(event, ack_result);
|
| }
|
|
|
| void RenderWidgetHostImpl::OnUnexpectedEventAck(UnexpectedEventAckType type) {
|
| @@ -2120,65 +1995,6 @@ void RenderWidgetHostImpl::DetachDelegate() {
|
| delegate_ = NULL;
|
| }
|
|
|
| -void RenderWidgetHostImpl::ComputeInputLatencyHistograms(
|
| - blink::WebInputEvent::Type type,
|
| - const ui::LatencyInfo& latency_info) const {
|
| - ui::LatencyInfo::LatencyComponent rwh_component;
|
| - if (!latency_info.FindLatency(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - &rwh_component))
|
| - return;
|
| - DCHECK_EQ(rwh_component.event_count, 1u);
|
| -
|
| - ui::LatencyInfo::LatencyComponent ui_component;
|
| - if (latency_info.FindLatency(ui::INPUT_EVENT_LATENCY_UI_COMPONENT,
|
| - 0,
|
| - &ui_component)) {
|
| - DCHECK_EQ(ui_component.event_count, 1u);
|
| - base::TimeDelta ui_delta =
|
| - rwh_component.event_time - ui_component.event_time;
|
| - switch (type) {
|
| - case blink::WebInputEvent::MouseWheel:
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "Event.Latency.Browser.WheelUI",
|
| - ui_delta.InMicroseconds(), 1, 20000, 100);
|
| - break;
|
| - case blink::WebInputEvent::TouchTypeFirst:
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "Event.Latency.Browser.TouchUI",
|
| - ui_delta.InMicroseconds(), 1, 20000, 100);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - }
|
| -
|
| - ui::LatencyInfo::LatencyComponent acked_component;
|
| - if (latency_info.FindLatency(ui::INPUT_EVENT_LATENCY_ACK_RWH_COMPONENT,
|
| - 0,
|
| - &acked_component)) {
|
| - DCHECK_EQ(acked_component.event_count, 1u);
|
| - base::TimeDelta acked_delta =
|
| - acked_component.event_time - rwh_component.event_time;
|
| - switch (type) {
|
| - case blink::WebInputEvent::MouseWheel:
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "Event.Latency.Browser.WheelAcked",
|
| - acked_delta.InMicroseconds(), 1, 1000000, 100);
|
| - break;
|
| - case blink::WebInputEvent::TouchTypeFirst:
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "Event.Latency.Browser.TouchAcked",
|
| - acked_delta.InMicroseconds(), 1, 1000000, 100);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - }
|
| -}
|
| -
|
| void RenderWidgetHostImpl::FrameSwapped(const ui::LatencyInfo& latency_info) {
|
| ui::LatencyInfo::LatencyComponent window_snapshot_component;
|
| if (latency_info.FindLatency(ui::WINDOW_OLD_SNAPSHOT_FRAME_NUMBER_COMPONENT,
|
| @@ -2208,50 +2024,7 @@ void RenderWidgetHostImpl::FrameSwapped(const ui::LatencyInfo& latency_info) {
|
| #endif
|
| }
|
|
|
| - ui::LatencyInfo::LatencyComponent swap_component;
|
| - if (!latency_info.FindLatency(
|
| - ui::INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT,
|
| - 0,
|
| - &swap_component)) {
|
| - return;
|
| - }
|
| - ui::LatencyInfo::LatencyComponent tab_switch_component;
|
| - if (latency_info.FindLatency(ui::TAB_SHOW_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - &tab_switch_component)) {
|
| - base::TimeDelta delta =
|
| - swap_component.event_time - tab_switch_component.event_time;
|
| - for (size_t i = 0; i < tab_switch_component.event_count; i++) {
|
| - UMA_HISTOGRAM_TIMES("MPArch.RWH_TabSwitchPaintDuration", delta);
|
| - }
|
| - }
|
| -
|
| - ui::LatencyInfo::LatencyComponent rwh_component;
|
| - if (!latency_info.FindLatency(ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - &rwh_component)) {
|
| - return;
|
| - }
|
| -
|
| - ui::LatencyInfo::LatencyComponent original_component;
|
| - if (latency_info.FindLatency(
|
| - ui::INPUT_EVENT_LATENCY_SCROLL_UPDATE_ORIGINAL_COMPONENT,
|
| - GetLatencyComponentId(),
|
| - &original_component)) {
|
| - // This UMA metric tracks the time from when the original touch event is
|
| - // created (averaged if there are multiple) to when the scroll gesture
|
| - // results in final frame swap.
|
| - base::TimeDelta delta =
|
| - swap_component.event_time - original_component.event_time;
|
| - for (size_t i = 0; i < original_component.event_count; i++) {
|
| - UMA_HISTOGRAM_CUSTOM_COUNTS(
|
| - "Event.Latency.TouchToScrollUpdateSwap",
|
| - delta.InMicroseconds(),
|
| - 1,
|
| - 1000000,
|
| - 100);
|
| - }
|
| - }
|
| + latency_tracker_.OnFrameSwapped(latency_info);
|
| }
|
|
|
| void RenderWidgetHostImpl::DidReceiveRendererFrame() {
|
| @@ -2387,33 +2160,6 @@ void RenderWidgetHostImpl::CompositorFrameDrawn(
|
| }
|
| }
|
|
|
| -void RenderWidgetHostImpl::AddLatencyInfoComponentIds(
|
| - ui::LatencyInfo* latency_info) {
|
| - ui::LatencyInfo::LatencyMap new_components;
|
| - ui::LatencyInfo::LatencyMap::iterator lc =
|
| - latency_info->latency_components.begin();
|
| - while (lc != latency_info->latency_components.end()) {
|
| - ui::LatencyComponentType component_type = lc->first.first;
|
| - if (component_type == ui::WINDOW_SNAPSHOT_FRAME_NUMBER_COMPONENT ||
|
| - component_type == ui::WINDOW_OLD_SNAPSHOT_FRAME_NUMBER_COMPONENT) {
|
| - // Generate a new component entry with the correct component ID
|
| - ui::LatencyInfo::LatencyMap::key_type key =
|
| - std::make_pair(component_type, GetLatencyComponentId());
|
| - new_components[key] = lc->second;
|
| -
|
| - // Remove the old entry
|
| - latency_info->latency_components.erase(lc++);
|
| - } else {
|
| - ++lc;
|
| - }
|
| - }
|
| -
|
| - // Add newly generated components into the latency info
|
| - for (lc = new_components.begin(); lc != new_components.end(); ++lc) {
|
| - latency_info->latency_components[lc->first] = lc->second;
|
| - }
|
| -}
|
| -
|
| BrowserAccessibilityManager*
|
| RenderWidgetHostImpl::GetRootBrowserAccessibilityManager() {
|
| return delegate_ ? delegate_->GetRootBrowserAccessibilityManager() : NULL;
|
|
|