diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-09-01 11:08:40 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-10-01 12:16:21 +0000 |
commit | 03c549e0392f92c02536d3f86d5e1d8dfa3435ac (patch) | |
tree | fe49d170a929b34ba82cd10db1a0bd8e3760fa4b /chromium/net/android | |
parent | 5d013f5804a0d91fcf6c626b2d6fb6eca5c845b0 (diff) | |
download | qtwebengine-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')
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"/> |