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 @@ ...@@ -8,8 +8,7 @@
using WebFeature = blink::mojom::WebFeature; using WebFeature = blink::mojom::WebFeature;
// UKM-based UseCounter features (WebFeature) should be defined in // UKM-based UseCounter features (WebFeature) should be defined in
// opt_in_features list. Currently there have been no features opt-in for // opt_in_features list.
// UKM-based UseCounter, which is why the list is empty.
bool IsAllowedUkmFeature(blink::mojom::WebFeature feature) { bool IsAllowedUkmFeature(blink::mojom::WebFeature feature) {
CR_DEFINE_STATIC_LOCAL( CR_DEFINE_STATIC_LOCAL(
const base::flat_set<WebFeature>, opt_in_features, const base::flat_set<WebFeature>, opt_in_features,
...@@ -21,6 +20,8 @@ bool IsAllowedUkmFeature(blink::mojom::WebFeature feature) { ...@@ -21,6 +20,8 @@ bool IsAllowedUkmFeature(blink::mojom::WebFeature feature) {
// kDataUriHasOctothorpe may not be recorded correctly for iframes. // kDataUriHasOctothorpe may not be recorded correctly for iframes.
// See https://crbug.com/796173 for details. // See https://crbug.com/796173 for details.
WebFeature::kDataUriHasOctothorpe, WebFeature::kDataUriHasOctothorpe,
WebFeature::kApplicationCacheManifestSelectInsecureOrigin,
WebFeature::kApplicationCacheManifestSelectSecureOrigin,
})); }));
return opt_in_features.count(feature); return opt_in_features.count(feature);
} }
...@@ -338,6 +338,11 @@ class PageLoadMetricsBrowserTest : public InProcessBrowserTest { ...@@ -338,6 +338,11 @@ class PageLoadMetricsBrowserTest : public InProcessBrowserTest {
~PageLoadMetricsBrowserTest() override {} ~PageLoadMetricsBrowserTest() override {}
protected: protected:
void SetUpOnMainThread() override {
InProcessBrowserTest::SetUpOnMainThread();
host_resolver()->AddRule("*", "127.0.0.1");
}
void PreRunTestOnMainThread() override { void PreRunTestOnMainThread() override {
InProcessBrowserTest::PreRunTestOnMainThread(); InProcessBrowserTest::PreRunTestOnMainThread();
...@@ -1200,6 +1205,46 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ...@@ -1200,6 +1205,46 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
histogram_tester_.ExpectBucketCount( histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName, internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kDataUriHasOctothorpe), 1); 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( histogram_tester_.ExpectBucketCount(
internal::kFeaturesHistogramName, internal::kFeaturesHistogramName,
static_cast<int32_t>(WebFeature::kPageVisits), 1); static_cast<int32_t>(WebFeature::kPageVisits), 1);
...@@ -1220,7 +1265,7 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ...@@ -1220,7 +1265,7 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
const auto& entries = const auto& entries =
test_ukm_recorder_->GetEntriesByName(internal::kUkmUseCounterEventName); test_ukm_recorder_->GetEntriesByName(internal::kUkmUseCounterEventName);
EXPECT_EQ(2u, entries.size()); EXPECT_EQ(3u, entries.size());
std::vector<int64_t> ukm_features; std::vector<int64_t> ukm_features;
for (const auto* entry : entries) { for (const auto* entry : entries) {
test_ukm_recorder_->ExpectEntrySourceHasUrl(entry, url); test_ukm_recorder_->ExpectEntrySourceHasUrl(entry, url);
...@@ -1229,10 +1274,13 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ...@@ -1229,10 +1274,13 @@ IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest,
EXPECT_TRUE(metric); EXPECT_TRUE(metric);
ukm_features.push_back(metric->value); ukm_features.push_back(metric->value);
} }
EXPECT_THAT(ukm_features, EXPECT_THAT(
ukm_features,
UnorderedElementsAre( UnorderedElementsAre(
static_cast<int64_t>(WebFeature::kNavigatorVibrate), static_cast<int64_t>(WebFeature::kNavigatorVibrate),
static_cast<int64_t>(WebFeature::kDataUriHasOctothorpe))); static_cast<int64_t>(WebFeature::kDataUriHasOctothorpe),
static_cast<int64_t>(
WebFeature::kApplicationCacheManifestSelectSecureOrigin)));
} }
// Test UseCounter Features observed in a child frame are recorded, exactly // 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> <head><title>UseCounter Features Test</title></head>
<body> <body>
<div id="div"></div> <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