Index: chrome/browser/history/most_visited_tiles_experiment_unittest.cc |
diff --git a/chrome/browser/history/most_visited_tiles_experiment_unittest.cc b/chrome/browser/history/most_visited_tiles_experiment_unittest.cc |
deleted file mode 100644 |
index 309d0f01216661dfd23eb294d171845e6d920ee9..0000000000000000000000000000000000000000 |
--- a/chrome/browser/history/most_visited_tiles_experiment_unittest.cc |
+++ /dev/null |
@@ -1,358 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/history/most_visited_tiles_experiment.h" |
- |
-#include <algorithm> |
-#include <sstream> |
- |
-#include "base/metrics/field_trial.h" |
-#include "base/metrics/histogram.h" |
-#include "base/metrics/statistics_recorder.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/values.h" |
-#include "chrome/browser/history/history_types.h" |
-#include "chrome/common/instant_types.h" |
-#include "components/variations/entropy_provider.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "url/gurl.h" |
- |
-namespace history { |
- |
-namespace { |
- |
-// Constants for the most visited tile placement field trial. |
-// See field trial config (MostVisitedTilePlacement.json) for details. |
-const char kMostVisitedFieldTrialName[] = "MostVisitedTilePlacement"; |
-const char kOneEightAGroupName[] = "OneEight_A_Flipped"; |
-const char kOneFourAGroupName[] = "OneFour_A_Flipped"; |
-const char kDontShowOpenURLsGroupName[] = "DontShowOpenTabs"; |
-const char kGmailURL[] = "http://www.gmail.com/"; |
-// Name of histogram tracking types of actions carried out by the field trial. |
-const char kMostVisitedExperimentHistogramName[] = |
- "NewTabPage.MostVisitedTilePlacementExperiment"; |
-// Minimum number of Most Visited suggestions required in order for the Most |
-// Visited Field Trial to remove a URL already open in the browser. |
-const size_t kMinUrlSuggestions = 8; |
- |
-// The indexes of the tiles that are affected in the experiment. |
-enum FlippedIndexes { |
- TILE_ONE = 0, |
- TILE_FOUR = 3, |
- TILE_EIGHT = 7 |
-}; |
- |
-// Creates a DictionaryValue using |url| and appends to |list|. |
-void AppendURLToListValue(const std::string& url_string, |
- base::ListValue* list) { |
- base::DictionaryValue* page_value = new base::DictionaryValue(); |
- page_value->SetString("url", url_string); |
- list->Append(page_value); |
-} |
- |
-// Creates an InstantMostVisitedItem using |url| and appends to |list|. |
-void AppendInstantURLToVector(const std::string& url_string, |
- std::vector<InstantMostVisitedItem>* list) { |
- InstantMostVisitedItem item; |
- item.url = GURL(url_string); |
- list->push_back(item); |
-} |
- |
-// Creates an MostVisitedURL using |url| and appends to |list|. |
-void AppendMostVisitedURLToVector(const std::string& url_string, |
- std::vector<history::MostVisitedURL>* list) { |
- history::MostVisitedURL most_visited; |
- most_visited.url = GURL(url_string); |
- list->push_back(most_visited); |
-} |
- |
-void SetUpMaybeShuffle(const int& max_urls, |
- MostVisitedURLList* most_visited_urls, |
- MostVisitedURLList* test_urls) { |
- // |most_visited_urls| must have > 8 MostVisitedURLs for any URLs to be |
- // flipped by experiment. |
- for (int i = 0; i < max_urls; ++i) { |
- std::string url; |
- base::SStringPrintf(&url, "http://www.test%d.com", i); |
- AppendMostVisitedURLToVector(url, most_visited_urls); |
- AppendMostVisitedURLToVector(url, test_urls); |
- } |
-} |
- |
-} // namespace |
- |
-class MostVisitedTilesExperimentTest : public testing::Test { |
- public: |
- MostVisitedTilesExperimentTest() |
- : histogram_(NULL), |
- field_trial_list_(new metrics::SHA1EntropyProvider("foo")) {} |
- |
- virtual ~MostVisitedTilesExperimentTest() {} |
- |
- protected: |
- virtual void SetUp() OVERRIDE { |
- base::StatisticsRecorder::Initialize(); |
- previous_metrics_count_.resize(NUM_NTP_TILE_EXPERIMENT_ACTIONS, 0); |
- base::HistogramBase* histogram = GetHistogram(); |
- if (histogram) { |
- scoped_ptr<base::HistogramSamples> samples(histogram->SnapshotSamples()); |
- if (samples.get()) { |
- for (int state = NTP_TILE_EXPERIMENT_ACTION_REMOVED_URL; |
- state < NUM_NTP_TILE_EXPERIMENT_ACTIONS; |
- ++state) { |
- previous_metrics_count_[state] = samples->GetCount(state); |
- } |
- } |
- } |
- } |
- |
- void ValidateMetrics(const base::HistogramBase::Sample& value) { |
- base::HistogramBase* histogram = GetHistogram(); |
- ASSERT_TRUE(histogram != NULL); |
- scoped_ptr<base::HistogramSamples> samples(histogram->SnapshotSamples()); |
- if (samples.get()) { |
- for (int state = NTP_TILE_EXPERIMENT_ACTION_REMOVED_URL; |
- state < NUM_NTP_TILE_EXPERIMENT_ACTIONS; |
- ++state) { |
- if (state == value) { |
- EXPECT_EQ(previous_metrics_count_[state] + 1, |
- samples->GetCount(state)); |
- } else { |
- EXPECT_EQ(previous_metrics_count_[state], samples->GetCount(state)); |
- } |
- } |
- } |
- } |
- |
- private: |
- base::HistogramBase* GetHistogram() { |
- if (!histogram_) { |
- histogram_ = base::StatisticsRecorder::FindHistogram( |
- kMostVisitedExperimentHistogramName); |
- } |
- return histogram_; |
- } |
- |
- // Owned by base::StatisticsRecorder |
- base::HistogramBase* histogram_; |
- base::FieldTrialList field_trial_list_; |
- std::vector<int> previous_metrics_count_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MostVisitedTilesExperimentTest); |
-}; |
- |
-// For pre-instant extended clients. |
-TEST_F(MostVisitedTilesExperimentTest, |
- RemovePageValuesMatchingOpenTabsTooFewURLs) { |
- base::FieldTrialList::CreateFieldTrial(kMostVisitedFieldTrialName, |
- kDontShowOpenURLsGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_TRUE(MostVisitedTilesExperiment::IsDontShowOpenURLsEnabled()); |
- |
- std::set<std::string> open_urls; |
- open_urls.insert(kGmailURL); |
- |
- base::ListValue pages_value; |
- AppendURLToListValue(kGmailURL, &pages_value); |
- |
- // Test the method when there are not enough URLs to force removal. |
- MostVisitedTilesExperiment::RemovePageValuesMatchingOpenTabs( |
- open_urls, &pages_value); |
- base::DictionaryValue gmail_value; |
- gmail_value.SetString("url", kGmailURL); |
- // Ensure the open url has not been removed from |pages_value|. |
- EXPECT_NE(pages_value.end(), pages_value.Find(gmail_value)); |
- |
- // Ensure counts have been incremented correctly. |
- EXPECT_NO_FATAL_FAILURE( |
- ValidateMetrics(NTP_TILE_EXPERIMENT_ACTION_DID_NOT_REMOVE_URL)); |
-} |
- |
-// For pre-instant extended clients. |
-TEST_F(MostVisitedTilesExperimentTest, RemovePageValuesMatchingOpenTabs) { |
- base::FieldTrialList::CreateFieldTrial(kMostVisitedFieldTrialName, |
- kDontShowOpenURLsGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_TRUE(MostVisitedTilesExperiment::IsDontShowOpenURLsEnabled()); |
- |
- std::set<std::string> open_urls; |
- open_urls.insert(kGmailURL); |
- |
- base::ListValue pages_value; |
- AppendURLToListValue(kGmailURL, &pages_value); |
- |
- // |pages_value| must have > 8 page values for any URLs to be removed by |
- // experiment. |
- for (size_t i = 0; i < kMinUrlSuggestions; ++i) { |
- std::string url; |
- base::SStringPrintf(&url, "http://www.test%d.com", static_cast<int>(i)); |
- AppendURLToListValue(url, &pages_value); |
- } |
- |
- // Call method with enough URLs to force removal. |
- MostVisitedTilesExperiment::RemovePageValuesMatchingOpenTabs( |
- open_urls, &pages_value); |
- // Ensure the open url has been removed from |pages_value|. |
- base::DictionaryValue gmail_value; |
- gmail_value.SetString("url", kGmailURL); |
- EXPECT_EQ(pages_value.end(), pages_value.Find(gmail_value)); |
- |
- // Ensure counts have been incremented correctly. |
- EXPECT_NO_FATAL_FAILURE( |
- ValidateMetrics(NTP_TILE_EXPERIMENT_ACTION_REMOVED_URL)); |
-} |
- |
-// For instant extended clients. |
-TEST_F(MostVisitedTilesExperimentTest, RemoveItemsMatchingOpenTabsTooFewURLs) { |
- base::FieldTrialList::CreateFieldTrial(kMostVisitedFieldTrialName, |
- kDontShowOpenURLsGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_TRUE(MostVisitedTilesExperiment::IsDontShowOpenURLsEnabled()); |
- |
- std::set<std::string> open_urls; |
- open_urls.insert(kGmailURL); |
- std::vector<InstantMostVisitedItem> items; |
- AppendInstantURLToVector(kGmailURL, &items); |
- |
- // Call the method when there are not enough URLs to force removal. |
- MostVisitedTilesExperiment::RemoveItemsMatchingOpenTabs(open_urls, &items); |
- |
- // Ensure the open url has not been removed from |items|. |
- for (size_t i = 0; i < items.size(); i++) { |
- const std::string& item_url = items[i].url.spec(); |
- EXPECT_NE(0u, open_urls.count(item_url)); |
- } |
- |
- // Ensure counts have been incremented correctly. |
- EXPECT_NO_FATAL_FAILURE( |
- ValidateMetrics(NTP_TILE_EXPERIMENT_ACTION_DID_NOT_REMOVE_URL)); |
-} |
- |
-// For instant extended clients. |
-TEST_F(MostVisitedTilesExperimentTest, RemoveItemsMatchingOpenTabs) { |
- base::FieldTrialList::CreateFieldTrial( |
- kMostVisitedFieldTrialName, |
- kDontShowOpenURLsGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_TRUE(MostVisitedTilesExperiment::IsDontShowOpenURLsEnabled()); |
- |
- std::set<std::string> open_urls; |
- open_urls.insert(kGmailURL); |
- std::vector<InstantMostVisitedItem> items; |
- AppendInstantURLToVector(kGmailURL, &items); |
- |
- // |items| must have > 8 InstantMostVisitedItems for any URLs to be removed by |
- // experiment. |
- for (size_t i = 0; i < kMinUrlSuggestions; ++i) { |
- std::string url; |
- base::SStringPrintf(&url, "http://www.test%d.com", static_cast<int>(i)); |
- AppendInstantURLToVector(url, &items); |
- } |
- |
- // Call method with enough URLs to force removal. |
- MostVisitedTilesExperiment::RemoveItemsMatchingOpenTabs(open_urls, &items); |
- |
- // Ensure the open URL has been removed from |items|. |
- for (size_t i = 0; i < items.size(); i++) { |
- const std::string& item_url = items[i].url.spec(); |
- EXPECT_EQ(0u, open_urls.count(item_url)); |
- } |
- |
- // Ensure counts have been incremented correctly. |
- EXPECT_NO_FATAL_FAILURE( |
- ValidateMetrics(NTP_TILE_EXPERIMENT_ACTION_REMOVED_URL)); |
-} |
- |
-TEST_F(MostVisitedTilesExperimentTest, MaybeShuffleOneEight) { |
- base::FieldTrialList::CreateFieldTrial(kMostVisitedFieldTrialName, |
- kOneEightAGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_EQ(kOneEightAGroupName, |
- base::FieldTrialList::FindFullName(kMostVisitedFieldTrialName)); |
- |
- MostVisitedURLList most_visited_urls; |
- MostVisitedURLList test_urls; |
- SetUpMaybeShuffle(kMinUrlSuggestions, &most_visited_urls, &test_urls); |
- |
- history::MostVisitedTilesExperiment::MaybeShuffle(&most_visited_urls); |
- // Ensure the 1st and 8th URLs have been switched. |
- EXPECT_EQ(most_visited_urls[TILE_ONE].url.spec(), |
- test_urls[TILE_EIGHT].url.spec()); |
-} |
- |
-TEST_F(MostVisitedTilesExperimentTest, MaybeShuffleOneEightTooFewURLs) { |
- base::FieldTrialList::CreateFieldTrial(kMostVisitedFieldTrialName, |
- kOneEightAGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_EQ(kOneEightAGroupName, |
- base::FieldTrialList::FindFullName(kMostVisitedFieldTrialName)); |
- |
- MostVisitedURLList most_visited_urls; |
- MostVisitedURLList test_urls; |
- // If |most_visited_urls| has < 8 URLs, experiment will not flip any tiles. |
- SetUpMaybeShuffle(kMinUrlSuggestions - 1, &most_visited_urls, &test_urls); |
- |
- history::MostVisitedTilesExperiment::MaybeShuffle(&most_visited_urls); |
- // Ensure no URLs have been switched. |
- EXPECT_EQ(most_visited_urls[TILE_ONE].url.spec(), |
- test_urls[TILE_ONE].url.spec()); |
- EXPECT_EQ(most_visited_urls[TILE_EIGHT - 1].url.spec(), |
- test_urls[TILE_EIGHT - 1].url.spec()); |
- |
- // Ensure counts are correct. |
- EXPECT_NO_FATAL_FAILURE( |
- ValidateMetrics(NTP_TILE_EXPERIMENT_ACTION_TOO_FEW_URLS_TILES_1_8)); |
-} |
- |
-TEST_F(MostVisitedTilesExperimentTest, MaybeShuffleOneFour) { |
- base::FieldTrialList::CreateFieldTrial(kMostVisitedFieldTrialName, |
- kOneFourAGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_EQ(kOneFourAGroupName, |
- base::FieldTrialList::FindFullName(kMostVisitedFieldTrialName)); |
- |
- MostVisitedURLList most_visited_urls; |
- MostVisitedURLList test_urls; |
- SetUpMaybeShuffle(kMinUrlSuggestions, &most_visited_urls, &test_urls); |
- |
- history::MostVisitedTilesExperiment::MaybeShuffle(&most_visited_urls); |
- // Ensure the 1st and 4th URLs have been switched. |
- EXPECT_EQ(most_visited_urls[TILE_ONE].url.spec(), |
- test_urls[TILE_FOUR].url.spec()); |
-} |
- |
-TEST_F(MostVisitedTilesExperimentTest, MaybeShuffleOneFourTooFewURLs) { |
- base::FieldTrialList::CreateFieldTrial( |
- kMostVisitedFieldTrialName, |
- kOneFourAGroupName); |
- |
- // Ensure the field trial is created with the correct group. |
- EXPECT_EQ(kOneFourAGroupName, |
- base::FieldTrialList::FindFullName(kMostVisitedFieldTrialName)); |
- |
- MostVisitedURLList most_visited_urls; |
- MostVisitedURLList test_urls; |
- // If |most_visited_urls| has < 4 URLs, experiment will not flip any tiles. |
- SetUpMaybeShuffle(kMinUrlSuggestions - 5, &most_visited_urls, &test_urls); |
- |
- history::MostVisitedTilesExperiment::MaybeShuffle(&most_visited_urls); |
- // Ensure no URLs have been switched. |
- EXPECT_EQ(most_visited_urls[TILE_ONE].url.spec(), |
- test_urls[TILE_ONE].url.spec()); |
- EXPECT_EQ(most_visited_urls[TILE_FOUR-1].url.spec(), |
- test_urls[TILE_FOUR-1].url.spec()); |
- |
- // Ensure counts are correct. |
- EXPECT_NO_FATAL_FAILURE( |
- ValidateMetrics(NTP_TILE_EXPERIMENT_ACTION_TOO_FEW_URLS_TILES_1_4)); |
-} |
- |
-} // namespace history |