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

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: Rebase and use new constructs 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::UkmRecorder* GetUkmRecorder() override { return &test_ukm_recorder_; }
87
88 ukm::TestUkmRecorder* GetTestUkmRecorder() { return &test_ukm_recorder_; }
89
80 private: 90 private:
81 rappor::TestRapporServiceImpl rappor_service_; 91 rappor::TestRapporServiceImpl rappor_service_;
92 ukm::TestUkmRecorder test_ukm_recorder_;
82 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTestBrowserClient); 93 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTestBrowserClient);
83 }; 94 };
84 95
85 class RenderWidgetHostLatencyTrackerTest 96 class RenderWidgetHostLatencyTrackerTest
86 : public RenderViewHostImplTestHarness { 97 : public RenderViewHostImplTestHarness {
87 public: 98 public:
88 RenderWidgetHostLatencyTrackerTest() : old_browser_client_(NULL) { 99 RenderWidgetHostLatencyTrackerTest() : old_browser_client_(NULL) {
89 tracker_.Initialize(kTestRoutingId, kTestProcessId); 100 tracker_.Initialize(kTestRoutingId, kTestProcessId);
90 ResetHistograms(); 101 ResetHistograms();
91 } 102 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 return ::testing::AssertionSuccess(); 137 return ::testing::AssertionSuccess();
127 } else { 138 } else {
128 if (!sample_obj) 139 if (!sample_obj)
129 return ::testing::AssertionSuccess(); 140 return ::testing::AssertionSuccess();
130 else 141 else
131 return ::testing::AssertionFailure() << rappor_name 142 return ::testing::AssertionFailure() << rappor_name
132 << " rappor sample should be null"; 143 << " rappor sample should be null";
133 } 144 }
134 } 145 }
135 146
147 ::testing::AssertionResult UkmReportAssert(const char* event_name) {
148 const ukm::TestUkmRecorder* ukm_recoder =
149 test_browser_client_.GetTestUkmRecorder();
150 size_t expected_metrics_index = 0;
tdresser 2017/05/30 16:52:07 It isn't clear from the name what this is.
Navid Zolghadr 2017/05/31 20:37:15 renamed.
151 for (size_t i = 0; i < ukm_recoder->entries_count(); ++i) {
tdresser 2017/05/30 16:52:07 Could this be a range based for?
Navid Zolghadr 2017/05/31 20:37:15 It seems that ukm_recorder is not (and does not re
tdresser 2017/06/01 12:44:44 Acknowledged.
152 const ukm::mojom::UkmEntry* entry = ukm_recoder->GetEntry(i);
153 if (entry->event_hash != base::HashMetricName(event_name))
154 continue;
155
156 const ukm::UkmSource* source =
157 ukm_recoder->GetSourceForSourceId(entry->source_id);
158 if (!source)
159 return ::testing::AssertionFailure() << "Source should not be null";
160
161 if (expected_metrics_index >= 1)
162 break;
163
164 if (GURL(kUrl) != source->url())
165 return ::testing::AssertionFailure() << "Incorrect URL is reported.";
166
167 expected_metrics_index++;
168 if (entry->metrics.size() != 1)
169 return ::testing::AssertionFailure()
170 << event_name << " entry expected only 1 metric but got "
171 << entry->metrics.size();
172
173 if (entry->metrics[0]->metric_hash != base::HashMetricName("Latency"))
174 return ::testing::AssertionFailure()
175 << "Expected a metric named 'Latency'";
176 }
177 if (expected_metrics_index != 1)
178 return ::testing::AssertionFailure()
179 << event_name << " expected " << 1 << " entries but got "
180 << expected_metrics_index;
181 return ::testing::AssertionSuccess();
182 }
183
136 ::testing::AssertionResult HistogramSizeEq(const char* histogram_name, 184 ::testing::AssertionResult HistogramSizeEq(const char* histogram_name,
137 int size) { 185 int size) {
138 uint64_t histogram_size = 186 uint64_t histogram_size =
139 histogram_tester_->GetAllSamples(histogram_name).size(); 187 histogram_tester_->GetAllSamples(histogram_name).size();
140 if (static_cast<uint64_t>(size) == histogram_size) { 188 if (static_cast<uint64_t>(size) == histogram_size) {
141 return ::testing::AssertionSuccess(); 189 return ::testing::AssertionSuccess();
142 } else { 190 } else {
143 return ::testing::AssertionFailure() << histogram_name << " expected " 191 return ::testing::AssertionFailure() << histogram_name << " expected "
144 << size << " entries, but had " 192 << size << " entries, but had "
145 << histogram_size; 193 << histogram_size;
146 } 194 }
147 } 195 }
148 196
149 RenderWidgetHostLatencyTracker* tracker() { return &tracker_; } 197 RenderWidgetHostLatencyTracker* tracker() { return &tracker_; }
150 void ResetHistograms() { 198 void ResetHistograms() {
151 histogram_tester_.reset(new base::HistogramTester()); 199 histogram_tester_.reset(new base::HistogramTester());
200 test_browser_client_.GetTestUkmRecorder()->Purge();
152 } 201 }
153 202
154 const base::HistogramTester& histogram_tester() { 203 const base::HistogramTester& histogram_tester() {
155 return *histogram_tester_; 204 return *histogram_tester_;
156 } 205 }
157 206
158 void SetUp() override { 207 void SetUp() override {
159 RenderViewHostImplTestHarness::SetUp(); 208 RenderViewHostImplTestHarness::SetUp();
160 old_browser_client_ = SetBrowserClientForTesting(&test_browser_client_); 209 old_browser_client_ = SetBrowserClientForTesting(&test_browser_client_);
161 tracker_.SetDelegate(contents()); 210 tracker_.SetDelegate(contents());
162 } 211 }
163 212
164 void TearDown() override { 213 void TearDown() override {
165 SetBrowserClientForTesting(old_browser_client_); 214 SetBrowserClientForTesting(old_browser_client_);
166 RenderViewHostImplTestHarness::TearDown(); 215 RenderViewHostImplTestHarness::TearDown();
167 } 216 }
168 217
169 protected: 218 protected:
170 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTest); 219 DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTest);
171 const int kTestRoutingId = 3; 220 const int kTestRoutingId = 3;
172 const int kTestProcessId = 1; 221 const int kTestProcessId = 1;
173 std::unique_ptr<base::HistogramTester> histogram_tester_; 222 std::unique_ptr<base::HistogramTester> histogram_tester_;
174 RenderWidgetHostLatencyTracker tracker_; 223 RenderWidgetHostLatencyTracker tracker_;
175 RenderWidgetHostLatencyTrackerTestBrowserClient test_browser_client_; 224 RenderWidgetHostLatencyTrackerTestBrowserClient test_browser_client_;
176 ContentBrowserClient* old_browser_client_; 225 ContentBrowserClient* old_browser_client_;
177 }; 226 };
178 227
179 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) { 228 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) {
180 const GURL url("http://www.foo.bar.com/subpage/1"); 229 const GURL url(kUrl);
181 contents()->NavigateAndCommit(url); 230 contents()->NavigateAndCommit(url);
182 for (bool rendering_on_main : {false, true}) { 231 for (bool rendering_on_main : {false, true}) {
183 ResetHistograms(); 232 ResetHistograms();
184 { 233 {
185 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( 234 auto wheel = SyntheticWebMouseWheelEventBuilder::Build(
186 blink::WebMouseWheelEvent::kPhaseChanged); 235 blink::WebMouseWheelEvent::kPhaseChanged);
187 base::TimeTicks now = base::TimeTicks::Now(); 236 base::TimeTicks now = base::TimeTicks::Now();
188 wheel.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); 237 wheel.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF());
189 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL); 238 ui::LatencyInfo wheel_latency(ui::SourceEventType::WHEEL);
190 wheel_latency.AddLatencyNumberWithTimestamp( 239 wheel_latency.AddLatencyNumberWithTimestamp(
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 EXPECT_TRUE(HistogramSizeEq( 307 EXPECT_TRUE(HistogramSizeEq(
259 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", 0)); 308 "Event.Latency.ScrollUpdate.Wheel.HandledToRendererSwap2_Impl", 0));
260 EXPECT_TRUE(HistogramSizeEq( 309 EXPECT_TRUE(HistogramSizeEq(
261 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2", 310 "Event.Latency.ScrollUpdate.Wheel.RendererSwapToBrowserNotified2",
262 0)); 311 0));
263 EXPECT_TRUE(HistogramSizeEq( 312 EXPECT_TRUE(HistogramSizeEq(
264 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", 313 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2",
265 0)); 314 0));
266 EXPECT_TRUE( 315 EXPECT_TRUE(
267 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0)); 316 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0));
317
318 ukm::TestUkmRecorder* test_ukm_recorder =
319 test_browser_client_.GetTestUkmRecorder();
320 EXPECT_EQ(0U, test_ukm_recorder->sources_count());
321 EXPECT_EQ(0U, test_ukm_recorder->entries_count());
268 } 322 }
269 } 323 }
270 } 324 }
271 325
272 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) { 326 TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) {
273 for (bool rendering_on_main : {false, true}) { 327 for (bool rendering_on_main : {false, true}) {
274 ResetHistograms(); 328 ResetHistograms();
275 { 329 {
276 auto wheel = SyntheticWebMouseWheelEventBuilder::Build( 330 auto wheel = SyntheticWebMouseWheelEventBuilder::Build(
277 blink::WebMouseWheelEvent::kPhaseChanged); 331 blink::WebMouseWheelEvent::kPhaseChanged);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 EXPECT_TRUE(HistogramSizeEq( 390 EXPECT_TRUE(HistogramSizeEq(
337 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2", 391 "Event.Latency.ScrollUpdate.Wheel.BrowserNotifiedToBeforeGpuSwap2",
338 1)); 392 1));
339 EXPECT_TRUE( 393 EXPECT_TRUE(
340 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 1)); 394 HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 1));
341 } 395 }
342 } 396 }
343 } 397 }
344 398
345 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) { 399 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) {
346 const GURL url("http://www.foo.bar.com/subpage/1"); 400 const GURL url(kUrl);
347 contents()->NavigateAndCommit(url); 401 contents()->NavigateAndCommit(url);
348 for (bool rendering_on_main : {false, true}) { 402 for (bool rendering_on_main : {false, true}) {
349 ResetHistograms(); 403 ResetHistograms();
350 { 404 {
351 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate( 405 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollUpdate(
352 5.f, -5.f, 0, blink::kWebGestureDeviceTouchscreen); 406 5.f, -5.f, 0, blink::kWebGestureDeviceTouchscreen);
353 base::TimeTicks now = base::TimeTicks::Now(); 407 base::TimeTicks now = base::TimeTicks::Now();
354 scroll.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF()); 408 scroll.SetTimeStampSeconds((now - base::TimeTicks()).InSecondsF());
355 ui::LatencyInfo scroll_latency; 409 ui::LatencyInfo scroll_latency;
356 scroll_latency.AddLatencyNumberWithTimestamp( 410 scroll_latency.AddLatencyNumberWithTimestamp(
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 EXPECT_TRUE(HistogramSizeEq( 502 EXPECT_TRUE(HistogramSizeEq(
449 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", 0)); 503 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Main", 0));
450 EXPECT_TRUE(HistogramSizeEq( 504 EXPECT_TRUE(HistogramSizeEq(
451 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 0)); 505 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 0));
452 EXPECT_TRUE(HistogramSizeEq( 506 EXPECT_TRUE(HistogramSizeEq(
453 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 0)); 507 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 0));
454 EXPECT_TRUE(HistogramSizeEq( 508 EXPECT_TRUE(HistogramSizeEq(
455 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 0)); 509 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 0));
456 EXPECT_TRUE( 510 EXPECT_TRUE(
457 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0)); 511 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0));
512
513 ukm::TestUkmRecorder* test_ukm_recorder =
514 test_browser_client_.GetTestUkmRecorder();
515 EXPECT_EQ(0U, test_ukm_recorder->sources_count());
516 EXPECT_EQ(0U, test_ukm_recorder->entries_count());
458 } 517 }
459 } 518 }
460 519
461 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) { 520 TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) {
462 const GURL url("http://www.foo.bar.com/subpage/1"); 521 const GURL url(kUrl);
463 contents()->NavigateAndCommit(url); 522 contents()->NavigateAndCommit(url);
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());
(...skipping 28 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 EXPECT_TRUE(UkmReportAssert(
572 "Event.Latency.ScrollUpdate.Touch.TimeToScrollUpdateSwapBegin2"));
573
511 // Rappor metrics. 574 // Rappor metrics.
512 EXPECT_TRUE( 575 EXPECT_TRUE(
513 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch." 576 RapporSampleAssert("Event.Latency.ScrollUpdate.Touch."
514 "TimeToScrollUpdateSwapBegin2", 577 "TimeToScrollUpdateSwapBegin2",
515 2)); 578 2));
516 EXPECT_TRUE( 579 EXPECT_TRUE(
517 RapporSampleAssert("Event.Latency.ScrollBegin.Touch." 580 RapporSampleAssert("Event.Latency.ScrollBegin.Touch."
518 "TimeToScrollUpdateSwapBegin2", 581 "TimeToScrollUpdateSwapBegin2",
519 0)); 582 0));
520 EXPECT_TRUE( 583 EXPECT_TRUE(
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 rendering_on_main ? 1 : 0)); 621 rendering_on_main ? 1 : 0));
559 EXPECT_TRUE(HistogramSizeEq( 622 EXPECT_TRUE(HistogramSizeEq(
560 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl", 623 "Event.Latency.ScrollUpdate.Touch.HandledToRendererSwap2_Impl",
561 rendering_on_main ? 0 : 1)); 624 rendering_on_main ? 0 : 1));
562 EXPECT_TRUE(HistogramSizeEq( 625 EXPECT_TRUE(HistogramSizeEq(
563 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 1)); 626 "Event.Latency.ScrollUpdate.Touch.RendererSwapToBrowserNotified2", 1));
564 EXPECT_TRUE(HistogramSizeEq( 627 EXPECT_TRUE(HistogramSizeEq(
565 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 1)); 628 "Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 1));
566 EXPECT_TRUE( 629 EXPECT_TRUE(
567 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 1)); 630 HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 1));
631
632 ukm::TestUkmRecorder* test_ukm_recorder =
633 test_browser_client_.GetTestUkmRecorder();
634 EXPECT_EQ(1U, test_ukm_recorder->sources_count());
635 EXPECT_EQ(1U, test_ukm_recorder->entries_count());
tdresser 2017/05/30 16:52:07 Should we be using UkmReportAssert here?
Navid Zolghadr 2017/05/31 20:37:15 It is used earlier in the function. I got rid of t
568 } 636 }
569 } 637 }
570 638
571 TEST_F(RenderWidgetHostLatencyTrackerTest, 639 TEST_F(RenderWidgetHostLatencyTrackerTest,
572 LatencyTerminatedOnAckIfRenderingNotScheduled) { 640 LatencyTerminatedOnAckIfRenderingNotScheduled) {
573 { 641 {
574 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollBegin( 642 auto scroll = SyntheticWebGestureEventBuilder::BuildScrollBegin(
575 5.f, -5.f, blink::kWebGestureDeviceTouchscreen); 643 5.f, -5.f, blink::kWebGestureDeviceTouchscreen);
576 ui::LatencyInfo scroll_latency; 644 ui::LatencyInfo scroll_latency;
577 AddFakeComponents(*tracker(), &scroll_latency); 645 AddFakeComponents(*tracker(), &scroll_latency);
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 1266
1199 tracker()->OnInputEventAck(wheel_event, &latency, ack_state); 1267 tracker()->OnInputEventAck(wheel_event, &latency, ack_state);
1200 } 1268 }
1201 1269
1202 EXPECT_THAT(histogram_tester().GetAllSamples( 1270 EXPECT_THAT(histogram_tester().GetAllSamples(
1203 "Event.Latency.QueueingTime.MouseWheelDefaultAllowed"), 1271 "Event.Latency.QueueingTime.MouseWheelDefaultAllowed"),
1204 ElementsAre(Bucket(14, 1))); 1272 ElementsAre(Bucket(14, 1)));
1205 } 1273 }
1206 1274
1207 } // namespace content 1275 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698