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

Unified 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, 7 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
diff --git a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
index 7655c4c9523a2ea4fa1022ccc0b7cc7439cf29c9..d1e1448f0caab9acee2591bb3035ffc8eedd0bac 100644
--- a/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
+++ b/content/browser/renderer_host/input/render_widget_host_latency_tracker_unittest.cc
@@ -2,10 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "content/browser/renderer_host/input/render_widget_host_latency_tracker.h"
+#include "base/metrics/metrics_hashes.h"
#include "base/test/histogram_tester.h"
+#include "components/metrics/proto/ukm/entry.pb.h"
#include "components/rappor/public/rappor_utils.h"
#include "components/rappor/test_rappor_service.h"
-#include "content/browser/renderer_host/input/render_widget_host_latency_tracker.h"
+#include "components/ukm/test_ukm_recorder.h"
+#include "components/ukm/ukm_source.h"
#include "content/common/input/synthetic_web_input_event_builders.h"
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/test/test_content_browser_client.h"
@@ -21,6 +25,8 @@ using testing::ElementsAre;
namespace content {
namespace {
+const char kUrl[] = "http://www.foo.bar.com/subpage/1";
+
void AddFakeComponentsWithTimeStamp(
const RenderWidgetHostLatencyTracker& tracker,
ui::LatencyInfo* latency,
@@ -77,8 +83,11 @@ class RenderWidgetHostLatencyTrackerTestBrowserClient
return &rappor_service_;
}
+ ukm::TestUkmRecorder* GetTestUkmRecorder() { return &test_ukm_recorder_; }
+
private:
rappor::TestRapporServiceImpl rappor_service_;
+ ukm::TestUkmRecorder test_ukm_recorder_;
DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostLatencyTrackerTestBrowserClient);
};
@@ -133,6 +142,44 @@ class RenderWidgetHostLatencyTrackerTest
}
}
+ ::testing::AssertionResult AssertUkmReported(const char* event_name,
+ const char* metric_name) {
+ const ukm::TestUkmRecorder* ukm_recoder =
+ test_browser_client_.GetTestUkmRecorder();
+ size_t actual_event_count = 0;
+ for (size_t i = 0; i < ukm_recoder->entries_count(); ++i) {
+ const ukm::mojom::UkmEntry* entry = ukm_recoder->GetEntry(i);
+ if (entry->event_hash != base::HashMetricName(event_name))
+ continue;
+
+ const ukm::UkmSource* source =
+ ukm_recoder->GetSourceForSourceId(entry->source_id);
+ if (!source)
+ return ::testing::AssertionFailure() << "Source should not be null";
+
+ if (actual_event_count >= 1)
+ break;
+
+ if (GURL(kUrl) != source->url())
+ return ::testing::AssertionFailure() << "Incorrect URL is reported.";
+
+ actual_event_count++;
+ if (entry->metrics.size() != 1)
+ return ::testing::AssertionFailure()
+ << event_name << " entry expected only 1 metric but got "
+ << entry->metrics.size();
+
+ if (entry->metrics[0]->metric_hash != base::HashMetricName(metric_name))
+ return ::testing::AssertionFailure()
+ << "Expected a metric named " << metric_name;
+ }
+ if (actual_event_count != 1)
+ return ::testing::AssertionFailure()
+ << event_name << " expected " << 1 << " entry but got "
+ << actual_event_count;
+ return ::testing::AssertionSuccess();
+ }
+
::testing::AssertionResult HistogramSizeEq(const char* histogram_name,
int size) {
uint64_t histogram_size =
@@ -164,6 +211,7 @@ class RenderWidgetHostLatencyTrackerTest
void TearDown() override {
SetBrowserClientForTesting(old_browser_client_);
RenderViewHostImplTestHarness::TearDown();
+ test_browser_client_.GetTestUkmRecorder()->Purge();
}
protected:
@@ -177,7 +225,7 @@ class RenderWidgetHostLatencyTrackerTest
};
TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) {
- const GURL url("http://www.foo.bar.com/subpage/1");
+ const GURL url(kUrl);
contents()->NavigateAndCommit(url);
for (bool rendering_on_main : {false, true}) {
ResetHistograms();
@@ -265,6 +313,11 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToFirstScrollHistograms) {
0));
EXPECT_TRUE(
HistogramSizeEq("Event.Latency.ScrollUpdate.Wheel.GpuSwap2", 0));
+
+ ukm::TestUkmRecorder* test_ukm_recorder =
+ test_browser_client_.GetTestUkmRecorder();
+ EXPECT_EQ(0U, test_ukm_recorder->sources_count());
+ EXPECT_EQ(0U, test_ukm_recorder->entries_count());
}
}
}
@@ -343,7 +396,7 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestWheelToScrollHistograms) {
}
TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) {
- const GURL url("http://www.foo.bar.com/subpage/1");
+ const GURL url(kUrl);
contents()->NavigateAndCommit(url);
for (bool rendering_on_main : {false, true}) {
ResetHistograms();
@@ -455,12 +508,18 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToFirstScrollHistograms) {
"Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 0));
EXPECT_TRUE(
HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 0));
+
+ ukm::TestUkmRecorder* test_ukm_recorder =
+ test_browser_client_.GetTestUkmRecorder();
+ EXPECT_EQ(0U, test_ukm_recorder->sources_count());
+ EXPECT_EQ(0U, test_ukm_recorder->entries_count());
}
}
TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) {
- const GURL url("http://www.foo.bar.com/subpage/1");
+ const GURL url(kUrl);
contents()->NavigateAndCommit(url);
+ size_t total_ukm_entry_count = 0;
for (bool rendering_on_main : {false, true}) {
ResetHistograms();
EXPECT_EQ(0,
@@ -508,6 +567,11 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) {
tracker()->OnGpuSwapBuffersCompleted(touch_latency);
}
+ // UKM metrics.
+ total_ukm_entry_count++;
+ EXPECT_TRUE(AssertUkmReported("Event.ScrollUpdate.Touch",
+ "TimeToScrollUpdateSwapBegin"));
+
// Rappor metrics.
EXPECT_TRUE(
RapporSampleAssert("Event.Latency.ScrollUpdate.Touch."
@@ -521,6 +585,7 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) {
RapporSampleAssert("Event.Latency.ScrollBegin.Wheel."
"TimeToScrollUpdateSwapBegin2",
0));
+
EXPECT_EQ(2,
test_browser_client_.getTestRapporService()->GetReportsCount());
@@ -565,6 +630,11 @@ TEST_F(RenderWidgetHostLatencyTrackerTest, TestTouchToScrollHistograms) {
"Event.Latency.ScrollUpdate.Touch.BrowserNotifiedToBeforeGpuSwap2", 1));
EXPECT_TRUE(
HistogramSizeEq("Event.Latency.ScrollUpdate.Touch.GpuSwap2", 1));
+
+ ukm::TestUkmRecorder* test_ukm_recorder =
+ test_browser_client_.GetTestUkmRecorder();
+ EXPECT_EQ(1U, test_ukm_recorder->sources_count());
+ EXPECT_EQ(total_ukm_entry_count, test_ukm_recorder->entries_count());
}
}

Powered by Google App Engine
This is Rietveld 408576698