#include "chrome/browser/net/profile_network_context_service.h"
#include <algorithm>
#include <memory>
#include <optional>
#include <string>
#include <string_view>
#include <vector>
#include "base/check_op.h"
#include "base/containers/contains.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/files/scoped_temp_dir.h"
#include "base/functional/bind.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/thread_pool/thread_pool_instance.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/scoped_feature_list.h"
#include "base/threading/platform_thread.h"
#include "base/threading/thread_restrictions.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/net/profile_network_context_service_factory.h"
#include "chrome/browser/net/profile_network_context_service_test_utils.h"
#include "chrome/browser/net/system_network_context_manager.h"
#include "chrome/browser/policy/policy_test_utils.h"
#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_features.h"
#include "chrome/common/chrome_paths_internal.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/content_settings/core/browser/cookie_settings.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/content_settings/core/common/pref_names.h"
#include "components/metrics/content/subprocess_metrics_provider.h"
#include "components/policy/core/common/policy_map.h"
#include "components/policy/policy_constants.h"
#include "components/prefs/pref_service.h"
#include "components/privacy_sandbox/privacy_sandbox_features.h"
#include "components/privacy_sandbox/privacy_sandbox_settings.h"
#include "components/privacy_sandbox/privacy_sandbox_test_util.h"
#include "components/user_prefs/user_prefs.h"
#include "content/public/browser/network_service_instance.h"
#include "content/public/browser/storage_partition.h"
#include "content/public/common/content_features.h"
#include "content/public/test/browser_test.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/simple_url_loader_test_helper.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/system/data_pipe_utils.h"
#include "net/base/features.h"
#include "net/base/load_flags.h"
#include "net/disk_cache/cache_util.h"
#include "net/dns/mock_host_resolver.h"
#include "net/http/http_auth_preferences.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "net/test/embedded_test_server/http_request.h"
#include "net/test/embedded_test_server/http_response.h"
#include "net/test/embedded_test_server/request_handler_util.h"
#include "net/test/scoped_mutually_exclusive_feature_list.h"
#include "net/traffic_annotation/network_traffic_annotation_test_helper.h"
#include "services/cert_verifier/public/mojom/cert_verifier_service_factory.mojom.h"
#include "services/network/public/cpp/cors/cors.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/mojom/network_context.mojom.h"
#include "services/network/public/mojom/network_service.mojom.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
#include "services/network/test/trust_token_request_handler.h"
#include "services/network/test/trust_token_test_server_handler_registration.h"
#include "services/network/test/trust_token_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#if BUILDFLAG(IS_CHROMEOS)
#include "chromeos/constants/chromeos_features.h"
#endif
class ProfileNetworkContextServiceBrowsertest : public InProcessBrowserTest { … };
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceBrowsertest,
DiskCacheLocation) { … }
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceBrowsertest,
DefaultCacheSize) { … }
class DiskCachesizeExperiment : public ProfileNetworkContextServiceBrowsertest { … };
IN_PROC_BROWSER_TEST_F(DiskCachesizeExperiment, ScaledCacheSize) { … }
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceBrowsertest, BrotliEnabled) { … }
void CheckCacheResetStatus(base::HistogramTester* histograms, bool reset) { … }
class ProfileNetworkContextServiceCacheSameBrowsertest
: public ProfileNetworkContextServiceBrowsertest { … };
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceCacheSameBrowsertest,
PRE_TestCacheResetParameter) { … }
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceCacheSameBrowsertest,
TestCacheResetParameter) { … }
class ProfileNetworkContextServiceCacheChangeBrowsertest
: public ProfileNetworkContextServiceBrowsertest { … };
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceCacheChangeBrowsertest,
PRE_TestCacheResetParameter) { … }
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceCacheChangeBrowsertest,
TestCacheResetParameter) { … }
class ProfileNetworkContextServiceCacheCredentialsBrowserTest
: public ProfileNetworkContextServiceBrowsertest { … };
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceCacheCredentialsBrowserTest,
PRE_TestCacheResetParameter) { … }
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceCacheCredentialsBrowserTest,
TestCacheResetParameter) { … }
enum class HttpCache2024ExperimentTestCase { … };
const struct { … } kTestCaseToFeatureMapping[] = …;
class ProfileNetworkContextServiceCacheKeySchemeExperimentBrowserTest
: public ProfileNetworkContextServiceBrowsertest,
public testing::WithParamInterface<HttpCache2024ExperimentTestCase> { … };
INSTANTIATE_TEST_SUITE_P(…);
IN_PROC_BROWSER_TEST_P(
ProfileNetworkContextServiceCacheKeySchemeExperimentBrowserTest,
PRE_TestCacheResetParameter) { … }
IN_PROC_BROWSER_TEST_P(
ProfileNetworkContextServiceCacheKeySchemeExperimentBrowserTest,
TestCacheResetParameter) { … }
class AmbientAuthenticationTestWithPolicy : public policy::PolicyTest { … };
IN_PROC_BROWSER_TEST_F(AmbientAuthenticationTestWithPolicy, RegularOnly) { … }
IN_PROC_BROWSER_TEST_F(AmbientAuthenticationTestWithPolicy,
IncognitoAndRegular) { … }
IN_PROC_BROWSER_TEST_F(AmbientAuthenticationTestWithPolicy, GuestAndRegular) { … }
IN_PROC_BROWSER_TEST_F(AmbientAuthenticationTestWithPolicy, All) { … }
class ProfileNetworkContextServiceDiskCacheBrowsertest
: public ProfileNetworkContextServiceBrowsertest { … };
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceDiskCacheBrowsertest,
DiskCacheLocation) { … }
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextServiceDiskCacheBrowsertest,
DiskCacheSize) { … }
#if BUILDFLAG(IS_CHROMEOS)
class ProfileNetworkContextServiceMemoryPressureFeatureBrowsertest
: public ProfileNetworkContextServiceBrowsertest,
public ::testing::WithParamInterface<std::optional<bool>> {
public:
ProfileNetworkContextServiceMemoryPressureFeatureBrowsertest() = default;
~ProfileNetworkContextServiceMemoryPressureFeatureBrowsertest() override =
default;
void SetUp() override {
if (GetParam().has_value()) {
if (GetParam().value()) {
scoped_feature_list_.InitWithFeatures(
{chromeos::features::kDisableIdleSocketsCloseOnMemoryPressure}, {});
} else {
scoped_feature_list_.InitWithFeatures(
{}, {chromeos::features::kDisableIdleSocketsCloseOnMemoryPressure});
}
}
ProfileNetworkContextServiceBrowsertest::SetUp();
}
private:
base::test::ScopedFeatureList scoped_feature_list_;
};
IN_PROC_BROWSER_TEST_P(
ProfileNetworkContextServiceMemoryPressureFeatureBrowsertest,
FeaturePropagates) {
ProfileNetworkContextService* profile_network_context_service =
ProfileNetworkContextServiceFactory::GetForContext(browser()->profile());
base::FilePath empty_relative_partition_path;
network::mojom::NetworkContextParams network_context_params;
cert_verifier::mojom::CertVerifierCreationParams
cert_verifier_creation_params;
profile_network_context_service->ConfigureNetworkContextParams(
false, empty_relative_partition_path,
&network_context_params, &cert_verifier_creation_params);
EXPECT_EQ(
GetParam().value_or(false),
network_context_params.disable_idle_sockets_close_on_memory_pressure);
}
INSTANTIATE_TEST_SUITE_P(
All,
ProfileNetworkContextServiceMemoryPressureFeatureBrowsertest,
::testing::Values(std::nullopt, true, false));
#endif
class ProfileNetworkContextTrustTokensBrowsertest
: public ProfileNetworkContextServiceBrowsertest { … };
IN_PROC_BROWSER_TEST_F(ProfileNetworkContextTrustTokensBrowsertest,
TrustTokenBlocked) { … }
class ReportingEndpointsPolicyTest : public policy::PolicyTest { … };
IN_PROC_BROWSER_TEST_F(ReportingEndpointsPolicyTest,
CheckEnterpriseEndpointsNetworkContextParamsSet) { … }