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

Side by Side Diff: content/common/input/event_with_latency_info.cc

Issue 2479123003: WIP Add getCoalescedEvents API using vector of WebInputEvents (Closed)
Patch Set: Creating CoalescedWebInputEvent Created 4 years, 1 month 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/common/input/event_with_latency_info.h" 5 #include "content/common/input/event_with_latency_info.h"
6 6
7 #include <bitset> 7 #include <bitset>
8 #include <limits> 8 #include <limits>
9 9
10 using blink::WebGestureEvent; 10 using blink::WebGestureEvent;
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after
255 if (event_to_coalesce.type == blink::WebInputEvent::MouseWheel && 255 if (event_to_coalesce.type == blink::WebInputEvent::MouseWheel &&
256 event->type == blink::WebInputEvent::MouseWheel) { 256 event->type == blink::WebInputEvent::MouseWheel) {
257 Coalesce(static_cast<const blink::WebMouseWheelEvent&>(event_to_coalesce), 257 Coalesce(static_cast<const blink::WebMouseWheelEvent&>(event_to_coalesce),
258 static_cast<blink::WebMouseWheelEvent*>(event)); 258 static_cast<blink::WebMouseWheelEvent*>(event));
259 } 259 }
260 } 260 }
261 261
262 } // namespace internal 262 } // namespace internal
263 263
264 ScopedWebInputEventWithLatencyInfo::ScopedWebInputEventWithLatencyInfo( 264 ScopedWebInputEventWithLatencyInfo::ScopedWebInputEventWithLatencyInfo(
265 ui::ScopedWebInputEvent event, 265 blink::CoalescedWebInputEvent::ScopedWebInputEvent event,
266 const ui::LatencyInfo& latency_info) 266 const ui::LatencyInfo& latency_info)
267 : event_(std::move(event)), latency_(latency_info) { 267 : event_(new blink::CoalescedWebInputEvent(std::move(event))),
268 } 268 latency_(latency_info) {}
269 269
270 ScopedWebInputEventWithLatencyInfo::~ScopedWebInputEventWithLatencyInfo() {} 270 ScopedWebInputEventWithLatencyInfo::~ScopedWebInputEventWithLatencyInfo() {}
271 271
272 bool ScopedWebInputEventWithLatencyInfo::CanCoalesceWith( 272 bool ScopedWebInputEventWithLatencyInfo::CanCoalesceWith(
273 const ScopedWebInputEventWithLatencyInfo& other) const { 273 const ScopedWebInputEventWithLatencyInfo& other) const {
274 return internal::CanCoalesce(other.event(), event()); 274 return internal::CanCoalesce(other.coalescedEvent().event(),
275 coalescedEvent().event());
275 } 276 }
276 277
277 void ScopedWebInputEventWithLatencyInfo::CoalesceWith( 278 void ScopedWebInputEventWithLatencyInfo::CoalesceWith(
278 const ScopedWebInputEventWithLatencyInfo& other) { 279 const ScopedWebInputEventWithLatencyInfo& other) {
279 // |other| should be a newer event than |this|. 280 // |other| should be a newer event than |this|.
280 if (other.latency_.trace_id() >= 0 && latency_.trace_id() >= 0) 281 if (other.latency_.trace_id() >= 0 && latency_.trace_id() >= 0)
281 DCHECK_GT(other.latency_.trace_id(), latency_.trace_id()); 282 DCHECK_GT(other.latency_.trace_id(), latency_.trace_id());
282 283
283 // New events get coalesced into older events, and the newer timestamp 284 // New events get coalesced into older events, and the newer timestamp
284 // should always be preserved. 285 // should always be preserved.
285 const double time_stamp_seconds = other.event().timeStampSeconds; 286 const double time_stamp_seconds =
286 internal::Coalesce(other.event(), event_.get()); 287 other.coalescedEvent().event().timeStampSeconds;
287 event_->timeStampSeconds = time_stamp_seconds; 288
289 // The new event will have no coalesced events itself. So we do not copy all
290 // the coalesced event over here.
291 event_->addCoalescedEvent(other.coalescedEvent().event());
292 internal::Coalesce(other.coalescedEvent().event(), event_->eventPointer());
293 event_->eventPointer()->timeStampSeconds = time_stamp_seconds;
288 294
289 // When coalescing two input events, we keep the oldest LatencyInfo 295 // When coalescing two input events, we keep the oldest LatencyInfo
290 // since it will represent the longest latency. 296 // since it will represent the longest latency.
291 other.latency_ = latency_; 297 other.latency_ = latency_;
292 other.latency_.set_coalesced(); 298 other.latency_.set_coalesced();
293 } 299 }
294 300
295 const blink::WebInputEvent& ScopedWebInputEventWithLatencyInfo::event() const { 301 const blink::CoalescedWebInputEvent&
302 ScopedWebInputEventWithLatencyInfo::coalescedEvent() const {
296 return *event_; 303 return *event_;
297 } 304 }
298 305
299 blink::WebInputEvent& ScopedWebInputEventWithLatencyInfo::event() { 306 blink::CoalescedWebInputEvent&
307 ScopedWebInputEventWithLatencyInfo::coalescedEvent() {
300 return *event_; 308 return *event_;
301 } 309 }
302 310
303 } // namespace content 311 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698