summaryrefslogtreecommitdiff
path: root/chromium/services/network/url_loader_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/services/network/url_loader_unittest.cc')
-rw-r--r--chromium/services/network/url_loader_unittest.cc155
1 files changed, 120 insertions, 35 deletions
diff --git a/chromium/services/network/url_loader_unittest.cc b/chromium/services/network/url_loader_unittest.cc
index 17cfbf62870..9876350ed59 100644
--- a/chromium/services/network/url_loader_unittest.cc
+++ b/chromium/services/network/url_loader_unittest.cc
@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/memory/raw_ptr.h"
#include "stdint.h"
#include <limits>
@@ -18,7 +19,6 @@
#include "base/files/file.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
-#include "base/macros.h"
#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
#include "base/metrics/statistics_recorder.h"
@@ -112,6 +112,7 @@
#if defined(OS_ANDROID)
#include "base/android/radio_utils.h"
+#include "net/android/radio_activity_tracker.h"
#include "services/network/radio_monitor_android.h"
#endif
@@ -133,7 +134,7 @@ URLLoader::DeleteCallback DeleteLoaderCallback(
std::unique_ptr<URLLoader>* url_loader) {
return base::BindOnce(
[](base::RunLoop* run_loop, std::unique_ptr<URLLoader>* url_loader,
- mojom::URLLoader* url_loader_ptr) {
+ URLLoader* url_loader_ptr) {
DCHECK_EQ(url_loader->get(), url_loader_ptr);
url_loader->reset();
run_loop->Quit();
@@ -146,7 +147,7 @@ URLLoader::DeleteCallback DeleteLoaderCallback(
// this method, as URLLoaders don't expect to be alive after they invoke their
// delete callback.
URLLoader::DeleteCallback NeverInvokedDeleteLoaderCallback() {
- return base::BindOnce([](mojom::URLLoader* /* loader*/) { NOTREACHED(); });
+ return base::BindOnce([](URLLoader* /* loader*/) { NOTREACHED(); });
}
constexpr char kBodyReadFromNetBeforePausedHistogram[] =
@@ -385,7 +386,7 @@ class URLRequestSimulatedCacheJob : public net::URLRequestJob {
private:
void StartAsync() { NotifyHeadersComplete(); }
- scoped_refptr<net::IOBuffer>* simulated_cache_dest_;
+ raw_ptr<scoped_refptr<net::IOBuffer>> simulated_cache_dest_;
bool use_text_plain_;
base::WeakPtrFactory<URLRequestSimulatedCacheJob> weak_factory_{this};
};
@@ -398,6 +399,10 @@ class SimulatedCacheInterceptor : public net::URLRequestInterceptor {
: simulated_cache_dest_(simulated_cache_dest),
use_text_plain_(use_text_plain) {}
+ SimulatedCacheInterceptor(const SimulatedCacheInterceptor&) = delete;
+ SimulatedCacheInterceptor& operator=(const SimulatedCacheInterceptor&) =
+ delete;
+
std::unique_ptr<net::URLRequestJob> MaybeInterceptRequest(
net::URLRequest* request) const override {
return std::make_unique<URLRequestSimulatedCacheJob>(
@@ -405,9 +410,8 @@ class SimulatedCacheInterceptor : public net::URLRequestInterceptor {
}
private:
- scoped_refptr<net::IOBuffer>* simulated_cache_dest_;
+ raw_ptr<scoped_refptr<net::IOBuffer>> simulated_cache_dest_;
bool use_text_plain_;
- DISALLOW_COPY_AND_ASSIGN(SimulatedCacheInterceptor);
};
// Fakes the TransportInfo passed to URLRequest::Delegate::OnConnected().
@@ -585,7 +589,7 @@ class URLLoaderTest : public testing::Test {
scoped_feature_list_.InitWithFeatures(
/*enabled_features=*/{features::kAcceptCHFrame,
- features::kRecordRadioWakeupTrigger},
+ net::features::kRecordRadioWakeupTrigger},
/*disabled_features=*/{});
}
~URLLoaderTest() override {
@@ -1011,7 +1015,7 @@ class URLLoaderTest : public testing::Test {
base::test::TaskEnvironment task_environment_;
net::EmbeddedTestServer test_server_;
std::unique_ptr<net::ScopedDefaultHostResolverProc> mock_host_resolver_;
- net::TestNetworkDelegate*
+ raw_ptr<net::TestNetworkDelegate>
unowned_test_network_delegate_; // owned by |context_|
std::unique_ptr<net::URLRequestContext> context_;
ResourceScheduler resource_scheduler_;
@@ -1028,7 +1032,7 @@ class URLLoaderTest : public testing::Test {
bool expect_redirect_ = false;
mojom::ClientSecurityStatePtr factory_client_security_state_;
mojom::ClientSecurityStatePtr request_client_security_state_;
- MockDevToolsObserver* devtools_observer_ = nullptr;
+ raw_ptr<MockDevToolsObserver> devtools_observer_ = nullptr;
scoped_refptr<ResourceRequestBody> request_body_;
net::HttpRequestHeaders additional_headers_;
mojom::IPAddressSpace target_ip_address_space_ =
@@ -1044,7 +1048,7 @@ class URLLoaderTest : public testing::Test {
const cors::OriginAccessList kEmptyOriginAccessList;
- MockAcceptCHFrameObserver* accept_ch_frame_observer_ = nullptr;
+ raw_ptr<MockAcceptCHFrameObserver> accept_ch_frame_observer_ = nullptr;
};
class URLLoaderMockSocketTest : public URLLoaderTest {
@@ -1666,6 +1670,9 @@ struct URLLoaderFakeTransportInfoTestParams {
// The address space of the endpoint serving the request.
mojom::IPAddressSpace endpoint_address_space;
+ // The type of transport to set in `TransportInfo`.
+ net::TransportType transport_type;
+
// The expected request result.
int expected_result;
};
@@ -1675,6 +1682,8 @@ std::ostream& operator<<(std::ostream& out,
const URLLoaderFakeTransportInfoTestParams& params) {
return out << "{ client_address_space: " << params.client_address_space
<< ", endpoint_address_space: " << params.endpoint_address_space
+ << ", transport_type: "
+ << net::TransportTypeToString(params.transport_type)
<< ", expected_result: "
<< net::ErrorToString(params.expected_result) << " }";
}
@@ -1703,9 +1712,10 @@ class URLLoaderFakeTransportInfoTest
}
// Returns a transport info with an endpoint in the given IP address space.
- static net::TransportInfo FakeTransportInfo(mojom::IPAddressSpace space) {
- return net::TransportInfo(net::TransportType::kDirect, FakeEndpoint(space),
- "");
+ static net::TransportInfo FakeTransportInfo(
+ const URLLoaderFakeTransportInfoTestParams& params) {
+ return net::TransportInfo(params.transport_type,
+ FakeEndpoint(params.endpoint_address_space), "");
}
};
@@ -1724,7 +1734,7 @@ TEST_P(URLLoaderFakeTransportInfoTest, PrivateNetworkRequestLoadsCorrectly) {
net::URLRequestFilter::GetInstance()->AddUrlInterceptor(
url, std::make_unique<FakeTransportInfoInterceptor>(
- FakeTransportInfo(params.endpoint_address_space)));
+ FakeTransportInfo(params)));
// Despite its name, IsError(OK) asserts that the matched value is OK.
EXPECT_THAT(Load(url), IsError(params.expected_result));
@@ -1742,84 +1752,125 @@ constexpr URLLoaderFakeTransportInfoTestParams
{
mojom::IPAddressSpace::kUnknown,
mojom::IPAddressSpace::kUnknown,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kUnknown,
mojom::IPAddressSpace::kPublic,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kUnknown,
mojom::IPAddressSpace::kPrivate,
+ net::TransportType::kDirect,
net::ERR_FAILED,
},
{
mojom::IPAddressSpace::kUnknown,
mojom::IPAddressSpace::kLocal,
+ net::TransportType::kDirect,
net::ERR_FAILED,
},
// Client: kPublic
{
mojom::IPAddressSpace::kPublic,
mojom::IPAddressSpace::kUnknown,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kPublic,
mojom::IPAddressSpace::kPublic,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kPublic,
mojom::IPAddressSpace::kPrivate,
+ net::TransportType::kDirect,
net::ERR_FAILED,
},
{
mojom::IPAddressSpace::kPublic,
mojom::IPAddressSpace::kLocal,
+ net::TransportType::kDirect,
net::ERR_FAILED,
},
// Client: kPrivate
{
mojom::IPAddressSpace::kPrivate,
mojom::IPAddressSpace::kUnknown,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kPrivate,
mojom::IPAddressSpace::kPublic,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kPrivate,
mojom::IPAddressSpace::kPrivate,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kPrivate,
mojom::IPAddressSpace::kLocal,
+ net::TransportType::kDirect,
net::ERR_FAILED,
},
// Client: kLocal
{
mojom::IPAddressSpace::kLocal,
mojom::IPAddressSpace::kUnknown,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kLocal,
mojom::IPAddressSpace::kPublic,
+ net::TransportType::kDirect,
net::OK,
},
{
mojom::IPAddressSpace::kLocal,
mojom::IPAddressSpace::kPrivate,
+ net::TransportType::kDirect,
+ net::OK,
+ },
+ {
+ mojom::IPAddressSpace::kLocal,
+ mojom::IPAddressSpace::kLocal,
+ net::TransportType::kDirect,
net::OK,
},
+ // TransportType: kProxied
{
+ mojom::IPAddressSpace::kUnknown,
mojom::IPAddressSpace::kLocal,
+ net::TransportType::kProxied,
+ net::OK,
+ },
+ {
+ mojom::IPAddressSpace::kPublic,
mojom::IPAddressSpace::kLocal,
+ net::TransportType::kProxied,
+ net::OK,
+ },
+ {
+ mojom::IPAddressSpace::kPublic,
+ mojom::IPAddressSpace::kPrivate,
+ net::TransportType::kProxied,
+ net::OK,
+ },
+ {
+ mojom::IPAddressSpace::kPrivate,
+ mojom::IPAddressSpace::kLocal,
+ net::TransportType::kProxied,
net::OK,
},
};
@@ -3631,8 +3682,7 @@ TEST_F(URLLoaderTest, ResourceSchedulerIntegration) {
for (const auto& pair : loaders) {
URLLoader* loader = pair.first.get();
ASSERT_NE(loader, nullptr);
- EXPECT_EQ(net::LOAD_STATE_WAITING_FOR_RESPONSE,
- loader->GetLoadStateForTesting());
+ EXPECT_EQ(net::LOAD_STATE_WAITING_FOR_RESPONSE, loader->GetLoadState());
}
mojo::PendingRemote<mojom::URLLoader> loader_remote;
@@ -3653,15 +3703,14 @@ TEST_F(URLLoaderTest, ResourceSchedulerIntegration) {
base::RunLoop().RunUntilIdle();
// Make sure that the ResourceScheduler throttles this request.
- EXPECT_EQ(net::LOAD_STATE_WAITING_FOR_DELEGATE,
- loader->GetLoadStateForTesting());
+ EXPECT_EQ(net::LOAD_STATE_WAITING_FOR_DELEGATE, loader->GetLoadState());
loader->SetPriority(net::HIGHEST, 0 /* intra_priority_value */);
base::RunLoop().RunUntilIdle();
// Make sure that the ResourceScheduler stops throtting.
EXPECT_EQ(net::LOAD_STATE_WAITING_FOR_AVAILABLE_SOCKET,
- loader->GetLoadStateForTesting());
+ loader->GetLoadState());
}
// This tests that case where a read pipe is closed while there's a post task to
@@ -3948,7 +3997,7 @@ class ClientCertAuthObserver : public TestURLLoaderNetworkObserver {
std::string provider_name_;
std::vector<uint16_t> algorithm_preferences_;
int on_certificate_requested_counter_ = 0;
- mojo::Remote<mojom::URLLoader>* url_loader_remote_ = nullptr;
+ raw_ptr<mojo::Remote<mojom::URLLoader>> url_loader_remote_ = nullptr;
};
TEST_F(URLLoaderTest, SetAuth) {
@@ -4287,6 +4336,9 @@ class TestSSLPrivateKey : public net::SSLPrivateKey {
explicit TestSSLPrivateKey(scoped_refptr<net::SSLPrivateKey> key)
: key_(std::move(key)) {}
+ TestSSLPrivateKey(const TestSSLPrivateKey&) = delete;
+ TestSSLPrivateKey& operator=(const TestSSLPrivateKey&) = delete;
+
void set_fail_signing(bool fail_signing) { fail_signing_ = fail_signing; }
int sign_count() const { return sign_count_; }
@@ -4314,8 +4366,6 @@ class TestSSLPrivateKey : public net::SSLPrivateKey {
scoped_refptr<net::SSLPrivateKey> key_;
bool fail_signing_ = false;
int sign_count_ = 0;
-
- DISALLOW_COPY_AND_ASSIGN(TestSSLPrivateKey);
};
#if !defined(OS_IOS)
@@ -6294,7 +6344,7 @@ class MockTrustTokenRequestHelper : public TrustTokenRequestHelper {
SyncOrAsync operation_synchrony_;
- bool* begin_done_flag_;
+ raw_ptr<bool> begin_done_flag_;
};
class NoopTrustTokenKeyCommitmentGetter : public TrustTokenKeyCommitmentGetter {
@@ -7278,43 +7328,78 @@ TEST_F(URLLoaderFakeTransportInfoTest, AcceptCHFrameIgnoreMalformed) {
#if defined(OS_ANDROID)
+namespace {
+
+void CheckRadioWakeupTriggerHistograms(base::HistogramTester& histograms,
+ size_t expected_count) {
+ histograms.ExpectTotalCount(
+ kUmaNamePossibleWakeupTriggerURLLoaderRequestDestination, expected_count);
+ histograms.ExpectTotalCount(
+ kUmaNamePossibleWakeupTriggerURLLoaderRequestPriority, expected_count);
+ histograms.ExpectTotalCount(
+ kUmaNamePossibleWakeupTriggerURLLoaderRequestIsPrefetch, expected_count);
+ histograms.ExpectTotalCount(
+ kUmaNamePossibleWakeupTriggerURLLoaderAnnotationId, expected_count);
+}
+
+} // namespace
+
TEST_F(URLLoaderTest, RecordRadioWakeupTrigger_Record) {
base::HistogramTester histograms;
- RadioMonitorAndroid::GetInstance().OverrideRadioActivityForTesting(
- base::android::RadioDataActivity::kDormant);
- RadioMonitorAndroid::GetInstance().OverrideRadioTypeForTesting(
+ net::android::RadioActivityTracker::GetInstance()
+ .OverrideRadioActivityForTesting(
+ base::android::RadioDataActivity::kDormant);
+ net::android::RadioActivityTracker::GetInstance().OverrideRadioTypeForTesting(
base::android::RadioConnectionType::kCell);
LoadAndCompareFile("simple_page.html");
- histograms.ExpectTotalCount(kUmaNamePossibleWakeupTriggerURLLoader, 1);
+ CheckRadioWakeupTriggerHistograms(histograms, /*expected_count=*/1);
}
TEST_F(URLLoaderTest, RecordRadioWakeupTrigger_RadioTypeIsNotCell) {
base::HistogramTester histograms;
- RadioMonitorAndroid::GetInstance().OverrideRadioActivityForTesting(
- base::android::RadioDataActivity::kDormant);
- RadioMonitorAndroid::GetInstance().OverrideRadioTypeForTesting(
+ net::android::RadioActivityTracker::GetInstance()
+ .OverrideRadioActivityForTesting(
+ base::android::RadioDataActivity::kDormant);
+ net::android::RadioActivityTracker::GetInstance().OverrideRadioTypeForTesting(
base::android::RadioConnectionType::kWifi);
LoadAndCompareFile("simple_page.html");
- histograms.ExpectTotalCount(kUmaNamePossibleWakeupTriggerURLLoader, 0);
+ CheckRadioWakeupTriggerHistograms(histograms, /*expected_count=*/0);
}
TEST_F(URLLoaderTest, RecordRadioWakeupTrigger_RadioActivityIsNotDormant) {
base::HistogramTester histograms;
- RadioMonitorAndroid::GetInstance().OverrideRadioActivityForTesting(
- base::android::RadioDataActivity::kInOut);
- RadioMonitorAndroid::GetInstance().OverrideRadioTypeForTesting(
+ net::android::RadioActivityTracker::GetInstance()
+ .OverrideRadioActivityForTesting(
+ base::android::RadioDataActivity::kInOut);
+ net::android::RadioActivityTracker::GetInstance().OverrideRadioTypeForTesting(
+ base::android::RadioConnectionType::kCell);
+
+ LoadAndCompareFile("simple_page.html");
+
+ CheckRadioWakeupTriggerHistograms(histograms, /*expected_count=*/0);
+}
+
+TEST_F(URLLoaderTest, RecordRadioWakeupTrigger_IntervalTooShort) {
+ base::HistogramTester histograms;
+
+ net::android::RadioActivityTracker::GetInstance()
+ .OverrideRadioActivityForTesting(
+ base::android::RadioDataActivity::kDormant);
+ net::android::RadioActivityTracker::GetInstance().OverrideRadioTypeForTesting(
base::android::RadioConnectionType::kCell);
+ net::android::RadioActivityTracker::GetInstance()
+ .OverrideLastCheckTimeForTesting(base::TimeTicks::Now());
LoadAndCompareFile("simple_page.html");
- histograms.ExpectTotalCount(kUmaNamePossibleWakeupTriggerURLLoader, 0);
+ CheckRadioWakeupTriggerHistograms(histograms, /*expected_count=*/0);
}
#endif // defined(OS_ANDROID)