summaryrefslogtreecommitdiff
path: root/chromium/net/android
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2021-09-01 11:08:40 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2021-10-01 12:16:21 +0000
commit03c549e0392f92c02536d3f86d5e1d8dfa3435ac (patch)
treefe49d170a929b34ba82cd10db1a0bd8e3760fa4b /chromium/net/android
parent5d013f5804a0d91fcf6c626b2d6fb6eca5c845b0 (diff)
downloadqtwebengine-chromium-03c549e0392f92c02536d3f86d5e1d8dfa3435ac.tar.gz
BASELINE: Update Chromium to 91.0.4472.160
Change-Id: I0def1f08a2412aeed79a9ab95dd50eb5c3f65f31 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/net/android')
-rw-r--r--chromium/net/android/BUILD.gn1
-rw-r--r--chromium/net/android/network_change_notifier_android_unittest.cc29
-rw-r--r--chromium/net/android/network_change_notifier_delegate_android.cc10
-rw-r--r--chromium/net/android/unittest_support/AndroidManifest.xml3
4 files changed, 33 insertions, 10 deletions
diff --git a/chromium/net/android/BUILD.gn b/chromium/net/android/BUILD.gn
index a9509d94468..1bae31d71e8 100644
--- a/chromium/net/android/BUILD.gn
+++ b/chromium/net/android/BUILD.gn
@@ -32,7 +32,6 @@ android_library("net_java") {
deps = [
":net_thread_stats_uid_java",
"//base:base_java",
- "//base:jni_java",
"//third_party/android_deps:com_google_code_findbugs_jsr305_java",
"//third_party/androidx:androidx_annotation_annotation_java",
]
diff --git a/chromium/net/android/network_change_notifier_android_unittest.cc b/chromium/net/android/network_change_notifier_android_unittest.cc
index 1960ee98d91..3cf07e3925c 100644
--- a/chromium/net/android/network_change_notifier_android_unittest.cc
+++ b/chromium/net/android/network_change_notifier_android_unittest.cc
@@ -188,17 +188,21 @@ class BaseNetworkChangeNotifierAndroidTest : public TestWithTaskEnvironment {
connection_type_getter.Run());
}
- void SetOnline() {
+ void SetOnline(bool drain_run_loop = true) {
delegate_.SetOnline();
- // Note that this is needed because base::ObserverListThreadSafe uses
- // PostTask().
- base::RunLoop().RunUntilIdle();
+ if (drain_run_loop) {
+ // Note that this is needed because base::ObserverListThreadSafe uses
+ // PostTask().
+ base::RunLoop().RunUntilIdle();
+ }
}
- void SetOffline() {
+ void SetOffline(bool drain_run_loop = true) {
delegate_.SetOffline();
- // See comment above.
- base::RunLoop().RunUntilIdle();
+ if (drain_run_loop) {
+ // See comment above.
+ base::RunLoop().RunUntilIdle();
+ }
}
void FakeConnectionSubtypeChange(ConnectionSubtype subtype) {
@@ -491,4 +495,15 @@ TEST_F(NetworkChangeNotifierAndroidTest, NetworkCallbacks) {
NetworkChangeNotifier::RemoveNetworkObserver(&network_observer);
}
+// Tests that network type changes happen synchronously. Otherwise the type
+// "change" at browser startup leaves tasks on the queue that will later
+// invalidate any network requests that have been started.
+TEST_F(NetworkChangeNotifierDelegateAndroidTest, TypeChangeIsSynchronous) {
+ const int initial_value = delegate_observer_.type_notifications_count();
+ SetOffline(/*drain_run_loop=*/false);
+ // Note that there's no call to |base::RunLoop::RunUntilIdle| here. The
+ // update must happen synchronously.
+ EXPECT_EQ(initial_value + 1, delegate_observer_.type_notifications_count());
+}
+
} // namespace net
diff --git a/chromium/net/android/network_change_notifier_delegate_android.cc b/chromium/net/android/network_change_notifier_delegate_android.cc
index 7f054cc16df..d5a6a834982 100644
--- a/chromium/net/android/network_change_notifier_delegate_android.cc
+++ b/chromium/net/android/network_change_notifier_delegate_android.cc
@@ -178,7 +178,15 @@ void NetworkChangeNotifierDelegateAndroid::NotifyConnectionTypeChanged(
default_network);
}
}
- observers_->Notify(FROM_HERE, &Observer::OnConnectionTypeChanged);
+
+ // This is a synchronous notification because, during browser start-up, an
+ // initial connection-type update is generated by NetworkChangeNotifier.java.
+ // This must finish invalidating network requests before browser startup
+ // completes. If this were just a |Notify| call then tasks that invalidate
+ // active network connections would be left queued and would break any early
+ // network requests that started before they were processed.
+ observers_->NotifySynchronously(FROM_HERE,
+ &Observer::OnConnectionTypeChanged);
}
jint NetworkChangeNotifierDelegateAndroid::GetConnectionType(JNIEnv*,
diff --git a/chromium/net/android/unittest_support/AndroidManifest.xml b/chromium/net/android/unittest_support/AndroidManifest.xml
index 7f34abc3629..4cbc0b9c219 100644
--- a/chromium/net/android/unittest_support/AndroidManifest.xml
+++ b/chromium/net/android/unittest_support/AndroidManifest.xml
@@ -19,6 +19,7 @@ found in the LICENSE file.
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
+ <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
@@ -47,7 +48,7 @@ found in the LICENSE file.
</service>
</application>
- <instrumentation android:name="org.chromium.native_test.NativeTestInstrumentationTestRunner"
+ <instrumentation android:name="org.chromium.build.gtest_apk.NativeTestInstrumentationTestRunner"
android:targetPackage="org.chromium.native_test"
android:label="Instrumentation entry point for org.chromium.native_test"
chromium-junit3="true"/>