Commit b2dad40f authored by Yutaka Hirano's avatar Yutaka Hirano Committed by Commit Bot

Inline UseCounterTest::HistogramBasicTest

It is used only once, so let's inline it. This change also removes
std::function use which is currently banned.

Bug: 963306
Change-Id: I532ceb3707196c0c21a3aed8ae8c154467cd5fca
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1614648
Auto-Submit: Yutaka Hirano <yhirano@chromium.org>
Commit-Queue: Luna Lu <loonybear@chromium.org>
Reviewed-by: default avatarLuna Lu <loonybear@chromium.org>
Cr-Commit-Position: refs/heads/master@{#660997}
parent f069fea7
...@@ -46,17 +46,6 @@ class UseCounterTest : public testing::Test { ...@@ -46,17 +46,6 @@ class UseCounterTest : public testing::Test {
void SetURL(const KURL& url) { dummy_->GetDocument().SetURL(url); } void SetURL(const KURL& url) { dummy_->GetDocument().SetURL(url); }
Document& GetDocument() { return dummy_->GetDocument(); } Document& GetDocument() { return dummy_->GetDocument(); }
template <typename T>
void HistogramBasicTest(
const std::string& histogram,
T item,
T second_item,
std::function<bool(T, UseCounter&)> counted,
std::function<void(T, UseCounter&)> count,
std::function<int(T)> histogram_map,
std::function<void(LocalFrame*, UseCounter&)> did_commit_load,
const std::string& url,
UseCounter::Context context = UseCounter::kDefaultContext);
std::unique_ptr<DummyPageHolder> dummy_; std::unique_ptr<DummyPageHolder> dummy_;
HistogramTester histogram_tester_; HistogramTester histogram_tester_;
...@@ -66,74 +55,54 @@ class UseCounterTest : public testing::Test { ...@@ -66,74 +55,54 @@ class UseCounterTest : public testing::Test {
} }
}; };
template <typename T> TEST_F(UseCounterTest, RecordingExtensions) {
void UseCounterTest::HistogramBasicTest( const std::string histogram = kExtensionFeaturesHistogramName;
const std::string& histogram, constexpr auto item = mojom::WebFeature::kFetch;
T item, constexpr auto second_item = WebFeature::kFetchBodyStream;
T second_item, const std::string url = kExtensionUrl;
std::function<bool(T, UseCounter&)> counted, UseCounter::Context context = UseCounter::kExtensionContext;
std::function<void(T, UseCounter&)> count,
std::function<int(T)> histogram_map,
std::function<void(LocalFrame*, UseCounter&)> did_commit_load,
const std::string& url,
UseCounter::Context context) {
int page_visits_bucket = GetPageVisitsBucketforHistogram(histogram); int page_visits_bucket = GetPageVisitsBucketforHistogram(histogram);
UseCounter use_counter0(context, UseCounter::kCommited); UseCounter use_counter0(context, UseCounter::kCommited);
// Test recording a single (arbitrary) counter // Test recording a single (arbitrary) counter
EXPECT_FALSE(counted(item, use_counter0)); EXPECT_FALSE(use_counter0.HasRecordedMeasurement(item));
count(item, use_counter0); use_counter0.RecordMeasurement(item, *GetFrame());
EXPECT_TRUE(counted(item, use_counter0)); EXPECT_TRUE(use_counter0.HasRecordedMeasurement(item));
histogram_tester_.ExpectUniqueSample(histogram, histogram_map(item), 1); histogram_tester_.ExpectUniqueSample(histogram, static_cast<int>(item), 1);
// Test that repeated measurements have no effect // Test that repeated measurements have no effect
count(item, use_counter0); use_counter0.RecordMeasurement(item, *GetFrame());
histogram_tester_.ExpectUniqueSample(histogram, histogram_map(item), 1); histogram_tester_.ExpectUniqueSample(histogram, static_cast<int>(item), 1);
// Test recording a different sample // Test recording a different sample
EXPECT_FALSE(counted(second_item, use_counter0)); EXPECT_FALSE(use_counter0.HasRecordedMeasurement(second_item));
count(second_item, use_counter0); use_counter0.RecordMeasurement(second_item, *GetFrame());
EXPECT_TRUE(counted(second_item, use_counter0)); EXPECT_TRUE(use_counter0.HasRecordedMeasurement(second_item));
histogram_tester_.ExpectBucketCount(histogram, histogram_map(item), 1); histogram_tester_.ExpectBucketCount(histogram, static_cast<int>(item), 1);
histogram_tester_.ExpectBucketCount(histogram, histogram_map(second_item), 1); histogram_tester_.ExpectBucketCount(histogram, static_cast<int>(second_item),
1);
histogram_tester_.ExpectTotalCount(histogram, 2); histogram_tester_.ExpectTotalCount(histogram, 2);
// After a page load, the histograms will be updated, even when the URL // After a page load, the histograms will be updated, even when the URL
// scheme is internal // scheme is internal
UseCounter use_counter1(context); UseCounter use_counter1(context);
SetURL(url_test_helpers::ToKURL(url)); SetURL(url_test_helpers::ToKURL(url));
did_commit_load(GetFrame(), use_counter1); use_counter1.DidCommitLoad(GetFrame());
histogram_tester_.ExpectBucketCount(histogram, histogram_map(item), 1); histogram_tester_.ExpectBucketCount(histogram, static_cast<int>(item), 1);
histogram_tester_.ExpectBucketCount(histogram, histogram_map(second_item), 1); histogram_tester_.ExpectBucketCount(histogram, static_cast<int>(second_item),
1);
histogram_tester_.ExpectBucketCount(histogram, page_visits_bucket, 1); histogram_tester_.ExpectBucketCount(histogram, page_visits_bucket, 1);
histogram_tester_.ExpectTotalCount(histogram, 3); histogram_tester_.ExpectTotalCount(histogram, 3);
// Now a repeat measurement should get recorded again, exactly once // Now a repeat measurement should get recorded again, exactly once
EXPECT_FALSE(counted(item, use_counter1)); EXPECT_FALSE(use_counter1.HasRecordedMeasurement(item));
count(item, use_counter1); use_counter1.RecordMeasurement(item, *GetFrame());
count(item, use_counter1); use_counter1.RecordMeasurement(item, *GetFrame());
EXPECT_TRUE(counted(item, use_counter1)); EXPECT_TRUE(use_counter1.HasRecordedMeasurement(item));
histogram_tester_.ExpectBucketCount(histogram, histogram_map(item), 2); histogram_tester_.ExpectBucketCount(histogram, static_cast<int>(item), 2);
histogram_tester_.ExpectTotalCount(histogram, 4); histogram_tester_.ExpectTotalCount(histogram, 4);
} }
TEST_F(UseCounterTest, RecordingExtensions) {
HistogramBasicTest<WebFeature>(
kExtensionFeaturesHistogramName, WebFeature::kFetch,
WebFeature::kFetchBodyStream,
[&](WebFeature feature, UseCounter& use_counter) -> bool {
return use_counter.HasRecordedMeasurement(feature);
},
[&](WebFeature feature, UseCounter& use_counter) {
use_counter.RecordMeasurement(feature, *GetFrame());
},
[](WebFeature feature) -> int { return static_cast<int>(feature); },
[&](LocalFrame* frame, UseCounter& use_counter) {
use_counter.DidCommitLoad(frame);
},
kExtensionUrl, UseCounter::kExtensionContext);
}
TEST_F(UseCounterTest, CSSSelectorPseudoWhere) { TEST_F(UseCounterTest, CSSSelectorPseudoWhere) {
auto dummy_page_holder = std::make_unique<DummyPageHolder>(IntSize(800, 600)); auto dummy_page_holder = std::make_unique<DummyPageHolder>(IntSize(800, 600));
Page::InsertOrdinaryPageForTesting(&dummy_page_holder->GetPage()); Page::InsertOrdinaryPageForTesting(&dummy_page_holder->GetPage());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment