Commit 44b8740c authored by Mike West's avatar Mike West Committed by Commit Bot

Collect AppCache UseCounter metrics via UKM.

Bug: 588931
Change-Id: Ie1118c0efa0cc3e274d3f66ce4ea536979014aa0
Reviewed-on: https://chromium-review.googlesource.com/875964
Commit-Queue: Mike West <mkwst@chromium.org>
Reviewed-by: default avatarLuna Lu <loonybear@chromium.org>
Reviewed-by: default avatarBryan McQuade <bmcquade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532379}
parent 33b07d13
......@@ -8,8 +8,7 @@
using WebFeature = blink::mojom::WebFeature;
// UKM-based UseCounter features (WebFeature) should be defined in
// opt_in_features list. Currently there have been no features opt-in for
// UKM-based UseCounter, which is why the list is empty.
// opt_in_features list.
bool IsAllowedUkmFeature(blink::mojom::WebFeature feature) {
CR_DEFINE_STATIC_LOCAL(
const base::flat_set<WebFeature>, opt_in_features,
......@@ -21,6 +20,8 @@ bool IsAllowedUkmFeature(blink::mojom::WebFeature feature) {
// kDataUriHasOctothorpe may not be recorded correctly for iframes.
// See https://crbug.com/796173 for details.
WebFeature::kDataUriHasOctothorpe,
WebFeature::kApplicationCacheManifestSelectInsecureOrigin,
WebFeature::kApplicationCacheManifestSelectSecureOrigin,
}));
return opt_in_features.count(feature);
}
......@@ -338,6 +338,11 @@ class PageLoadMetricsBrowserTest : public InProcessBrowserTest {
~PageLoadMetricsBrowserTest() override {}
protected:
void SetUpOnMainThread() override {
InProcessBrowserTest::SetUpOnMainThread();
host_resolver()->AddRule("*", "127.0.0.1");
}
void PreRunTestOnMainThread() override {
InProcessBrowserTest::PreRunTestOnMainThread();
......@@ -1200,6 +1205,46 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kDataUriHasOctothorpe), 1);
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(
WebFeature::kApplicationCacheManifestSelectSecureOrigin),
1);
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kPageVisits), 1);
}
IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
UseCounterFeaturesInNonSecureMainFrame) {
ASSERT_TRUE(embedded_test_server()->Start());
auto waiter = CreatePageLoadMetricsWaiter();
waiter->AddPageExpectation(TimingField::LOAD_EVENT);
ui_test_utils::NavigateToURL(
browser(),
embedded_test_server()->GetURL(
"non-secure.test", "/page_load_metrics/use_counter_features.html"));
waiter->Wait();
NavigateToUntrackedUrl();
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kTextWholeText), 1);
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kV8Element_Animate_Method), 1);
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kNavigatorVibrate), 1);
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kDataUriHasOctothorpe), 1);
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(
WebFeature::kApplicationCacheManifestSelectInsecureOrigin),
1);
histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kPageVisits), 1);
......@@ -1220,7 +1265,7 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
const auto& entries =
test_ukm_recorder_->GetEntriesByName(internal::kUkmUseCounterEventName);
EXPECT_EQ(2u, entries.size());
EXPECT_EQ(3u, entries.size());
std::vector<int64_t> ukm_features;
for (const auto* entry : entries) {
test_ukm_recorder_->ExpectEntrySourceHasUrl(entry, url);
......@@ -1229,10 +1274,13 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
EXPECT_TRUE(metric);
ukm_features.push_back(metric->value);
}
EXPECT_THAT(ukm_features,
UnorderedElementsAre(
static_cast<int64_t>(WebFeature::kNavigatorVibrate),
static_cast<int64_t>(WebFeature::kDataUriHasOctothorpe)));
EXPECT_THAT(
ukm_features,
UnorderedElementsAre(
static_cast<int64_t>(WebFeature::kNavigatorVibrate),
static_cast<int64_t>(WebFeature::kDataUriHasOctothorpe),
static_cast<int64_t>(
WebFeature::kApplicationCacheManifestSelectSecureOrigin)));
}
// Test UseCounter Features observed in a child frame are recorded, exactly
......
<html>
<html manifest="./not-actually-a-manifest.appcache">
<head><title>UseCounter Features Test</title></head>
<body>
<div id="div"></div>
......
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