// Copyright 2019 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_AUTOFILL_AUTOMATED_TESTS_CACHE_REPLAYER_H_ #define CHROME_BROWSER_AUTOFILL_AUTOMATED_TESTS_CACHE_REPLAYER_H_ #include <map> #include <string> #include <utility> #include "base/files/file_path.h" #include "components/autofill/core/browser/proto/api_v1.pb.h" #include "content/public/test/url_loader_interceptor.h" namespace autofill { namespace test { ServerCache; // Splits raw HTTP request text into a pair, where the first element represent // the head with headers and the second element represents the body that // contains the data payload. std::pair<std::string, std::string> SplitHTTP(const std::string& http_text); // Streams in text format. For consistency, taken from anonymous namespace in // components/autofill/core/browser/crowdsourcing/autofill_crowdsourcing_manager.cc std::ostream& operator<<(std::ostream& out, const autofill::AutofillPageQueryRequest& query); // Streams in text format. For consistency, taken from anonymous namespace in // components/autofill/core/browser/form_structure.cc std::ostream& operator<<(std::ostream& out, const autofill::AutofillQueryResponse& response); enum class RequestType { … }; // Gets a key from a given query request. std::string GetKeyFromQuery(const AutofillPageQueryRequest& query_request); bool GetResponseForQuery(const ServerCache& cache, const AutofillPageQueryRequest& query, std::string* http_text); // Switch `--autofill-server-type` is used to override the default behavior of // using the cached responses from the wpr archive. The valid values match the // enum AutofillServerBehaviorType below. Options are: // SavedCache, ProductionServer, or OnlyLocalHeuristics. constexpr char kAutofillServerBehaviorParam[] = …; enum class AutofillServerBehaviorType { … }; // Check for command line flags to determine Autofill Server Behavior type. AutofillServerBehaviorType ParseAutofillServerBehaviorType(); // Replayer for Autofill Server cache. Can be used in concurrency. class ServerCacheReplayer { … }; // Url loader that intercepts Autofill Server calls and serves back cached // content. class ServerUrlLoader { … }; } // namespace test } // namespace autofill #endif // CHROME_BROWSER_AUTOFILL_AUTOMATED_TESTS_CACHE_REPLAYER_H_