Corresponding permission API change in WebView glue layer.

BUG: 15432556
Change-Id: I3e8666003a2cccd825138ba30669928bbd0ba40d
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromium.java b/chromium/java/com/android/webview/chromium/WebViewChromium.java
index bb0f07e..9833569 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromium.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromium.java
@@ -2063,12 +2063,6 @@
         return new AwPrintDocumentAdapter(mAwContents.getPdfExporter(), documentName);
     }
 
-    @Override
-    public void preauthorizePermission(Uri origin, long resources) {
-        checkThread();
-        mAwContents.preauthorizePermission(origin, resources);
-    }
-
     // AwContents.NativeGLDelegate implementation --------------------------------------
     private class WebViewNativeGLDelegate implements AwContents.NativeGLDelegate {
         @Override
diff --git a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
index a8af1dc..771d65d 100644
--- a/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
+++ b/chromium/java/com/android/webview/chromium/WebViewContentsClientAdapter.java
@@ -69,6 +69,7 @@
 import java.security.Principal;
 import java.security.PrivateKey;
 import java.security.cert.X509Certificate;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.WeakHashMap;
@@ -1033,8 +1034,39 @@
     }
 
     // TODO: Move to the upstream once the PermissionRequest is part of SDK.
-    private static class PermissionRequestAdapter implements PermissionRequest {
+    public static class PermissionRequestAdapter extends PermissionRequest {
+        // TODO: Move the below definitions to AwPermissionRequest.
+        private static long BITMASK_RESOURCE_VIDEO_CAPTURE = 1 << 1;
+        private static long BITMASK_RESOURCE_AUDIO_CAPTURE = 1 << 2;
+        private static long BITMASK_RESOURCE_PROTECTED_MEDIA_ID = 1 << 3;
+
+        public static long toAwPermissionResources(String[] resources) {
+            long result = 0;
+            for (String resource : resources) {
+                if (resource.equals(PermissionRequest.RESOURCE_VIDEO_CAPTURE))
+                    result |= BITMASK_RESOURCE_VIDEO_CAPTURE;
+                else if (resource.equals(PermissionRequest.RESOURCE_AUDIO_CAPTURE))
+                    result |= BITMASK_RESOURCE_AUDIO_CAPTURE;
+                else if (resource.equals(PermissionRequest.RESOURCE_PROTECTED_MEDIA_ID))
+                    result |= BITMASK_RESOURCE_PROTECTED_MEDIA_ID;
+            }
+            return result;
+        }
+
+        private static String[] toPermissionResources(long resources) {
+            ArrayList<String> result = new ArrayList<String>();
+            if ((resources & BITMASK_RESOURCE_VIDEO_CAPTURE) != 0)
+                result.add(PermissionRequest.RESOURCE_VIDEO_CAPTURE);
+            if ((resources & BITMASK_RESOURCE_AUDIO_CAPTURE) != 0)
+                result.add(PermissionRequest.RESOURCE_AUDIO_CAPTURE);
+            if ((resources & BITMASK_RESOURCE_PROTECTED_MEDIA_ID) != 0)
+                result.add(PermissionRequest.RESOURCE_PROTECTED_MEDIA_ID);
+            String[] resource_array = new String[result.size()];
+            return result.toArray(resource_array);
+        }
+
         private AwPermissionRequest mAwPermissionRequest;
+        private String[] mResources;
 
         public PermissionRequestAdapter(AwPermissionRequest awPermissionRequest) {
             assert awPermissionRequest != null;
@@ -1047,14 +1079,19 @@
         }
 
         @Override
-        public long getResources() {
-            return mAwPermissionRequest.getResources();
+        public String[] getResources() {
+            synchronized (this) {
+                if (mResources == null) {
+                    mResources = toPermissionResources(mAwPermissionRequest.getResources());
+                }
+                return mResources;
+            }
         }
 
         @Override
-        public void grant(long resources) {
-            long requestedResource = getResources();
-            if ((requestedResource & resources) == requestedResource)
+        public void grant(String[] resources) {
+            long requestedResource = mAwPermissionRequest.getResources();
+            if ((requestedResource & toAwPermissionResources(resources)) == requestedResource)
                 mAwPermissionRequest.grant();
             else
                 mAwPermissionRequest.deny();