From 0e72c181c8ca139f0fcf674d8952c25582c6829e Mon Sep 17 00:00:00 2001 From: Nate Fischer Date: Tue, 30 May 2017 11:25:17 -0700 Subject: [PATCH] Add WebView#{init,shutdown}SafeBrowsing APIs This adds the APIs for the WebView#initSafeBrowsing and WebView#shutdownSafeBrowsing static methods. Implementation for these APIs landed in 60.0.3112.0 Also, this fixes an already-existing error with import order (failed Checkstyle hook). No actual change to imports. BUG: 62192626 Test: manual - built a custom app which calls methods via reflection Change-Id: I763349182443dc20cff1e7f08475290fac65c233 --- api/current.txt | 2 ++ api/system-current.txt | 4 ++++ api/test-current.txt | 2 ++ core/java/android/webkit/WebView.java | 23 ++++++++++++++++--- .../webkit/WebViewFactoryProvider.java | 12 ++++++++++ 5 files changed, 40 insertions(+), 3 deletions(-) diff --git a/api/current.txt b/api/current.txt index 46e3962d80db6..203c7f221a8ff 100644 --- a/api/current.txt +++ b/api/current.txt @@ -48823,6 +48823,7 @@ package android.webkit { method public void goBack(); method public void goBackOrForward(int); method public void goForward(); + method public static void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void invokeZoomPicker(); method public boolean isPrivateBrowsingEnabled(); method public void loadData(java.lang.String, java.lang.String, java.lang.String); @@ -48867,6 +48868,7 @@ package android.webkit { method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); method public deprecated boolean showFindDialog(java.lang.String, boolean); + method public static void shutdownSafeBrowsing(); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); diff --git a/api/system-current.txt b/api/system-current.txt index 5694c091d76df..ec3948f2421ec 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -52468,6 +52468,7 @@ package android.webkit { method public void goBack(); method public void goBackOrForward(int); method public void goForward(); + method public static void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void invokeZoomPicker(); method public boolean isPrivateBrowsingEnabled(); method public void loadData(java.lang.String, java.lang.String, java.lang.String); @@ -52512,6 +52513,7 @@ package android.webkit { method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); method public deprecated boolean showFindDialog(java.lang.String, boolean); + method public static void shutdownSafeBrowsing(); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); @@ -52699,8 +52701,10 @@ package android.webkit { method public abstract java.lang.String findAddress(java.lang.String); method public abstract void freeMemoryForTests(); method public abstract java.lang.String getDefaultUserAgent(android.content.Context); + method public abstract void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public abstract android.net.Uri[] parseFileChooserResult(int, android.content.Intent); method public abstract void setWebContentsDebuggingEnabled(boolean); + method public abstract void shutdownSafeBrowsing(); } public class WebViewFragment extends android.app.Fragment { diff --git a/api/test-current.txt b/api/test-current.txt index f6d432e275d05..87a9182a033c1 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -49222,6 +49222,7 @@ package android.webkit { method public void goBack(); method public void goBackOrForward(int); method public void goForward(); + method public static void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void invokeZoomPicker(); method public boolean isPrivateBrowsingEnabled(); method public void loadData(java.lang.String, java.lang.String, java.lang.String); @@ -49266,6 +49267,7 @@ package android.webkit { method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); method public deprecated boolean showFindDialog(java.lang.String, boolean); + method public static void shutdownSafeBrowsing(); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index ecb25fead18c5..95ffca2474188 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -31,15 +31,15 @@ import android.graphics.Paint; import android.graphics.Picture; import android.graphics.Rect; import android.graphics.drawable.Drawable; -import android.net.http.SslCertificate; import android.net.Uri; +import android.net.http.SslCertificate; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.os.StrictMode; import android.os.RemoteException; +import android.os.StrictMode; import android.print.PrintDocumentAdapter; import android.security.KeyChain; import android.util.AttributeSet; @@ -49,10 +49,10 @@ import android.view.DragEvent; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; -import android.view.ViewStructure; import android.view.ViewDebug; import android.view.ViewGroup; import android.view.ViewHierarchyEncoder; +import android.view.ViewStructure; import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; @@ -1620,6 +1620,23 @@ public class WebView extends AbsoluteLayout getFactory().getStatics().clearClientCertPreferences(onCleared); } + /** + * Starts Safe Browsing initialization. This should only be called once. + * @param context is the activity context the WebView will be used in. + * @param callback will be called with the value true if initialization is + * successful. The callback will be run on the UI thread. + */ + public static void initSafeBrowsing(Context context, ValueCallback callback) { + getFactory().getStatics().initSafeBrowsing(context, callback); + } + + /** + * Shuts down Safe Browsing. This should only be called once. + */ + public static void shutdownSafeBrowsing() { + getFactory().getStatics().shutdownSafeBrowsing(); + } + /** * Gets the WebBackForwardList for this WebView. This contains the * back/forward list for use in querying each item in the history stack. diff --git a/core/java/android/webkit/WebViewFactoryProvider.java b/core/java/android/webkit/WebViewFactoryProvider.java index 8359a102440cf..5cf48b585b16b 100644 --- a/core/java/android/webkit/WebViewFactoryProvider.java +++ b/core/java/android/webkit/WebViewFactoryProvider.java @@ -74,6 +74,18 @@ public interface WebViewFactoryProvider { * {@link android.webkit.WebChromeClient.FileChooserParams#parseResult(int, Intent)} */ Uri[] parseFileChooserResult(int resultCode, Intent intent); + + /** + * Implement the API method + * {@link android.webkit.WebView#initSafeBrowsing(Context , ValueCallback)} + */ + void initSafeBrowsing(Context context, ValueCallback callback); + + /** + * Implement the API method + * {@link android.webkit.WebView#shutdownSafeBrowsing()} + */ + void shutdownSafeBrowsing(); } Statics getStatics();