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

Unified Diff: chrome/browser/rlz/rlz_unittest.cc

Issue 1212163011: Componentize chrome/browser/rlz (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 5 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
« no previous file with comments | « chrome/browser/rlz/rlz_mac.cc ('k') | chrome/browser/rlz/rlz_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/rlz/rlz_unittest.cc
diff --git a/chrome/browser/rlz/rlz_unittest.cc b/chrome/browser/rlz/rlz_unittest.cc
deleted file mode 100644
index 8aeb09c8186042152a9ce9ecadb248e05dcde288..0000000000000000000000000000000000000000
--- a/chrome/browser/rlz/rlz_unittest.cc
+++ /dev/null
@@ -1,925 +0,0 @@
-// Copyright (c) 2012 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/rlz/rlz.h"
-
-#include "base/memory/scoped_ptr.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/time/time.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/google/google_brand.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/installer/util/browser_distribution.h"
-#include "chrome/installer/util/google_update_constants.h"
-#include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "components/metrics/proto/omnibox_event.pb.h"
-#include "components/omnibox/browser/autocomplete_controller.h"
-#include "components/omnibox/browser/omnibox_log.h"
-#include "content/public/browser/navigation_details.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/test/test_renderer_host.h"
-#include "rlz/test/rlz_test_helpers.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "url/gurl.h"
-
-#if defined(OS_WIN)
-#include "base/win/registry.h"
-#endif
-
-using content::NavigationEntry;
-using content::LoadCommittedDetails;
-using testing::AssertionResult;
-using testing::AssertionSuccess;
-using testing::AssertionFailure;
-
-#if defined(OS_WIN)
-using base::win::RegKey;
-#endif
-
-namespace {
-
-// Dummy RLZ string for the access points.
-const char kOmniboxRlzString[] = "test_omnibox";
-const char kHomepageRlzString[] = "test_homepage";
-const char kAppListRlzString[] = "test_applist";
-const char kNewOmniboxRlzString[] = "new_omnibox";
-const char kNewHomepageRlzString[] = "new_homepage";
-const char kNewAppListRlzString[] = "new_applist";
-
-// Some helper macros to test it a string contains/does not contain a substring.
-
-AssertionResult CmpHelperSTRC(const char* str_expression,
- const char* substr_expression,
- const char* str,
- const char* substr) {
- if (NULL != strstr(str, substr)) {
- return AssertionSuccess();
- }
-
- return AssertionFailure() << "Expected: (" << substr_expression << ") in ("
- << str_expression << "), actual: '"
- << substr << "' not in '" << str << "'";
-}
-
-AssertionResult CmpHelperSTRNC(const char* str_expression,
- const char* substr_expression,
- const char* str,
- const char* substr) {
- if (NULL == strstr(str, substr)) {
- return AssertionSuccess();
- }
-
- return AssertionFailure() << "Expected: (" << substr_expression
- << ") not in (" << str_expression << "), actual: '"
- << substr << "' in '" << str << "'";
-}
-
-#define EXPECT_STR_CONTAINS(str, substr) \
- EXPECT_PRED_FORMAT2(CmpHelperSTRC, str, substr)
-
-#define EXPECT_STR_NOT_CONTAIN(str, substr) \
- EXPECT_PRED_FORMAT2(CmpHelperSTRNC, str, substr)
-
-} // namespace
-
-// Test class for RLZ tracker. Makes some member functions public and
-// overrides others to make it easier to test.
-class TestRLZTracker : public RLZTracker {
- public:
- using RLZTracker::InitRlzDelayed;
- using RLZTracker::DelayedInit;
- using RLZTracker::Observe;
-
- TestRLZTracker() : assume_not_ui_thread_(true) {
- set_tracker(this);
- }
-
- ~TestRLZTracker() override {
- set_tracker(NULL);
- }
-
- bool was_ping_sent_for_brand(const std::string& brand) const {
- return pinged_brands_.count(brand) > 0;
- }
-
- void set_assume_not_ui_thread(bool assume_not_ui_thread) {
- assume_not_ui_thread_ = assume_not_ui_thread;
- }
-
- private:
- void ScheduleDelayedInit(base::TimeDelta delay) override {
- // If the delay is 0, invoke the delayed init now. Otherwise,
- // don't schedule anything, it will be manually called during tests.
- if (delay == base::TimeDelta())
- DelayedInit();
- }
-
- void ScheduleFinancialPing() override {
- PingNowImpl();
- }
-
- bool ScheduleRecordProductEvent(rlz_lib::Product product,
- rlz_lib::AccessPoint point,
- rlz_lib::Event event_id) override {
- return !assume_not_ui_thread_;
- }
-
- bool ScheduleGetAccessPointRlz(rlz_lib::AccessPoint point) override {
- return !assume_not_ui_thread_;
- }
-
- bool ScheduleRecordFirstSearch(rlz_lib::AccessPoint point) override {
- return !assume_not_ui_thread_;
- }
-
-#if defined(OS_CHROMEOS)
- bool ScheduleClearRlzState() override {
- return !assume_not_ui_thread_;
- }
-#endif
-
- bool SendFinancialPing(const std::string& brand,
- const base::string16& lang,
- const base::string16& referral) override {
- // Don't ping the server during tests, just pretend as if we did.
- EXPECT_FALSE(brand.empty());
- pinged_brands_.insert(brand);
-
- // Set new access points RLZ string, like the actual server ping would have
- // done.
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(),
- kNewOmniboxRlzString);
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(),
- kNewHomepageRlzString);
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(),
- kNewAppListRlzString);
- return true;
- }
-
- std::set<std::string> pinged_brands_;
- bool assume_not_ui_thread_;
-
- DISALLOW_COPY_AND_ASSIGN(TestRLZTracker);
-};
-
-class RlzLibTest : public ChromeRenderViewHostTestHarness {
- protected:
- void SetUp() override;
- void TearDown() override;
-
- void SetMainBrand(const char* brand);
- void SetReactivationBrand(const char* brand);
-#if defined(OS_WIN)
- void SetRegistryBrandValue(const wchar_t* name, const char* brand);
-#endif
-
- void SimulateOmniboxUsage();
- void SimulateHomepageUsage();
- void SimulateAppListUsage();
- void InvokeDelayedInit();
-
- void ExpectEventRecorded(const char* event_name, bool expected);
- void ExpectRlzPingSent(bool expected);
- void ExpectReactivationRlzPingSent(bool expected);
-
- scoped_ptr<TestRLZTracker> tracker_;
- RlzLibTestNoMachineStateHelper m_rlz_test_helper_;
-#if defined(OS_POSIX)
- scoped_ptr<google_brand::BrandForTesting> brand_override_;
-#endif
-};
-
-void RlzLibTest::SetUp() {
- ChromeRenderViewHostTestHarness::SetUp();
- m_rlz_test_helper_.SetUp();
- tracker_.reset(new TestRLZTracker());
-
- // Make sure a non-organic brand code is set in the registry or the RLZTracker
- // is pretty much a no-op.
- SetMainBrand("TEST");
- SetReactivationBrand("");
-}
-
-void RlzLibTest::TearDown() {
- tracker_.reset();
- ChromeRenderViewHostTestHarness::TearDown();
- m_rlz_test_helper_.TearDown();
-}
-
-void RlzLibTest::SetMainBrand(const char* brand) {
-#if defined(OS_WIN)
- SetRegistryBrandValue(google_update::kRegRLZBrandField, brand);
-#elif defined(OS_POSIX)
- brand_override_.reset(new google_brand::BrandForTesting(brand));
-#endif
- std::string check_brand;
- google_brand::GetBrand(&check_brand);
- EXPECT_EQ(brand, check_brand);
-}
-
-void RlzLibTest::SetReactivationBrand(const char* brand) {
- // TODO(thakis): Reactivation doesn't exist on Mac yet.
-#if defined(OS_WIN)
- SetRegistryBrandValue(google_update::kRegRLZReactivationBrandField, brand);
- std::string check_brand;
- google_brand::GetReactivationBrand(&check_brand);
- EXPECT_EQ(brand, check_brand);
-#endif
-}
-
-#if defined(OS_WIN)
-void RlzLibTest::SetRegistryBrandValue(const wchar_t* name,
- const char* brand) {
- BrowserDistribution* dist = BrowserDistribution::GetDistribution();
- base::string16 reg_path = dist->GetStateKey();
- RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_SET_VALUE);
- if (*brand == 0) {
- LONG result = key.DeleteValue(name);
- ASSERT_TRUE(ERROR_SUCCESS == result || ERROR_FILE_NOT_FOUND == result);
- } else {
- base::string16 brand16 = base::ASCIIToUTF16(brand);
- ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name, brand16.c_str()));
- }
-}
-#endif
-
-void RlzLibTest::SimulateOmniboxUsage() {
- // Create a dummy OmniboxLog object. The 'is_popup_open' field needs to be
- // true to trigger record of the first search. All other fields are passed in
- // with empty or invalid values.
- AutocompleteResult empty_result;
- OmniboxLog dummy(base::string16(), false, metrics::OmniboxInputType::INVALID,
- true, 0, false, -1,
- metrics::OmniboxEventProto::INVALID_SPEC,
- base::TimeDelta::FromSeconds(0), 0,
- base::TimeDelta::FromSeconds(0),
- AutocompleteResult());
-
- tracker_->Observe(chrome::NOTIFICATION_OMNIBOX_OPENED_URL,
- content::NotificationService::AllSources(),
- content::Details<OmniboxLog>(&dummy));
-}
-
-void RlzLibTest::SimulateHomepageUsage() {
- GURL home_url = GURL("https://www.google.com/");
- GURL search_url = GURL("https://www.google.com/#q=search");
-
- content::RenderFrameHostTester* rfht =
- content::RenderFrameHostTester::For(main_rfh());
-
- // Ensure the RenderFrame is initialized before simulating events coming from
- // it.
- rfht->InitializeRenderFrameIfNeeded();
-
- // Simulate a navigation to homepage first.
- rfht->SendNavigateWithTransition(
- 0, 0, true, home_url, ui::PAGE_TRANSITION_HOME_PAGE);
- // Then simulate a search from homepage.
- rfht->SendNavigateWithTransition(
- 1, 0, true, search_url, ui::PAGE_TRANSITION_LINK);
-}
-
-void RlzLibTest::SimulateAppListUsage() {
- RLZTracker::RecordAppListSearch();
-}
-
-void RlzLibTest::InvokeDelayedInit() {
- tracker_->DelayedInit();
-}
-
-void RlzLibTest::ExpectEventRecorded(const char* event_name, bool expected) {
- char cgi[rlz_lib::kMaxCgiLength];
- GetProductEventsAsCgi(rlz_lib::CHROME, cgi, arraysize(cgi));
- if (expected) {
- EXPECT_STR_CONTAINS(cgi, event_name);
- } else {
- EXPECT_STR_NOT_CONTAIN(cgi, event_name);
- }
-}
-
-void RlzLibTest::ExpectRlzPingSent(bool expected) {
- std::string brand;
- google_brand::GetBrand(&brand);
- EXPECT_EQ(expected, tracker_->was_ping_sent_for_brand(brand.c_str()));
-}
-
-void RlzLibTest::ExpectReactivationRlzPingSent(bool expected) {
- std::string brand;
- google_brand::GetReactivationBrand(&brand);
- EXPECT_EQ(expected, tracker_->was_ping_sent_for_brand(brand.c_str()));
-}
-
-// The events that affect the different RLZ scenarios are the following:
-//
-// A: the user starts chrome for the first time
-// B: the user stops chrome
-// C: the user start a subsequent time
-// D: the user stops chrome again
-// I: the RLZTracker::DelayedInit() method is invoked
-// X: the user performs a search using the omnibox
-// Y: the user performs a search using the home page
-// Z: the user performs a search using the app list
-//
-// The events A to D happen in chronological order, but the other events
-// may happen at any point between A-B or C-D, in no particular order.
-//
-// The visible results of the scenarios on Win are:
-//
-// C1I event is recorded
-// C2I event is recorded
-// C7I event is recorded
-// C1F event is recorded
-// C2F event is recorded
-// C7F event is recorded
-// C1S event is recorded
-// C2S event is recorded
-// C7S event is recorded
-// RLZ ping sent
-//
-// On Mac, C5 / C6 / C8 are sent instead of C1 / C2 / C7.
-// On ChromeOS, CA / CB / CC are sent, respectively.
-//
-// Variations on the above scenarios:
-//
-// - if the delay specified to InitRlzDelayed() is negative, then the RLZ
-// ping should be sent out at the time of event X and not wait for I
-//
-// Also want to test that pre-warming the RLZ string cache works correctly.
-
-#if defined(OS_WIN)
-const char kOmniboxInstall[] = "C1I";
-const char kOmniboxSetToGoogle[] = "C1S";
-const char kOmniboxFirstSearch[] = "C1F";
-
-const char kHomepageInstall[] = "C2I";
-const char kHomepageSetToGoogle[] = "C2S";
-const char kHomepageFirstSeach[] = "C2F";
-
-const char kAppListInstall[] = "C7I";
-const char kAppListSetToGoogle[] = "C7S";
-const char kAppListFirstSearch[] = "C7F";
-#elif defined(OS_MACOSX)
-const char kOmniboxInstall[] = "C5I";
-const char kOmniboxSetToGoogle[] = "C5S";
-const char kOmniboxFirstSearch[] = "C5F";
-
-const char kHomepageInstall[] = "C6I";
-const char kHomepageSetToGoogle[] = "C6S";
-const char kHomepageFirstSeach[] = "C6F";
-
-const char kAppListInstall[] = "C8I";
-const char kAppListSetToGoogle[] = "C8S";
-const char kAppListFirstSearch[] = "C8F";
-#elif defined(OS_CHROMEOS)
-const char kOmniboxInstall[] = "CAI";
-const char kOmniboxSetToGoogle[] = "CAS";
-const char kOmniboxFirstSearch[] = "CAF";
-
-const char kHomepageInstall[] = "CBI";
-const char kHomepageSetToGoogle[] = "CBS";
-const char kHomepageFirstSeach[] = "CBF";
-
-const char kAppListInstall[] = "CCI";
-const char kAppListSetToGoogle[] = "CCS";
-const char kAppListFirstSearch[] = "CCF";
-#endif
-
-const base::TimeDelta kDelay = base::TimeDelta::FromMilliseconds(20);
-
-TEST_F(RlzLibTest, RecordProductEvent) {
- RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(),
- rlz_lib::FIRST_SEARCH);
-
- ExpectEventRecorded(kOmniboxFirstSearch, true);
-}
-
-TEST_F(RlzLibTest, QuickStopAfterStart) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, true);
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, false);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, false);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, false);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, DelayedInitOnly) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- InvokeDelayedInit();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, true);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, true);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, true);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, DelayedInitOnlyGoogleAsStartup) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, false, false, true);
- InvokeDelayedInit();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, true);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRunNoRlzStrings) {
- TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, false);
- InvokeDelayedInit();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, true);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, true);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, true);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRunNoRlzStringsGoogleAsStartup) {
- TestRLZTracker::InitRlzDelayed(false, false, kDelay, false, false, true);
- InvokeDelayedInit();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, true);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRun) {
- // Set some dummy RLZ strings to simulate that we already ran before and
- // performed a successful ping to the RLZ server.
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString);
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(), kHomepageRlzString);
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(), kAppListRlzString);
-
- TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, true);
- InvokeDelayedInit();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, DelayedInitOnlyNoGoogleDefaultSearchOrHomepageOrStartup) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, false, false, false);
- InvokeDelayedInit();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, OmniboxUsageOnly) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- SimulateOmniboxUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, false);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, true);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, false);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, false);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, HomepageUsageOnly) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- SimulateHomepageUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, false);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, false);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, false);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, AppListUsageOnly) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- SimulateAppListUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, false);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, false);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, false);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, true);
-
- ExpectRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, UsageBeforeDelayedInit) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- SimulateOmniboxUsage();
- SimulateHomepageUsage();
- SimulateAppListUsage();
- InvokeDelayedInit();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, true);
- ExpectEventRecorded(kOmniboxFirstSearch, true);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, true);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, true);
- ExpectEventRecorded(kAppListFirstSearch, true);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, UsageAfterDelayedInit) {
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- InvokeDelayedInit();
- SimulateOmniboxUsage();
- SimulateHomepageUsage();
- SimulateAppListUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, true);
- ExpectEventRecorded(kOmniboxFirstSearch, true);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, true);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, true);
- ExpectEventRecorded(kAppListFirstSearch, true);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, OmniboxUsageSendsPingWhenSendPingImmediately) {
- TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, true, false);
- SimulateOmniboxUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, true);
- ExpectEventRecorded(kOmniboxSetToGoogle, true);
- ExpectEventRecorded(kOmniboxFirstSearch, true);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, true);
- ExpectEventRecorded(kHomepageSetToGoogle, true);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, true);
- ExpectEventRecorded(kAppListSetToGoogle, true);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, HomepageUsageDoesNotSendPingWhenSendPingImmediately) {
- TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, true, false);
- SimulateHomepageUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, false);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, false);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, false);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, StartupUsageDoesNotSendPingWhenSendPingImmediately) {
- TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, false, true);
- SimulateHomepageUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, false);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, false);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, true);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, false);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, false);
-
- ExpectRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, AppListUsageDoesNotSendPingWhenSendPingImmediately) {
- TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, false, false);
- SimulateAppListUsage();
-
- // Omnibox events.
- ExpectEventRecorded(kOmniboxInstall, false);
- ExpectEventRecorded(kOmniboxSetToGoogle, false);
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-
- // Home page events.
- ExpectEventRecorded(kHomepageInstall, false);
- ExpectEventRecorded(kHomepageSetToGoogle, false);
- ExpectEventRecorded(kHomepageFirstSeach, false);
-
- // App list events.
- ExpectEventRecorded(kAppListInstall, false);
- ExpectEventRecorded(kAppListSetToGoogle, false);
- ExpectEventRecorded(kAppListFirstSearch, true);
-
- ExpectRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) {
- // Set dummy RLZ string.
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString);
-
- base::string16 rlz;
-
- tracker_->set_assume_not_ui_thread(true);
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
- EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str());
-}
-
-TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) {
- // Set dummy RLZ string.
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString);
-
- base::string16 rlz;
-
- tracker_->set_assume_not_ui_thread(false);
- EXPECT_FALSE(
- RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
-}
-
-TEST_F(RlzLibTest, GetAccessPointRlzIsCached) {
- // Set dummy RLZ string.
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString);
-
- base::string16 rlz;
-
- tracker_->set_assume_not_ui_thread(false);
- EXPECT_FALSE(
- RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
-
- tracker_->set_assume_not_ui_thread(true);
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
- EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str());
-
- tracker_->set_assume_not_ui_thread(false);
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
- EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str());
-}
-
-TEST_F(RlzLibTest, PingUpdatesRlzCache) {
- // Set dummy RLZ string.
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeOmnibox(), kOmniboxRlzString);
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(), kHomepageRlzString);
- rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(), kAppListRlzString);
-
- base::string16 rlz;
-
- // Prime the cache.
- tracker_->set_assume_not_ui_thread(true);
-
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
- EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str());
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(
- RLZTracker::ChromeHomePage(), &rlz));
- EXPECT_STREQ(kHomepageRlzString, base::UTF16ToUTF8(rlz).c_str());
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz));
- EXPECT_STREQ(kAppListRlzString, base::UTF16ToUTF8(rlz).c_str());
-
- // Make sure cache is valid.
- tracker_->set_assume_not_ui_thread(false);
-
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
- EXPECT_STREQ(kOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str());
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(
- RLZTracker::ChromeHomePage(), &rlz));
- EXPECT_STREQ(kHomepageRlzString, base::UTF16ToUTF8(rlz).c_str());
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz));
- EXPECT_STREQ(kAppListRlzString, base::UTF16ToUTF8(rlz).c_str());
-
- // Perform ping.
- tracker_->set_assume_not_ui_thread(true);
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- InvokeDelayedInit();
- ExpectRlzPingSent(true);
-
- // Make sure cache is now updated.
- tracker_->set_assume_not_ui_thread(false);
-
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeOmnibox(), &rlz));
- EXPECT_STREQ(kNewOmniboxRlzString, base::UTF16ToUTF8(rlz).c_str());
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(
- RLZTracker::ChromeHomePage(), &rlz));
- EXPECT_STREQ(kNewHomepageRlzString, base::UTF16ToUTF8(rlz).c_str());
- EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::ChromeAppList(), &rlz));
- EXPECT_STREQ(kNewAppListRlzString, base::UTF16ToUTF8(rlz).c_str());
-}
-
-TEST_F(RlzLibTest, ObserveHandlesBadArgs) {
- scoped_ptr<LoadCommittedDetails> details(new LoadCommittedDetails());
- scoped_ptr<content::NavigationEntry> entry(
- content::NavigationEntry::Create());
- details->entry = entry.get();
- details->entry->SetPageID(0);
- details->entry->SetTransitionType(ui::PAGE_TRANSITION_LINK);
-
- tracker_->Observe(content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::NotificationService::AllSources(),
- content::Details<NavigationEntry>(NULL));
- tracker_->Observe(content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::NotificationService::AllSources(),
- content::Details<LoadCommittedDetails>(details.get()));
-}
-
-// TODO(thakis): Reactivation doesn't exist on Mac yet.
-#if defined(OS_WIN)
-TEST_F(RlzLibTest, ReactivationNonOrganicNonOrganic) {
- SetReactivationBrand("REAC");
-
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- InvokeDelayedInit();
-
- ExpectRlzPingSent(true);
- ExpectReactivationRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, ReactivationOrganicNonOrganic) {
- SetMainBrand("GGLS");
- SetReactivationBrand("REAC");
-
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- InvokeDelayedInit();
-
- ExpectRlzPingSent(false);
- ExpectReactivationRlzPingSent(true);
-}
-
-TEST_F(RlzLibTest, ReactivationNonOrganicOrganic) {
- SetMainBrand("TEST");
- SetReactivationBrand("GGLS");
-
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- InvokeDelayedInit();
-
- ExpectRlzPingSent(true);
- ExpectReactivationRlzPingSent(false);
-}
-
-TEST_F(RlzLibTest, ReactivationOrganicOrganic) {
- SetMainBrand("GGLS");
- SetReactivationBrand("GGRS");
-
- TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
- InvokeDelayedInit();
-
- ExpectRlzPingSent(false);
- ExpectReactivationRlzPingSent(false);
-}
-#endif // defined(OS_WIN)
-
-#if defined(OS_CHROMEOS)
-TEST_F(RlzLibTest, ClearRlzState) {
- RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(),
- rlz_lib::FIRST_SEARCH);
-
- ExpectEventRecorded(kOmniboxFirstSearch, true);
-
- RLZTracker::ClearRlzState();
-
- ExpectEventRecorded(kOmniboxFirstSearch, false);
-}
-#endif // defined(OS_CHROMEOS)
« no previous file with comments | « chrome/browser/rlz/rlz_mac.cc ('k') | chrome/browser/rlz/rlz_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698