diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-28 15:28:34 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-08-28 13:54:51 +0000 |
commit | 2a19c63448c84c1805fb1a585c3651318bb86ca7 (patch) | |
tree | eb17888e8531aa6ee5e85721bd553b832a7e5156 /chromium/components/assist_ranker | |
parent | b014812705fc80bff0a5c120dfcef88f349816dc (diff) | |
download | qtwebengine-chromium-2a19c63448c84c1805fb1a585c3651318bb86ca7.tar.gz |
BASELINE: Update Chromium to 69.0.3497.70
Change-Id: I2b7b56e4e7a8b26656930def0d4575dc32b900a0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/components/assist_ranker')
14 files changed, 139 insertions, 104 deletions
diff --git a/chromium/components/assist_ranker/BUILD.gn b/chromium/components/assist_ranker/BUILD.gn index 130553d6959..f41a45fc2f3 100644 --- a/chromium/components/assist_ranker/BUILD.gn +++ b/chromium/components/assist_ranker/BUILD.gn @@ -39,6 +39,9 @@ static_library("assist_ranker") { "//components/keyed_service/core", "//net", "//services/metrics/public/cpp:metrics_cpp", + "//services/network:network_service", + "//services/network/public/cpp", + "//services/network/public/mojom", "//url", ] } @@ -62,6 +65,8 @@ source_set("unit_tests") { "//components/assist_ranker/proto", "//components/ukm:test_support", "//net:test_support", + "//services/network:test_support", + "//services/network/public/cpp", "//testing/gtest", ] } diff --git a/chromium/components/assist_ranker/DEPS b/chromium/components/assist_ranker/DEPS index 22c088fe59f..f1b4b559e6e 100644 --- a/chromium/components/assist_ranker/DEPS +++ b/chromium/components/assist_ranker/DEPS @@ -5,5 +5,8 @@ include_rules = [ "+components/ukm", "+net", "+services/metrics/public", + "+services/network/public/cpp", + "+services/network/public/mojom", + "+services/network/test", "+third_party/protobuf", ] diff --git a/chromium/components/assist_ranker/assist_ranker_service_impl.cc b/chromium/components/assist_ranker/assist_ranker_service_impl.cc index 5b870b8f578..04ea3cea1c5 100644 --- a/chromium/components/assist_ranker/assist_ranker_service_impl.cc +++ b/chromium/components/assist_ranker/assist_ranker_service_impl.cc @@ -6,15 +6,15 @@ #include "base/memory/weak_ptr.h" #include "components/assist_ranker/binary_classifier_predictor.h" #include "components/assist_ranker/ranker_model_loader_impl.h" -#include "net/url_request/url_request_context_getter.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" #include "url/gurl.h" namespace assist_ranker { AssistRankerServiceImpl::AssistRankerServiceImpl( base::FilePath base_path, - net::URLRequestContextGetter* url_request_context_getter) - : url_request_context_getter_(url_request_context_getter), + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) + : url_loader_factory_(std::move(url_loader_factory)), base_path_(std::move(base_path)) {} AssistRankerServiceImpl::~AssistRankerServiceImpl() {} @@ -35,7 +35,7 @@ AssistRankerServiceImpl::FetchBinaryClassifierPredictor( DVLOG(1) << "Initializing predictor: " << model_name; std::unique_ptr<BinaryClassifierPredictor> predictor = BinaryClassifierPredictor::Create(config, GetModelPath(model_name), - url_request_context_getter_.get()); + url_loader_factory_); base::WeakPtr<BinaryClassifierPredictor> weak_ptr = base::AsWeakPtr(predictor.get()); predictor_map_[model_name] = std::move(predictor); diff --git a/chromium/components/assist_ranker/assist_ranker_service_impl.h b/chromium/components/assist_ranker/assist_ranker_service_impl.h index 1b75ff4017f..e1b00c284a9 100644 --- a/chromium/components/assist_ranker/assist_ranker_service_impl.h +++ b/chromium/components/assist_ranker/assist_ranker_service_impl.h @@ -15,8 +15,8 @@ #include "components/assist_ranker/assist_ranker_service.h" #include "components/assist_ranker/predictor_config.h" -namespace net { -class URLRequestContextGetter; +namespace network { +class SharedURLLoaderFactory; } namespace assist_ranker { @@ -28,7 +28,7 @@ class AssistRankerServiceImpl : public AssistRankerService { public: AssistRankerServiceImpl( base::FilePath base_path, - net::URLRequestContextGetter* url_request_context_getter); + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory); ~AssistRankerServiceImpl() override; // AssistRankerService... @@ -39,8 +39,8 @@ class AssistRankerServiceImpl : public AssistRankerService { // Returns the full path to the model cache. base::FilePath GetModelPath(const std::string& model_filename); - // Request Context Getter used for RankerURLFetcher. - scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; + // URL loader factory used for RankerURLFetcher. + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; // Base path where models are stored. const base::FilePath base_path_; diff --git a/chromium/components/assist_ranker/base_predictor_unittest.cc b/chromium/components/assist_ranker/base_predictor_unittest.cc index aae82621b11..5b770768e98 100644 --- a/chromium/components/assist_ranker/base_predictor_unittest.cc +++ b/chromium/components/assist_ranker/base_predictor_unittest.cc @@ -100,8 +100,8 @@ std::unique_ptr<FakePredictor> FakePredictor::Create() { class BasePredictorTest : public ::testing::Test { protected: BasePredictorTest() = default; - // Disables Query for the test predictor. - void DisableQuery(); + + void SetUp() override; ukm::SourceId GetSourceId(); @@ -120,16 +120,17 @@ class BasePredictorTest : public ::testing::Test { DISALLOW_COPY_AND_ASSIGN(BasePredictorTest); }; +void BasePredictorTest::SetUp() { + ::testing::Test::SetUp(); + scoped_feature_list_.Init(); +} + ukm::SourceId BasePredictorTest::GetSourceId() { ukm::SourceId source_id = ukm::UkmRecorder::GetNewSourceID(); test_ukm_recorder_.UpdateSourceURL(source_id, GURL(kTestNavigationUrl)); return source_id; } -void BasePredictorTest::DisableQuery() { - scoped_feature_list_.InitWithFeatures({}, {kTestRankerQuery}); -} - TEST_F(BasePredictorTest, BaseTest) { auto predictor = FakePredictor::Create(); EXPECT_EQ(kTestModelName, predictor->GetModelName()); @@ -139,7 +140,8 @@ TEST_F(BasePredictorTest, BaseTest) { } TEST_F(BasePredictorTest, QueryDisabled) { - DisableQuery(); + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitAndDisableFeature(kTestRankerQuery); auto predictor = FakePredictor::Create(); EXPECT_EQ(kTestModelName, predictor->GetModelName()); EXPECT_EQ(kTestDefaultModelUrl, predictor->GetModelUrl()); diff --git a/chromium/components/assist_ranker/binary_classifier_predictor.cc b/chromium/components/assist_ranker/binary_classifier_predictor.cc index 1200cfec46d..651eaab8b40 100644 --- a/chromium/components/assist_ranker/binary_classifier_predictor.cc +++ b/chromium/components/assist_ranker/binary_classifier_predictor.cc @@ -13,7 +13,7 @@ #include "components/assist_ranker/proto/ranker_model.pb.h" #include "components/assist_ranker/ranker_model.h" #include "components/assist_ranker/ranker_model_loader_impl.h" -#include "net/url_request/url_request_context_getter.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" namespace assist_ranker { @@ -26,7 +26,7 @@ BinaryClassifierPredictor::~BinaryClassifierPredictor(){}; std::unique_ptr<BinaryClassifierPredictor> BinaryClassifierPredictor::Create( const PredictorConfig& config, const base::FilePath& model_path, - net::URLRequestContextGetter* request_context_getter) { + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) { std::unique_ptr<BinaryClassifierPredictor> predictor( new BinaryClassifierPredictor(config)); if (!predictor->is_query_enabled()) { @@ -40,7 +40,7 @@ std::unique_ptr<BinaryClassifierPredictor> BinaryClassifierPredictor::Create( base::BindRepeating(&BinaryClassifierPredictor::ValidateModel), base::BindRepeating(&BinaryClassifierPredictor::OnModelAvailable, base::Unretained(predictor.get())), - request_context_getter, model_path, model_url, config.uma_prefix); + url_loader_factory, model_path, model_url, config.uma_prefix); predictor->LoadModel(std::move(model_loader)); return predictor; } diff --git a/chromium/components/assist_ranker/binary_classifier_predictor.h b/chromium/components/assist_ranker/binary_classifier_predictor.h index e932c91388f..6aa1a9f1031 100644 --- a/chromium/components/assist_ranker/binary_classifier_predictor.h +++ b/chromium/components/assist_ranker/binary_classifier_predictor.h @@ -13,8 +13,8 @@ namespace base { class FilePath; } -namespace net { -class URLRequestContextGetter; +namespace network { +class SharedURLLoaderFactory; } namespace assist_ranker { @@ -32,7 +32,8 @@ class BinaryClassifierPredictor : public BasePredictor { static std::unique_ptr<BinaryClassifierPredictor> Create( const PredictorConfig& config, const base::FilePath& model_path, - net::URLRequestContextGetter* request_context_getter) WARN_UNUSED_RESULT; + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) + WARN_UNUSED_RESULT; // Fills in a boolean decision given a RankerExample. Returns false if a // prediction could not be made (e.g. the model is not loaded yet). diff --git a/chromium/components/assist_ranker/binary_classifier_predictor_unittest.cc b/chromium/components/assist_ranker/binary_classifier_predictor_unittest.cc index dcde981bf87..672c80fadf0 100644 --- a/chromium/components/assist_ranker/binary_classifier_predictor_unittest.cc +++ b/chromium/components/assist_ranker/binary_classifier_predictor_unittest.cc @@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/bind_helpers.h" #include "base/feature_list.h" +#include "base/test/scoped_feature_list.h" #include "components/assist_ranker/fake_ranker_model_loader.h" #include "components/assist_ranker/proto/ranker_model.pb.h" #include "components/assist_ranker/ranker_model.h" @@ -20,6 +21,8 @@ using ::assist_ranker::testing::FakeRankerModelLoader; class BinaryClassifierPredictorTest : public ::testing::Test { public: + void SetUp() override; + std::unique_ptr<BinaryClassifierPredictor> InitPredictor( std::unique_ptr<RankerModel> ranker_model, const PredictorConfig& config); @@ -33,8 +36,14 @@ class BinaryClassifierPredictorTest : public ::testing::Test { const std::string feature_ = "feature"; const float weight_ = 1.0; const float threshold_ = 0.5; + base::test::ScopedFeatureList scoped_feature_list_; }; +void BinaryClassifierPredictorTest::SetUp() { + ::testing::Test::SetUp(); + scoped_feature_list_.Init(); +} + std::unique_ptr<BinaryClassifierPredictor> BinaryClassifierPredictorTest::InitPredictor( std::unique_ptr<RankerModel> ranker_model, diff --git a/chromium/components/assist_ranker/predictor_config_definitions.cc b/chromium/components/assist_ranker/predictor_config_definitions.cc index 879306d539d..e967f682f36 100644 --- a/chromium/components/assist_ranker/predictor_config_definitions.cc +++ b/chromium/components/assist_ranker/predictor_config_definitions.cc @@ -36,6 +36,8 @@ const base::flat_set<std::string>* GetContextualSearchFeatureWhitelist() { static auto* kContextualSearchFeatureWhitelist = new base::flat_set<std::string>({"DidOptIn", "DurationAfterScrollMs", + "EntityImpressionsCount", + "EntityOpensCount", "FontSize", "IsEntity", "IsEntityEligible", @@ -45,6 +47,7 @@ const base::flat_set<std::string>* GetContextualSearchFeatureWhitelist() { "IsSecondTapOverride", "IsShortWord", "IsWordEdge", + "OpenCount", "OutcomeRankerDidPredict", "OutcomeRankerPrediction", "OutcomeWasCardsDataShown", @@ -56,7 +59,12 @@ const base::flat_set<std::string>* GetContextualSearchFeatureWhitelist() { "Previous28DayImpressionsCount", "PreviousWeekCtrPercent", "PreviousWeekImpressionsCount", + "QuickActionImpressionsCount", + "QuickActionsIgnored", + "QuickActionsTaken", + "QuickAnswerCount", "ScreenTopDps", + "TapCount", "TapDurationMs", "WasScreenBottom"}); return kContextualSearchFeatureWhitelist; diff --git a/chromium/components/assist_ranker/ranker_model_loader_impl.cc b/chromium/components/assist_ranker/ranker_model_loader_impl.cc index e03529f3038..4159f7fd85f 100644 --- a/chromium/components/assist_ranker/ranker_model_loader_impl.cc +++ b/chromium/components/assist_ranker/ranker_model_loader_impl.cc @@ -22,6 +22,7 @@ #include "base/threading/sequenced_task_runner_handle.h" #include "components/assist_ranker/proto/ranker_model.pb.h" #include "components/assist_ranker/ranker_url_fetcher.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" namespace assist_ranker { namespace { @@ -90,7 +91,7 @@ void SaveToFile(const GURL& model_url, RankerModelLoaderImpl::RankerModelLoaderImpl( ValidateModelCallback validate_model_cb, OnModelAvailableCallback on_model_available_cb, - net::URLRequestContextGetter* request_context_getter, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, base::FilePath model_path, GURL model_url, std::string uma_prefix) @@ -99,7 +100,7 @@ RankerModelLoaderImpl::RankerModelLoaderImpl( base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN})), validate_model_cb_(std::move(validate_model_cb)), on_model_available_cb_(std::move(on_model_available_cb)), - request_context_getter_(request_context_getter), + url_loader_factory_(std::move(url_loader_factory)), model_path_(std::move(model_path)), model_url_(std::move(model_url)), uma_prefix_(std::move(uma_prefix)), @@ -147,9 +148,9 @@ void RankerModelLoaderImpl::StartLoadFromFile() { load_start_time_ = base::TimeTicks::Now(); base::PostTaskAndReplyWithResult( background_task_runner_.get(), FROM_HERE, - base::Bind(&LoadFromFile, model_path_), - base::Bind(&RankerModelLoaderImpl::OnFileLoaded, - weak_ptr_factory_.GetWeakPtr())); + base::BindOnce(&LoadFromFile, model_path_), + base::BindOnce(&RankerModelLoaderImpl::OnFileLoaded, + weak_ptr_factory_.GetWeakPtr())); } void RankerModelLoaderImpl::OnFileLoaded(const std::string& data) { @@ -220,9 +221,9 @@ void RankerModelLoaderImpl::StartLoadFromURL() { load_start_time_ + base::TimeDelta::FromMinutes(kMinRetryDelayMins); bool request_started = url_fetcher_->Request(model_url_, - base::Bind(&RankerModelLoaderImpl::OnURLFetched, - weak_ptr_factory_.GetWeakPtr()), - request_context_getter_.get()); + base::BindOnce(&RankerModelLoaderImpl::OnURLFetched, + weak_ptr_factory_.GetWeakPtr()), + url_loader_factory_.get()); // |url_fetcher_| maintains a request retry counter. If all allowed attempts // have already been exhausted, then the loader is finished and has abandoned diff --git a/chromium/components/assist_ranker/ranker_model_loader_impl.h b/chromium/components/assist_ranker/ranker_model_loader_impl.h index 4ef151c3374..1a94ac3f4ea 100644 --- a/chromium/components/assist_ranker/ranker_model_loader_impl.h +++ b/chromium/components/assist_ranker/ranker_model_loader_impl.h @@ -16,13 +16,16 @@ #include "base/memory/weak_ptr.h" #include "base/sequence_checker.h" #include "base/time/time.h" -#include "net/url_request/url_request_context_getter.h" #include "url/gurl.h" namespace base { class SequencedTaskRunner; } // namespace base +namespace network { +class SharedURLLoaderFactory; +} + namespace assist_ranker { class RankerURLFetcher; @@ -48,12 +51,13 @@ class RankerModelLoaderImpl : public RankerModelLoader { // // |uma_prefix| will be used as a prefix for the names of all UMA metrics // generated by this loader. - RankerModelLoaderImpl(ValidateModelCallback validate_model_callback, - OnModelAvailableCallback on_model_available_callback, - net::URLRequestContextGetter* request_context_getter, - base::FilePath model_path, - GURL model_url, - std::string uma_prefix); + RankerModelLoaderImpl( + ValidateModelCallback validate_model_callback, + OnModelAvailableCallback on_model_available_callback, + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, + base::FilePath model_path, + GURL model_url, + std::string uma_prefix); ~RankerModelLoaderImpl() override; @@ -130,8 +134,8 @@ class RankerModelLoaderImpl : public RankerModelLoader { // constructed. const OnModelAvailableCallback on_model_available_cb_; - // Request Context Getter used for RankerURLFetcher. - scoped_refptr<net::URLRequestContextGetter> request_context_getter_; + // URL loader factory used for RankerURLFetcher. + scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_; // The path at which the model is (or should be) cached. const base::FilePath model_path_; diff --git a/chromium/components/assist_ranker/ranker_model_loader_impl_unittest.cc b/chromium/components/assist_ranker/ranker_model_loader_impl_unittest.cc index 9799c9ceb5c..32b2760400a 100644 --- a/chromium/components/assist_ranker/ranker_model_loader_impl_unittest.cc +++ b/chromium/components/assist_ranker/ranker_model_loader_impl_unittest.cc @@ -20,8 +20,9 @@ #include "components/assist_ranker/proto/ranker_model.pb.h" #include "components/assist_ranker/proto/translate_ranker_model.pb.h" #include "components/assist_ranker/ranker_model.h" -#include "net/url_request/test_url_fetcher_factory.h" -#include "net/url_request/url_request_test_util.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" +#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" +#include "services/network/test/test_url_loader_factory.h" #include "testing/gtest/include/gtest/gtest.h" namespace { @@ -76,15 +77,13 @@ class RankerModelLoaderImplTest : public ::testing::Test { // Sets up the task scheduling/task-runner environment for each test. base::test::ScopedTaskEnvironment scoped_task_environment_; - // Override the default URL fetcher to return custom responses for tests. - net::FakeURLFetcherFactory url_fetcher_factory_; + // Override the default URL loader to return custom responses for tests. + network::TestURLLoaderFactory test_loader_factory_; + scoped_refptr<network::SharedURLLoaderFactory> test_shared_loader_factory_; // Temporary directory for model files. base::ScopedTempDir scoped_temp_dir_; - // Used for URLFetcher. - scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; - // A queue of responses to return from Validate(). If empty, validate will // return 'OK'. base::circular_deque<RankerModelStatus> validate_model_response_; @@ -114,13 +113,13 @@ class RankerModelLoaderImplTest : public ::testing::Test { DISALLOW_COPY_AND_ASSIGN(RankerModelLoaderImplTest); }; -RankerModelLoaderImplTest::RankerModelLoaderImplTest() - : url_fetcher_factory_(nullptr) {} +RankerModelLoaderImplTest::RankerModelLoaderImplTest() { + test_shared_loader_factory_ = + base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>( + &test_loader_factory_); +} void RankerModelLoaderImplTest::SetUp() { - request_context_getter_ = - new net::TestURLRequestContextGetter(base::ThreadTaskRunnerHandle::Get()); - ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir()); const auto& temp_dir_path = scoped_temp_dir_.GetPath(); @@ -172,7 +171,7 @@ bool RankerModelLoaderImplTest::DoLoaderTest(const base::FilePath& model_path, base::Unretained(this)), base::Bind(&RankerModelLoaderImplTest::OnModelAvailable, base::Unretained(this)), - request_context_getter_.get(), model_path, model_url, + test_shared_loader_factory_, model_path, model_url, "RankerModelLoaderImplTest"); loader->NotifyOfRankerActivity(); scoped_task_environment_.RunUntilIdle(); @@ -182,15 +181,13 @@ bool RankerModelLoaderImplTest::DoLoaderTest(const base::FilePath& model_path, void RankerModelLoaderImplTest::InitRemoteModels() { InitModel(remote_model_url_, base::Time(), base::TimeDelta(), &remote_model_); - url_fetcher_factory_.SetFakeResponse( - remote_model_url_, remote_model_.SerializeAsString(), net::HTTP_OK, - net::URLRequestStatus::SUCCESS); - url_fetcher_factory_.SetFakeResponse(invalid_model_url_, kInvalidModelData, - net::HTTP_OK, - net::URLRequestStatus::SUCCESS); - url_fetcher_factory_.SetFakeResponse(failed_model_url_, "", - net::HTTP_INTERNAL_SERVER_ERROR, - net::URLRequestStatus::FAILED); + test_loader_factory_.AddResponse(remote_model_url_.spec(), + remote_model_.SerializeAsString()); + test_loader_factory_.AddResponse(invalid_model_url_.spec(), + kInvalidModelData); + test_loader_factory_.AddResponse( + failed_model_url_, network::ResourceResponseHead(), "", + network::URLLoaderCompletionStatus(net::HTTP_INTERNAL_SERVER_ERROR)); } void RankerModelLoaderImplTest::InitLocalModels() { diff --git a/chromium/components/assist_ranker/ranker_url_fetcher.cc b/chromium/components/assist_ranker/ranker_url_fetcher.cc index 0f8989e0973..8d0f709499b 100644 --- a/chromium/components/assist_ranker/ranker_url_fetcher.cc +++ b/chromium/components/assist_ranker/ranker_url_fetcher.cc @@ -9,8 +9,9 @@ #include "net/base/load_flags.h" #include "net/http/http_status_code.h" #include "net/traffic_annotation/network_traffic_annotation.h" -#include "net/url_request/url_fetcher.h" -#include "net/url_request/url_request_status.h" +#include "services/network/public/cpp/resource_request.h" +#include "services/network/public/cpp/simple_url_loader.h" +#include "services/network/public/mojom/url_loader_factory.mojom.h" namespace assist_ranker { @@ -21,14 +22,15 @@ const int kMaxRetry = 16; } // namespace -RankerURLFetcher::RankerURLFetcher() : state_(IDLE), retry_count_(0) {} +RankerURLFetcher::RankerURLFetcher() + : state_(IDLE), retry_count_(0), max_retry_on_5xx_(0) {} RankerURLFetcher::~RankerURLFetcher() {} bool RankerURLFetcher::Request( const GURL& url, - const RankerURLFetcher::Callback& callback, - net::URLRequestContextGetter* request_context_getter) { + RankerURLFetcher::Callback callback, + network::mojom::URLLoaderFactory* url_loader_factory) { // This function is not supposed to be called if the previous operation is not // finished. if (state_ == REQUESTING) { @@ -42,9 +44,9 @@ bool RankerURLFetcher::Request( state_ = REQUESTING; url_ = url; - callback_ = callback; + callback_ = std::move(callback); - if (request_context_getter == nullptr) + if (url_loader_factory == nullptr) return false; net::NetworkTrafficAnnotationTag traffic_annotation = @@ -73,39 +75,38 @@ bool RankerURLFetcher::Request( policy_exception_justification: "Not implemented, considered not necessary as no user data is sent." })"); - // Create and initialize the URL fetcher. - fetcher_ = net::URLFetcher::Create(url_, net::URLFetcher::GET, this, - traffic_annotation); - data_use_measurement::DataUseUserData::AttachToFetcher( - fetcher_.get(), - data_use_measurement::DataUseUserData::MACHINE_INTELLIGENCE); - fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | - net::LOAD_DO_NOT_SAVE_COOKIES); - fetcher_->SetRequestContext(request_context_getter); - - // Set retry parameter for HTTP status code 5xx. This doesn't work against - // 106 (net::ERR_INTERNET_DISCONNECTED) and so on. - fetcher_->SetMaxRetriesOn5xx(max_retry_on_5xx_); - fetcher_->Start(); + auto resource_request = std::make_unique<network::ResourceRequest>(); + resource_request->url = url_; + resource_request->load_flags = + net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DO_NOT_SAVE_COOKIES; + // TODO(https://crbug.com/808498): Re-add data use measurement once + // SimpleURLLoader supports it. + // ID=data_use_measurement::DataUseUserData::MACHINE_INTELLIGENCE + simple_url_loader_ = network::SimpleURLLoader::Create( + std::move(resource_request), traffic_annotation); + if (max_retry_on_5xx_ > 0) { + simple_url_loader_->SetRetryOptions(max_retry_on_5xx_, + network::SimpleURLLoader::RETRY_ON_5XX); + } + simple_url_loader_->DownloadToStringOfUnboundedSizeUntilCrashAndDie( + url_loader_factory, + base::BindOnce(&RankerURLFetcher::OnSimpleLoaderComplete, + base::Unretained(this))); return true; } -void RankerURLFetcher::OnURLFetchComplete(const net::URLFetcher* source) { - DCHECK(fetcher_.get() == source); - +void RankerURLFetcher::OnSimpleLoaderComplete( + std::unique_ptr<std::string> response_body) { std::string data; - if (source->GetStatus().status() == net::URLRequestStatus::SUCCESS && - source->GetResponseCode() == net::HTTP_OK) { + if (response_body) { state_ = COMPLETED; - source->GetResponseAsString(&data); + data = std::move(*response_body); } else { state_ = FAILED; } - - // Transfer URLFetcher's ownership before invoking a callback. - std::unique_ptr<const net::URLFetcher> delete_ptr(fetcher_.release()); - callback_.Run(state_ == COMPLETED, data); + simple_url_loader_.reset(); + std::move(callback_).Run(state_ == COMPLETED, data); } } // namespace assist_ranker diff --git a/chromium/components/assist_ranker/ranker_url_fetcher.h b/chromium/components/assist_ranker/ranker_url_fetcher.h index 7c2305a9800..4f22b221174 100644 --- a/chromium/components/assist_ranker/ranker_url_fetcher.h +++ b/chromium/components/assist_ranker/ranker_url_fetcher.h @@ -9,17 +9,22 @@ #include "base/callback.h" #include "base/macros.h" -#include "net/url_request/url_fetcher_delegate.h" -#include "net/url_request/url_request_context_getter.h" #include "url/gurl.h" +namespace network { +class SimpleURLLoader; +namespace mojom { +class URLLoaderFactory; +} // namespace mojom +} // namespace network + namespace assist_ranker { // Downloads Ranker models. -class RankerURLFetcher : public net::URLFetcherDelegate { +class RankerURLFetcher { public: // Callback type for Request(). - typedef base::Callback<void(bool, const std::string&)> Callback; + typedef base::OnceCallback<void(bool, const std::string&)> Callback; // Represents internal state if the fetch is completed successfully. enum State { @@ -30,7 +35,7 @@ class RankerURLFetcher : public net::URLFetcherDelegate { }; RankerURLFetcher(); - ~RankerURLFetcher() override; + ~RankerURLFetcher(); int max_retry_on_5xx() { return max_retry_on_5xx_; } void set_max_retry_on_5xx(int count) { max_retry_on_5xx_ = count; } @@ -40,24 +45,23 @@ class RankerURLFetcher : public net::URLFetcherDelegate { // Returns false if the previous request is not finished, or the request // is omitted due to retry limitation. bool Request(const GURL& url, - const Callback& callback, - net::URLRequestContextGetter* request_context); + Callback callback, + network::mojom::URLLoaderFactory* url_loader_factory); // Gets internal state. State state() { return state_; } - // net::URLFetcherDelegate implementation: - void OnURLFetchComplete(const net::URLFetcher* source) override; - private: + void OnSimpleLoaderComplete(std::unique_ptr<std::string> response_body); + // URL to send the request. GURL url_; // Internal state. enum State state_; - // URLFetcher instance. - std::unique_ptr<net::URLFetcher> fetcher_; + // SimpleURLLoader instance. + std::unique_ptr<network::SimpleURLLoader> simple_url_loader_; // Callback passed at Request(). It will be invoked when an asynchronous // fetch operation is finished. |