diff options
author | jstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 16:03:38 +0000 |
---|---|---|
committer | jstritar@chromium.org <jstritar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 16:03:38 +0000 |
commit | 18cc5a578b6bc5eca8854cf6da68ff9878975d8b (patch) | |
tree | faba06827e3621ca1f915c7442452ff6b4b94c92 /chrome/browser/web_resource/promo_resource_service_unittest.cc | |
parent | b5d20c2e5f1ccf983bc49259b553f3acd9d1c18a (diff) | |
download | chromium_src-18cc5a578b6bc5eca8854cf6da68ff9878975d8b.zip chromium_src-18cc5a578b6bc5eca8854cf6da68ff9878975d8b.tar.gz chromium_src-18cc5a578b6bc5eca8854cf6da68ff9878975d8b.tar.bz2 |
Update the web store promo to be clearer and configurable at run-time.
The promo now behaves like this:
a) Promo is fetched 5 seconds after first launch.
b) Promo is shown whenever no apps are installed, or if only default apps are installed (from old Chrome versions).
c) Clicking "hide this" puts the apps section into menu mode.
d) Switching locales will fetch a new promo in that locale.
e) We no longer install default apps, but they'll expire and be uninstalled the same as before.
BUG=78358
TEST=PromoResourceServiceTest, ExtensionAppsPromo
Review URL: http://codereview.chromium.org/6825052
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81750 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/web_resource/promo_resource_service_unittest.cc')
-rw-r--r-- | chrome/browser/web_resource/promo_resource_service_unittest.cc | 117 |
1 files changed, 103 insertions, 14 deletions
diff --git a/chrome/browser/web_resource/promo_resource_service_unittest.cc b/chrome/browser/web_resource/promo_resource_service_unittest.cc index e84e43b..6e1f714 100644 --- a/chrome/browser/web_resource/promo_resource_service_unittest.cc +++ b/chrome/browser/web_resource/promo_resource_service_unittest.cc @@ -6,30 +6,29 @@ #include "base/time.h" #include "base/utf_string_conversions.h" #include "base/values.h" +#include "chrome/browser/extensions/apps_promo.h" +#include "chrome/browser/prefs/browser_prefs.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/web_resource/promo_resource_service.h" #include "chrome/common/pref_names.h" +#include "chrome/test/testing_browser_process.h" +#include "chrome/test/testing_pref_service.h" #include "chrome/test/testing_profile.h" #include "testing/gtest/include/gtest/gtest.h" typedef testing::Test PromoResourceServiceTest; -namespace { - -// From promo_resource_service.cc -enum BuildType { - DEV_BUILD = 1, - BETA_BUILD = 1 << 1, - STABLE_BUILD = 1 << 2, -}; - -} // namespace - // Verifies that custom dates read from a web resource server are written to // the preferences file. TEST_F(PromoResourceServiceTest, UnpackLogoSignal) { // Set up a testing profile and create a promo resource service. TestingProfile profile; + TestingPrefService local_state; + TestingBrowserProcess* testing_browser_process = + static_cast<TestingBrowserProcess*>(g_browser_process); + testing_browser_process->SetPrefService(&local_state); + browser::RegisterLocalState(&local_state); + scoped_refptr<PromoResourceService> web_resource_service( new PromoResourceService(&profile)); @@ -112,6 +111,12 @@ TEST_F(PromoResourceServiceTest, UnpackLogoSignal) { TEST_F(PromoResourceServiceTest, UnpackPromoSignal) { // Set up a testing profile and create a promo resource service. TestingProfile profile; + TestingPrefService local_state; + TestingBrowserProcess* testing_browser_process = + static_cast<TestingBrowserProcess*>(g_browser_process); + testing_browser_process->SetPrefService(&local_state); + browser::RegisterLocalState(&local_state); + scoped_refptr<PromoResourceService> web_resource_service( new PromoResourceService(&profile)); @@ -152,9 +157,11 @@ TEST_F(PromoResourceServiceTest, UnpackPromoSignal) { EXPECT_LT(promo_group, 16); int promo_build_type = prefs->GetInteger(prefs::kNTPPromoBuild); - EXPECT_EQ(promo_build_type & DEV_BUILD, DEV_BUILD); - EXPECT_EQ(promo_build_type & BETA_BUILD, BETA_BUILD); - EXPECT_EQ(promo_build_type & STABLE_BUILD, 0); + EXPECT_EQ(promo_build_type & PromoResourceService::DEV_BUILD, + PromoResourceService::DEV_BUILD); + EXPECT_EQ(promo_build_type & PromoResourceService::BETA_BUILD, + PromoResourceService::BETA_BUILD); + EXPECT_EQ(promo_build_type & PromoResourceService::STABLE_BUILD, 0); int promo_time_slice = prefs->GetInteger(prefs::kNTPPromoGroupTimeSlice); EXPECT_EQ(promo_time_slice, 2); @@ -170,4 +177,86 @@ TEST_F(PromoResourceServiceTest, UnpackPromoSignal) { EXPECT_EQ(promo_end, 1327971600); // unix epoch for Jan 31 2012 0100 GMT. } +TEST_F(PromoResourceServiceTest, UnpackWebStoreSignal) { + // Set up a testing profile and create a promo resource service. + TestingProfile profile; + TestingPrefService local_state; + TestingBrowserProcess* testing_browser_process = + static_cast<TestingBrowserProcess*>(g_browser_process); + testing_browser_process->SetPrefService(&local_state); + + browser::RegisterLocalState(&local_state); + + scoped_refptr<PromoResourceService> web_resource_service( + new PromoResourceService(&profile)); + + web_resource_service->set_channel("dev"); + + // Set up start and end dates and promo line in a Dictionary as if parsed + // from the service. + std::string json = "{ " + " \"topic\": {" + " \"answers\": [" + " {" + " \"answer_id\": \"341252\"," + " \"name\": \"webstore_promo:15\"," + " \"question\": \"The header!\"," + " \"inproduct_target\": \"The button label!\"," + " \"inproduct\": \"http://link.com\"," + " \"tooltip\": \"No thanks, hide this.\"" + " }" + " ]" + " }" + "}"; + scoped_ptr<DictionaryValue> test_json(static_cast<DictionaryValue*>( + base::JSONReader::Read(json, false))); + + // Initialize a message loop for this to run on. + MessageLoop loop; + + // Check that prefs are set correctly. + web_resource_service->UnpackWebStoreSignal(*(test_json.get())); + PrefService* prefs = profile.GetPrefs(); + ASSERT_TRUE(prefs != NULL); + + EXPECT_EQ("341252", AppsPromo::GetPromoId()); + EXPECT_EQ("The header!", AppsPromo::GetPromoHeaderText()); + EXPECT_EQ("The button label!", AppsPromo::GetPromoButtonText()); + EXPECT_EQ(GURL("http://link.com"), AppsPromo::GetPromoLink()); + EXPECT_EQ("No thanks, hide this.", AppsPromo::GetPromoExpireText()); +} + +TEST_F(PromoResourceServiceTest, IsBuildTargeted) { + // canary + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("canary", 1)); + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("canary", 3)); + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("canary", 7)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("canary", 15)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("canary", 8)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("canary", 11)); + + // dev + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("dev", 1)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("dev", 3)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("dev", 7)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("dev", 15)); + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("dev", 8)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("dev", 11)); + // beta + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("beta", 1)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("beta", 3)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("beta", 7)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("beta", 15)); + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("beta", 8)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("beta", 11)); + + // stable + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("", 1)); + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("", 3)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("", 7)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("", 15)); + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("", 8)); + EXPECT_FALSE(PromoResourceService::IsBuildTargeted("", 11)); + EXPECT_TRUE(PromoResourceService::IsBuildTargeted("", 12)); +} |