Chromium Code Reviews| 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()); |
| +} |