| Index: components/rlz/rlz_tracker_unittest.cc
|
| diff --git a/components/rlz/rlz_tracker_unittest.cc b/components/rlz/rlz_tracker_unittest.cc
|
| deleted file mode 100644
|
| index eb33d891b612ffaefd8741d981f8ecde2455d4cc..0000000000000000000000000000000000000000
|
| --- a/components/rlz/rlz_tracker_unittest.cc
|
| +++ /dev/null
|
| @@ -1,1009 +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 "components/rlz/rlz_tracker.h"
|
| -
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "base/threading/sequenced_worker_pool.h"
|
| -#include "base/time/time.h"
|
| -#include "components/rlz/rlz_tracker_delegate.h"
|
| -#include "net/url_request/url_request_test_util.h"
|
| -#include "rlz/test/rlz_test_helpers.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -#if defined(OS_IOS)
|
| -#include "ui/base/device_form_factor.h"
|
| -#endif
|
| -
|
| -using testing::AssertionResult;
|
| -using testing::AssertionSuccess;
|
| -using testing::AssertionFailure;
|
| -
|
| -namespace rlz {
|
| -namespace {
|
| -
|
| -class TestRLZTrackerDelegate : public RLZTrackerDelegate {
|
| - public:
|
| - TestRLZTrackerDelegate()
|
| - : worker_pool_(new base::SequencedWorkerPool(1, "TestRLZTracker")),
|
| - request_context_getter_(new net::TestURLRequestContextGetter(
|
| - base::ThreadTaskRunnerHandle::Get())) {}
|
| -
|
| - ~TestRLZTrackerDelegate() override { worker_pool_->Shutdown(); }
|
| -
|
| - void set_brand(const char* brand) { brand_override_ = brand; }
|
| -
|
| - void set_reactivation_brand(const char* reactivation_brand) {
|
| - // TODO(thakis): Reactivation doesn't exist on Mac yet.
|
| - reactivation_brand_override_ = reactivation_brand;
|
| - }
|
| -
|
| - void SimulateOmniboxUsage() {
|
| - using std::swap;
|
| - base::Closure callback;
|
| - swap(callback, on_omnibox_search_callback_);
|
| - if (!callback.is_null())
|
| - callback.Run();
|
| - }
|
| -
|
| - void SimulateHomepageUsage() {
|
| - using std::swap;
|
| - base::Closure callback;
|
| - swap(callback, on_homepage_search_callback_);
|
| - if (!callback.is_null())
|
| - callback.Run();
|
| - }
|
| -
|
| - // RLZTrackerDelegate implementation.
|
| - void Cleanup() override {
|
| - on_omnibox_search_callback_.Reset();
|
| - on_homepage_search_callback_.Reset();
|
| - }
|
| -
|
| - bool IsOnUIThread() override { return true; }
|
| -
|
| - base::SequencedWorkerPool* GetBlockingPool() override {
|
| - return worker_pool_.get();
|
| - }
|
| -
|
| - net::URLRequestContextGetter* GetRequestContext() override {
|
| - return request_context_getter_.get();
|
| - }
|
| -
|
| - bool GetBrand(std::string* brand) override {
|
| - *brand = brand_override_;
|
| - return true;
|
| - }
|
| -
|
| - bool IsBrandOrganic(const std::string& brand) override {
|
| - return brand.empty() || brand == "GGLS" || brand == "GGRS";
|
| - }
|
| -
|
| - bool GetReactivationBrand(std::string* brand) override {
|
| - *brand = reactivation_brand_override_;
|
| - return true;
|
| - }
|
| -
|
| - bool ShouldEnableZeroDelayForTesting() override { return true; }
|
| -
|
| - bool GetLanguage(base::string16* language) override { return true; }
|
| -
|
| - bool GetReferral(base::string16* referral) override { return true; }
|
| -
|
| - bool ClearReferral() override { return true; }
|
| -
|
| - void SetOmniboxSearchCallback(const base::Closure& callback) override {
|
| - DCHECK(!callback.is_null());
|
| - on_omnibox_search_callback_ = callback;
|
| - }
|
| -
|
| - void SetHomepageSearchCallback(const base::Closure& callback) override {
|
| - DCHECK(!callback.is_null());
|
| - on_homepage_search_callback_ = callback;
|
| - }
|
| -
|
| - private:
|
| - scoped_refptr<base::SequencedWorkerPool> worker_pool_;
|
| - scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
|
| -
|
| - std::string brand_override_;
|
| - std::string reactivation_brand_override_;
|
| - base::Closure on_omnibox_search_callback_;
|
| - base::Closure on_homepage_search_callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestRLZTrackerDelegate);
|
| -};
|
| -
|
| -// Dummy RLZ string for the access points.
|
| -const char kOmniboxRlzString[] = "test_omnibox";
|
| -const char kNewOmniboxRlzString[] = "new_omnibox";
|
| -#if !defined(OS_IOS)
|
| -const char kHomepageRlzString[] = "test_homepage";
|
| -const char kNewHomepageRlzString[] = "new_homepage";
|
| -const char kAppListRlzString[] = "test_applist";
|
| -const char kNewAppListRlzString[] = "new_applist";
|
| -#endif // !defined(OS_IOS)
|
| -
|
| -// 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 (nullptr != 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 (nullptr == 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;
|
| -
|
| - TestRLZTracker() : assume_not_ui_thread_(true) { set_tracker(this); }
|
| -
|
| - ~TestRLZTracker() override { set_tracker(nullptr); }
|
| -
|
| - 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);
|
| -#if !defined(OS_IOS)
|
| - rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(),
|
| - kNewHomepageRlzString);
|
| - rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(),
|
| - kNewAppListRlzString);
|
| -#endif // !defined(OS_IOS)
|
| - return true;
|
| - }
|
| -
|
| - std::set<std::string> pinged_brands_;
|
| - bool assume_not_ui_thread_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(TestRLZTracker);
|
| -};
|
| -
|
| -class RlzLibTest : public testing::Test {
|
| - protected:
|
| - void SetUp() override;
|
| - void TearDown() override;
|
| -
|
| - void SetMainBrand(const char* brand);
|
| - void SetReactivationBrand(const char* brand);
|
| -
|
| - void SimulateOmniboxUsage();
|
| - void SimulateHomepageUsage();
|
| - void SimulateAppListUsage();
|
| - void InvokeDelayedInit();
|
| -
|
| - void ExpectEventRecorded(const char* event_name, bool expected);
|
| - void ExpectRlzPingSent(bool expected);
|
| - void ExpectReactivationRlzPingSent(bool expected);
|
| -
|
| - base::MessageLoop message_loop_;
|
| - TestRLZTrackerDelegate* delegate_;
|
| - scoped_ptr<TestRLZTracker> tracker_;
|
| - RlzLibTestNoMachineStateHelper m_rlz_test_helper_;
|
| -};
|
| -
|
| -void RlzLibTest::SetUp() {
|
| - testing::Test::SetUp();
|
| - m_rlz_test_helper_.SetUp();
|
| -
|
| - delegate_ = new TestRLZTrackerDelegate;
|
| - tracker_.reset(new TestRLZTracker());
|
| - RLZTracker::SetRlzDelegate(make_scoped_ptr(delegate_));
|
| -
|
| - // 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() {
|
| - delegate_ = nullptr;
|
| - tracker_.reset();
|
| - testing::Test::TearDown();
|
| - m_rlz_test_helper_.TearDown();
|
| -}
|
| -
|
| -void RlzLibTest::SetMainBrand(const char* brand) {
|
| - delegate_->set_brand(brand);
|
| -}
|
| -
|
| -void RlzLibTest::SetReactivationBrand(const char* brand) {
|
| - delegate_->set_reactivation_brand(brand);
|
| -}
|
| -
|
| -void RlzLibTest::SimulateOmniboxUsage() {
|
| - delegate_->SimulateOmniboxUsage();
|
| -}
|
| -
|
| -void RlzLibTest::SimulateHomepageUsage() {
|
| - delegate_->SimulateHomepageUsage();
|
| -}
|
| -
|
| -void RlzLibTest::SimulateAppListUsage() {
|
| -#if !defined(OS_IOS)
|
| - RLZTracker::RecordAppListSearch();
|
| -#endif // !defined(OS_IOS)
|
| -}
|
| -
|
| -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;
|
| - delegate_->GetBrand(&brand);
|
| - EXPECT_EQ(expected, tracker_->was_ping_sent_for_brand(brand.c_str()));
|
| -}
|
| -
|
| -void RlzLibTest::ExpectReactivationRlzPingSent(bool expected) {
|
| - std::string brand;
|
| - delegate_->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.
|
| -//
|
| -// On iOS, only the omnibox events are recorded, and the value send depends
|
| -// on the device form factor (phone or tablet).
|
| -//
|
| -// 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 kHomepageFirstSearch[] = "C2F";
|
| -
|
| -const char kAppListInstall[] = "C7I";
|
| -const char kAppListSetToGoogle[] = "C7S";
|
| -const char kAppListFirstSearch[] = "C7F";
|
| -#elif defined(OS_IOS)
|
| -const char kOmniboxInstallPhone[] = "CDI";
|
| -const char kOmniboxSetToGooglePhone[] = "CDS";
|
| -const char kOmniboxFirstSearchPhone[] = "CDF";
|
| -
|
| -const char kOmniboxInstallTablet[] = "C9I";
|
| -const char kOmniboxSetToGoogleTablet[] = "C9S";
|
| -const char kOmniboxFirstSearchTablet[] = "C9F";
|
| -#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 kHomepageFirstSearch[] = "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 kHomepageFirstSearch[] = "CBF";
|
| -
|
| -const char kAppListInstall[] = "CCI";
|
| -const char kAppListSetToGoogle[] = "CCS";
|
| -const char kAppListFirstSearch[] = "CCF";
|
| -#endif
|
| -
|
| -const char* OmniboxInstall() {
|
| -#if defined(OS_IOS)
|
| - return ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET
|
| - ? kOmniboxInstallTablet
|
| - : kOmniboxInstallPhone;
|
| -#else
|
| - return kOmniboxInstall;
|
| -#endif
|
| -}
|
| -
|
| -const char* OmniboxSetToGoogle() {
|
| -#if defined(OS_IOS)
|
| - return ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET
|
| - ? kOmniboxSetToGoogleTablet
|
| - : kOmniboxSetToGooglePhone;
|
| -#else
|
| - return kOmniboxSetToGoogle;
|
| -#endif
|
| -}
|
| -
|
| -const char* OmniboxFirstSearch() {
|
| -#if defined(OS_IOS)
|
| - return ui::GetDeviceFormFactor() == ui::DEVICE_FORM_FACTOR_TABLET
|
| - ? kOmniboxFirstSearchTablet
|
| - : kOmniboxFirstSearchPhone;
|
| -#else
|
| - return kOmniboxFirstSearch;
|
| -#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(OmniboxFirstSearch(), true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, QuickStopAfterStart) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, true);
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), false);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, false);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, false);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(false);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, DelayedInitOnly) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
|
| - InvokeDelayedInit();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), true);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, true);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, true);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, DelayedInitOnlyGoogleAsStartup) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, false, false, true);
|
| - InvokeDelayedInit();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, true);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRunNoRlzStrings) {
|
| - TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, false);
|
| - InvokeDelayedInit();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), true);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, true);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, true);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRunNoRlzStringsGoogleAsStartup) {
|
| - TestRLZTracker::InitRlzDelayed(false, false, kDelay, false, false, true);
|
| - InvokeDelayedInit();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, true);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - 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);
|
| -#if !defined(OS_IOS)
|
| - rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(), kHomepageRlzString);
|
| - rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(), kAppListRlzString);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, true);
|
| - InvokeDelayedInit();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, DelayedInitOnlyNoGoogleDefaultSearchOrHomepageOrStartup) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, false, false, false);
|
| - InvokeDelayedInit();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, OmniboxUsageOnly) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
|
| - SimulateOmniboxUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), false);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), true);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, false);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, false);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(false);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, HomepageUsageOnly) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
|
| - SimulateHomepageUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), false);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, false);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, false);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(false);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, AppListUsageOnly) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
|
| - SimulateAppListUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), false);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, false);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, false);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, true);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(false);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, UsageBeforeDelayedInit) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
|
| - SimulateOmniboxUsage();
|
| - SimulateHomepageUsage();
|
| - SimulateAppListUsage();
|
| - InvokeDelayedInit();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), true);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), true);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, true);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, true);
|
| - ExpectEventRecorded(kAppListFirstSearch, true);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, UsageAfterDelayedInit) {
|
| - TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
|
| - InvokeDelayedInit();
|
| - SimulateOmniboxUsage();
|
| - SimulateHomepageUsage();
|
| - SimulateAppListUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), true);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), true);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, true);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, true);
|
| - ExpectEventRecorded(kAppListFirstSearch, true);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, OmniboxUsageSendsPingWhenSendPingImmediately) {
|
| - TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, true, false);
|
| - SimulateOmniboxUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), true);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), true);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), true);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, true);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, true);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, true);
|
| - ExpectEventRecorded(kAppListSetToGoogle, true);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(true);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, HomepageUsageDoesNotSendPingWhenSendPingImmediately) {
|
| - TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, true, false);
|
| - SimulateHomepageUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), false);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, false);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, false);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(false);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, StartupUsageDoesNotSendPingWhenSendPingImmediately) {
|
| - TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, false, true);
|
| - SimulateHomepageUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), false);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, false);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, true);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, false);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, false);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - ExpectRlzPingSent(false);
|
| -}
|
| -
|
| -TEST_F(RlzLibTest, AppListUsageDoesNotSendPingWhenSendPingImmediately) {
|
| - TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, false, false);
|
| - SimulateAppListUsage();
|
| -
|
| - // Omnibox events.
|
| - ExpectEventRecorded(OmniboxInstall(), false);
|
| - ExpectEventRecorded(OmniboxSetToGoogle(), false);
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -
|
| -#if !defined(OS_IOS)
|
| - // Home page events.
|
| - ExpectEventRecorded(kHomepageInstall, false);
|
| - ExpectEventRecorded(kHomepageSetToGoogle, false);
|
| - ExpectEventRecorded(kHomepageFirstSearch, false);
|
| -
|
| - // App list events.
|
| - ExpectEventRecorded(kAppListInstall, false);
|
| - ExpectEventRecorded(kAppListSetToGoogle, false);
|
| - ExpectEventRecorded(kAppListFirstSearch, true);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - 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);
|
| -#if !defined(OS_IOS)
|
| - rlz_lib::SetAccessPointRlz(RLZTracker::ChromeHomePage(), kHomepageRlzString);
|
| - rlz_lib::SetAccessPointRlz(RLZTracker::ChromeAppList(), kAppListRlzString);
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - 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());
|
| -#if !defined(OS_IOS)
|
| - 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());
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - // 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());
|
| -#if !defined(OS_IOS)
|
| - 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());
|
| -#endif // !defined(OS_IOS)
|
| -
|
| - // 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());
|
| -#if !defined(OS_IOS)
|
| - 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());
|
| -#endif // !defined(OS_IOS)
|
| -}
|
| -
|
| -// TODO(thakis): Reactivation doesn't exist on Mac yet.
|
| -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);
|
| -}
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| -TEST_F(RlzLibTest, ClearRlzState) {
|
| - RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::ChromeOmnibox(),
|
| - rlz_lib::FIRST_SEARCH);
|
| -
|
| - ExpectEventRecorded(OmniboxFirstSearch(), true);
|
| -
|
| - RLZTracker::ClearRlzState();
|
| -
|
| - ExpectEventRecorded(OmniboxFirstSearch(), false);
|
| -}
|
| -#endif // defined(OS_CHROMEOS)
|
| -
|
| -} // namespace rlz
|
|
|