| // 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 <map> |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include "base/containers/flat_map.h" |
| #include "base/macros.h" |
| #include "base/memory/ref_counted.h" |
| #include "components/update_client/protocol_definition.h" |
| |
| namespace base { |
| 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<std::string, std::string> BuildUpdateCheckExtraRequestHeaders( |
| const std::string& prod_id, |
| const base::Version& browser_version, |
| const std::vector<std::string>& ids_checked, |
| bool is_foreground); |
| |
| protocol_request::Request MakeProtocolRequest( |
| const std::string& session_id, |
| const std::string& prod_id, |
| const std::string& browser_version, |
| const std::string& lang, |
| const std::string& channel, |
| const std::string& os_long_name, |
| const std::string& download_preference, |
| const base::flat_map<std::string, std::string>& additional_attributes, |
| const std::map<std::string, std::string>* updater_state_attributes, |
| std::vector<protocol_request::App> apps); |
| |
| protocol_request::App MakeProtocolApp( |
| const std::string& app_id, |
| const base::Version& version, |
| base::Optional<std::vector<base::Value>> events); |
| |
| protocol_request::App MakeProtocolApp( |
| const std::string& app_id, |
| const base::Version& version, |
| const std::string& brand_code, |
| const std::string& install_source, |
| const std::string& install_location, |
| const std::string& fingerprint, |
| const base::flat_map<std::string, std::string>& installer_attributes, |
| const std::string& cohort, |
| const std::string& cohort_hint, |
| const std::string& cohort_name, |
| const std::vector<int>& disabled_reasons, |
| base::Optional<protocol_request::UpdateCheck> update_check, |
| base::Optional<protocol_request::Ping> ping); |
| |
| protocol_request::UpdateCheck MakeProtocolUpdateCheck(bool is_update_disabled); |
| |
| protocol_request::Ping MakeProtocolPing(const std::string& app_id, |
| const PersistedData* metadata); |
| |
| 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_ |