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

Side by Side Diff: content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc

Issue 2888153002: Add TimeToScrollUpdateSwapBegin2 to UKM (Closed)
Patch Set: Rename the test function Created 3 years, 6 months 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/input/render_widget_host_latency_tracker .h"
6 #include "base/metrics/metrics_hashes.h"
5 #include "base/test/histogram_tester.h" 7 #include "base/test/histogram_tester.h"
8 #include "components/metrics/proto/ukm/entry.pb.h"
6 #include "components/rappor/public/rappor_utils.h" 9 #include "components/rappor/public/rappor_utils.h"
7 #include "components/rappor/test_rappor_service.h" 10 #include "components/rappor/test_rappor_service.h"
8 #include "content/browser/renderer_host/input/render_widget_host_latency_tracker .h" 11 #include "components/ukm/test_ukm_recorder.h"
12 #include "components/ukm/ukm_source.h"
9 #include "content/common/input/synthetic_web_input_event_builders.h" 13 #include "content/common/input/synthetic_web_input_event_builders.h"
10 #include "content/public/browser/native_web_keyboard_event.h" 14 #include "content/public/browser/native_web_keyboard_event.h"
11 #include "content/test/test_content_browser_client.h" 15 #include "content/test/test_content_browser_client.h"
12 #include "content/test/test_render_view_host.h" 16 #include "content/test/test_render_view_host.h"
13 #include "content/test/test_web_contents.h" 17 #include "content/test/test_web_contents.h"
14 #include "testing/gmock/include/gmock/gmock.h" 18 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
16 20
17 using base::Bucket; 21 using base::Bucket;
18 using blink::WebInputEvent; 22 using blink::WebInputEvent;
19 using testing::ElementsAre; 23 using testing::ElementsAre;
20 24
21 namespace content { 25 namespace content {
22 namespace { 26 namespace {
23 27
28 const char kUrl[] = "http://www.foo.bar.com/subpage/1";
29
24 void AddFakeComponentsWithTimeStamp( 30 void AddFakeComponentsWithTimeStamp(
25 const RenderWidgetHostLatencyTracker& tracker, 31 const RenderWidgetHostLatencyTracker& tracker,
26 ui::LatencyInfo* latency, 32 ui::LatencyInfo* latency,
27 base::TimeTicks time_stamp) { 33 base::TimeTicks time_stamp) {
28 latency->AddLatencyNumberWithTimestamp(ui::INPUT_EVENT_LATENCY_UI_COMPONENT, 34 latency->AddLatencyNumberWithTimestamp(ui::INPUT_EVENT_LATENCY_UI_COMPONENT,
29 0, 0, time_stamp, 1); 35 0, 0, time_stamp, 1);
30 latency->AddLatencyNumberWithTimestamp( 36 latency->AddLatencyNumberWithTimestamp(
31 ui::INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT, 0, 0, time_stamp, 37 ui::INPUT_EVENT_LATENCY_TERMINATED_FRAME_SWAP_COMPONENT, 0, 0, time_stamp,
32 1); 38 1);
33 latency->AddLatencyNumberWithTimestamp( 39 latency->AddLatencyNumberWithTimestamp(
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 ~RenderWidgetHostLatencyTrackerTestBrowserClient() override {} 76 ~RenderWidgetHostLatencyTrackerTestBrowserClient() override {}
71 77
72 rappor::RapporService* GetRapporService() override { 78 rappor::RapporService* GetRapporService() override {
73 return &rappor_service_; 79 return &rappor_service_;
74 } 80 }
75 81
76 rappor::TestRapporServiceImpl* getTestRapporService() { 82 rappor::TestRapporServiceImpl* getTestRapporService() {
77 return &rappor_service_; 83 return &rappor_service_;
78 } 84 }
79 85
86 ukm::TestUkmRecorder* GetTestUkmRecorder() { return &test_ukm_recorder_; }
87
80 private: 88 private:
81 rappor::TestRapporServiceImpl rappor_service_; 89 rappor::TestRapporServiceImpl rappor_service_;
90 ukm::TestUkmRecorder test_ukm_recorder_;
82 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTestBrowserClient); 91 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTestBrowserClient);
83 }; 92 };
84 93
85 class RenderWidgetHostLatencyTrackerTest 94 class RenderWidgetHostLatencyTrackerTest
86 : public RenderViewHostImplTestHarness { 95 : public RenderViewHostImplTestHarness {
87 public: 96 public:
88 RenderWidgetHostLatencyTrackerTest() : old_browser_client_(NULL) { 97 RenderWidgetHostLatencyTrackerTest() : old_browser_client_(NULL) {
89 tracker_.Initialize(kTestRoutingId, kTestProcessId); 98 tracker_.Initialize(kTestRoutingId, kTestProcessId);
90 ResetHistograms(); 99 ResetHistograms();
91 } 100 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 return ::testing::AssertionSuccess(); 135 return ::testing::AssertionSuccess();
127 } else { 136 } else {
128 if (!sample_obj) 137 if (!sample_obj)
129 return ::testing::AssertionSuccess(); 138 return ::testing::AssertionSuccess();
130 else 139 else
131 return ::testing::AssertionFailure() << rappor_name 140 return ::testing::AssertionFailure() << rappor_name
132 << " rappor sample should be null"; 141 << " rappor sample should be null";
133 } 142 }
134 } 143 }
135 144
145 ::testing::AssertionResult AssertUkmReported(const char* event_name,
146 const char* metric_name) {
147 const ukm::TestUkmRecorder* ukm_recoder =
148 test_browser_client_.GetTestUkmRecorder();
149 size_t actual_event_count = 0;
150 for (size_t i = 0; i < ukm_recoder->entries_count(); ++i) {
151 const ukm::mojom::UkmEntry* entry = ukm_recoder->GetEntry(i);
152 if (entry->event_hash != base::HashMetricName(event_name))
153 continue;
154
155 const ukm::UkmSource* source =
156 ukm_recoder->GetSourceForSourceId(entry->source_id);
157 if (!source)
158 return ::testing::AssertionFailure() << "Source should not be null";
159
160 if (actual_event_count >= 1)
161 break;
162
163 if (GURL(kUrl) != source->url())
164 return ::testing::AssertionFailure() << "Incorrect URL is reported.";
165
166 actual_event_count++;
167 if (entry->metrics.size() != 1)
168 return ::testing::AssertionFailure()
169 << event_name << " entry expected only 1 metric but got "
170 << entry->metrics.size();
171
172 if (entry->metrics[0]->metric_hash != base::HashMetricName(metric_name))
173 return ::testing::AssertionFailure()
174 << "Expected a metric named " << metric_name;
175 }
176 if (actual_event_count != 1)
177 return ::testing::AssertionFailure()
178 << event_name << " expected " << 1 << " entry but got "
179 << actual_event_count;
180 return ::testing::AssertionSuccess();
181 }
182
136 ::testing::AssertionResult HistogramSizeEq(const char* histogram_name, 183 ::testing::AssertionResult HistogramSizeEq(const char* histogram_name,
137 int size) { 184 int size) {
138 uint64_t histogram_size = 185 uint64_t histogram_size =
139 histogram_tester_->GetAllSamples(histogram_name).size(); 186 histogram_tester_->GetAllSamples(histogram_name).size();
140 if (static_cast<uint64_t>(size) == histogram_size) { 187 if (static_cast<uint64_t>(size) == histogram_size) {
141 return ::testing::AssertionSuccess(); 188 return ::testing::AssertionSuccess();
142 } else { 189 } else {
143 return ::testing::AssertionFailure() << histogram_name << " expected " 190 return ::testing::AssertionFailure() << histogram_name << " expected "
144 << size << " entries, but had " 191 << size << " entries, but had "
145 << histogram_size; 192 << histogram_size;
(...skipping 11 matching lines...) Expand all
157 204
158 void SetUp() override { 205 void SetUp() override {
159 RenderViewHostImplTestHarness::SetUp(); 206 RenderViewHostImplTestHarness::SetUp();
160 old_browser_client_ = SetBrowserClientForTesting(&test_browser_client_); 207 old_browser_client_ = SetBrowserClientForTesting(&test_browser_client_);
161 tracker_.SetDelegate(contents()); 208 tracker_.SetDelegate(contents());
162 } 209 }
163 210
164 void TearDown() override { 211 void TearDown() override {
165 SetBrowserClientForTesting(old_browser_client_); 212 SetBrowserClientForTesting(old_browser_client_);
166 RenderViewHostImplTestHarness::TearDown(); 213 RenderViewHostImplTestHarness::TearDown();
214 test_browser_client_.GetTestUkmRecorder()->Purge();
167 } 215 }
168 216
169 protected: 217 protected:
170 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTest); 218 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTest);
171 const int kTestRoutingId = 3; 219 const int kTestRoutingId = 3;
172 const int kTestProcessId = 1; 220 const int kTestProcessId = 1;
173 std::unique_ptr<base::HistogramTester> histogram_tester_; 221 std::unique_ptr<base::HistogramTester> histogram_tester_;
174 RenderWidgetHostLatencyTracker tracker_; 222 RenderWidgetHostLatencyTracker tracker_;
175 RenderWidgetHostLatencyTrackerTestBrowserClient test_browser_client_; 223 RenderWidgetHostLatencyTrackerTestBrowserClient test_browser_client_;
176 ContentBrowserClient* old_browser_client_; 224 ContentBrowserClient* old_browser_client_;
177 }; 225 };
178 226
179 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) { 227 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) {
180 const GURL url("http://www.foo.bar.com/subpage/1"); 228 const GURL url(kUrl);
181 contents()->NavigateAndCommit(url); 229 contents()->NavigateAndCommit(url);
182 for (bool rendering_on_main : {false, true}) { 230 for (bool rendering_on_main : {false, true}) {
183 ResetHistograms(); 231 ResetHistograms();
184 { 232 {
185 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( 233 auto wheel = SyntheticWebMouseWheelEventBuilder::Build(
186 blink::WebMouseWheelEvent::kPhaseChanged); 234 blink::WebMouseWheelEvent::kPhaseChanged);
187 base::TimeTicks now = base::TimeTicks::Now(); 235 base::TimeTicks now = base::TimeTicks::Now();
188 wheel.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); 236 wheel.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF());
189 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); 237 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL);
190 wheel_latency.AddLatencyNumberWithTimestamp( 238 wheel_latency.AddLatencyNumberWithTimestamp(
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 EXPECT_TRUE(HistogramSizeEq( 306 EXPECT_TRUE(HistogramSizeEq(
259 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", 0)); 307 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", 0));
260 EXPECT_TRUE(HistogramSizeEq( 308 EXPECT_TRUE(HistogramSizeEq(
261 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2", 309 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2",
262 0)); 310 0));
263 EXPECT_TRUE(HistogramSizeEq( 311 EXPECT_TRUE(HistogramSizeEq(
264 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", 312 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2",
265 0)); 313 0));
266 EXPECT_TRUE( 314 EXPECT_TRUE(
267 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0)); 315 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0));
316
317 ukm::TestUkmRecorder* test_ukm_recorder =
318 test_browser_client_.GetTestUkmRecorder();
319 EXPECT_EQ(0U, test_ukm_recorder->sources_count());
320 EXPECT_EQ(0U, test_ukm_recorder->entries_count());
268 } 321 }
269 } 322 }
270 } 323 }
271 324
272 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) { 325 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) {
273 for (bool rendering_on_main : {false, true}) { 326 for (bool rendering_on_main : {false, true}) {
274 ResetHistograms(); 327 ResetHistograms();
275 { 328 {
276 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( 329 auto wheel = SyntheticWebMouseWheelEventBuilder::Build(
277 blink::WebMouseWheelEvent::kPhaseChanged); 330 blink::WebMouseWheelEvent::kPhaseChanged);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 EXPECT_TRUE(HistogramSizeEq( 389 EXPECT_TRUE(HistogramSizeEq(
337 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", 390 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2",
338 1)); 391 1));
339 EXPECT_TRUE( 392 EXPECT_TRUE(
340 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 1)); 393 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 1));
341 } 394 }
342 } 395 }
343 } 396 }
344 397
345 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) { 398 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) {
346 const GURL url("http://www.foo.bar.com/subpage/1"); 399 const GURL url(kUrl);
347 contents()->NavigateAndCommit(url); 400 contents()->NavigateAndCommit(url);
348 for (bool rendering_on_main : {false, true}) { 401 for (bool rendering_on_main : {false, true}) {
349 ResetHistograms(); 402 ResetHistograms();
350 { 403 {
351 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( 404 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate(
352 5.f, -5.f, 0, blink::kWebGestureDeviceTouchscreen); 405 5.f, -5.f, 0, blink::kWebGestureDeviceTouchscreen);
353 base::TimeTicks now = base::TimeTicks::Now(); 406 base::TimeTicks now = base::TimeTicks::Now();
354 scroll.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); 407 scroll.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF());
355 ui::LatencyInfo scroll_latency; 408 ui::LatencyInfo scroll_latency;
356 scroll_latency.AddLatencyNumberWithTimestamp( 409 scroll_latency.AddLatencyNumberWithTimestamp(
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 EXPECT_TRUE(HistogramSizeEq( 501 EXPECT_TRUE(HistogramSizeEq(
449 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", 0)); 502 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", 0));
450 EXPECT_TRUE(HistogramSizeEq( 503 EXPECT_TRUE(HistogramSizeEq(
451 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 0)); 504 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 0));
452 EXPECT_TRUE(HistogramSizeEq( 505 EXPECT_TRUE(HistogramSizeEq(
453 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 0)); 506 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 0));
454 EXPECT_TRUE(HistogramSizeEq( 507 EXPECT_TRUE(HistogramSizeEq(
455 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 0)); 508 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 0));
456 EXPECT_TRUE( 509 EXPECT_TRUE(
457 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0)); 510 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0));
511
512 ukm::TestUkmRecorder* test_ukm_recorder =
513 test_browser_client_.GetTestUkmRecorder();
514 EXPECT_EQ(0U, test_ukm_recorder->sources_count());
515 EXPECT_EQ(0U, test_ukm_recorder->entries_count());
458 } 516 }
459 } 517 }
460 518
461 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) { 519 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) {
462 const GURL url("http://www.foo.bar.com/subpage/1"); 520 const GURL url(kUrl);
463 contents()->NavigateAndCommit(url); 521 contents()->NavigateAndCommit(url);
522 size_t total_ukm_entry_count = 0;
464 for (bool rendering_on_main : {false, true}) { 523 for (bool rendering_on_main : {false, true}) {
465 ResetHistograms(); 524 ResetHistograms();
466 EXPECT_EQ(0, 525 EXPECT_EQ(0,
467 test_browser_client_.getTestRapporService()->GetReportsCount()); 526 test_browser_client_.getTestRapporService()->GetReportsCount());
468 { 527 {
469 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( 528 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate(
470 5.f, -5.f, 0, blink::kWebGestureDeviceTouchscreen); 529 5.f, -5.f, 0, blink::kWebGestureDeviceTouchscreen);
471 base::TimeTicks now = base::TimeTicks::Now(); 530 base::TimeTicks now = base::TimeTicks::Now();
472 scroll.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); 531 scroll.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF());
473 ui::LatencyInfo scroll_latency; 532 ui::LatencyInfo scroll_latency;
(...skipping 27 matching lines...) Expand all
501 EXPECT_TRUE(touch_latency.FindLatency( 560 EXPECT_TRUE(touch_latency.FindLatency(
502 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT, 561 ui::INPUT_EVENT_LATENCY_BEGIN_RWH_COMPONENT,
503 tracker()->latency_component_id(), nullptr)); 562 tracker()->latency_component_id(), nullptr));
504 EXPECT_TRUE(touch_latency.FindLatency( 563 EXPECT_TRUE(touch_latency.FindLatency(
505 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr)); 564 ui::INPUT_EVENT_LATENCY_ORIGINAL_COMPONENT, 0, nullptr));
506 tracker()->OnInputEventAck(touch, &touch_latency, 565 tracker()->OnInputEventAck(touch, &touch_latency,
507 INPUT_EVENT_ACK_STATE_NOT_CONSUMED); 566 INPUT_EVENT_ACK_STATE_NOT_CONSUMED);
508 tracker()->OnGpuSwapBuffersCompleted(touch_latency); 567 tracker()->OnGpuSwapBuffersCompleted(touch_latency);
509 } 568 }
510 569
570 // UKM metrics.
571 total_ukm_entry_count++;
572 EXPECT_TRUE(AssertUkmReported("Event.ScrollUpdate.Touch",
573 "TimeToScrollUpdateSwapBegin"));
574
511 // Rappor metrics. 575 // Rappor metrics.
512 EXPECT_TRUE( 576 EXPECT_TRUE(
513 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." 577 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch."
514 "TimeToScrollUpdateSwapBegin2", 578 "TimeToScrollUpdateSwapBegin2",
515 2)); 579 2));
516 EXPECT_TRUE( 580 EXPECT_TRUE(
517 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." 581 RapporSampleAssert("Event.Latency.ScrollBegin.Touch."
518 "TimeToScrollUpdateSwapBegin2", 582 "TimeToScrollUpdateSwapBegin2",
519 0)); 583 0));
520 EXPECT_TRUE( 584 EXPECT_TRUE(
521 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel." 585 RapporSampleAssert("Event.Latency.ScrollBegin.Wheel."
522 "TimeToScrollUpdateSwapBegin2", 586 "TimeToScrollUpdateSwapBegin2",
523 0)); 587 0));
588
524 EXPECT_EQ(2, 589 EXPECT_EQ(2,
525 test_browser_client_.getTestRapporService()->GetReportsCount()); 590 test_browser_client_.getTestRapporService()->GetReportsCount());
526 591
527 // UMA histograms. 592 // UMA histograms.
528 EXPECT_TRUE(HistogramSizeEq( 593 EXPECT_TRUE(HistogramSizeEq(
529 "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 0)); 594 "Event.Latency.ScrollBegin.Touch.TimeToScrollUpdateSwapBegin2", 0));
530 EXPECT_TRUE(HistogramSizeEq( 595 EXPECT_TRUE(HistogramSizeEq(
531 "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 1)); 596 "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2", 1));
532 EXPECT_TRUE(HistogramSizeEq( 597 EXPECT_TRUE(HistogramSizeEq(
533 "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", 0)); 598 "Event.Latency.ScrollBegin.Touch.TimeToHandled2_Main", 0));
(...skipping 24 matching lines...) Expand all
558 rendering_on_main ? 1 : 0)); 623 rendering_on_main ? 1 : 0));
559 EXPECT_TRUE(HistogramSizeEq( 624 EXPECT_TRUE(HistogramSizeEq(
560 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 625 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl",
561 rendering_on_main ? 0 : 1)); 626 rendering_on_main ? 0 : 1));
562 EXPECT_TRUE(HistogramSizeEq( 627 EXPECT_TRUE(HistogramSizeEq(
563 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 1)); 628 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 1));
564 EXPECT_TRUE(HistogramSizeEq( 629 EXPECT_TRUE(HistogramSizeEq(
565 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 1)); 630 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 1));
566 EXPECT_TRUE( 631 EXPECT_TRUE(
567 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 1)); 632 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 1));
633
634 ukm::TestUkmRecorder* test_ukm_recorder =
635 test_browser_client_.GetTestUkmRecorder();
636 EXPECT_EQ(1U, test_ukm_recorder->sources_count());
637 EXPECT_EQ(total_ukm_entry_count, test_ukm_recorder->entries_count());
568 } 638 }
569 } 639 }
570 640
571 TEST_F(RenderWidgetHostLatencyTrackerTest, 641 TEST_F(RenderWidgetHostLatencyTrackerTest,
572 LatencyTerminatedOnAckIfRenderingNotScheduled) { 642 LatencyTerminatedOnAckIfRenderingNotScheduled) {
573 { 643 {
574 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollBegin( 644 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollBegin(
575 5.f, -5.f, blink::kWebGestureDeviceTouchscreen); 645 5.f, -5.f, blink::kWebGestureDeviceTouchscreen);
576 ui::LatencyInfo scroll_latency; 646 ui::LatencyInfo scroll_latency;
577 AddFakeComponents(*tracker(), &scroll_latency); 647 AddFakeComponents(*tracker(), &scroll_latency);
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 1268
1199 tracker()->OnInputEventAck(wheel_event, &latency, ack_state); 1269 tracker()->OnInputEventAck(wheel_event, &latency, ack_state);
1200 } 1270 }
1201 1271
1202 EXPECT_THAT(histogram_tester().GetAllSamples( 1272 EXPECT_THAT(histogram_tester().GetAllSamples(
1203 "Event.Latency.QueueingTime.MouseWheelDefaultAllowed"), 1273 "Event.Latency.QueueingTime.MouseWheelDefaultAllowed"),
1204 ElementsAre(Bucket(14, 1))); 1274 ElementsAre(Bucket(14, 1)));
1205 } 1275 }
1206 1276
1207 } // namespace content 1277 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698