From c7edfb02bd47bebfa74b4091e724b7ef13a8f10c Mon Sep 17 00:00:00 2001 From: Nate Fischer Date: Fri, 23 Sep 2016 15:59:21 -0700 Subject: [PATCH] Deprecate WebView#{get,set}HttpAuthUsernamePassword Deprecate these methods and move them to WebViewDatabase. BUG: 31318603 Test: N/A Change-Id: Ie4613e8de9c6120fa1d21263b15ef2467c6ccdef --- api/current.txt | 6 +- api/system-current.txt | 6 +- api/test-current.txt | 6 +- core/java/android/webkit/WebView.java | 29 ++-------- core/java/android/webkit/WebViewDatabase.java | 56 +++++++++++++++++-- 5 files changed, 68 insertions(+), 35 deletions(-) diff --git a/api/current.txt b/api/current.txt index 2bd9060aacd3a..38138786b432c 100644 --- a/api/current.txt +++ b/api/current.txt @@ -45816,7 +45816,7 @@ package android.webkit { method public int getContentHeight(); method public android.graphics.Bitmap getFavicon(); method public android.webkit.WebView.HitTestResult getHitTestResult(); - method public java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); + method public deprecated java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); method public java.lang.String getOriginalUrl(); method public int getProgress(); method public deprecated float getScale(); @@ -45859,7 +45859,7 @@ package android.webkit { method public void setDownloadListener(android.webkit.DownloadListener); method public void setFindListener(android.webkit.WebView.FindListener); method public deprecated void setHorizontalScrollbarOverlay(boolean); - method public void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); + method public deprecated void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); method public void setInitialScale(int); method public deprecated void setMapTrackballToArrowKeys(boolean); method public void setNetworkAvailable(boolean); @@ -45957,10 +45957,12 @@ package android.webkit { method public abstract void clearFormData(); method public abstract void clearHttpAuthUsernamePassword(); method public abstract deprecated void clearUsernamePassword(); + method public abstract java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); method public static android.webkit.WebViewDatabase getInstance(android.content.Context); method public abstract boolean hasFormData(); method public abstract boolean hasHttpAuthUsernamePassword(); method public abstract deprecated boolean hasUsernamePassword(); + method public abstract void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); } public class WebViewFragment extends android.app.Fragment { diff --git a/api/system-current.txt b/api/system-current.txt index dd7fe3f20eaa6..cf6248c91958c 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -49083,7 +49083,7 @@ package android.webkit { method public int getContentHeight(); method public android.graphics.Bitmap getFavicon(); method public android.webkit.WebView.HitTestResult getHitTestResult(); - method public java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); + method public deprecated java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); method public java.lang.String getOriginalUrl(); method public int getProgress(); method public deprecated float getScale(); @@ -49127,7 +49127,7 @@ package android.webkit { method public void setDownloadListener(android.webkit.DownloadListener); method public void setFindListener(android.webkit.WebView.FindListener); method public deprecated void setHorizontalScrollbarOverlay(boolean); - method public void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); + method public deprecated void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); method public void setInitialScale(int); method public deprecated void setMapTrackballToArrowKeys(boolean); method public void setNetworkAvailable(boolean); @@ -49256,10 +49256,12 @@ package android.webkit { method public abstract void clearFormData(); method public abstract void clearHttpAuthUsernamePassword(); method public abstract deprecated void clearUsernamePassword(); + method public abstract java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); method public static android.webkit.WebViewDatabase getInstance(android.content.Context); method public abstract boolean hasFormData(); method public abstract boolean hasHttpAuthUsernamePassword(); method public abstract deprecated boolean hasUsernamePassword(); + method public abstract void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); } public final class WebViewDelegate { diff --git a/api/test-current.txt b/api/test-current.txt index 4f42da2568e7a..ad93a16dc0414 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -45899,7 +45899,7 @@ package android.webkit { method public int getContentHeight(); method public android.graphics.Bitmap getFavicon(); method public android.webkit.WebView.HitTestResult getHitTestResult(); - method public java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); + method public deprecated java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); method public java.lang.String getOriginalUrl(); method public int getProgress(); method public deprecated float getScale(); @@ -45942,7 +45942,7 @@ package android.webkit { method public void setDownloadListener(android.webkit.DownloadListener); method public void setFindListener(android.webkit.WebView.FindListener); method public deprecated void setHorizontalScrollbarOverlay(boolean); - method public void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); + method public deprecated void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); method public void setInitialScale(int); method public deprecated void setMapTrackballToArrowKeys(boolean); method public void setNetworkAvailable(boolean); @@ -46040,10 +46040,12 @@ package android.webkit { method public abstract void clearFormData(); method public abstract void clearHttpAuthUsernamePassword(); method public abstract deprecated void clearUsernamePassword(); + method public abstract java.lang.String[] getHttpAuthUsernamePassword(java.lang.String, java.lang.String); method public static android.webkit.WebViewDatabase getInstance(android.content.Context); method public abstract boolean hasFormData(); method public abstract boolean hasHttpAuthUsernamePassword(); method public abstract deprecated boolean hasUsernamePassword(); + method public abstract void setHttpAuthUsernamePassword(java.lang.String, java.lang.String, java.lang.String, java.lang.String); } public class WebViewFragment extends android.app.Fragment { diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 92ba408022dee..4b64ad9422732 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -743,33 +743,14 @@ public class WebView extends AbsoluteLayout /** * Stores HTTP authentication credentials for a given host and realm to the {@link WebViewDatabase} * instance. - *

- * To use HTTP authentication, the embedder application has to implement - * {@link WebViewClient#onReceivedHttpAuthRequest}, and call {@link HttpAuthHandler#proceed} - * with the correct username and password. - *

- * The embedder app can get the username and password any way it chooses, and does not have to - * use {@link WebViewDatabase}. - *

- * Notes: - *

  • - * {@link WebViewDatabase} is provided only as a convenience to store and retrieve http - * authentication credentials. WebView does not read from it during HTTP authentication. - *
  • - *
  • - * WebView does not provide a special mechanism to clear HTTP authentication credentials for - * implementing client logout. The client logout mechanism should be implemented by the Web site - * designer (such as server sending a HTTP 401 for invalidating credentials). - *
  • * * @param host the host to which the credentials apply * @param realm the realm to which the credentials apply * @param username the username * @param password the password - * @see #getHttpAuthUsernamePassword - * @see WebViewDatabase#hasHttpAuthUsernamePassword - * @see WebViewDatabase#clearHttpAuthUsernamePassword + * @deprecated Use {@link WebViewDatabase#setHttpAuthUsernamePassword} instead */ + @Deprecated public void setHttpAuthUsernamePassword(String host, String realm, String username, String password) { checkThread(); @@ -779,16 +760,14 @@ public class WebView extends AbsoluteLayout /** * Retrieves HTTP authentication credentials for a given host and realm from the {@link * WebViewDatabase} instance. - * * @param host the host to which the credentials apply * @param realm the realm to which the credentials apply * @return the credentials as a String array, if found. The first element * is the username and the second element is the password. Null if * no credentials are found. - * @see #setHttpAuthUsernamePassword - * @see WebViewDatabase#hasHttpAuthUsernamePassword - * @see WebViewDatabase#clearHttpAuthUsernamePassword + * @deprecated Use {@link WebViewDatabase#getHttpAuthUsernamePassword} instead */ + @Deprecated public String[] getHttpAuthUsernamePassword(String host, String realm) { checkThread(); return mProvider.getHttpAuthUsernamePassword(host, realm); diff --git a/core/java/android/webkit/WebViewDatabase.java b/core/java/android/webkit/WebViewDatabase.java index cc2c6cc348033..87d3c7b32abbb 100644 --- a/core/java/android/webkit/WebViewDatabase.java +++ b/core/java/android/webkit/WebViewDatabase.java @@ -65,8 +65,8 @@ public abstract class WebViewDatabase { * Gets whether there are any saved credentials for HTTP authentication. * * @return whether there are any saved credentials - * @see WebView#getHttpAuthUsernamePassword - * @see WebView#setHttpAuthUsernamePassword + * @see #getHttpAuthUsernamePassword + * @see #setHttpAuthUsernamePassword * @see #clearHttpAuthUsernamePassword */ public abstract boolean hasHttpAuthUsernamePassword(); @@ -83,12 +83,60 @@ public abstract class WebViewDatabase { * mechanism should be implemented by the Web site designer (such as server sending a HTTP 401 * for invalidating credentials). * - * @see WebView#getHttpAuthUsernamePassword - * @see WebView#setHttpAuthUsernamePassword + * @see #getHttpAuthUsernamePassword + * @see #setHttpAuthUsernamePassword * @see #hasHttpAuthUsernamePassword */ public abstract void clearHttpAuthUsernamePassword(); + /** + * Stores HTTP authentication credentials for a given host and realm to the {@link WebViewDatabase} + * instance. + *

    + * To use HTTP authentication, the embedder application has to implement + * {@link WebViewClient#onReceivedHttpAuthRequest}, and call {@link HttpAuthHandler#proceed} + * with the correct username and password. + *

    + * The embedder app can get the username and password any way it chooses, and does not have to + * use {@link WebViewDatabase}. + *

    + * Notes: + *

  • + * {@link WebViewDatabase} is provided only as a convenience to store and retrieve http + * authentication credentials. WebView does not read from it during HTTP authentication. + *
  • + *
  • + * WebView does not provide a special mechanism to clear HTTP authentication credentials for + * implementing client logout. The client logout mechanism should be implemented by the Web site + * designer (such as server sending a HTTP 401 for invalidating credentials). + *
  • + * + * @param host the host to which the credentials apply + * @param realm the realm to which the credentials apply + * @param username the username + * @param password the password + * @see #getHttpAuthUsernamePassword + * @see #hasHttpAuthUsernamePassword + * @see #clearHttpAuthUsernamePassword + */ + public abstract void setHttpAuthUsernamePassword(String host, String realm, + String username, String password); + + /** + * Retrieves HTTP authentication credentials for a given host and realm from the {@link + * WebViewDatabase} instance. + * + * @param host the host to which the credentials apply + * @param realm the realm to which the credentials apply + * @return the credentials as a String array, if found. The first element + * is the username and the second element is the password. Null if + * no credentials are found. + * @see #setHttpAuthUsernamePassword + * @see #hasHttpAuthUsernamePassword + * @see #clearHttpAuthUsernamePassword + */ + public abstract String[] getHttpAuthUsernamePassword(String host, String realm); + /** * Gets whether there is any saved data for web forms. *