rlz_unittest.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/stringprintf.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/threading/thread.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/utf_string_conversions.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/autocomplete/autocomplete_log.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/google/google_util.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(), 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::Details<AutocompleteLog>(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