// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Key and value names of the location of the RLZ shared state.
#include "rlz/lib/lib_values.h"
#include "base/strings/stringprintf.h"
#include "rlz/lib/assert.h"
namespace rlz_lib {
//
// Ping information.
//
// rep=2: includes the new stateful events.
const char kProtocolCgiArgument[] = "rep=2";
const char kEventsCgiVariable[] = "events";
const char kStatefulEventsCgiVariable[] = "stateful-events";
const char kEventsCgiSeparator = ',';
const char kRlzCgiVariable[] = "rlz";
const char kRlzCgiSeparator[] = ",";
const char kRlzCgiIndicator[] = ":";
const char kProductSignatureCgiVariable[] = "as";
const char kProductBrandCgiVariable[] = "brand";
const char kProductLanguageCgiVariable[] = "hl";
const char kProductIdCgiVariable[] = "pid";
const char kDccCgiVariable[] = "dcc";
const char kRlsCgiVariable[] = "rls";
const char kMachineIdCgiVariable[] = "id";
const char kSetDccResponseVariable[] = "set_dcc";
//
// Financial server information.
//
const char kFinancialPingPath[] = "/tools/pso/ping";
const char kFinancialServer[] = "clients1.google.com";
const int kFinancialPort = 80;
// Ping times in 100-nanosecond intervals.
const int64 kEventsPingInterval = 24LL * 3600LL * 10000000LL; // 1 day
const int64 kNoEventsPingInterval = kEventsPingInterval * 7LL; // 1 week
const char kFinancialPingUserAgent[] = "Mozilla/4.0 (compatible; Win32)";
const char* kFinancialPingResponseObjects[] = { "text/*", NULL };
//
// AccessPoint and Event names.
//
//
const char* GetAccessPointName(AccessPoint point) {
switch (point) {
case NO_ACCESS_POINT: return "";
case IE_DEFAULT_SEARCH: return "I7";
case IE_HOME_PAGE: return "W1";
case IETB_SEARCH_BOX: return "T4";
case QUICK_SEARCH_BOX: return "Q1";
case GD_DESKBAND: return "D1";
case GD_SEARCH_GADGET: return "D2";
case GD_WEB_SERVER: return "D3";
case GD_OUTLOOK: return "D4";
case CHROME_OMNIBOX: return "C1";
case CHROME_HOME_PAGE: return "C2";
case FFTB2_BOX: return "B2";
case FFTB3_BOX: return "B3";
case PINYIN_IME_BHO: return "N1";
case IGOOGLE_WEBPAGE: return "G1";
case MOBILE_IDLE_SCREEN_BLACKBERRY: return "H1";
case MOBILE_IDLE_SCREEN_WINMOB: return "H2";
case MOBILE_IDLE_SCREEN_SYMBIAN: return "H3";
case FF_HOME_PAGE: return "R0";
case FF_SEARCH_BOX: return "R1";
case IE_BROWSED_PAGE: return "R2";
case QSB_WIN_BOX: return "R3";
case WEBAPPS_CALENDAR: return "R4";
case WEBAPPS_DOCS: return "R5";
case WEBAPPS_GMAIL: return "R6";
case IETB_LINKDOCTOR: return "R7";
case FFTB_LINKDOCTOR: return "R8";
case IETB7_SEARCH_BOX: return "T7";
case TB8_SEARCH_BOX: return "T8";
case CHROME_FRAME: return "C3";
case PARTNER_AP_1: return "V1";
case PARTNER_AP_2: return "V2";
case PARTNER_AP_3: return "V3";
case PARTNER_AP_4: return "V4";
case PARTNER_AP_5: return "V5";
case CHROME_MAC_OMNIBOX: return "C5";
case CHROME_MAC_HOME_PAGE: return "C6";
case CHROMEOS_OMNIBOX: return "CA";
case CHROMEOS_HOME_PAGE: return "CB";
case CHROMEOS_RESERVED: return "CC";
case CHROME_IOS_OMNIBOX: return "RM";
case CHROME_IOS_HOME_PAGE: return "RN";
case UNDEFINED_AP_O: return "RO";
case UNDEFINED_AP_P: return "RP";
case UNDEFINED_AP_Q: return "RQ";
case UNDEFINED_AP_R: return "RR";
case UNDEFINED_AP_S: return "RS";
case UNDEFINED_AP_T: return "RT";
case UNDEFINED_AP_U: return "RU";
case UNDEFINED_AP_V: return "RV";
case UNDEFINED_AP_W: return "RW";
case UNDEFINED_AP_X: return "RX";
case UNDEFINED_AP_Y: return "RY";
case UNDEFINED_AP_Z: return "RZ";
case PACK_AP0: return "U0";
case PACK_AP1: return "U1";
case PACK_AP2: return "U2";
case PACK_AP3: return "U3";
case PACK_AP4: return "U4";
case PACK_AP5: return "U5";
case PACK_AP6: return "U6";
case PACK_AP7: return "U7";
case PACK_AP8: return "U8";
case PACK_AP9: return "U9";
case PACK_AP10: return "UA";
case PACK_AP11: return "UB";
case PACK_AP12: return "UC";
case PACK_AP13: return "UD";
case LAST_ACCESS_POINT: ; // Fall through.
}
ASSERT_STRING("GetAccessPointName: Unknown Access Point");
return NULL;
}
bool GetAccessPointFromName(const char* name, AccessPoint* point) {
if (!point) {
ASSERT_STRING("GetAccessPointFromName: point is NULL");
return false;
}
*point = NO_ACCESS_POINT;
if (!name)
return false;
for (int i = NO_ACCESS_POINT; i < LAST_ACCESS_POINT; i++)
if (strcmp(name, GetAccessPointName(static_cast<AccessPoint>(i))) == 0) {
*point = static_cast<AccessPoint>(i);
return true;
}
return false;
}
const char* GetEventName(Event event) {
switch (event) {
case INVALID_EVENT: return "";
case INSTALL: return "I";
case SET_TO_GOOGLE: return "S";
case FIRST_SEARCH: return "F";
case REPORT_RLS: return "R";
case ACTIVATE: return "A";
case LAST_EVENT: ; // Fall through.
}
ASSERT_STRING("GetPointName: Unknown Event");
return NULL;
}
bool GetEventFromName(const char* name, Event* event) {
if (!event) {
ASSERT_STRING("GetEventFromName: event is NULL");
return false;
}
*event = INVALID_EVENT;
if (!name)
return false;
for (int i = INVALID_EVENT; i < LAST_EVENT; i++)
if (strcmp(name, GetEventName(static_cast<Event>(i))) == 0) {
*event = static_cast<Event>(i);
return true;
}
return false;
}
const char* GetProductName(Product product) {
switch (product) {
case IE_TOOLBAR: return "T";
case TOOLBAR_NOTIFIER: return "P";
case PACK: return "U";
case DESKTOP: return "D";
case CHROME: return "C";
case FF_TOOLBAR: return "B";
case QSB_WIN: return "K";
case WEBAPPS: return "W";
case PINYIN_IME: return "N";
case PARTNER: return "V";
}
ASSERT_STRING("GetProductName: Unknown Product");
return "";
}
} // namespace rlz_lib