| Index: net/url_request/url_request_http_job_unittest.cc
|
| diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc
|
| index c44905536c529543a2a4cd4be1012b02f6924a53..dbaea28f76e0115df4041995cea3b3a60e93bfeb 100644
|
| --- a/net/url_request/url_request_http_job_unittest.cc
|
| +++ b/net/url_request/url_request_http_job_unittest.cc
|
| @@ -40,6 +40,12 @@
|
| #include "url/gurl.h"
|
| #include "url/url_constants.h"
|
|
|
| +#if defined(OS_ANDROID)
|
| +#include "base/android/build_info.h"
|
| +#include "base/android/jni_android.h"
|
| +#include "jni/AndroidNetworkLibraryTestUtil_jni.h"
|
| +#endif
|
| +
|
| using net::test::IsError;
|
| using net::test::IsOk;
|
|
|
| @@ -938,6 +944,46 @@ TEST_F(URLRequestHttpJobWithBrotliSupportTest, BrotliAdvertisement) {
|
| request->GetTotalReceivedBytes());
|
| }
|
|
|
| +#if defined(OS_ANDROID)
|
| +TEST_F(URLRequestHttpJobTest, AndroidCleartextPermittedTest) {
|
| + context_.set_check_cleartext_permitted(true);
|
| +
|
| + struct TestCase {
|
| + const char* url;
|
| + bool cleartext_permitted;
|
| + bool should_block;
|
| + } cases[] = {
|
| + {"http://blocked.test/", true, false},
|
| + {"https://blocked.test/", true, false},
|
| + {"http://blocked.test/", false, true},
|
| + {"https://blocked.test/", false, false},
|
| + };
|
| +
|
| + for (const TestCase& test : cases) {
|
| + JNIEnv* env = base::android::AttachCurrentThread();
|
| + Java_AndroidNetworkLibraryTestUtil_setUpSecurityPolicyForTesting(
|
| + env, test.cleartext_permitted);
|
| +
|
| + TestDelegate delegate;
|
| + std::unique_ptr<URLRequest> request =
|
| + context_.CreateRequest(GURL(test.url), DEFAULT_PRIORITY, &delegate);
|
| + request->Start();
|
| + base::RunLoop().Run();
|
| +
|
| + int sdk_int = base::android::BuildInfo::GetInstance()->sdk_int();
|
| + bool expect_blocked = (sdk_int >= base::android::SDK_VERSION_MARSHMALLOW &&
|
| + test.should_block);
|
| + if (expect_blocked) {
|
| + EXPECT_THAT(delegate.request_status(),
|
| + IsError(ERR_CLEARTEXT_NOT_PERMITTED));
|
| + } else {
|
| + // Should fail since there's no test server running
|
| + EXPECT_THAT(delegate.request_status(), IsError(ERR_FAILED));
|
| + }
|
| + }
|
| +}
|
| +#endif
|
| +
|
| // This base class just serves to set up some things before the TestURLRequest
|
| // constructor is called.
|
| class URLRequestHttpJobWebSocketTestBase : public ::testing::Test {
|
|
|