rlz_unittest.cc revision 868fa2fe829687343ffae624259930155e16dbd8
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/rlz/rlz.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/message_loop.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h"
11868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h"
12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/threading/thread.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/google/google_util.h"
15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "chrome/browser/omnibox/omnibox_log.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_notification_types.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/env_vars.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/browser_distribution.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/google_update_constants.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/navigation_entry.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_details.h"
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "content/public/browser/notification_service.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_source.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/test/test_reg_util_win.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/win/registry.h"
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/win/lib/rlz_lib.h"  // InitializeTempHivesForTesting
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(OS_POSIX)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/lib/rlz_value_store.h"  // SetRlzStoreDirectory
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::NavigationEntry;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using testing::AssertionResult;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using testing::AssertionSuccess;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using testing::AssertionFailure;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using base::win::RegKey;
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using registry_util::RegistryOverrideManager;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Registry path to overridden hive.
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const wchar_t kRlzTempHkcu[] = L"rlz_hkcu";
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const wchar_t kRlzTempHklm[] = L"rlz_hklm";
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Dummy RLZ string for the access points.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kOmniboxRlzString[] = "test_omnibox";
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kHomepageRlzString[] = "test_homepage";
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kNewOmniboxRlzString[] = "new_omnibox";
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char kNewHomepageRlzString[] = "new_homepage";
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Some helper macros to test it a string contains/does not contain a substring.
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AssertionResult CmpHelperSTRC(const char* str_expression,
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const char* substr_expression,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const char* str,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              const char* substr) {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (NULL != strstr(str, substr)) {
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return AssertionSuccess();
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return AssertionFailure() << "Expected: (" << substr_expression << ") in ("
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            << str_expression << "), actual: '"
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            << substr << "' not in '" << str << "'";
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AssertionResult CmpHelperSTRNC(const char* str_expression,
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const char* substr_expression,
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const char* str,
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               const char* substr) {
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (NULL == strstr(str, substr)) {
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return AssertionSuccess();
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return AssertionFailure() << "Expected: (" << substr_expression
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            << ") not in (" << str_expression << "), actual: '"
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                            << substr << "' in '" << str << "'";
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EXPECT_STR_CONTAINS(str, substr) \
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_PRED_FORMAT2(CmpHelperSTRC, str, substr)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define EXPECT_STR_NOT_CONTAIN(str, substr) \
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_PRED_FORMAT2(CmpHelperSTRNC, str, substr)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Test class for RLZ tracker. Makes some member functions public and
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// overrides others to make it easier to test.
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestRLZTracker : public RLZTracker {
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  using RLZTracker::InitRlzDelayed;
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  using RLZTracker::DelayedInit;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  using RLZTracker::Observe;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker() : assume_not_ui_thread_(true) {
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set_tracker(this);
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~TestRLZTracker() {
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set_tracker(NULL);
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool was_ping_sent_for_brand(const std::string& brand) const {
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return pinged_brands_.count(brand) > 0;
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void set_assume_not_ui_thread(bool assume_not_ui_thread) {
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assume_not_ui_thread_ = assume_not_ui_thread;
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void ScheduleDelayedInit(base::TimeDelta delay) OVERRIDE {
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // If the delay is 0, invoke the delayed init now. Otherwise,
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // don't schedule anything, it will be manually called during tests.
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (delay == base::TimeDelta())
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      DelayedInit();
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ScheduleFinancialPing() OVERRIDE {
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PingNowImpl();
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ScheduleRecordProductEvent(rlz_lib::Product product,
1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                          rlz_lib::AccessPoint point,
1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                          rlz_lib::Event event_id) OVERRIDE {
1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return !assume_not_ui_thread_;
1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool ScheduleGetAccessPointRlz(rlz_lib::AccessPoint point) OVERRIDE {
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return !assume_not_ui_thread_;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ScheduleRecordFirstSearch(rlz_lib::AccessPoint point) OVERRIDE {
1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return !assume_not_ui_thread_;
1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS)
1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual bool ScheduleClearRlzState() OVERRIDE {
1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return !assume_not_ui_thread_;
1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool SendFinancialPing(const std::string& brand,
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const string16& lang,
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 const string16& referral) OVERRIDE {
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Don't ping the server during tests, just pretend as if we did.
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_FALSE(brand.empty());
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    pinged_brands_.insert(brand);
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Set new access points RLZ string, like the actual server ping would have
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // done.
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX,
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               kNewOmniboxRlzString);
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE,
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               kNewHomepageRlzString);
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return true;
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::set<std::string> pinged_brands_;
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool assume_not_ui_thread_;
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(TestRLZTracker);
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class RlzLibTest : public testing::Test {
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SetUp() OVERRIDE;
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void TearDown() OVERRIDE;
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetMainBrand(const char* brand);
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetReactivationBrand(const char* brand);
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetRegistryBrandValue(const wchar_t* name, const char* brand);
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SimulateOmniboxUsage();
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SimulateHomepageUsage();
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void InvokeDelayedInit();
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ExpectEventRecorded(const char* event_name, bool expected);
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ExpectRlzPingSent(bool expected);
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ExpectReactivationRlzPingSent(bool expected);
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestRLZTracker tracker_;
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RegistryOverrideManager override_manager_;
1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(OS_POSIX)
1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::ScopedTempDir temp_dir_;
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<google_util::BrandForTesting> brand_override_;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::SetUp() {
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  testing::Test::SetUp();
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Before overriding HKLM for the tests, we need to set it up correctly
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // so that the rlz_lib calls work. This needs to be done before we do the
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // override.
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 temp_hklm_path = base::StringPrintf(
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      L"%ls\\%ls",
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RegistryOverrideManager::kTempTestKeyPath,
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      kRlzTempHklm);
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::win::RegKey hklm;
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(ERROR_SUCCESS, hklm.Create(HKEY_CURRENT_USER,
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       temp_hklm_path.c_str(),
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       KEY_READ));
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 temp_hkcu_path = base::StringPrintf(
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      L"%ls\\%ls",
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      RegistryOverrideManager::kTempTestKeyPath,
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      kRlzTempHkcu);
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::win::RegKey hkcu;
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(ERROR_SUCCESS, hkcu.Create(HKEY_CURRENT_USER,
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       temp_hkcu_path.c_str(),
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       KEY_READ));
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::InitializeTempHivesForTesting(hklm, hkcu);
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Its important to override HKLM before HKCU because of the registry
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // initialization performed above.
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  override_manager_.OverrideRegistry(HKEY_LOCAL_MACHINE, kRlzTempHklm);
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  override_manager_.OverrideRegistry(HKEY_CURRENT_USER, kRlzTempHkcu);
2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(OS_POSIX)
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::testing::SetRlzStoreDirectory(temp_dir_.path());
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure a non-organic brand code is set in the registry or the RLZTracker
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is pretty much a no-op.
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetMainBrand("TEST");
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetReactivationBrand("");
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::TearDown() {
2482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_POSIX)
2492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  rlz_lib::testing::SetRlzStoreDirectory(base::FilePath());
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  testing::Test::TearDown();
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::SetMainBrand(const char* brand) {
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetRegistryBrandValue(google_update::kRegRLZBrandField, brand);
2572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(OS_POSIX)
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  brand_override_.reset(new google_util::BrandForTesting(brand));
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string check_brand;
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  google_util::GetBrand(&check_brand);
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(brand, check_brand);
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::SetReactivationBrand(const char* brand) {
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // TODO(thakis): Reactivation doesn't exist on Mac yet.
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetRegistryBrandValue(google_update::kRegRLZReactivationBrandField, brand);
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string check_brand;
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  google_util::GetReactivationBrand(&check_brand);
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(brand, check_brand);
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::SetRegistryBrandValue(const wchar_t* name,
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                       const char* brand) {
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BrowserDistribution* dist = BrowserDistribution::GetDistribution();
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 reg_path = dist->GetStateKey();
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RegKey key(HKEY_CURRENT_USER, reg_path.c_str(), KEY_SET_VALUE);
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (*brand == 0) {
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LONG result = key.DeleteValue(name);
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_TRUE(ERROR_SUCCESS == result || ERROR_FILE_NOT_FOUND == result);
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    string16 brand16 = ASCIIToUTF16(brand);
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(name, brand16.c_str()));
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::SimulateOmniboxUsage() {
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.Observe(chrome::NOTIFICATION_OMNIBOX_OPENED_URL,
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   content::NotificationService::AllSources(),
294868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)                   content::Details<OmniboxLog>(NULL));
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::SimulateHomepageUsage() {
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<NavigationEntry> entry(NavigationEntry::Create());
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->SetPageID(0);
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->SetTransitionType(content::PAGE_TRANSITION_HOME_PAGE);
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING,
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   content::NotificationService::AllSources(),
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   content::Details<NavigationEntry>(entry.get()));
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::InvokeDelayedInit() {
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.DelayedInit();
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::ExpectEventRecorded(const char* event_name, bool expected) {
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char cgi[rlz_lib::kMaxCgiLength];
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GetProductEventsAsCgi(rlz_lib::CHROME, cgi, arraysize(cgi));
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (expected) {
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_STR_CONTAINS(cgi, event_name);
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_STR_NOT_CONTAIN(cgi, event_name);
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::ExpectRlzPingSent(bool expected) {
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string brand;
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  google_util::GetBrand(&brand);
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(expected, tracker_.was_ping_sent_for_brand(brand.c_str()));
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void RlzLibTest::ExpectReactivationRlzPingSent(bool expected) {
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string brand;
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  google_util::GetReactivationBrand(&brand);
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(expected, tracker_.was_ping_sent_for_brand(brand.c_str()));
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The events that affect the different RLZ scenarios are the following:
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  A: the user starts chrome for the first time
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  B: the user stops chrome
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  C: the user start a subsequent time
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  D: the user stops chrome again
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  I: the RLZTracker::DelayedInit() method is invoked
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  X: the user performs a search using the omnibox
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  Y: the user performs a search using the home page
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The events A to D happen in chronological order, but the other events
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// may happen at any point between A-B or C-D, in no particular order.
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The visible results of the scenarios on Win are:
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  C1I event is recorded
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  C2I event is recorded
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  C1F event is recorded
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  C2F event is recorded
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  C1S event is recorded
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  C2S event is recorded
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  RLZ ping sent
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  On Mac, C5 / C6 are sent instead of C1 / C2.
3562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//  On ChromeOS, CA / CB are sent, respectively.
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Variations on the above scenarios:
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  - if the delay specified to InitRlzDelayed() is negative, then the RLZ
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//    ping should be sent out at the time of event X and not wait for I
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Also want to test that pre-warming the RLZ string cache works correctly.
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_WIN)
3662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxInstall[] = "C1I";
3672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxSetToGoogle[] = "C1S";
3682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxFirstSearch[] = "C1F";
3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageInstall[] = "C2I";
3712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageSetToGoogle[] = "C2S";
3722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageFirstSeach[] = "C2F";
3732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(OS_MACOSX)
3742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxInstall[] = "C5I";
3752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxSetToGoogle[] = "C5S";
3762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxFirstSearch[] = "C5F";
3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageInstall[] = "C6I";
3792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageSetToGoogle[] = "C6S";
3802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageFirstSeach[] = "C6F";
3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#elif defined(OS_CHROMEOS)
3822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxInstall[] = "CAI";
3832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxSetToGoogle[] = "CAS";
3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kOmniboxFirstSearch[] = "CAF";
3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageInstall[] = "CBI";
3872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageSetToGoogle[] = "CBS";
3882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kHomepageFirstSeach[] = "CBF";
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const base::TimeDelta kDelay = base::TimeDelta::FromMilliseconds(20);
3922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, RecordProductEvent) {
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::CHROME_OMNIBOX,
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 rlz_lib::FIRST_SEARCH);
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, true);
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, QuickStopAfterStart) {
4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, true);
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
4042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, false);
4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
4062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
4092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, false);
4102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, false);
4112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, false);
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(false);
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, DelayedInitOnly) {
4172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
4212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
4222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, true);
4232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
4262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
4272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, true);
4282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, false);
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, DelayedInitOnlyGoogleAsStartup) {
4342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, false, false, true);
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
4382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
4392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
4402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
4442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, true);
4452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRunNoRlzStrings) {
4512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, false);
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
4552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
4562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, true);
4572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
4602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
4612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, true);
4622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, false);
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRunNoRlzStringsGoogleAsStartup) {
4682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(false, false, kDelay, false, false, true);
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
4722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
4732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
4742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
4772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
4782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, true);
4792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, DelayedInitOnlyNoFirstRun) {
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set some dummy RLZ strings to simulate that we already ran before and
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // performed a successful ping to the RLZ server.
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString);
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, kHomepageRlzString);
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(false, false, kDelay, true, true, true);
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
4942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
4952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
4962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
4992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
5002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, false);
5012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, DelayedInitOnlyNoGoogleDefaultSearchOrHomepageOrStartup) {
5072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, false, false, false);
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
5112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
5122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
5132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
5162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
5172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, false);
5182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, false);
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, OmniboxUsageOnly) {
5242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateOmniboxUsage();
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
5282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, false);
5292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
5302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, true);
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
5332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, false);
5342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, false);
5352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, false);
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(false);
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, HomepageUsageOnly) {
5412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateHomepageUsage();
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
5452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, false);
5462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
5472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
5502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, false);
5512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, false);
5522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(false);
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, UsageBeforeDelayedInit) {
5582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateOmniboxUsage();
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateHomepageUsage();
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
5642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
5652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, true);
5662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, true);
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
5692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
5702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, true);
5712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, OmniboxUsageAfterDelayedInit) {
5772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateOmniboxUsage();
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateHomepageUsage();
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
5832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
5842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, true);
5852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, true);
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
5882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
5892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, true);
5902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(RlzLibTest, OmniboxUsageSendsPingWhenSendPingImmediately) {
5962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, true, false);
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateOmniboxUsage();
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
6002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, true);
6012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, true);
6022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, true);
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
6052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, true);
6062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, true);
6072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, false);
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(RlzLibTest, HomepageUsageDoesNotSendPingWhenSendPingImmediately) {
6132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, true, false);
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateHomepageUsage();
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
6172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, false);
6182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
6192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
6222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, false);
6232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, false);
6242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(false);
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(RlzLibTest, StartupUsageDoesNotSendPingWhenSendPingImmediately) {
6302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, true, kDelay, true, false, true);
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SimulateHomepageUsage();
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Omnibox events.
6342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxInstall, false);
6352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxSetToGoogle, false);
6362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Home page events.
6392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageInstall, false);
6402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageSetToGoogle, false);
6412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kHomepageFirstSeach, true);
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(false);
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, GetAccessPointRlzOnIoThread) {
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set dummy RLZ string.
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString);
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 rlz;
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(true);
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str());
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, GetAccessPointRlzNotOnIoThread) {
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set dummy RLZ string.
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString);
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 rlz;
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(false);
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, GetAccessPointRlzIsCached) {
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set dummy RLZ string.
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString);
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 rlz;
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(false);
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(true);
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str());
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(false);
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str());
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, PingUpdatesRlzCache) {
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set dummy RLZ string.
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, kOmniboxRlzString);
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rlz_lib::SetAccessPointRlz(RLZTracker::CHROME_HOME_PAGE, kHomepageRlzString);
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  string16 rlz;
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Prime the cache.
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(true);
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str());
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        RLZTracker::CHROME_HOME_PAGE, &rlz));
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kHomepageRlzString, UTF16ToUTF8(rlz).c_str());
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure cache is valid.
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(false);
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kOmniboxRlzString, UTF16ToUTF8(rlz).c_str());
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        RLZTracker::CHROME_HOME_PAGE, &rlz));
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kHomepageRlzString, UTF16ToUTF8(rlz).c_str());
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Perform ping.
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(true);
7122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Make sure cache is now updated.
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.set_assume_not_ui_thread(false);
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(RLZTracker::CHROME_OMNIBOX, &rlz));
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kNewOmniboxRlzString, UTF16ToUTF8(rlz).c_str());
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(RLZTracker::GetAccessPointRlz(
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        RLZTracker::CHROME_HOME_PAGE, &rlz));
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_STREQ(kNewHomepageRlzString, UTF16ToUTF8(rlz).c_str());
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, ObserveHandlesBadArgs) {
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<NavigationEntry> entry(NavigationEntry::Create());
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->SetPageID(0);
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  entry->SetTransitionType(content::PAGE_TRANSITION_LINK);
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING,
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   content::NotificationService::AllSources(),
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   content::Details<NavigationEntry>(NULL));
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tracker_.Observe(content::NOTIFICATION_NAV_ENTRY_PENDING,
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   content::NotificationService::AllSources(),
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                   content::Details<NavigationEntry>(entry.get()));
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// TODO(thakis): Reactivation doesn't exist on Mac yet.
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, ReactivationNonOrganicNonOrganic) {
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetReactivationBrand("REAC");
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectReactivationRlzPingSent(true);
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, ReactivationOrganicNonOrganic) {
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetMainBrand("GGLS");
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetReactivationBrand("REAC");
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(false);
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectReactivationRlzPingSent(true);
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, ReactivationNonOrganicOrganic) {
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetMainBrand("TEST");
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetReactivationBrand("GGLS");
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(true);
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectReactivationRlzPingSent(false);
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(RlzLibTest, ReactivationOrganicOrganic) {
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetMainBrand("GGLS");
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetReactivationBrand("GGRS");
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  TestRLZTracker::InitRlzDelayed(true, false, kDelay, true, true, false);
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  InvokeDelayedInit();
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectRlzPingSent(false);
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ExpectReactivationRlzPingSent(false);
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // defined(OS_WIN)
7832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS)
7852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(RlzLibTest, ClearRlzState) {
7862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  RLZTracker::RecordProductEvent(rlz_lib::CHROME, RLZTracker::CHROME_OMNIBOX,
7872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                                 rlz_lib::FIRST_SEARCH);
7882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, true);
7902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  RLZTracker::ClearRlzState();
7922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
7932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ExpectEventRecorded(kOmniboxFirstSearch, false);
7942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
7952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // defined(OS_CHROMEOS)
796