1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
// Copyright 2016 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_PREDICTORS_LOADING_TEST_UTIL_H_
#define CHROME_BROWSER_PREDICTORS_LOADING_TEST_UTIL_H_
#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>
#include "chrome/browser/predictors/loading_data_collector.h"
#include "chrome/browser/predictors/resource_prefetch_predictor.h"
#include "chrome/browser/predictors/resource_prefetch_predictor_tables.h"
#include "components/sessions/core/session_id.h"
#include "services/metrics/public/cpp/ukm_source_id.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "third_party/blink/public/mojom/loader/resource_load_info.mojom.h"
namespace predictors {
// Does nothing, controls which URLs are prefetchable.
class MockResourcePrefetchPredictor : public ResourcePrefetchPredictor {
public:
MockResourcePrefetchPredictor(const LoadingPredictorConfig& config,
Profile* profile);
~MockResourcePrefetchPredictor() override;
void RecordPageRequestSummary(const PageRequestSummary& summary) override {
RecordPageRequestSummaryProxy(summary);
}
MOCK_CONST_METHOD2(PredictPreconnectOrigins,
bool(const GURL&, PreconnectPrediction*));
MOCK_METHOD1(RecordPageRequestSummaryProxy, void(const PageRequestSummary&));
};
// |include_scheme| and |include_port| can be set to false to simulate legacy
// data, which doesn't have new fields.
void InitializeRedirectStat(RedirectStat* redirect,
const GURL& url,
int number_of_hits,
int number_of_misses,
int consecutive_misses,
bool include_scheme = true,
bool include_port = true);
void InitializeOriginStat(OriginStat* origin_stat,
const std::string& origin,
int number_of_hits,
int number_of_misses,
int consecutive_misses,
double average_position,
bool always_access_network,
bool accessed_network);
RedirectData CreateRedirectData(const std::string& primary_key,
uint64_t last_visit_time = 0);
OriginData CreateOriginData(const std::string& host,
uint64_t last_visit_time = 0);
PageRequestSummary CreatePageRequestSummary(
const std::string& main_frame_url,
const std::string& initial_url,
const std::vector<blink::mojom::ResourceLoadInfoPtr>& resource_load_infos,
base::TimeTicks navigation_started = base::TimeTicks::Now(),
bool main_frame_load_complete = true);
blink::mojom::ResourceLoadInfoPtr CreateResourceLoadInfo(
const std::string& url,
network::mojom::RequestDestination request_destination =
network::mojom::RequestDestination::kDocument,
bool always_access_network = false);
blink::mojom::ResourceLoadInfoPtr CreateLowPriorityResourceLoadInfo(
const std::string& url,
network::mojom::RequestDestination request_destination =
network::mojom::RequestDestination::kDocument);
blink::mojom::ResourceLoadInfoPtr CreateResourceLoadInfoWithRedirects(
const std::vector<std::string>& redirect_chain,
network::mojom::RequestDestination request_destination =
network::mojom::RequestDestination::kDocument);
PreconnectPrediction CreatePreconnectPrediction(
std::string host,
bool is_redirected,
const std::vector<PreconnectRequest>& requests);
void PopulateTestConfig(LoadingPredictorConfig* config, bool small_db = true);
// For printing failures nicely.
std::ostream& operator<<(std::ostream& stream, const RedirectData& data);
std::ostream& operator<<(std::ostream& stream, const RedirectStat& redirect);
std::ostream& operator<<(std::ostream& stream,
const PageRequestSummary& summary);
std::ostream& operator<<(std::ostream& os, const OriginData& data);
std::ostream& operator<<(std::ostream& os, const OriginStat& redirect);
std::ostream& operator<<(std::ostream& os, const PreconnectRequest& request);
std::ostream& operator<<(std::ostream& os,
const PreconnectPrediction& prediction);
bool operator==(const RedirectData& lhs, const RedirectData& rhs);
bool operator==(const RedirectStat& lhs, const RedirectStat& rhs);
bool operator==(const PageRequestSummary& lhs, const PageRequestSummary& rhs);
bool operator==(const OriginRequestSummary& lhs,
const OriginRequestSummary& rhs);
bool operator==(const OriginData& lhs, const OriginData& rhs);
bool operator==(const OriginStat& lhs, const OriginStat& rhs);
bool operator==(const PreconnectRequest& lhs, const PreconnectRequest& rhs);
bool operator==(const PreconnectPrediction& lhs,
const PreconnectPrediction& rhs);
bool operator==(const OptimizationGuidePrediction& lhs,
const OptimizationGuidePrediction& rhs);
} // namespace predictors
namespace blink {
namespace mojom {
std::ostream& operator<<(std::ostream& os, const CommonNetworkInfo& info);
std::ostream& operator<<(std::ostream& os, const ResourceLoadInfo& info);
bool operator==(const CommonNetworkInfo& lhs, const CommonNetworkInfo& rhs);
bool operator==(const ResourceLoadInfo& lhs, const ResourceLoadInfo& rhs);
} // namespace mojom
} // namespace blink
#endif // CHROME_BROWSER_PREDICTORS_LOADING_TEST_UTIL_H_
|