aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Fischer <ntfschr@google.com>2022-04-28 17:45:57 -0700
committerNate Fischer <ntfschr@google.com>2022-04-28 19:13:48 -0700
commit0c12f953590733cb773d8754c1f9c027eb67948e (patch)
tree2c890424a6d04fbc0efe822144a04dbff5ee6b98
parentd6d558123a01ed1b49aaca82cf7e639a96b67b2a (diff)
downloadsupport-0c12f953590733cb773d8754c1f9c027eb67948e.tar.gz
AndroidX Webkit: fix lint error using @ChecksSdkIntAtLeast
No change to logic. This adds @ChecksSdkIntAtLeast(21) to both WebViewFeatureInternal.isSupportedByWebView() and WebViewFeatureInternal.isSupportedByFramework(), since it's trivial to prove both of these can only return true on L+ devices. This resolves a TODO about a Lint issue. Bug: 159823546 Test: ./gradlew :webkit:webkit:lintDebug Change-Id: I55d88315107f000d1f6c33622d6e03045aaf8ab0
-rw-r--r--webkit/webkit/build.gradle2
-rw-r--r--webkit/webkit/lint-baseline.xml119
-rw-r--r--webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java5
-rw-r--r--webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java14
4 files changed, 24 insertions, 116 deletions
diff --git a/webkit/webkit/build.gradle b/webkit/webkit/build.gradle
index faf1695922f..6b6fd1e31b4 100644
--- a/webkit/webkit/build.gradle
+++ b/webkit/webkit/build.gradle
@@ -23,7 +23,7 @@ plugins {
}
dependencies {
- api("androidx.annotation:annotation:1.1.0")
+ api("androidx.annotation:annotation:1.2.0")
api("androidx.core:core:1.1.0")
androidTestImplementation(libs.okhttpMockwebserver)
diff --git a/webkit/webkit/lint-baseline.xml b/webkit/webkit/lint-baseline.xml
index 515af72be59..7a1290a56e5 100644
--- a/webkit/webkit/lint-baseline.xml
+++ b/webkit/webkit/lint-baseline.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<issues format="6" by="lint 7.3.0-alpha07" type="baseline" client="gradle" dependencies="false" name="AGP (7.3.0-alpha07)" variant="all" version="7.3.0-alpha07">
+<issues format="6" by="lint 7.3.0-alpha08" type="baseline" client="gradle" dependencies="false" name="AGP (7.3.0-alpha08)" variant="all" version="7.3.0-alpha08">
<issue
id="NewApi"
@@ -212,17 +212,6 @@
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `createInvocationHandlerFor`"
- errorLine1=" BoundaryInterfaceReflectionUtil.createInvocationHandlerFor("
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/internal/ServiceWorkerControllerImpl.java"
- line="96"
- column="57"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 24 (current min is 14): `android.webkit.ServiceWorkerWebSettings#setCacheMode`"
errorLine1=" getFrameworksImpl().setCacheMode(mode);"
errorLine2=" ~~~~~~~~~~~~">
@@ -564,17 +553,6 @@
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `createInvocationHandlerFor`"
- errorLine1=" BoundaryInterfaceReflectionUtil.createInvocationHandlerFor("
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/internal/WebMessagePortImpl.java"
- line="79"
- column="53"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 23 (current min is 14): `android.webkit.WebMessagePort#close`"
errorLine1=" getFrameworksImpl().close();"
errorLine2=" ~~~~~">
@@ -652,17 +630,6 @@
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `createInvocationHandlerFor`"
- errorLine1=" BoundaryInterfaceReflectionUtil.createInvocationHandlerFor("
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/internal/WebMessagePortImpl.java"
- line="112"
- column="53"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 23 (current min is 14): `android.webkit.WebMessagePort#setWebMessageCallback`"
errorLine1=" getFrameworksImpl().setWebMessageCallback(new WebMessagePort.WebMessageCallback() {"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
@@ -718,17 +685,6 @@
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `createInvocationHandlerFor`"
- errorLine1=" BoundaryInterfaceReflectionUtil.createInvocationHandlerFor("
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/internal/WebMessagePortImpl.java"
- line="133"
- column="53"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 23 (current min is 14): `android.webkit.WebResourceError#getErrorCode`"
errorLine1=" return getFrameworksImpl().getErrorCode();"
errorLine2=" ~~~~~~~~~~~~">
@@ -954,7 +910,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="165"
+ line="166"
column="21"/>
</issue>
@@ -965,7 +921,7 @@
errorLine2=" ^">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="166"
+ line="167"
column="21"/>
</issue>
@@ -976,29 +932,18 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="166"
+ line="167"
column="25"/>
</issue>
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `insertVisualStateCallback`"
- errorLine1=" getProvider(webview).insertVisualStateCallback(requestId, callback);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="174"
- column="34"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 27 (current min is 14): `android.webkit.WebView#startSafeBrowsing`"
errorLine1=" WebView.startSafeBrowsing(context, callback);"
errorLine2=" ~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="209"
+ line="210"
column="21"/>
</issue>
@@ -1009,7 +954,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="259"
+ line="260"
column="21"/>
</issue>
@@ -1020,7 +965,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="322"
+ line="323"
column="28"/>
</issue>
@@ -1031,7 +976,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="447"
+ line="448"
column="61"/>
</issue>
@@ -1042,7 +987,7 @@
errorLine2=" ~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="486"
+ line="487"
column="21"/>
</issue>
@@ -1053,23 +998,12 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="487"
+ line="488"
column="40"/>
</issue>
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `postWebMessage`"
- errorLine1=" getProvider(webview).postWebMessage(message, targetOrigin);"
- errorLine2=" ~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="490"
- column="34"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 26 (current min is 14): `android.webkit.WebView#getWebViewClient`"
errorLine1=" return webview.getWebViewClient();"
errorLine2=" ~~~~~~~~~~~~~~~~">
@@ -1125,17 +1059,6 @@
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `setWebViewRenderProcessClient`"
- errorLine1=" getProvider(webview).setWebViewRenderProcessClient("
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="871"
- column="34"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 29 (current min is 14): `android.webkit.WebView#setWebViewRenderProcessClient`"
errorLine1=" webview.setWebViewRenderProcessClient(webViewRenderProcessClient != null"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -1158,17 +1081,6 @@
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `setWebViewRenderProcessClient`"
- errorLine1=" getProvider(webview).setWebViewRenderProcessClient(null, webViewRenderProcessClient);"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="909"
- column="34"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 29 (current min is 14): `android.webkit.WebView#getWebViewRenderProcessClient`"
errorLine1=" webview.getWebViewRenderProcessClient();"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
@@ -1191,17 +1103,6 @@
<issue
id="NewApi"
- message="Call requires API level 19 (current min is 14): `getWebViewRenderProcessClient`"
- errorLine1=" return getProvider(webview).getWebViewRenderProcessClient();"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="src/main/java/androidx/webkit/WebViewCompat.java"
- line="943"
- column="41"/>
- </issue>
-
- <issue
- id="NewApi"
message="Call requires API level 23 (current min is 14): `android.os.Looper#isCurrentThread`"
errorLine1=" value -> startSafeBrowsingFuture.set(Looper.getMainLooper().isCurrentThread()));"
errorLine2=" ~~~~~~~~~~~~~~~">
diff --git a/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java b/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
index 8073dfab9b0..b06109ca4e5 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java
@@ -649,11 +649,6 @@ public class WebViewCompat {
enforcement = "androidx.webkit.WebViewFeature#isFeatureSupported")
public static void addWebMessageListener(@NonNull WebView webView, @NonNull String jsObjectName,
@NonNull Set<String> allowedOriginRules, @NonNull WebMessageListener listener) {
- // TODO(b/159823546): Remove the SDK_INT check and put it into
- // WebViewFeatureInternal.isSupportedByWebView() after the bug is resolved.
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
- throw new AssertionError("Should be on Lollipop and above.");
- }
final WebViewFeatureInternal feature = WebViewFeatureInternal.WEB_MESSAGE_LISTENER;
if (feature.isSupportedByWebView()) {
getProvider(webView).addWebMessageListener(
diff --git a/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java b/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java
index 6d376f032f4..06a581eec48 100644
--- a/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java
+++ b/webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java
@@ -26,6 +26,7 @@ import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
+import androidx.annotation.ChecksSdkIntAtLeast;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.webkit.ProxyConfig;
@@ -507,8 +508,14 @@ public enum WebViewFeatureInternal implements ConditionallySupportedFeature {
/**
* Return whether this {@link WebViewFeatureInternal} is supported by the framework of the
- * current device.
+ * current device. By design, this library does not include any APIs added to the framework in
+ * Android L or earlier, so if this returns true it implies L or above.
+ *
+ * <p>By design, this library does not provide compat versions of any APIs added to the platform
+ * in Android L or earlier, so all APIs have mOsVersion strictly greater than LOLLIPOP. If this
+ * returns true, then that implies we're on Android L or above.
*/
+ @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.LOLLIPOP)
public boolean isSupportedByFramework() {
if (mOsVersion == NOT_SUPPORTED_BY_FRAMEWORK) {
return false;
@@ -518,7 +525,12 @@ public enum WebViewFeatureInternal implements ConditionallySupportedFeature {
/**
* Return whether this {@link WebViewFeatureInternal} is supported by the current WebView APK.
+ *
+ * <p>WebView updates were only supported starting in Android L and the preinstalled WebView in
+ * earlier OS versions is not compatible with this library. If this returns true, then that
+ * implies we're on Android L or above.
*/
+ @ChecksSdkIntAtLeast(api = Build.VERSION_CODES.LOLLIPOP)
public boolean isSupportedByWebView() {
return BoundaryInterfaceReflectionUtil.containsFeature(
LAZY_HOLDER.WEBVIEW_APK_FEATURES, mInternalFeatureValue);