12385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 22385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// Use of this source code is governed by a BSD-style license that can be 32385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch// found in the LICENSE file. 42385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ui/events/latency_info.h" 62385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 72385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 82385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 92385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochnamespace ui { 102385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 112385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, AddTwoSeparateEvent) { 122385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info; 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 142385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 152385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1, 162385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1); 182385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 192385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 1, 202385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 5, 212385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(1000), 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2); 232385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 242385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 2u); 252385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo::LatencyComponent component; 262385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 272385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component)); 282385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 1, &component)); 302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 0, &component)); 322385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 1); 332385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 1u); 342385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), 100); 352385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 362385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component)); 372385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 5); 382385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 2u); 392385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), 1000); 402385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 412385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 422385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, AddTwoSameEvent) { 432385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info; 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 452385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 462385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 30, 472385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2); 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 502385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 512385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 13, 522385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(200), 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 3); 542385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 552385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 1u); 562385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo::LatencyComponent component; 572385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 582385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.FindLatency(INPUT_EVENT_LATENCY_UI_COMPONENT, 0, &component)); 592385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_FALSE( 604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 1, &component)); 612385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_TRUE( 624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.FindLatency(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, &component)); 632385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.sequence_number, 30); 642385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_count, 5u); 652385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(component.event_time.ToInternalValue(), (100 * 2 + 200 * 3) / 5); 662385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 672385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 682385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen MurdochTEST(LatencyInfoTest, ClearEvents) { 692385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch LatencyInfo info; 704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) info.AddLatencyNumberWithTimestamp(INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 712385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 0, 722385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 30, 732385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch base::TimeTicks::FromInternalValue(100), 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2); 752385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 762385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 1u); 772385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch info.Clear(); 782385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch EXPECT_EQ(info.latency_components.size(), 0u); 792385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} 802385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch 812385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch} // namespace ui 82