diff options
-rw-r--r-- | api/current.txt | 13 | ||||
-rw-r--r-- | core/java/android/webkit/PermissionRequest.java | 13 | ||||
-rw-r--r-- | core/java/android/webkit/WebChromeClient.java | 4 | ||||
-rw-r--r-- | core/java/android/webkit/WebView.java | 8 |
4 files changed, 23 insertions, 15 deletions
diff --git a/api/current.txt b/api/current.txt index 51e2169..2f6edc1 100644 --- a/api/current.txt +++ b/api/current.txt @@ -33262,6 +33262,16 @@ package android.webkit { method public boolean hasMimeType(java.lang.String); } + public abstract interface PermissionRequest { + method public abstract void deny(); + method public abstract android.net.Uri getOrigin(); + method public abstract long getResources(); + method public abstract void grant(long); + field public static final long RESOURCE_AUDIO_CAPTURE = 4L; // 0x4L + field public static final long RESOURCE_GEOLOCATION = 1L; // 0x1L + field public static final long RESOURCE_VIDEO_CAPTURE = 2L; // 0x2L + } + public abstract interface PluginStub { method public abstract android.view.View getEmbeddedView(int, android.content.Context); method public abstract android.view.View getFullScreenView(int, android.content.Context); @@ -33321,6 +33331,8 @@ package android.webkit { method public boolean onJsConfirm(android.webkit.WebView, java.lang.String, java.lang.String, android.webkit.JsResult); method public boolean onJsPrompt(android.webkit.WebView, java.lang.String, java.lang.String, java.lang.String, android.webkit.JsPromptResult); method public deprecated boolean onJsTimeout(); + method public void onPermissionRequest(android.webkit.PermissionRequest); + method public void onPermissionRequestCanceled(android.webkit.PermissionRequest); method public void onProgressChanged(android.webkit.WebView, int); method public deprecated void onReachedMaxAppCacheSize(long, long, android.webkit.WebStorage.QuotaUpdater); method public void onReceivedIcon(android.webkit.WebView, android.graphics.Bitmap); @@ -33608,6 +33620,7 @@ package android.webkit { method public boolean pageUp(boolean); method public void pauseTimers(); method public void postUrl(java.lang.String, byte[]); + method public void preauthorizePermission(android.net.Uri, long); method public void reload(); method public void removeJavascriptInterface(java.lang.String); method public void requestFocusNodeHref(android.os.Message); diff --git a/core/java/android/webkit/PermissionRequest.java b/core/java/android/webkit/PermissionRequest.java index 2f8850b..3e33498 100644 --- a/core/java/android/webkit/PermissionRequest.java +++ b/core/java/android/webkit/PermissionRequest.java @@ -19,14 +19,11 @@ package android.webkit; import android.net.Uri; /** - * This class wraps a permission request, and is used to request permission for - * the web content to access the resources. + * This interface defines a permission request and is used when web content + * requests access to protected resources. * - * Either {@link #grant(long) grant()} or {@link #deny()} must be called to response the - * request, otherwise, {@link WebChromeClient#onPermissionRequest(PermissionRequest)} will - * not be invoked again if there is other permission request in this WebView. - * - * @hide + * Either {@link #grant(long) grant()} or {@link #deny()} must be called in UI + * thread to respond to the request. */ public interface PermissionRequest { /** @@ -62,8 +59,6 @@ public interface PermissionRequest { * must be equals or a subset of granted resources. * This parameter is designed to avoid granting permission by accident * especially when new resources are requested by web content. - * Calling grant(getResources()) has security issue, the new permission - * will be granted without being noticed. */ public void grant(long resources); diff --git a/core/java/android/webkit/WebChromeClient.java b/core/java/android/webkit/WebChromeClient.java index 60cba86..d630a9a 100644 --- a/core/java/android/webkit/WebChromeClient.java +++ b/core/java/android/webkit/WebChromeClient.java @@ -304,7 +304,6 @@ public class WebChromeClient { * If this method isn't overridden, the permission is denied. * * @param request the PermissionRequest from current web content. - * @hide */ public void onPermissionRequest(PermissionRequest request) { request.deny(); @@ -314,8 +313,7 @@ public class WebChromeClient { * Notify the host application that the given permission request * has been canceled. Any related UI should therefore be hidden. * - * @param request the PermissionRequest need be canceled. - * @hide + * @param request the PermissionRequest that needs be canceled. */ public void onPermissionRequestCanceled(PermissionRequest request) {} diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 4b2b52c..91ca7b4 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -1682,13 +1682,15 @@ public class WebView extends AbsoluteLayout /** * Preauthorize the given origin to access resources. - * This authorization only valid for this WebView instance life cycle and + * The authorization only valid for this WebView instance's life cycle and * will not retained. * + * In the case that an origin has had resources preauthorized, calls to + * {@link WebChromeClient#onPermissionRequest(PermissionRequest)} will not be + * made for those resources from that origin. + * * @param origin the origin authorized to access resources * @param resources the resource authorized to be accessed by origin. - * - * @hide */ public void preauthorizePermission(Uri origin, long resources) { checkThread(); |