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

Unified Diff: chrome/renderer/translate/translate_helper.cc

Issue 387903003: Add metrics for tracking UX impact of non-static CLD data providers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comments addressed Created 6 years, 5 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: chrome/renderer/translate/translate_helper.cc
diff --git a/chrome/renderer/translate/translate_helper.cc b/chrome/renderer/translate/translate_helper.cc
index cffcfc55d92e040870ff44f43a00362d74e1cde9..8db0c92f7716ce5106f8ddaa35843b512ba03563 100644
--- a/chrome/renderer/translate/translate_helper.cc
+++ b/chrome/renderer/translate/translate_helper.cc
@@ -8,6 +8,7 @@
#include "base/compiler_specific.h"
#include "base/logging.h"
#include "base/message_loop/message_loop.h"
+#include "base/metrics/histogram.h"
#include "base/strings/string16.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
@@ -17,6 +18,8 @@
#include "components/translate/core/common/translate_metrics.h"
#include "components/translate/core/common/translate_util.h"
#include "components/translate/core/language_detection/language_detection_util.h"
+#include "content/public/common/content_constants.h"
+#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h"
#include "extensions/common/constants.h"
#include "extensions/renderer/extension_groups.h"
@@ -140,17 +143,25 @@ void TranslateHelper::PageCapturedImpl(int page_seq_no,
if (!main_frame || page_seq_no_ != page_seq_no)
return;
- // TODO(andrewhayden): UMA insertion point here: Track if data is available.
- // TODO(andrewhayden): Retry insertion point here, retry till data available.
if (!cld_data_provider_->IsCldDataAvailable()) {
// We're in dynamic mode and CLD data isn't loaded. Retry when CLD data
// is loaded, if ever.
deferred_page_capture_ = true;
deferred_page_seq_no_ = page_seq_no;
deferred_contents_ = contents;
+ RecordLanguageDetectionTiming(DEFERRED);
return;
}
+ if (deferred_page_seq_no_ == -1) {
+ // CLD data was available before language detection was requested.
+ RecordLanguageDetectionTiming(ON_TIME);
+ } else {
+ // This is a request that was triggered because CLD data is now available
+ // and was previously deferred.
+ RecordLanguageDetectionTiming(RESUMED);
+ }
+
WebDocument document = main_frame->document();
std::string content_language = document.contentLanguage().utf8();
WebElement html_element = document.documentElement();
@@ -608,3 +619,30 @@ void TranslateHelper::OnCldDataAvailable() {
deferred_contents_.clear(); // Clean up for sanity
}
}
+
+void TranslateHelper::RecordLanguageDetectionTiming(
+ LanguageDetectionTiming timing) {
+ // The following comment is copied from page_load_histograms.cc, and applies
+ // just as equally here:
+ //
+ // Since there are currently no guarantees that renderer histograms will be
+ // sent to the browser, we initiate a PostTask here to be sure that we send
+ // the histograms we generated. Without this call, pages that don't have an
+ // on-close-handler might generate data that is lost when the renderer is
+ // shutdown abruptly (perchance because the user closed the tab).
+ DVLOG(1) << "Language detection timing: " << timing;
+ UMA_HISTOGRAM_ENUMERATION("Translate.LanguageDetectionTiming", timing,
+ LANGUAGE_DETECTION_TIMING_MAX_VALUE);
+
+ // Note on performance: Under normal circumstances, this should get called
+ // once per page load. The code will either manage to do it ON_TIME or will
+ // be DEFERRED until CLD is ready. In the latter case, CLD is in dynamic mode
+ // and may eventually become available, triggering the RESUMED event; after
+ // this, everything should start being ON_TIME. This should never run more
+ // than twice in a page load, under any conditions.
+ // Also note that language detection is triggered off of a delay AFTER the
+ // page load completed event has fired, making this very much off the critical
+ // path.
+ content::RenderThread::Get()->UpdateHistograms(
+ content::kHistogramSynchronizerReservedSequenceNumber);
+}

Powered by Google App Engine
This is Rietveld 408576698