Index: rlz/lib/rlz_lib.h |
diff --git a/rlz/lib/rlz_lib.h b/rlz/lib/rlz_lib.h |
deleted file mode 100644 |
index 9d4cf3bb619518a006ee949512698f5c4274ebad..0000000000000000000000000000000000000000 |
--- a/rlz/lib/rlz_lib.h |
+++ /dev/null |
@@ -1,335 +0,0 @@ |
-// 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. |
-// |
-// A library to manage RLZ information for access-points shared |
-// across different client applications. |
-// |
-// All functions return true on success and false on error. |
-// This implemenation is thread safe. |
- |
- |
-#ifndef RLZ_LIB_RLZ_LIB_H_ |
-#define RLZ_LIB_RLZ_LIB_H_ |
- |
-#include <stdio.h> |
-#include <string> |
- |
-#include "build/build_config.h" |
- |
-#include "rlz/lib/rlz_enums.h" |
- |
-#if defined(OS_WIN) |
-#define RLZ_LIB_API __cdecl |
-#else |
-#define RLZ_LIB_API |
-#endif |
- |
-// Define one of |
-// + RLZ_NETWORK_IMPLEMENTATION_WIN_INET: Uses win inet to send financial pings. |
-// + RLZ_NETWORK_IMPLEMENTATION_CHROME_NET: Uses chrome's network stack to send |
-// financial pings. rlz_lib::SetURLRequestContext() must be called before |
-// any calls to SendFinancialPing(). |
-#if defined(RLZ_NETWORK_IMPLEMENTATION_WIN_INET) && \ |
- defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
-#error Exactly one of RLZ_NETWORK_IMPLEMENTATION_WIN_INET and \ |
- RLZ_NETWORK_IMPLEMENTATION_CHROME_NET should be defined. |
-#endif |
-#if !defined(RLZ_NETWORK_IMPLEMENTATION_WIN_INET) && \ |
- !defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
-#if defined(OS_WIN) |
-#define RLZ_NETWORK_IMPLEMENTATION_WIN_INET |
-#else |
-#define RLZ_NETWORK_IMPLEMENTATION_CHROME_NET |
-#endif |
-#endif |
- |
-#if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
-namespace net { |
-class URLRequestContextGetter; |
-} // namespace net |
-#endif |
- |
-namespace rlz_lib { |
- |
-class ScopedRlzValueStoreLock; |
- |
-// The maximum length of an access points RLZ in bytes. |
-const int kMaxRlzLength = 64; |
-// The maximum length of an access points RLZ in bytes. |
-const int kMaxDccLength = 128; |
-// The maximum length of a CGI string in bytes. |
-const int kMaxCgiLength = 2048; |
-// The maximum length of a ping response we will parse in bytes. If the response |
-// is bigger, please break it up into separate calls. |
-const int kMaxPingResponseLength = 0x4000; // 16K |
- |
-#if defined(RLZ_NETWORK_IMPLEMENTATION_CHROME_NET) |
-// Set the URLRequestContextGetter used by SendFinancialPing(). The IO message |
-// loop returned by this context will be used for the IO done by |
-// SendFinancialPing(). |
-bool RLZ_LIB_API SetURLRequestContext(net::URLRequestContextGetter* context); |
-#endif |
- |
-// RLZ storage functions. |
- |
-// Get all the events reported by this product as a CGI string to append to |
-// the daily ping. |
-// Access: HKCU read. |
-bool RLZ_LIB_API GetProductEventsAsCgi(Product product, char* unescaped_cgi, |
- size_t unescaped_cgi_size); |
- |
-// Records an RLZ event. |
-// Some events can be product-independent (e.g: First search from home page), |
-// and some can be access point independent (e.g. Pack installed). However, |
-// product independent events must still include the product which cares about |
-// that information being reported. |
-// Access: HKCU write. |
-bool RLZ_LIB_API RecordProductEvent(Product product, AccessPoint point, |
- Event event_id); |
- |
-// Clear an event reported by this product. This should be called after a |
-// successful ping to the RLZ server. |
-// Access: HKCU write. |
-bool RLZ_LIB_API ClearProductEvent(Product product, AccessPoint point, |
- Event event_id); |
- |
-// Clear all reported events and recorded stateful events of this product. |
-// This should be called on complete uninstallation of the product. |
-// Access: HKCU write. |
-bool RLZ_LIB_API ClearAllProductEvents(Product product); |
- |
-// Clears all product-specifc state from the RLZ registry. |
-// Should be called during product uninstallation. |
-// This removes outstanding product events, product financial ping times, |
-// the product RLS argument (if any), and any RLZ's for access points being |
-// uninstalled with the product. |
-// access_points is an array terminated with NO_ACCESS_POINT. |
-// IMPORTANT: These are the access_points the product is removing as part |
-// of the uninstallation, not necessarily all the access points passed to |
-// SendFinancialPing() and GetPingParams(). |
-// access_points can be NULL if no points are being uninstalled. |
-// No return value - this is best effort. Will assert in debug mode on |
-// failed attempts. |
-// Access: HKCU write. |
-void RLZ_LIB_API ClearProductState(Product product, |
- const AccessPoint* access_points); |
- |
-// Get the RLZ value of the access point. If the access point is not Google, the |
-// RLZ will be the empty string and the function will return false. |
-// Access: HKCU read. |
-bool RLZ_LIB_API GetAccessPointRlz(AccessPoint point, char* rlz, |
- size_t rlz_size); |
- |
-// Set the RLZ for the access-point. Fails and asserts if called when the access |
-// point is not set to Google. |
-// new_rlz should come from a server-response. Client applications should not |
-// create their own RLZ values. |
-// Access: HKCU write. |
-bool RLZ_LIB_API SetAccessPointRlz(AccessPoint point, const char* new_rlz); |
- |
-// Financial Server pinging functions. |
-// These functions deal with pinging the RLZ financial server and parsing and |
-// acting upon the response. Clients should SendFinancialPing() to avoid needing |
-// these functions. However, these functions allow clients to split the various |
-// parts of the pinging process up as needed (to avoid firewalls, etc). |
- |
-// Forms the HTTP request to send to the RLZ financial server. |
-// |
-// product : The product to ping for. |
-// access_points : The access points this product affects. Array must be |
-// terminated with NO_ACCESS_POINT. |
-// product_signature : The signature sent with daily pings (e.g. swg, ietb) |
-// product_brand : The brand of the pinging product, if any. |
-// product_id : The product-specific installation ID (can be NULL). |
-// product_lang : The language for the product (used to determine cohort). |
-// exclude_machine_id : Whether the Machine ID should be explicitly excluded |
-// based on the products privacy policy. |
-// request : The buffer where the function returns the HTTP request. |
-// request_buffer_size: The size of the request buffer in bytes. The buffer |
-// size (kMaxCgiLength+1) is guaranteed to be enough. |
-// |
-// Access: HKCU read. |
-bool RLZ_LIB_API FormFinancialPingRequest(Product product, |
- const AccessPoint* access_points, |
- const char* product_signature, |
- const char* product_brand, |
- const char* product_id, |
- const char* product_lang, |
- bool exclude_machine_id, |
- char* request, |
- size_t request_buffer_size); |
- |
-// Pings the financial server and returns the HTTP response. This will fail |
-// if it is too early to ping the server since the last ping. |
-// |
-// If RLZ_NETWORK_IMPLEMENTATION_CHROME_NET is set, SetURLRequestContext() needs |
-// to be called before calling this function. |
-// |
-// product : The product to ping for. |
-// request : The HTTP request (for example, returned by |
-// FormFinancialPingRequest). |
-// response : The buffer in which the HTTP response is returned. |
-// response_buffer_size : The size of the response buffer in bytes. The buffer |
-// size (kMaxPingResponseLength+1) is enough for all |
-// legitimate server responses (any response that is |
-// bigger should be considered the same way as a general |
-// network problem). |
-// |
-// Access: HKCU read. |
-bool RLZ_LIB_API PingFinancialServer(Product product, |
- const char* request, |
- char* response, |
- size_t response_buffer_size); |
- |
-// Checks if a ping response is valid - ie. it has a checksum line which |
-// is the CRC-32 checksum of the message uptil the checksum. If |
-// checksum_idx is not NULL, it will get the index of the checksum, i.e. - |
-// the effective end of the message. |
-// Access: No restrictions. |
-bool RLZ_LIB_API IsPingResponseValid(const char* response, |
- int* checksum_idx); |
- |
- |
-// Complex helpers built on top of other functions. |
- |
-// Parses the responses from the financial server and updates product state |
-// and access point RLZ's in registry. Like ParsePingResponse(), but also |
-// updates the last ping time. |
-// Access: HKCU write. |
-bool RLZ_LIB_API ParseFinancialPingResponse(Product product, |
- const char* response); |
- |
-// Send the ping with RLZs and events to the PSO server. |
-// This ping method should be called daily. (More frequent calls will fail). |
-// Also, if there are no events, the call will succeed only once a week. |
-// |
-// If RLZ_NETWORK_IMPLEMENTATION_CHROME_NET is set, SetURLRequestContext() needs |
-// to be called before calling this function. |
-// |
-// product : The product to ping for. |
-// access_points : The access points this product affects. Array must be |
-// terminated with NO_ACCESS_POINT. |
-// product_signature : The signature sent with daily pings (e.g. swg, ietb) |
-// product_brand : The brand of the pinging product, if any. |
-// product_id : The product-specific installation ID (can be NULL). |
-// product_lang : The language for the product (used to determine cohort). |
-// exclude_machine_id : Whether the Machine ID should be explicitly excluded |
-// based on the products privacy policy. |
-// |
-// Returns true on successful ping and response, false otherwise. |
-// Access: HKCU write. |
-bool RLZ_LIB_API SendFinancialPing(Product product, |
- const AccessPoint* access_points, |
- const char* product_signature, |
- const char* product_brand, |
- const char* product_id, |
- const char* product_lang, |
- bool exclude_machine_id); |
- |
-// An alternate implementations of SendFinancialPing with the same behavior, |
-// except the caller can optionally choose to skip the timing check. |
-bool RLZ_LIB_API SendFinancialPing(Product product, |
- const AccessPoint* access_points, |
- const char* product_signature, |
- const char* product_brand, |
- const char* product_id, |
- const char* product_lang, |
- bool exclude_machine_id, |
- const bool skip_time_check); |
- |
-// Parses RLZ related ping response information from the server. |
-// Updates stored RLZ values and clears stored events accordingly. |
-// Access: HKCU write. |
-bool RLZ_LIB_API ParsePingResponse(Product product, const char* response); |
- |
- |
-// Copies the events associated with the product and the RLZ's for each access |
-// point in access_points into cgi. This string can be directly appended |
-// to a ping (will need an & if not first paramter). |
-// access_points must be an array of AccessPoints terminated with |
-// NO_ACCESS_POINT. |
-// Access: HKCU read. |
-bool RLZ_LIB_API GetPingParams(Product product, |
- const AccessPoint* access_points, |
- char* unescaped_cgi, size_t unescaped_cgi_size); |
- |
-#if defined(OS_WIN) |
-// OEM Deal confirmation storage functions. OEM Deals are windows-only. |
- |
-// Makes the OEM Deal Confirmation code writable by all users on the machine. |
-// This should be called before calling SetMachineDealCode from a non-admin |
-// account. |
-// Access: HKLM write. |
-bool RLZ_LIB_API CreateMachineState(void); |
- |
-// Set the OEM Deal Confirmation Code (DCC). This information is used for RLZ |
-// initalization. |
-// Access: HKLM write, or |
-// HKCU read if rlz_lib::CreateMachineState() has been sucessfully called. |
-bool RLZ_LIB_API SetMachineDealCode(const char* dcc); |
- |
-// Get the DCC cgi argument string to append to a daily ping. |
-// Should be used only by OEM deal trackers. Applications should use the |
-// GetMachineDealCode method which has an AccessPoint paramter. |
-// Access: HKLM read. |
-bool RLZ_LIB_API GetMachineDealCodeAsCgi(char* cgi, size_t cgi_size); |
- |
-// Get the DCC value stored in registry. |
-// Should be used only by OEM deal trackers. Applications should use the |
-// GetMachineDealCode method which has an AccessPoint paramter. |
-// Access: HKLM read. |
-bool RLZ_LIB_API GetMachineDealCode(char* dcc, size_t dcc_size); |
- |
-// Parses a ping response, checks if it is valid and sets the machine DCC |
-// from the response. The ping must also contain the current DCC value in |
-// order to be considered valid. |
-// Access: HKLM write; |
-// HKCU write if CreateMachineState() has been successfully called. |
-bool RLZ_LIB_API SetMachineDealCodeFromPingResponse(const char* response); |
- |
-#endif |
- |
-// Segment RLZ persistence based on branding information. |
-// All information for a given product is persisted under keys with the either |
-// product's name or its access point's name. This assumes that only |
-// one instance of the product is installed on the machine, and that only one |
-// product brand is associated with it. |
-// |
-// In some cases, a given product may be using supplementary brands. The RLZ |
-// information must be kept separately for each of these brands. To achieve |
-// this segmentation, scope all RLZ library calls that deal with supplementary |
-// brands within the lifetime of an rlz_lib::ProductBranding instance. |
-// |
-// For example, to record events for a supplementary brand, do the following: |
-// |
-// { |
-// rlz_lib::SupplementaryBranding branding("AAAA"); |
-// // This call to RecordProductEvent is scoped to the AAAA brand. |
-// rlz_lib::RecordProductEvent(rlz_lib::DESKTOP, rlz_lib::GD_DESKBAND, |
-// rlz_lib::INSTALL); |
-// } |
-// |
-// // This call to RecordProductEvent is not scoped to any supplementary brand. |
-// rlz_lib::RecordProductEvent(rlz_lib::DESKTOP, rlz_lib::GD_DESKBAND, |
-// rlz_lib::INSTALL); |
-// |
-// In particular, this affects the recording of stateful events and the sending |
-// of financial pings. In the former case, a stateful event recorded while |
-// scoped to a supplementary brand will be recorded again when scoped to a |
-// different supplementary brand (or not scoped at all). In the latter case, |
-// the time skip check is specific to each supplementary brand. |
-class SupplementaryBranding { |
- public: |
- SupplementaryBranding(const char* brand); |
- ~SupplementaryBranding(); |
- |
- static const std::string& GetBrand(); |
- |
- private: |
- ScopedRlzValueStoreLock* lock_; |
-}; |
- |
-} // namespace rlz_lib |
- |
-#endif // RLZ_LIB_RLZ_LIB_H_ |