// Copyright 2018 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. #ifndef COMPONENTS_UPDATE_CLIENT_PROTOCOL_SERIALIZER_H_ #define COMPONENTS_UPDATE_CLIENT_PROTOCOL_SERIALIZER_H_ #include #include #include #include #include "base/containers/flat_map.h" #include "base/memory/ref_counted.h" #include "components/update_client/protocol_definition.h" #include "third_party/abseil-cpp/absl/types/optional.h" namespace base { class Value; class Version; } namespace update_client { class PersistedData; // Creates the values for the DDOS extra request headers sent with the update // check. These headers include "X-Goog-Update-Updater", // "X-Goog-Update-AppId", and "X-Goog-Update-Interactivity". base::flat_map BuildUpdateCheckExtraRequestHeaders( const std::string& prod_id, const base::Version& browser_version, const std::vector& ids_checked, bool is_foreground); protocol_request::Request MakeProtocolRequest( bool is_machine, const std::string& session_id, const std::string& prod_id, const std::string& browser_version, const std::string& channel, const std::string& os_long_name, const std::string& download_preference, absl::optional domain_joined, const base::flat_map& additional_attributes, const base::flat_map& updater_state_attributes, std::vector apps); protocol_request::App MakeProtocolApp( const std::string& app_id, const base::Version& version, const std::string& ap, const std::string& brand_code, const std::string& lang, int install_date, const std::string& install_source, const std::string& install_location, const std::string& fingerprint, const std::map& installer_attributes, const std::string& cohort, const std::string& cohort_hint, const std::string& cohort_name, const std::string& release_channel, const std::vector& disabled_reasons, absl::optional update_check, const std::vector& data, absl::optional ping, absl::optional> events); protocol_request::UpdateCheck MakeProtocolUpdateCheck( bool is_update_disabled, const std::string& target_version_prefix, bool rollback_allowed, bool same_version_update_allowed); protocol_request::Ping MakeProtocolPing(const std::string& app_id, const PersistedData* metadata, bool active); class ProtocolSerializer { public: virtual ~ProtocolSerializer() = default; virtual std::string Serialize( const protocol_request::Request& request) const = 0; protected: ProtocolSerializer() = default; }; } // namespace update_client #endif // COMPONENTS_UPDATE_CLIENT_PROTOCOL_SERIALIZER_H_