1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 5 // Key and value names of the location of the RLZ shared state. 6 7 #include "rlz/lib/lib_values.h" 8 9 #include "base/strings/stringprintf.h" 10 #include "rlz/lib/assert.h" 11 12 namespace rlz_lib { 13 14 // 15 // Ping information. 16 // 17 18 // rep=2: includes the new stateful events. 19 const char kProtocolCgiArgument[] = "rep=2"; 20 21 const char kEventsCgiVariable[] = "events"; 22 const char kStatefulEventsCgiVariable[] = "stateful-events"; 23 const char kEventsCgiSeparator = ','; 24 25 const char kRlzCgiVariable[] = "rlz"; 26 const char kRlzCgiSeparator[] = ","; 27 const char kRlzCgiIndicator[] = ":"; 28 29 const char kProductSignatureCgiVariable[] = "as"; 30 const char kProductBrandCgiVariable[] = "brand"; 31 const char kProductLanguageCgiVariable[] = "hl"; 32 const char kProductIdCgiVariable[] = "pid"; 33 34 const char kDccCgiVariable[] = "dcc"; 35 const char kRlsCgiVariable[] = "rls"; 36 const char kMachineIdCgiVariable[] = "id"; 37 const char kSetDccResponseVariable[] = "set_dcc"; 38 39 // 40 // Financial server information. 41 // 42 43 const char kFinancialPingPath[] = "/tools/pso/ping"; 44 const char kFinancialServer[] = "clients1.google.com"; 45 const int kFinancialPort = 80; 46 47 // Ping times in 100-nanosecond intervals. 48 const int64 kEventsPingInterval = 24LL * 3600LL * 10000000LL; // 1 day 49 const int64 kNoEventsPingInterval = kEventsPingInterval * 7LL; // 1 week 50 51 const char kFinancialPingUserAgent[] = "Mozilla/4.0 (compatible; Win32)"; 52 const char* kFinancialPingResponseObjects[] = { "text/*", NULL }; 53 54 // 55 // AccessPoint and Event names. 56 // 57 // 58 59 const char* GetAccessPointName(AccessPoint point) { 60 switch (point) { 61 case NO_ACCESS_POINT: return ""; 62 case IE_DEFAULT_SEARCH: return "I7"; 63 case IE_HOME_PAGE: return "W1"; 64 case IETB_SEARCH_BOX: return "T4"; 65 case QUICK_SEARCH_BOX: return "Q1"; 66 case GD_DESKBAND: return "D1"; 67 case GD_SEARCH_GADGET: return "D2"; 68 case GD_WEB_SERVER: return "D3"; 69 case GD_OUTLOOK: return "D4"; 70 case CHROME_OMNIBOX: return "C1"; 71 case CHROME_HOME_PAGE: return "C2"; 72 case FFTB2_BOX: return "B2"; 73 case FFTB3_BOX: return "B3"; 74 case PINYIN_IME_BHO: return "N1"; 75 case IGOOGLE_WEBPAGE: return "G1"; 76 case MOBILE_IDLE_SCREEN_BLACKBERRY: return "H1"; 77 case MOBILE_IDLE_SCREEN_WINMOB: return "H2"; 78 case MOBILE_IDLE_SCREEN_SYMBIAN: return "H3"; 79 case FF_HOME_PAGE: return "R0"; 80 case FF_SEARCH_BOX: return "R1"; 81 case IE_BROWSED_PAGE: return "R2"; 82 case QSB_WIN_BOX: return "R3"; 83 case WEBAPPS_CALENDAR: return "R4"; 84 case WEBAPPS_DOCS: return "R5"; 85 case WEBAPPS_GMAIL: return "R6"; 86 case IETB_LINKDOCTOR: return "R7"; 87 case FFTB_LINKDOCTOR: return "R8"; 88 case IETB7_SEARCH_BOX: return "T7"; 89 case TB8_SEARCH_BOX: return "T8"; 90 case CHROME_FRAME: return "C3"; 91 case PARTNER_AP_1: return "V1"; 92 case PARTNER_AP_2: return "V2"; 93 case PARTNER_AP_3: return "V3"; 94 case PARTNER_AP_4: return "V4"; 95 case PARTNER_AP_5: return "V5"; 96 case CHROME_MAC_OMNIBOX: return "C5"; 97 case CHROME_MAC_HOME_PAGE: return "C6"; 98 case CHROMEOS_OMNIBOX: return "CA"; 99 case CHROMEOS_HOME_PAGE: return "CB"; 100 case CHROMEOS_RESERVED: return "CC"; 101 case CHROME_IOS_OMNIBOX: return "RM"; 102 case CHROME_IOS_HOME_PAGE: return "RN"; 103 case UNDEFINED_AP_O: return "RO"; 104 case UNDEFINED_AP_P: return "RP"; 105 case UNDEFINED_AP_Q: return "RQ"; 106 case UNDEFINED_AP_R: return "RR"; 107 case UNDEFINED_AP_S: return "RS"; 108 case UNDEFINED_AP_T: return "RT"; 109 case UNDEFINED_AP_U: return "RU"; 110 case UNDEFINED_AP_V: return "RV"; 111 case UNDEFINED_AP_W: return "RW"; 112 case UNDEFINED_AP_X: return "RX"; 113 case UNDEFINED_AP_Y: return "RY"; 114 case UNDEFINED_AP_Z: return "RZ"; 115 case PACK_AP0: return "U0"; 116 case PACK_AP1: return "U1"; 117 case PACK_AP2: return "U2"; 118 case PACK_AP3: return "U3"; 119 case PACK_AP4: return "U4"; 120 case PACK_AP5: return "U5"; 121 case PACK_AP6: return "U6"; 122 case PACK_AP7: return "U7"; 123 case PACK_AP8: return "U8"; 124 case PACK_AP9: return "U9"; 125 case PACK_AP10: return "UA"; 126 case PACK_AP11: return "UB"; 127 case PACK_AP12: return "UC"; 128 case PACK_AP13: return "UD"; 129 case LAST_ACCESS_POINT: ; // Fall through. 130 } 131 132 ASSERT_STRING("GetAccessPointName: Unknown Access Point"); 133 return NULL; 134 } 135 136 137 bool GetAccessPointFromName(const char* name, AccessPoint* point) { 138 if (!point) { 139 ASSERT_STRING("GetAccessPointFromName: point is NULL"); 140 return false; 141 } 142 *point = NO_ACCESS_POINT; 143 if (!name) 144 return false; 145 146 for (int i = NO_ACCESS_POINT; i < LAST_ACCESS_POINT; i++) 147 if (strcmp(name, GetAccessPointName(static_cast<AccessPoint>(i))) == 0) { 148 *point = static_cast<AccessPoint>(i); 149 return true; 150 } 151 152 return false; 153 } 154 155 156 const char* GetEventName(Event event) { 157 switch (event) { 158 case INVALID_EVENT: return ""; 159 case INSTALL: return "I"; 160 case SET_TO_GOOGLE: return "S"; 161 case FIRST_SEARCH: return "F"; 162 case REPORT_RLS: return "R"; 163 case ACTIVATE: return "A"; 164 case LAST_EVENT: ; // Fall through. 165 } 166 167 ASSERT_STRING("GetPointName: Unknown Event"); 168 return NULL; 169 } 170 171 172 bool GetEventFromName(const char* name, Event* event) { 173 if (!event) { 174 ASSERT_STRING("GetEventFromName: event is NULL"); 175 return false; 176 } 177 *event = INVALID_EVENT; 178 if (!name) 179 return false; 180 181 for (int i = INVALID_EVENT; i < LAST_EVENT; i++) 182 if (strcmp(name, GetEventName(static_cast<Event>(i))) == 0) { 183 *event = static_cast<Event>(i); 184 return true; 185 } 186 187 return false; 188 } 189 190 const char* GetProductName(Product product) { 191 switch (product) { 192 case IE_TOOLBAR: return "T"; 193 case TOOLBAR_NOTIFIER: return "P"; 194 case PACK: return "U"; 195 case DESKTOP: return "D"; 196 case CHROME: return "C"; 197 case FF_TOOLBAR: return "B"; 198 case QSB_WIN: return "K"; 199 case WEBAPPS: return "W"; 200 case PINYIN_IME: return "N"; 201 case PARTNER: return "V"; 202 } 203 204 ASSERT_STRING("GetProductName: Unknown Product"); 205 return ""; 206 } 207 208 } // namespace rlz_lib 209