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

Unified Diff: third_party/WebKit/Source/core/frame/UseCounterTest.cpp

Issue 2796283005: Adding UseCounter specific for extensions (Closed)
Patch Set: Fix compile err 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: third_party/WebKit/Source/core/frame/UseCounterTest.cpp
diff --git a/third_party/WebKit/Source/core/frame/UseCounterTest.cpp b/third_party/WebKit/Source/core/frame/UseCounterTest.cpp
index f8c491e322df036683e25c11a0283017b024ee92..2afa3c1669da88c53f3abbedeb73e78995c50dc2 100644
--- a/third_party/WebKit/Source/core/frame/UseCounterTest.cpp
+++ b/third_party/WebKit/Source/core/frame/UseCounterTest.cpp
@@ -12,39 +12,52 @@
#include "testing/gtest/include/gtest/gtest.h"
namespace {
-const char* const kFeaturesHistogramName = "Blink.UseCounter.Features";
-const char* const kCSSHistogramName = "Blink.UseCounter.CSSProperties";
-const char* const kAnimatedCSSHistogramName =
+const char kFeaturesHistogramName[] = "Blink.UseCounter.Features";
+const char kCSSHistogramName[] = "Blink.UseCounter.CSSProperties";
+const char kAnimatedCSSHistogramName[] =
"Blink.UseCounter.AnimatedCSSProperties";
+const char kExtensionFeaturesHistogramName[] =
+ "Blink.UseCounter.Extensions.Features";
-const char* const kSVGFeaturesHistogramName =
- "Blink.UseCounter.SVGImage.Features";
-const char* const kSVGCSSHistogramName =
- "Blink.UseCounter.SVGImage.CSSProperties";
-const char* const kSVGAnimatedCSSHistogramName =
+const char kSVGFeaturesHistogramName[] = "Blink.UseCounter.SVGImage.Features";
+const char kSVGCSSHistogramName[] = "Blink.UseCounter.SVGImage.CSSProperties";
+const char kSVGAnimatedCSSHistogramName[] =
"Blink.UseCounter.SVGImage.AnimatedCSSProperties";
-const char* const kLegacyFeaturesHistogramName = "WebCore.FeatureObserver";
-const char* const kLegacyCSSHistogramName =
- "WebCore.FeatureObserver.CSSProperties";
+const char kLegacyFeaturesHistogramName[] = "WebCore.FeatureObserver";
+const char kLegacyCSSHistogramName[] = "WebCore.FeatureObserver.CSSProperties";
+
+// In practice, SVGs always appear to be loaded with an about:blank URL
+const char kSvgUrl[] = "about:blank";
+const char* const kInternalUrl = kSvgUrl;
+const char kHttpsUrl[] = "https://dummysite.com/";
+const char kExtensionUrl[] = "chrome-extension://dummysite/";
+
+int GetPageVisitsBucketforHistogram(const std::string& histogram_name) {
+ if (histogram_name.find("CSS") == std::string::npos)
+ return blink::UseCounter::kPageVisits;
+ // For CSS histograms, the page visits bucket should be 1.
+ return 1;
}
+} // namespace
+
namespace blink {
template <typename T>
void HistogramBasicTest(const std::string& histogram,
const std::string& legacy_histogram,
- const std::vector<std::string>& unaffected_histograms,
T item,
T second_item,
std::function<bool(T)> counted,
std::function<void(T)> count,
std::function<int(T)> histogram_map,
std::function<void(KURL)> did_commit_load,
- const std::string& url,
- int page_visit_bucket) {
+ const std::string& url) {
HistogramTester histogram_tester;
+ int page_visit_bucket = GetPageVisitsBucketforHistogram(histogram);
+
// Test recording a single (arbitrary) counter
EXPECT_FALSE(counted(item));
count(item);
@@ -109,18 +122,40 @@ void HistogramBasicTest(const std::string& histogram,
histogram_tester.ExpectTotalCount(legacy_histogram, 5);
}
- for (size_t i = 0; i < unaffected_histograms.size(); ++i) {
- histogram_tester.ExpectTotalCount(unaffected_histograms[i], 0);
+ // For all histograms, no other histograms besides |histogram| should
+ // be affected. Legacy histograms are not included in the list because they
+ // soon will be removed.
+ for (const std::string& unaffected_histogram :
+ {kAnimatedCSSHistogramName, kCSSHistogramName,
+ kExtensionFeaturesHistogramName, kFeaturesHistogramName,
+ kSVGAnimatedCSSHistogramName, kSVGCSSHistogramName,
+ kSVGFeaturesHistogramName}) {
+ if (unaffected_histogram == histogram)
+ continue;
+ // CSS histograms are never created in didCommitLoad when the context is
+ // extension.
+ if (histogram == kExtensionFeaturesHistogramName &&
+ unaffected_histogram.find("CSS") != std::string::npos)
+ continue;
+
+ // The expected total count for "Features" of unaffected histograms should
+ // be either:
+ // a. pageVisits, for "CSSFeatures"; or
+ // b. 0 (pageVisits is 0), for others, including "SVGImage.CSSFeatures"
+ // since no SVG images are loaded at all.
+ histogram_tester.ExpectTotalCount(
+ unaffected_histogram,
+ 0 + histogram_tester.GetBucketCount(
+ unaffected_histogram,
+ GetPageVisitsBucketforHistogram(unaffected_histogram)));
}
}
TEST(UseCounterTest, RecordingFeatures) {
UseCounter use_counter;
HistogramBasicTest<UseCounter::Feature>(
- kFeaturesHistogramName, kLegacyFeaturesHistogramName,
- {kSVGFeaturesHistogramName, kSVGCSSHistogramName,
- kSVGAnimatedCSSHistogramName},
- UseCounter::kFetch, UseCounter::kFetchBodyStream,
+ kFeaturesHistogramName, kLegacyFeaturesHistogramName, UseCounter::kFetch,
+ UseCounter::kFetchBodyStream,
[&](UseCounter::Feature feature) -> bool {
return use_counter.HasRecordedMeasurement(feature);
},
@@ -128,17 +163,14 @@ TEST(UseCounterTest, RecordingFeatures) {
use_counter.RecordMeasurement(feature);
},
[](UseCounter::Feature feature) -> int { return feature; },
- [&](KURL kurl) { use_counter.DidCommitLoad(kurl); },
- "https://dummysite.com/", UseCounter::kPageVisits);
+ [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, kHttpsUrl);
}
TEST(UseCounterTest, RecordingCSSProperties) {
UseCounter use_counter;
HistogramBasicTest<CSSPropertyID>(
- kCSSHistogramName, kLegacyCSSHistogramName,
- {kSVGFeaturesHistogramName, kSVGCSSHistogramName,
- kSVGAnimatedCSSHistogramName},
- CSSPropertyFont, CSSPropertyZoom,
+ kCSSHistogramName, kLegacyCSSHistogramName, CSSPropertyFont,
+ CSSPropertyZoom,
[&](CSSPropertyID property) -> bool {
return use_counter.IsCounted(property);
},
@@ -148,16 +180,13 @@ TEST(UseCounterTest, RecordingCSSProperties) {
[](CSSPropertyID property) -> int {
return UseCounter::MapCSSPropertyIdToCSSSampleIdForHistogram(property);
},
- [&](KURL kurl) { use_counter.DidCommitLoad(kurl); },
- "https://dummysite.com/", 1 /* page visit bucket */);
+ [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, kHttpsUrl);
}
TEST(UseCounterTest, RecordingAnimatedCSSProperties) {
UseCounter use_counter;
HistogramBasicTest<CSSPropertyID>(
- kAnimatedCSSHistogramName, "",
- {kSVGCSSHistogramName, kSVGAnimatedCSSHistogramName}, CSSPropertyOpacity,
- CSSPropertyVariable,
+ kAnimatedCSSHistogramName, "", CSSPropertyOpacity, CSSPropertyVariable,
[&](CSSPropertyID property) -> bool {
return use_counter.IsCountedAnimatedCSS(property);
},
@@ -165,15 +194,28 @@ TEST(UseCounterTest, RecordingAnimatedCSSProperties) {
[](CSSPropertyID property) -> int {
return UseCounter::MapCSSPropertyIdToCSSSampleIdForHistogram(property);
},
- [&](KURL kurl) { use_counter.DidCommitLoad(kurl); },
- "https://dummysite.com/", 1 /* page visit bucket */);
+ [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, kHttpsUrl);
+}
+
+TEST(UseCounterTest, RecordingExtensions) {
+ UseCounter use_counter(UseCounter::kExtensionContext);
+ HistogramBasicTest<UseCounter::Feature>(
+ kExtensionFeaturesHistogramName, kLegacyFeaturesHistogramName,
+ UseCounter::kFetch, UseCounter::kFetchBodyStream,
+ [&](UseCounter::Feature feature) -> bool {
+ return use_counter.HasRecordedMeasurement(feature);
+ },
+ [&](UseCounter::Feature feature) {
+ use_counter.RecordMeasurement(feature);
+ },
+ [](UseCounter::Feature feature) -> int { return feature; },
+ [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, kExtensionUrl);
}
TEST(UseCounterTest, SVGImageContextFeatures) {
UseCounter use_counter(UseCounter::kSVGImageContext);
HistogramBasicTest<UseCounter::Feature>(
kSVGFeaturesHistogramName, kLegacyFeaturesHistogramName,
- {kFeaturesHistogramName, kCSSHistogramName, kAnimatedCSSHistogramName},
UseCounter::kSVGSMILAdditiveAnimation,
UseCounter::kSVGSMILAnimationElementTiming,
[&](UseCounter::Feature feature) -> bool {
@@ -183,17 +225,14 @@ TEST(UseCounterTest, SVGImageContextFeatures) {
use_counter.RecordMeasurement(feature);
},
[](UseCounter::Feature feature) -> int { return feature; },
- [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, "about:blank",
- // In practice SVGs always appear to be loaded with an about:blank URL
- UseCounter::kPageVisits);
+ [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, kSvgUrl);
}
TEST(UseCounterTest, SVGImageContextCSSProperties) {
UseCounter use_counter(UseCounter::kSVGImageContext);
HistogramBasicTest<CSSPropertyID>(
- kSVGCSSHistogramName, kLegacyCSSHistogramName,
- {kFeaturesHistogramName, kCSSHistogramName, kAnimatedCSSHistogramName},
- CSSPropertyFont, CSSPropertyZoom,
+ kSVGCSSHistogramName, kLegacyCSSHistogramName, CSSPropertyFont,
+ CSSPropertyZoom,
[&](CSSPropertyID property) -> bool {
return use_counter.IsCounted(property);
},
@@ -203,17 +242,13 @@ TEST(UseCounterTest, SVGImageContextCSSProperties) {
[](CSSPropertyID property) -> int {
return UseCounter::MapCSSPropertyIdToCSSSampleIdForHistogram(property);
},
- [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, "about:blank",
- // In practice SVGs always appear to be loaded with an about:blank URL
- 1 /* page visit bucket */);
+ [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, kSvgUrl);
}
TEST(UseCounterTest, SVGImageContextAnimatedCSSProperties) {
UseCounter use_counter(UseCounter::kSVGImageContext);
HistogramBasicTest<CSSPropertyID>(
- kSVGAnimatedCSSHistogramName, "",
- {kCSSHistogramName, kAnimatedCSSHistogramName}, CSSPropertyOpacity,
- CSSPropertyVariable,
+ kSVGAnimatedCSSHistogramName, "", CSSPropertyOpacity, CSSPropertyVariable,
[&](CSSPropertyID property) -> bool {
return use_counter.IsCountedAnimatedCSS(property);
},
@@ -221,9 +256,7 @@ TEST(UseCounterTest, SVGImageContextAnimatedCSSProperties) {
[](CSSPropertyID property) -> int {
return UseCounter::MapCSSPropertyIdToCSSSampleIdForHistogram(property);
},
- [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, "about:blank",
- // In practice SVGs always appear to be loaded with an about:blank URL
- 1 /* page visit bucket */);
+ [&](KURL kurl) { use_counter.DidCommitLoad(kurl); }, kSvgUrl);
}
TEST(UseCounterTest, InspectorDisablesMeasurement) {
@@ -304,7 +337,7 @@ TEST(UseCounterTest, MutedDocuments) {
CSSPropertyFontWeight, 1);
// Loading an internal page doesn't bump PageVisits and metrics not reported.
- use_counter.DidCommitLoad(URLTestHelpers::ToKURL("about:blank"));
+ use_counter.DidCommitLoad(URLTestHelpers::ToKURL(kInternalUrl));
EXPECT_FALSE(use_counter.HasRecordedMeasurement(UseCounter::kFetch));
EXPECT_FALSE(use_counter.IsCounted(CSSPropertyFontWeight));
use_counter.RecordMeasurement(UseCounter::kFetch);
@@ -332,16 +365,14 @@ TEST(UseCounterTest, MutedDocuments) {
CSSPropertyFontWeight, 2);
// HTTPs URLs are the same.
- use_counter.DidCommitLoad(
- URLTestHelpers::ToKURL("https://baz.com:1234/blob.html"));
+ use_counter.DidCommitLoad(URLTestHelpers::ToKURL(kHttpsUrl));
use_counter.RecordMeasurement(UseCounter::kFetch);
use_counter.Count(kHTMLStandardMode, CSSPropertyFontWeight);
ExpectHistograms(histogram_tester, 2, UseCounter::kFetch, 3,
CSSPropertyFontWeight, 3);
// Extensions aren't counted.
- use_counter.DidCommitLoad(
- URLTestHelpers::ToKURL("chrome-extension://1238ba908adf/"));
+ use_counter.DidCommitLoad(URLTestHelpers::ToKURL(kExtensionUrl));
use_counter.RecordMeasurement(UseCounter::kFetch);
use_counter.Count(kHTMLStandardMode, CSSPropertyFontWeight);
ExpectHistograms(histogram_tester, 2, UseCounter::kFetch, 3,
« no previous file with comments | « third_party/WebKit/Source/core/frame/UseCounter.cpp ('k') | third_party/WebKit/Source/platform/testing/HistogramTester.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698