diff options
author | Nate Fischer <ntfschr@google.com> | 2022-04-28 17:45:57 -0700 |
---|---|---|
committer | Nate Fischer <ntfschr@google.com> | 2022-04-28 19:13:48 -0700 |
commit | 0c12f953590733cb773d8754c1f9c027eb67948e (patch) | |
tree | 2c890424a6d04fbc0efe822144a04dbff5ee6b98 | |
parent | d6d558123a01ed1b49aaca82cf7e639a96b67b2a (diff) | |
download | support-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.gradle | 2 | ||||
-rw-r--r-- | webkit/webkit/lint-baseline.xml | 119 | ||||
-rw-r--r-- | webkit/webkit/src/main/java/androidx/webkit/WebViewCompat.java | 5 | ||||
-rw-r--r-- | webkit/webkit/src/main/java/androidx/webkit/internal/WebViewFeatureInternal.java | 14 |
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); |