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)// A test application for the FinancialPing class. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// These tests should not be executed on the build server: 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// - They modify machine state (registry). 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// These tests require write access to HKCU and HKLM. 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The "GGLA" brand is used to test the normal code flow of the code, and the 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// "TEST" brand is used to test the supplementary brand code code flow. In one 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// case below, the brand "GOOG" is used because the code wants to use a brand 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// that is neither of the two mentioned above. 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/lib/financial_ping.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 21868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/string_util.h" 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/lib/lib_values.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/lib/machine_id.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/lib/rlz_lib.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/lib/rlz_value_store.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/test/rlz_test_helpers.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "rlz/win/lib/machine_deal.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Must match the implementation in file_time.cc. 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int64 GetSystemTimeAsInt64() { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILETIME now_as_file_time; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetSystemTimeAsFileTime(&now_as_file_time); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) LARGE_INTEGER integer; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) integer.HighPart = now_as_file_time.dwHighDateTime; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) integer.LowPart = now_as_file_time.dwLowDateTime; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return integer.QuadPart; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double now_seconds = base::Time::Now().ToDoubleT(); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<int64>(now_seconds * 1000 * 1000 * 10); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Ping times in 100-nanosecond intervals. 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int64 k1MinuteInterval = 60LL * 10000000LL; // 1 minute 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace anonymous 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FinancialPingTest : public RlzLibTestBase { 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FinancialPingTest, FormRequest) { 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string brand_string = rlz_lib::SupplementaryBranding::GetBrand(); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* brand = brand_string.empty() ? "GGLA" : brand_string.c_str(); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::MachineDealCode::Set("dcc_value")); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define DCC_PARAM "&dcc=dcc_value" 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define DCC_PARAM "" 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::IETB_SEARCH_BOX, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "TbRlzValue")); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER)); 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE)); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::IE_HOME_PAGE, rlz_lib::INSTALL)); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::AccessPoint points[] = 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::NO_ACCESS_POINT}; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string machine_id; 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool got_machine_id = rlz_lib::GetMachineId(&machine_id); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string request; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points, "swg", brand, NULL, "en", false, &request)); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string expected_response; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "/tools/pso/ping?as=swg&brand=%s&hl=en&" 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "events=I7S,W1I&rep=2&rlz=T4:TbRlzValue" DCC_PARAM 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles), brand); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (got_machine_id) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, "&id=%s", machine_id.c_str()); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_response, request); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::IETB_SEARCH_BOX, "")); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER, 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points, "swg", brand, "IdOk2", NULL, false, &request)); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_response.clear(); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "/tools/pso/ping?as=swg&brand=%s&pid=IdOk2&" 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "events=I7S,W1I&rep=2&rlz=T4:" DCC_PARAM, brand); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (got_machine_id) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, "&id=%s", machine_id.c_str()); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_response, request); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points, "swg", brand, "IdOk", NULL, true, &request)); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_response.clear(); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "/tools/pso/ping?as=swg&brand=%s&pid=IdOk&" 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "events=I7S,W1I&rep=2&rlz=T4:" DCC_PARAM, brand); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_response, request); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points, "swg", brand, NULL, NULL, true, &request)); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_response.clear(); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "/tools/pso/ping?as=swg&brand=%s&events=I7S,W1I&rep=2" 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "&rlz=T4:" DCC_PARAM, brand); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_response, request); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clear all events. 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER)); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Clear all RLZs. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) char rlz[rlz_lib::kMaxRlzLength + 1]; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (int ap = rlz_lib::NO_ACCESS_POINT + 1; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ap < rlz_lib::LAST_ACCESS_POINT; ap++) { 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz[0] = 0; 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::AccessPoint point = static_cast<rlz_lib::AccessPoint>(ap); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (rlz_lib::GetAccessPointRlz(point, rlz, arraysize(rlz)) && rlz[0]) { 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::SetAccessPointRlz(point, ""); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::IETB_SEARCH_BOX, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "TbRlzValue")); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::SetAccessPointRlz(rlz_lib::QUICK_SEARCH_BOX, 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "QsbRlzValue")); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points, "swg", brand, NULL, NULL, false, &request)); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_response.clear(); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "/tools/pso/ping?as=swg&brand=%s&rep=2&rlz=T4:TbRlzValue," 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "Q1:QsbRlzValue" DCC_PARAM, brand); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_STREQ(expected_response.c_str(), request.c_str()); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!GetAccessPointRlz(rlz_lib::IE_HOME_PAGE, rlz, arraysize(rlz))) { 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points[2] = rlz_lib::IE_HOME_PAGE; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER, 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points, "swg", brand, "MyId", "en-US", true, &request)); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) expected_response.clear(); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringAppendF(&expected_response, 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "/tools/pso/ping?as=swg&brand=%s&hl=en-US&pid=MyId&rep=2" 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "&rlz=T4:TbRlzValue,Q1:QsbRlzValue" DCC_PARAM, brand); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_STREQ(expected_response.c_str(), request.c_str()); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FinancialPingTest, FormRequestBadBrand) { 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::AccessPoint points[] = 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {rlz_lib::IETB_SEARCH_BOX, rlz_lib::NO_ACCESS_POINT, 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::NO_ACCESS_POINT}; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string request; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool ok = rlz_lib::FinancialPing::FormRequest(rlz_lib::TOOLBAR_NOTIFIER, 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) points, "swg", "GOOG", NULL, "en", false, &request); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(rlz_lib::SupplementaryBranding::GetBrand().empty(), ok); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void SetLastPingTime(int64 time, rlz_lib::Product product) { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::ScopedRlzValueStoreLock lock; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::RlzValueStore* store = lock.GetStore(); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(store); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(store->HasAccess(rlz_lib::RlzValueStore::kWriteAccess)); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) store->WritePingTime(product, time); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FinancialPingTest, IsPingTime) { 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 now = GetSystemTimeAsInt64(); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 last_ping = now - rlz_lib::kEventsPingInterval - k1MinuteInterval; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No events, last ping just over a day ago. 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER)); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Has events, last ping just over a day ago. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE)); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Has events, last ping just under a day ago. 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_ping = now - rlz_lib::kEventsPingInterval + k1MinuteInterval; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER)); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No events, last ping just under a week ago. 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_ping = now - rlz_lib::kNoEventsPingInterval + k1MinuteInterval; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // No events, last ping just over a week ago. 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_ping = now - rlz_lib::kNoEventsPingInterval - k1MinuteInterval; 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Last ping was in future (invalid). 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_ping = now + k1MinuteInterval; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE)); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FinancialPingTest, BrandingIsPingTime) { 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Don't run these tests if a supplementary brand is already in place. That 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // way we can control the branding. 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!rlz_lib::SupplementaryBranding::GetBrand().empty()) 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 now = GetSystemTimeAsInt64(); 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 last_ping = now - rlz_lib::kEventsPingInterval - k1MinuteInterval; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Has events, last ping just over a day ago. 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE)); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::SupplementaryBranding branding("TEST"); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Has events, last ping just over a day ago. 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE)); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_ping = now - k1MinuteInterval; 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::SupplementaryBranding branding("TEST"); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(FinancialPingTest, ClearLastPingTime) { 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 now = GetSystemTimeAsInt64(); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 last_ping = now - rlz_lib::kEventsPingInterval + k1MinuteInterval; 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLastPingTime(last_ping, rlz_lib::TOOLBAR_NOTIFIER); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Has events, last ping just under a day ago. 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::ClearAllProductEvents(rlz_lib::TOOLBAR_NOTIFIER)); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::RecordProductEvent(rlz_lib::TOOLBAR_NOTIFIER, 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::IE_DEFAULT_SEARCH, rlz_lib::SET_TO_GOOGLE)); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::ClearLastPingTime( 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rlz_lib::TOOLBAR_NOTIFIER)); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(rlz_lib::FinancialPing::IsPingTime(rlz_lib::TOOLBAR_NOTIFIER, 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) false)); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 294