Break out webkit tests by targetSdk
Move all existing androidx.webkit tests into a separate library module
configured with product flavours to allow dark-mode tests to run under
their intended targetSdk version.
The CL re-enables the previously disabled tests that required targetSdk
<= 32 and permanently removes a broken test that conflicts with web
standards (b/202546063).
All other tests for androidx.webkit have been moved as well in order to
allow continued use of shared test utilities.
Test: webkit:integration-tests:targesdk-tests:connectedAndroidTest
Fixes: 254572377
Change-Id: I8256255e0672b3e200022e374f78fdbe98965614
diff --git a/settings.gradle b/settings.gradle
index 242ed5c..ceba832 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1074,6 +1074,7 @@
includeProject(":wear:watchface:watchface-style", [BuildType.MAIN, BuildType.WEAR])
includeProject(":wear:watchface:watchface-style-old-api-test-service", "wear/watchface/watchface-style/old-api-test-service", [BuildType.MAIN, BuildType.WEAR])
includeProject(":wear:watchface:watchface-style-old-api-test-stub", "wear/watchface/watchface-style/old-api-test-stub", [BuildType.MAIN, BuildType.WEAR])
+includeProject(":webkit:integration-tests:instrumentation", [BuildType.MAIN])
includeProject(":webkit:integration-tests:testapp", [BuildType.MAIN])
includeProject(":webkit:webkit", [BuildType.MAIN])
includeProject(":window:window", [BuildType.MAIN, BuildType.COMPOSE, BuildType.FLAN, BuildType.WINDOW])
diff --git a/webkit/README.md b/webkit/README.md
index dedcbe1..7b564c0 100644
--- a/webkit/README.md
+++ b/webkit/README.md
@@ -24,16 +24,23 @@
```sh
cd frameworks/support/
# Build the library/compile changes
-./gradlew :webkit:assembleDebug
+./gradlew :webkit:webkit:assembleDebug
# Run integration tests with the WebView installed on the device
-./gradlew :webkit:connectedAndroidTest
+./gradlew :webkit:integration-tests:instrumentation:connectedAndroidTest
# Update API files (only necessary if you changed public APIs)
-./gradlew :webkit:updateApi
+./gradlew :webkit:webkit:updateApi
```
For more a detailed developer guide, Googlers should read
http://go/wvsl-contribute.
+## Instrumentation tests
+The instrumentation tests for `androidx.webkit` are located in the
+`:webkit:integration-tests:instrumentation` project. The tests have been split out into a separate
+project to facilitate testing against different targetSdk versions.
+
+Any new tests should be added to that project. To run the test, use the command above.
+
## API demo code
We also maintain a demo app ([demo
diff --git a/webkit/integration-tests/instrumentation/README.md b/webkit/integration-tests/instrumentation/README.md
new file mode 100644
index 0000000..fc40d86
--- /dev/null
+++ b/webkit/integration-tests/instrumentation/README.md
@@ -0,0 +1,27 @@
+# Webkit library instrumentation tests
+
+This project contains the instrumentation tests for the [webkit](/webkit/webkit) library.
+
+The tests are located in a separate module to allow the use of multiple
+[product flavors](https://developer.android.com/build/build-variants#product-flavors)
+to build and run the tests against different targetSdk versions.
+
+This is necessary in order to test dark mode functionality, which changes depending on `targetSdk`
+between `32` and `33`.
+
+
+## Source sets
+Tests that do not depend on a particular `targetSdk` version should be added to the default `androidTest` source set.
+
+Tests that require a particular `targetSdk` version should be added to the appropriate
+[source set](https://developer.android.com/build/build-variants#sourcesets).
+
+## Running tests from Android Studio
+Tests can be run as normal in Android Studio. You must use the "Build Variants" menu to select
+the product flavor to run. Use one of
+
+* `targetSdkLatestDebug`
+* `targetSdk32Debug`
+
+You must select the corresponding build variant in order to run tests located outside the shared
+source set.
\ No newline at end of file
diff --git a/webkit/integration-tests/instrumentation/build.gradle b/webkit/integration-tests/instrumentation/build.gradle
new file mode 100644
index 0000000..3c0f930
--- /dev/null
+++ b/webkit/integration-tests/instrumentation/build.gradle
@@ -0,0 +1,50 @@
+import androidx.build.Publish
+import androidx.build.LibraryType
+
+plugins {
+ id("AndroidXPlugin")
+ id('com.android.library')
+}
+android {
+ namespace 'androidx.webkit.instrumentation'
+
+ defaultConfig {
+ multiDexEnabled = true
+ targetSdkVersion 33 // This should be the latest SDK version at all times.
+ }
+ flavorDimensions = ["targetSdk"]
+
+ productFlavors {
+ targetSdk32 {
+ dimension "targetSdk"
+ targetSdkVersion 32
+ }
+ targetSdkLatest {
+ dimension "targetSdk"
+ // uses default config
+ }
+ }
+}
+dependencies {
+ androidTestImplementation(project(":webkit:webkit"))
+
+ androidTestImplementation(libs.okhttpMockwebserver)
+ androidTestImplementation(libs.testExtJunit)
+ androidTestImplementation(libs.testCore)
+ androidTestImplementation(libs.testRunner)
+ androidTestImplementation(libs.testRules)
+ androidTestImplementation("androidx.appcompat:appcompat:1.1.0")
+ androidTestImplementation("androidx.concurrent:concurrent-futures:1.0.0")
+ androidTestImplementation(libs.mockitoCore, excludes.bytebuddy) // DexMaker has it"s own MockMaker
+ androidTestImplementation(libs.dexmakerMockito, excludes.bytebuddy)
+ androidTestImplementation(libs.multidex)
+
+ // Hamcrest matchers:
+ androidTestImplementation(libs.bundles.espressoContrib, excludes.espresso)
+}
+
+androidx {
+ type = type = LibraryType.INTERNAL_TEST_LIBRARY
+ publish = Publish.NONE // This library exists for CI-testing only - do not publish.
+ additionalDeviceTestApkKeys.add("chrome")
+}
diff --git a/webkit/webkit/src/androidTest/AndroidManifest.xml b/webkit/integration-tests/instrumentation/src/androidTest/AndroidManifest.xml
similarity index 86%
rename from webkit/webkit/src/androidTest/AndroidManifest.xml
rename to webkit/integration-tests/instrumentation/src/androidTest/AndroidManifest.xml
index 86da6b2..a1eefc5 100644
--- a/webkit/webkit/src/androidTest/AndroidManifest.xml
+++ b/webkit/integration-tests/instrumentation/src/androidTest/AndroidManifest.xml
@@ -22,13 +22,13 @@
http://localhost URLs (and P defaults to blocking cleartext traffic).
-->
<application android:label="AndroidX Webkit Unittests"
- android:hardwareAccelerated="true"
- android:usesCleartextTraffic="true">
+ android:hardwareAccelerated="true"
+ android:usesCleartextTraffic="true">
<activity android:name="androidx.webkit.WebViewTestActivity"/>
<activity android:name="androidx.webkit.WebViewDarkThemeTestActivity"
- android:theme="@style/Theme.AppCompat"/>
+ android:theme="@style/Theme.AppCompat"/>
<activity android:name="androidx.webkit.WebViewLightThemeTestActivity"
- android:theme="@style/Theme.AppCompat.Light"/>
+ android:theme="@style/Theme.AppCompat.Light"/>
</application>
-</manifest>
+</manifest>
\ No newline at end of file
diff --git a/webkit/webkit/src/androidTest/assets/star.svg b/webkit/integration-tests/instrumentation/src/androidTest/assets/star.svg
similarity index 100%
rename from webkit/webkit/src/androidTest/assets/star.svg
rename to webkit/integration-tests/instrumentation/src/androidTest/assets/star.svg
diff --git a/webkit/webkit/src/androidTest/assets/star.svgz b/webkit/integration-tests/instrumentation/src/androidTest/assets/star.svgz
similarity index 100%
rename from webkit/webkit/src/androidTest/assets/star.svgz
rename to webkit/integration-tests/instrumentation/src/androidTest/assets/star.svgz
Binary files differ
diff --git a/webkit/webkit/src/androidTest/assets/text/test.txt b/webkit/integration-tests/instrumentation/src/androidTest/assets/text/test.txt
similarity index 100%
rename from webkit/webkit/src/androidTest/assets/text/test.txt
rename to webkit/integration-tests/instrumentation/src/androidTest/assets/text/test.txt
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/BoundaryInterfaceTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/BoundaryInterfaceTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/BoundaryInterfaceTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/BoundaryInterfaceTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/CookieManagerCompatTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/CookieManagerCompatTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/CookieManagerCompatTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/CookieManagerCompatTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/IncompatibilityTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/IncompatibilityTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/IncompatibilityTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/IncompatibilityTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/PollingCheck.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/PollingCheck.java
similarity index 94%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/PollingCheck.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/PollingCheck.java
index f7098fb..9cf05c9 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/PollingCheck.java
+++ b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/PollingCheck.java
@@ -16,6 +16,8 @@
package androidx.webkit;
+import android.annotation.SuppressLint;
+
import androidx.annotation.NonNull;
import org.junit.Assert;
@@ -40,6 +42,7 @@
protected abstract boolean check();
+ @SuppressLint("BanThreadSleep")
public void run() {
if (check()) {
return;
@@ -63,6 +66,7 @@
Assert.fail("unexpected timeout");
}
+ @SuppressLint("BanThreadSleep")
public static void check(@NonNull CharSequence message, long timeout,
@NonNull Callable<Boolean> condition)
throws Exception {
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/PostMessageTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/PostMessageTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/PostMessageTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/PostMessageTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/ProxyControllerTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/ProxyControllerTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/ProxyControllerTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/ProxyControllerTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/ServiceWorkerClientCompatTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/ServiceWorkerClientCompatTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/ServiceWorkerClientCompatTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/ServiceWorkerClientCompatTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/ServiceWorkerWebSettingsCompatTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/ServiceWorkerWebSettingsCompatTest.java
similarity index 97%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/ServiceWorkerWebSettingsCompatTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/ServiceWorkerWebSettingsCompatTest.java
index e2c7976..e7f9feb 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/ServiceWorkerWebSettingsCompatTest.java
+++ b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/ServiceWorkerWebSettingsCompatTest.java
@@ -18,6 +18,7 @@
import static androidx.webkit.WebViewFeature.isFeatureSupported;
+import android.annotation.SuppressLint;
import android.os.Build;
import android.os.SystemClock;
import android.webkit.WebSettings;
@@ -48,6 +49,7 @@
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP)
public class ServiceWorkerWebSettingsCompatTest {
+ public static final String TEST_APK_NAME = "androidx.webkit.instrumentation.test";
private ServiceWorkerWebSettingsCompat mSettings;
private static final long POLL_TIMEOUT_DURATION_MS = 5000;
@@ -263,7 +265,7 @@
request = server.takeRequest(5, TimeUnit.SECONDS);
} while (request != null && !TEXT_CONTENT_PATH.equals(request.getPath()));
Assert.assertNotNull("Test timed out while waiting for expected request", request);
- Assert.assertEquals("androidx.webkit.test", request.getHeader("X-Requested-With"));
+ Assert.assertEquals(TEST_APK_NAME, request.getHeader("X-Requested-With"));
webViewOnUiThread.setCleanupTask(() -> waitForServiceWorkerDone(webViewOnUiThread));
}
}
@@ -311,6 +313,7 @@
* for other tests.
* See b/230078824.
*/
+ @SuppressLint("BanThreadSleep")
private void waitForServiceWorkerDone(final WebViewOnUiThread webViewOnUiThread) {
long timeout = SystemClock.uptimeMillis() + POLL_TIMEOUT_DURATION_MS;
while (SystemClock.uptimeMillis() < timeout
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/TracingControllerTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/TracingControllerTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/TracingControllerTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/TracingControllerTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebMessageCompatUnitTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebMessageCompatUnitTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebMessageCompatUnitTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebMessageCompatUnitTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkModeTestBase.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkModeTestBase.java
similarity index 94%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkModeTestBase.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkModeTestBase.java
index be61919..1b50075 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkModeTestBase.java
+++ b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkModeTestBase.java
@@ -18,7 +18,6 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
-import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
@@ -44,7 +43,7 @@
* Base class for dark mode related test.
*/
@RequiresApi(Build.VERSION_CODES.KITKAT)
-public class WebSettingsCompatDarkModeTestBase<T extends Activity> {
+public class WebSettingsCompatDarkModeTestBase<T extends WebViewTestActivity> {
// The size of WebViews to use in the app.
private static final int WEBVIEW_SIZE = 128;
@@ -76,17 +75,18 @@
// representation.
@SuppressWarnings("deprecation")
@Rule
- public final TargetSdkActivityTestRule<T> mActivityRule;
+ public final androidx.test.rule.ActivityTestRule<T> mActivityRule;
- public WebSettingsCompatDarkModeTestBase(@NonNull Class<T> activityClass, int targetSdk) {
- mActivityRule = new TargetSdkActivityTestRule<T>(activityClass,
- targetSdk);
+ /** @noinspection deprecation*/
+ @SuppressWarnings("deprecation")
+ public WebSettingsCompatDarkModeTestBase(@NonNull Class<T> activityClass) {
+ mActivityRule = new androidx.test.rule.ActivityTestRule<>(activityClass);
}
@Before
public void setUp() {
mWebViewOnUiThread = new WebViewOnUiThread(
- ((WebViewTestActivity) mActivityRule.getActivity()).getWebView());
+ mActivityRule.getActivity().getWebView());
mWebViewOnUiThread.getSettings().setJavaScriptEnabled(true);
}
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebSettingsCompatTest.java
similarity index 97%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebSettingsCompatTest.java
index b283da8..f0b21a0 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatTest.java
+++ b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebSettingsCompatTest.java
@@ -46,6 +46,7 @@
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP)
public class WebSettingsCompatTest {
+ public static final String TEST_APK_NAME = "androidx.webkit.instrumentation.test";
WebViewOnUiThread mWebViewOnUiThread;
@Before
@@ -180,7 +181,7 @@
mWebViewOnUiThread.loadUrl(requestUrl);
RecordedRequest recordedRequest = mockWebServer.takeRequest();
String headerValue = recordedRequest.getHeader("X-Requested-With");
- Assert.assertEquals("androidx.webkit.test", headerValue);
+ Assert.assertEquals(TEST_APK_NAME, headerValue);
}
}
}
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewApkTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewApkTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewApkTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewApkTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewAssetLoaderTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewAssetLoaderTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewAssetLoaderTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewAssetLoaderTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewClientCompatTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewClientCompatTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewClientCompatTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewClientCompatTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewCompatTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewCompatTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewCompatTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewCompatTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewDarkThemeTestActivity.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewDarkThemeTestActivity.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewDarkThemeTestActivity.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewDarkThemeTestActivity.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewDocumentStartJavaScriptTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewDocumentStartJavaScriptTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewDocumentStartJavaScriptTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewDocumentStartJavaScriptTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewLightThemeTestActivity.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewLightThemeTestActivity.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewLightThemeTestActivity.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewLightThemeTestActivity.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewOnUiThread.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewOnUiThread.java
similarity index 98%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewOnUiThread.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewOnUiThread.java
index 69f6cd5..d22e732 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewOnUiThread.java
+++ b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewOnUiThread.java
@@ -271,6 +271,9 @@
() -> WebViewCompat.removeWebMessageListener(mWebView, jsObjectName));
}
+ /**
+ * @deprecated unreleased API to be removed
+ */
@NonNull
@Deprecated
@SuppressWarnings("deprecation") // To be removed in 1.9.0
@@ -290,7 +293,7 @@
* Test fails if the load timeout elapses.
* @param url The URL to load.
*/
- void loadUrlAndWaitForCompletion(final String url) {
+ public void loadUrlAndWaitForCompletion(@NonNull final String url) {
callAndWait(() -> mWebView.loadUrl(url));
}
@@ -393,7 +396,8 @@
return WebkitUtils.onMainThreadSync(() -> WebViewCompat.getWebChromeClient(webView));
}
- WebView getWebViewOnCurrentThread() {
+ @NonNull
+ public WebView getWebViewOnCurrentThread() {
return mWebView;
}
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessClientTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewRenderProcessClientTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessClientTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewRenderProcessClientTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewRenderProcessTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewTestActivity.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewTestActivity.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewTestActivity.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewTestActivity.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewVersion.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewVersion.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewVersion.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewVersion.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewWebMessageCompatTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageListenerTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewWebMessageListenerTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebViewWebMessageListenerTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebViewWebMessageListenerTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebkitUtils.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebkitUtils.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebkitUtils.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/WebkitUtils.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/internal/AssetHelperTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/internal/AssetHelperTest.java
similarity index 100%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/internal/AssetHelperTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/internal/AssetHelperTest.java
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/internal/WebViewFeatureInternalTest.java b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/internal/WebViewFeatureInternalTest.java
similarity index 97%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/internal/WebViewFeatureInternalTest.java
rename to webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/internal/WebViewFeatureInternalTest.java
index 3a1ba43..a406145 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/internal/WebViewFeatureInternalTest.java
+++ b/webkit/integration-tests/instrumentation/src/androidTest/java/androidx/webkit/internal/WebViewFeatureInternalTest.java
@@ -22,8 +22,6 @@
import androidx.annotation.NonNull;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
-import androidx.webkit.internal.ConditionallySupportedFeature;
-import androidx.webkit.internal.WebViewFeatureInternal;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/webkit/webkit/src/androidTest/res/raw/test.txt b/webkit/integration-tests/instrumentation/src/androidTest/res/raw/test.txt
similarity index 100%
rename from webkit/webkit/src/androidTest/res/raw/test.txt
rename to webkit/integration-tests/instrumentation/src/androidTest/res/raw/test.txt
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatForceDarkTest.java b/webkit/integration-tests/instrumentation/src/androidTestTargetSdk32/java/androidx/webkit/WebSettingsCompatForceDarkTest.java
similarity index 74%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatForceDarkTest.java
rename to webkit/integration-tests/instrumentation/src/androidTestTargetSdk32/java/androidx/webkit/WebSettingsCompatForceDarkTest.java
index e78dafc..f7085fe 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatForceDarkTest.java
+++ b/webkit/integration-tests/instrumentation/src/androidTestTargetSdk32/java/androidx/webkit/WebSettingsCompatForceDarkTest.java
@@ -28,20 +28,21 @@
import androidx.test.filters.MediumTest;
import androidx.test.filters.SdkSuppress;
-import org.junit.Ignore;
+import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
+/**
+ * Instrumentation tests for pre-33 dark mode behavior.
+ */
@MediumTest
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = VERSION_CODES.LOLLIPOP)
public class WebSettingsCompatForceDarkTest extends
WebSettingsCompatDarkModeTestBase<WebViewLightThemeTestActivity> {
public WebSettingsCompatForceDarkTest() {
- // Set targetSdkVersion to the max version the force dark API works on.
- // TODO(http://b/214741472): Use VERSION_CODES.S_V2 once Android X supports it.
- super(WebViewLightThemeTestActivity.class, VERSION_CODES.S);
+ super(WebViewLightThemeTestActivity.class);
}
/**
@@ -54,7 +55,7 @@
public void testForceDark_default() throws Throwable {
WebkitUtils.checkFeature(WebViewFeature.FORCE_DARK);
- assertEquals("The default force dark state should be AUTO",
+ Assert.assertEquals("The default force dark state should be AUTO",
WebSettingsCompat.FORCE_DARK_AUTO,
WebSettingsCompat.getForceDark(getSettingsOnUiThread()));
}
@@ -65,7 +66,6 @@
* should be reflected in that test as necessary. See http://go/modifying-webview-cts.
*/
@SuppressWarnings("deprecation")
- @Ignore("Disabled due to b/230480958")
@Test
public void testForceDark_rendersDark() throws Throwable {
WebkitUtils.checkFeature(WebViewFeature.FORCE_DARK);
@@ -100,7 +100,6 @@
* i.e. web contents are always darkened by a user agent.
*/
@SuppressWarnings("deprecation")
- @Ignore("Disabled due to b/240432254")
@Test
public void testForceDark_userAgentDarkeningOnly() {
WebkitUtils.checkFeature(WebViewFeature.FORCE_DARK);
@@ -133,8 +132,6 @@
* i.e. web contents are darkened only by web theme.
*/
@SuppressWarnings("deprecation")
- @Ignore("Disabled due to b/260586583")
- @SdkSuppress(maxSdkVersion = 32) // b/254572377
@Test
public void testForceDark_webThemeDarkeningOnly() {
WebkitUtils.checkFeature(WebViewFeature.FORCE_DARK);
@@ -161,39 +158,4 @@
assertThat("Bitmap colour should be green", getWebPageColor(), isGreen());
assertTrue(prefersDarkTheme());
}
-
- /**
- * Test to exercise PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING option,
- * i.e. web contents are darkened by a user agent if there is no dark web theme.
- */
- @SuppressWarnings("deprecation")
- @Test
- @Ignore("Disabled due to b/202546063")
- public void testForceDark_preferWebThemeOverUADarkening() {
- WebkitUtils.checkFeature(WebViewFeature.FORCE_DARK);
- WebkitUtils.checkFeature(WebViewFeature.FORCE_DARK_STRATEGY);
- WebkitUtils.checkFeature(WebViewFeature.OFF_SCREEN_PRERASTER);
- setWebViewSize();
-
- getWebViewOnUiThread().loadUrlAndWaitForCompletion("about:blank");
-
- WebSettingsCompat.setForceDark(
- getSettingsOnUiThread(), WebSettingsCompat.FORCE_DARK_ON);
- WebSettingsCompat.setForceDarkStrategy(getSettingsOnUiThread(),
- WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING);
-
- getWebViewOnUiThread().loadUrlAndWaitForCompletion("about:blank");
- // Loading a page without dark-theme support should result in a dark background as
- // web page is darken by a user agent
- assertTrue("Bitmap colour should be dark",
- ColorUtils.calculateLuminance(getWebPageColor()) < 0.5f);
- assertFalse(prefersDarkTheme());
-
- // Loading a page with dark-theme support should result in a green background (as
- // specified in media-query)
- getWebViewOnUiThread().loadDataAndWaitForCompletion(mDarkThemeSupport, "text/html",
- "base64");
- assertThat("Bitmap colour should be green", getWebPageColor(), isGreen());
- assertTrue(prefersDarkTheme());
- }
}
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkThemeTest.java b/webkit/integration-tests/instrumentation/src/androidTestTargetSdkLatest/java/androidx/webkit/WebSettingsCompatDarkThemeTest.java
similarity index 91%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkThemeTest.java
rename to webkit/integration-tests/instrumentation/src/androidTestTargetSdkLatest/java/androidx/webkit/WebSettingsCompatDarkThemeTest.java
index 48840fe..2e7f311 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatDarkThemeTest.java
+++ b/webkit/integration-tests/instrumentation/src/androidTestTargetSdkLatest/java/androidx/webkit/WebSettingsCompatDarkThemeTest.java
@@ -30,18 +30,16 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-
+/**
+ * Instrumentation tests for dark mode on targetSdk >= 33.
+ */
@MediumTest
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP)
public class WebSettingsCompatDarkThemeTest extends
WebSettingsCompatDarkModeTestBase<WebViewDarkThemeTestActivity> {
public WebSettingsCompatDarkThemeTest() {
- // targetSdkVersion to T, it is min version the algorithmic darkening works.
- // VERSION_CODES.TIRAMISU can't be compiled, follows the pattern in
- // core/core/src/main/java/androidx/core/os/BuildCompat.java,
- // uses 33 instead of VERSION_CODES.TIRAMISU
- super(WebViewDarkThemeTestActivity.class, 33);
+ super(WebViewDarkThemeTestActivity.class);
}
/**
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatLightThemeTest.java b/webkit/integration-tests/instrumentation/src/androidTestTargetSdkLatest/java/androidx/webkit/WebSettingsCompatLightThemeTest.java
similarity index 95%
rename from webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatLightThemeTest.java
rename to webkit/integration-tests/instrumentation/src/androidTestTargetSdkLatest/java/androidx/webkit/WebSettingsCompatLightThemeTest.java
index d16d15c..68ae3ff 100644
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/WebSettingsCompatLightThemeTest.java
+++ b/webkit/integration-tests/instrumentation/src/androidTestTargetSdkLatest/java/androidx/webkit/WebSettingsCompatLightThemeTest.java
@@ -29,16 +29,16 @@
import org.junit.Test;
import org.junit.runner.RunWith;
-
+/**
+ * Instrumentation tests for light mode on targetSdk >= 33.
+ */
@MediumTest
@RunWith(AndroidJUnit4.class)
@SdkSuppress(minSdkVersion = Build.VERSION_CODES.LOLLIPOP)
public class WebSettingsCompatLightThemeTest extends
WebSettingsCompatDarkModeTestBase<WebViewLightThemeTestActivity> {
public WebSettingsCompatLightThemeTest() {
- // targetSdkVersion to T, it is min version the algorithmic darkening works.
- // TODO(http://b/214741472): Use VERSION_CODES.TIRAMISU once available.
- super(WebViewLightThemeTestActivity.class, 33);
+ super(WebViewLightThemeTestActivity.class);
}
/**
diff --git a/webkit/webkit/src/androidTest/java/androidx/webkit/TargetSdkActivityTestRule.java b/webkit/webkit/src/androidTest/java/androidx/webkit/TargetSdkActivityTestRule.java
deleted file mode 100644
index 2059802..0000000
--- a/webkit/webkit/src/androidTest/java/androidx/webkit/TargetSdkActivityTestRule.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.webkit;
-
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-
-import androidx.annotation.NonNull;
-import androidx.test.platform.app.InstrumentationRegistry;
-
-/**
- * This class is used to override the default targetSdkVersion value in ApplicationInfo.
- */
-@SuppressWarnings("deprecation")
-public class TargetSdkActivityTestRule<T extends Activity> extends
- androidx.test.rule.ActivityTestRule<T> {
- private int mTargetSdk;
- private Context mAppContext;
-
- public TargetSdkActivityTestRule(@NonNull Class<T> activityClass, int targetSdk) {
- super(activityClass);
- mTargetSdk = targetSdk;
- }
-
- @Override
- protected void beforeActivityLaunched() {
- try {
- runOnUiThread(() -> {
- mAppContext = spy(
- InstrumentationRegistry.getInstrumentation().getTargetContext()
- .getApplicationContext());
- ApplicationInfo appInfo = mAppContext.getApplicationInfo();
- appInfo.targetSdkVersion = mTargetSdk;
- when(mAppContext.getApplicationInfo()).thenReturn(appInfo);
- }
- );
- } catch (Throwable throwable) {
- throw new RuntimeException(throwable);
- }
- }
-}