blob: 7fae95469d2f0b412cbf0d31eb5ad2ffc824ca95 [file] [log] [blame]
// 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.
// Library functions related to the Financial Server ping.
#include <string>
#include "rlz/lib/rlz_enums.h"
namespace network {
namespace mojom {
class URLLoaderFactory;
} // namespace network
namespace rlz_lib {
class FinancialPing {
// Return values of the PingServer() method.
enum PingResponse {
PING_SUCCESSFUL, // Ping sent and response processed successfully.
PING_FAILURE, // Ping not sent.
PING_SHUTDOWN // Ping not sent because chrome is shutting down.
// Form the HTTP request to send to the PSO server.
// Will look something like:
// /pso/ping?as=swg&brand=GGLD&id=124&hl=en&
// events=I7S&rep=1&rlz=I7:val,W1:&dcc=dval
static bool FormRequest(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,
std::string* request);
// Returns whether the time is right to send a ping.
// If no_delay is true, this should always ping if there are events,
// or one week has passed since last_ping when there are no new events.
// If no_delay is false, this should ping if current time < last_ping time
// (case of time reset) or if one day has passed since last_ping and there
// are events, or one week has passed since last_ping when there are
// no new events.
static bool IsPingTime(Product product, bool no_delay);
// Set the last ping time to be now. Writes to RlzValueStore.
static bool UpdateLastPingTime(Product product);
// Clear the last ping time - should be called on uninstall.
// Writes to RlzValueStore.
static bool ClearLastPingTime(Product product);
// Ping the financial server with request. Writes to RlzValueStore.
static PingResponse PingServer(const char* request, std::string* response);
// Returns the time relative to a fixed point in the past in multiples of
// 100 ns stepts. The point in the past is arbitrary but can't change, as the
// result of this value is stored on disk.
static int64_t GetSystemTimeAsInt64();
static bool SetURLLoaderFactory(network::mojom::URLLoaderFactory* factory);
FinancialPing() {}
~FinancialPing() {}
namespace test {
void ResetSendFinancialPingInterrupted();
bool WasSendFinancialPingInterrupted();
} // namespace test
} // namespace rlz_lib