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

Unified Diff: chrome/renderer/chrome_content_renderer_client_unittest.cc

Issue 2206343002: Add metrics for YouTube Flash embed rewrite. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@layers
Patch Set: Addressed comments Created 4 years, 4 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/chrome_content_renderer_client_unittest.cc
diff --git a/chrome/renderer/chrome_content_renderer_client_unittest.cc b/chrome/renderer/chrome_content_renderer_client_unittest.cc
index f09390e494718f2c34b2bbf40acb1bc981b6ced1..f78636b333152c2802144b3471fe0a139de4e7f1 100644
--- a/chrome/renderer/chrome_content_renderer_client_unittest.cc
+++ b/chrome/renderer/chrome_content_renderer_client_unittest.cc
@@ -8,7 +8,9 @@
#include <vector>
+#include "base/metrics/histogram_samples.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/test/histogram_tester.h"
#include "build/build_config.h"
#include "chrome/renderer/searchbox/search_bouncer.h"
#include "content/public/common/webplugininfo.h"
@@ -50,6 +52,16 @@ const bool kNotHostedApp = false;
const bool kHostedApp = true;
#endif
+const char* YOUTUBE_REWRITE_STATUS = "Plugin.Flash.YouTubeRewrite";
Alexei Svitkine (slow) 2016/08/04 14:31:18 const char kYoutubeRewriteStatus[] =
kdsilva 2016/08/04 18:28:52 Done.
+
+enum YouTubeRewriteStatus {
+ SUCCESS = 0,
+ SUCCESS_PARAMS_REWRITE = 1,
+ SUCCESS_ENABLEJSAPI = 2,
+ FAILURE_ENABLEJSAPI = 3,
+ NUM_PLUGIN_ERROR // should be kept last
+};
+
#if !defined(DISABLE_NACL)
const char kExtensionUrl[] = "chrome-extension://extension_id/background.html";
@@ -479,3 +491,170 @@ TEST_F(ChromeContentRendererClientTest, RewriteYouTubeFlashEmbed) {
EXPECT_EQ(GURL(data.expected),
client.OverrideFlashEmbedWithHTML(GURL(data.original)));
}
+
+class ChromeContentRendererClientMetricsTest : public testing::Test {
+ public:
+ ChromeContentRendererClientMetricsTest() = default;
+
+ std::unique_ptr<base::HistogramSamples> GetHistogramSamples() {
+ return histogram_tester_.GetHistogramSamplesSinceCreation(
+ YOUTUBE_REWRITE_STATUS);
+ }
+
+ private:
+ base::HistogramTester histogram_tester_;
+};
+
+TEST_F(ChromeContentRendererClientMetricsTest, RewriteEmbedIneligibleURL) {
+ ChromeContentRendererClient client;
+
+ std::unique_ptr<base::HistogramSamples> samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // http, www, no flash
+ GURL gurl = GURL("http://www.youtube.com");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->GetCount(SUCCESS));
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // no flash, subdomain
+ gurl = GURL("http://www.foo.youtube.com");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->GetCount(SUCCESS));
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // no flash
+ gurl = GURL("youtube.com");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->GetCount(SUCCESS));
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // not youtube
+ gurl = GURL("http://www.plus.google.com");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->GetCount(SUCCESS));
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // already using HTML5
+ gurl = GURL("http://youtube.com/embed/deadbeef");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->GetCount(SUCCESS));
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // already using HTML5, enablejsapi=1
+ gurl = GURL("http://www.youtube.com/embed/deadbeef?enablejsapi=1");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->GetCount(SUCCESS));
+ EXPECT_EQ(0, samples->TotalCount());
+}
+
+TEST_F(ChromeContentRendererClientMetricsTest, RewriteEmbedSuccess) {
+ ChromeContentRendererClient client;
+
+ std::unique_ptr<base::HistogramSamples> samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // http, www, flash
+ GURL gurl = GURL("http://www.youtube.com/v/deadbeef");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(1, samples->GetCount(SUCCESS));
+ EXPECT_EQ(1, samples->TotalCount());
+
+ // http, no www, flash
+ gurl = GURL("http://youtube.com/v/deadbeef");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(2, samples->GetCount(SUCCESS));
+ EXPECT_EQ(2, samples->TotalCount());
+
+ // https, www, flash
+ gurl = GURL("https://www.youtube.com/v/deadbeef");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(3, samples->GetCount(SUCCESS));
+ EXPECT_EQ(3, samples->TotalCount());
+
+ // https, no www, flash
+ gurl = GURL("https://youtube.com/v/deadbeef");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(4, samples->GetCount(SUCCESS));
+ EXPECT_EQ(4, samples->TotalCount());
+
+ // invalid parameter construct
+ gurl = GURL("http://www.youtube.com/v/abcd/");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(5, samples->GetCount(SUCCESS));
+ EXPECT_EQ(5, samples->TotalCount());
+
+ // invalid parameter construct
+ gurl = GURL("http://www.youtube.com/v/1234/");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(6, samples->GetCount(SUCCESS));
+ EXPECT_EQ(6, samples->TotalCount());
+
+ // invalid parameter construct
+ gurl = GURL("http://www.youtube.com/abcd/v/deadbeef");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(6, samples->GetCount(SUCCESS));
+ EXPECT_EQ(6, samples->TotalCount());
+}
+
+TEST_F(ChromeContentRendererClientMetricsTest, RewriteEmbedSuccessRewrite) {
+ ChromeContentRendererClient client;
+
+ std::unique_ptr<base::HistogramSamples> samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // invalid parameter construct, one parameter
+ GURL gurl = GURL("http://www.youtube.com/v/deadbeef&start=4");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(1, samples->GetCount(SUCCESS_PARAMS_REWRITE));
+ EXPECT_EQ(1, samples->TotalCount());
+
+ // invalid parameter construct, has multiple parameters
+ gurl = GURL("http://www.youtube.com/v/deadbeef&start=4&fs=1?foo=bar");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(2, samples->GetCount(SUCCESS_PARAMS_REWRITE));
+ EXPECT_EQ(2, samples->TotalCount());
+
+ // invalid parameter construct, not flash
+ gurl = GURL("http://www.youtube.com/embed/deadbeef&start=4");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(2, samples->GetCount(SUCCESS_PARAMS_REWRITE));
+ EXPECT_EQ(2, samples->TotalCount());
+}
+
+TEST_F(ChromeContentRendererClientMetricsTest, RewriteEmbedFailureJSAPI) {
+ ChromeContentRendererClient client;
+
+ std::unique_ptr<base::HistogramSamples> samples = GetHistogramSamples();
+ EXPECT_EQ(0, samples->TotalCount());
+
+ // invalid parameter construct, one parameter
+ GURL gurl = GURL("http://www.youtube.com/v/deadbeef&enablejsapi=1");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(1, samples->GetCount(FAILURE_ENABLEJSAPI));
+ EXPECT_EQ(1, samples->TotalCount());
+
+ // invalid parameter construct, has multiple parameters
+ gurl = GURL("http://www.youtube.com/v/deadbeef&start=4&enablejsapi=1?foo=2");
+ client.OverrideFlashEmbedWithHTML(gurl);
+ samples = GetHistogramSamples();
+ EXPECT_EQ(2, samples->GetCount(FAILURE_ENABLEJSAPI));
+ EXPECT_EQ(2, samples->TotalCount());
+}

Powered by Google App Engine
This is Rietveld 408576698