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

Unified Diff: third_party/WebKit/Source/modules/document_metadata/CopylessPasteExtractor.cpp

Issue 2815693004: Add more UMA in CopylessPasteExtractor (Closed)
Patch Set: address comments Created 3 years, 8 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
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | tools/metrics/histograms/histograms.xml » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/modules/document_metadata/CopylessPasteExtractor.cpp
diff --git a/third_party/WebKit/Source/modules/document_metadata/CopylessPasteExtractor.cpp b/third_party/WebKit/Source/modules/document_metadata/CopylessPasteExtractor.cpp
index 2e7e51825a65afc3a65fcb75f48c750c0e42b40f..4ef9e481a7e64f5a5ad66a053b574a2c40e4a65f 100644
--- a/third_party/WebKit/Source/modules/document_metadata/CopylessPasteExtractor.cpp
+++ b/third_party/WebKit/Source/modules/document_metadata/CopylessPasteExtractor.cpp
@@ -247,14 +247,18 @@ void extractEntityFromTopLevelObject(const JSONObject& val,
extractTopLevelEntity(val, entities);
}
-bool extractMetadata(const Element& root, Vector<EntityPtr>& entities) {
+// kCount must be the last entry.
Ilya Sherman 2017/04/12 23:25:55 nit: Please document that this enum is used to bac
wychen 2017/04/13 00:47:54 Done.
+enum ExtractionStatus { kOK, kEmpty, kParseFailure, kWrongType, kCount };
Ilya Sherman 2017/04/12 23:25:55 nit: Could this be an enum class?
wychen 2017/04/12 23:40:04 Great suggestion. The UMA API in base/ supports en
+
+ExtractionStatus extractMetadata(const Element& root,
+ Vector<EntityPtr>& entities) {
for (Element& element : ElementTraversal::DescendantsOf(root)) {
if (element.HasTagName(HTMLNames::scriptTag) &&
element.getAttribute(HTMLNames::typeAttr) == "application/ld+json") {
std::unique_ptr<JSONValue> json = ParseJSON(element.textContent());
if (!json) {
LOG(ERROR) << "Failed to parse json.";
- return false;
+ return kParseFailure;
}
switch (json->GetType()) {
case JSONValue::ValueType::kTypeArray:
@@ -265,11 +269,14 @@ bool extractMetadata(const Element& root, Vector<EntityPtr>& entities) {
entities);
break;
default:
- return false;
+ return kWrongType;
}
}
}
- return !entities.IsEmpty();
+ if (entities.IsEmpty()) {
+ return kEmpty;
+ }
+ return kOK;
}
} // namespace
@@ -284,21 +291,29 @@ WebPagePtr CopylessPasteExtractor::extract(const Document& document) {
if (!html)
return nullptr;
- double start_time = MonotonicallyIncreasingTime();
-
WebPagePtr page = WebPage::New();
// Traverse the DOM tree and extract the metadata.
- if (!extractMetadata(*html, page->entities))
- return nullptr;
- page->url = document.Url();
- page->title = document.title();
-
+ double start_time = MonotonicallyIncreasingTime();
+ ExtractionStatus status = extractMetadata(*html, page->entities);
double elapsed_time = MonotonicallyIncreasingTime() - start_time;
+ DEFINE_STATIC_LOCAL(EnumerationHistogram, status_histogram,
+ ("CopylessPaste.ExtractionStatus", kCount));
+ status_histogram.Count(status);
+
+ if (status != kOK) {
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, extractionHistogram,
+ ("CopylessPaste.ExtractionFailedUs", 1, 1000000, 50));
Ilya Sherman 2017/04/12 23:25:55 Optional nit: Could you please write 1000 * 1000 i
wychen 2017/04/13 00:47:54 Done.
+ extractionHistogram.Count(1e6 * elapsed_time);
+ return nullptr;
+ }
DEFINE_STATIC_LOCAL(CustomCountHistogram, extractionHistogram,
("CopylessPaste.ExtractionUs", 1, 1000000, 50));
- extractionHistogram.Count(static_cast<int>(1e6 * elapsed_time));
+ extractionHistogram.Count(1e6 * elapsed_time);
+
+ page->url = document.Url();
+ page->title = document.title();
return page;
}
« no previous file with comments | « no previous file | tools/metrics/histograms/histograms.xml » ('j') | tools/metrics/histograms/histograms.xml » ('J')

Powered by Google App Engine
This is Rietveld 408576698