| 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..5a57d77955cead1ee634aa291d933f98f2432ba3 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 kYouTubeRewriteStatus[] = "Plugin.Flash.YouTubeRewrite";
|
| +
|
| +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,138 @@ 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(
|
| + kYouTubeRewriteStatus);
|
| + }
|
| +
|
| + private:
|
| + base::HistogramTester histogram_tester_;
|
| +};
|
| +
|
| +TEST_F(ChromeContentRendererClientMetricsTest, RewriteEmbedIneligibleURL) {
|
| + ChromeContentRendererClient client;
|
| +
|
| + std::unique_ptr<base::HistogramSamples> samples = GetHistogramSamples();
|
| + EXPECT_EQ(0, samples->TotalCount());
|
| +
|
| + const std::string test_data[] = {
|
| + // HTTP, www, no flash
|
| + "http://www.youtube.com",
|
| + // No flash, subdomain
|
| + "http://www.foo.youtube.com",
|
| + // No flash
|
| + "youtube.com",
|
| + // Not youtube
|
| + "http://www.plus.google.com",
|
| + // Already using HTML5
|
| + "http://youtube.com/embed/deadbeef",
|
| + // Already using HTML5, enablejsapi=1
|
| + "http://www.youtube.com/embed/deadbeef?enablejsapi=1"};
|
| +
|
| + for (auto data : test_data) {
|
| + GURL gurl = GURL(data);
|
| + 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();
|
| + auto total_count = 0;
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| +
|
| + const std::string test_data[] = {
|
| + // HTTP, www, flash
|
| + "http://www.youtube.com/v/deadbeef",
|
| + // HTTP, no www, flash
|
| + "http://youtube.com/v/deadbeef",
|
| + // HTTPS, www, flash
|
| + "https://www.youtube.com/v/deadbeef",
|
| + // HTTPS, no www, flash
|
| + "https://youtube.com/v/deadbeef",
|
| + // Invalid parameter construct
|
| + "http://www.youtube.com/v/abcd/",
|
| + // Invalid parameter construct
|
| + "http://www.youtube.com/v/1234/",
|
| + };
|
| +
|
| + for (auto data : test_data) {
|
| + ++total_count;
|
| + GURL gurl = GURL(data);
|
| + client.OverrideFlashEmbedWithHTML(gurl);
|
| + samples = GetHistogramSamples();
|
| + EXPECT_EQ(total_count, samples->GetCount(SUCCESS));
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| + }
|
| +
|
| + // Invalid parameter construct
|
| + GURL gurl = GURL("http://www.youtube.com/abcd/v/deadbeef");
|
| + client.OverrideFlashEmbedWithHTML(gurl);
|
| + samples = GetHistogramSamples();
|
| + EXPECT_EQ(total_count, samples->GetCount(SUCCESS));
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| +}
|
| +
|
| +TEST_F(ChromeContentRendererClientMetricsTest, RewriteEmbedSuccessRewrite) {
|
| + ChromeContentRendererClient client;
|
| +
|
| + std::unique_ptr<base::HistogramSamples> samples = GetHistogramSamples();
|
| + auto total_count = 0;
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| +
|
| + const std::string test_data[] = {
|
| + // Invalid parameter construct, one parameter
|
| + "http://www.youtube.com/v/deadbeef&start=4",
|
| + // Invalid parameter construct, has multiple parameters
|
| + "http://www.youtube.com/v/deadbeef&start=4&fs=1?foo=bar",
|
| + };
|
| +
|
| + for (auto data : test_data) {
|
| + ++total_count;
|
| + GURL gurl = GURL(data);
|
| + client.OverrideFlashEmbedWithHTML(gurl);
|
| + samples = GetHistogramSamples();
|
| + EXPECT_EQ(total_count, samples->GetCount(SUCCESS_PARAMS_REWRITE));
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| + }
|
| +
|
| + // Invalid parameter construct, not flash
|
| + GURL gurl = GURL("http://www.youtube.com/embed/deadbeef&start=4");
|
| + client.OverrideFlashEmbedWithHTML(gurl);
|
| + samples = GetHistogramSamples();
|
| + EXPECT_EQ(total_count, samples->GetCount(SUCCESS_PARAMS_REWRITE));
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| +}
|
| +
|
| +TEST_F(ChromeContentRendererClientMetricsTest, RewriteEmbedFailureJSAPI) {
|
| + ChromeContentRendererClient client;
|
| +
|
| + std::unique_ptr<base::HistogramSamples> samples = GetHistogramSamples();
|
| + auto total_count = 0;
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| +
|
| + const std::string test_data[] = {
|
| + // Invalid parameter construct, one parameter
|
| + "http://www.youtube.com/v/deadbeef&enablejsapi=1",
|
| + // Invalid parameter construct, has multiple parameters
|
| + "http://www.youtube.com/v/deadbeef&start=4&enablejsapi=1?foo=2"};
|
| +
|
| + for (auto data : test_data) {
|
| + ++total_count;
|
| + GURL gurl = GURL(data);
|
| + client.OverrideFlashEmbedWithHTML(gurl);
|
| + samples = GetHistogramSamples();
|
| + EXPECT_EQ(total_count, samples->GetCount(FAILURE_ENABLEJSAPI));
|
| + EXPECT_EQ(total_count, samples->TotalCount());
|
| + }
|
| +}
|
|
|