| // Copyright 2020 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 CHROME_UPDATER_EXTERNAL_CONSTANTS_OVERRIDE_H_ |
| #define CHROME_UPDATER_EXTERNAL_CONSTANTS_OVERRIDE_H_ |
| |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include "base/containers/flat_map.h" |
| #include "base/memory/scoped_refptr.h" |
| #include "chrome/updater/external_constants.h" |
| |
| class GURL; |
| |
| namespace base { |
| class Value; |
| } |
| |
| namespace crx_file { |
| enum class VerifierFormat; |
| } |
| |
| namespace updater { |
| |
| class ExternalConstantsOverrider : public ExternalConstants { |
| public: |
| ExternalConstantsOverrider( |
| base::flat_map<std::string, base::Value> override_values, |
| scoped_refptr<ExternalConstants> next_provider); |
| |
| // Loads a dictionary from overrides.json in the local application data |
| // directory to construct a ExternalConstantsOverrider. |
| // |
| // Returns nullptr (and logs appropriate errors) if the file cannot be found |
| // or cannot be parsed. |
| static scoped_refptr<ExternalConstantsOverrider> FromDefaultJSONFile( |
| scoped_refptr<ExternalConstants> next_provider); |
| |
| // Overrides of ExternalConstants: |
| std::vector<GURL> UpdateURL() const override; |
| bool UseCUP() const override; |
| double InitialDelay() const override; |
| int ServerKeepAliveSeconds() const override; |
| crx_file::VerifierFormat CrxVerifierFormat() const override; |
| |
| private: |
| const base::flat_map<std::string, base::Value> override_values_; |
| ~ExternalConstantsOverrider() override; |
| }; |
| |
| } // namespace updater |
| |
| #endif // CHROME_UPDATER_EXTERNAL_CONSTANTS_OVERRIDE_H_ |