Index: chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java b/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java |
index 7ed33f90b78d0264c2bb533af479ddd0eaccb4b2..dce188e3fdf7ada298bdea1da2848877e0f3bd8c 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java |
@@ -4,17 +4,43 @@ |
package org.chromium.chrome.browser; |
+import android.content.Context; |
+import android.content.pm.PackageManager; |
+ |
+import org.chromium.base.CalledByNative; |
+ |
/** |
* Controller for Remote Web Debugging (Developer Tools). |
*/ |
public class DevToolsServer { |
private long mNativeDevToolsServer = 0; |
+ private static volatile SocketAuthentication sAuthentication = new SocketAuthentication(); |
+ |
+ private static class SocketAuthentication { |
+ public boolean checkPermission(int pid, int uid) { |
+ return false; |
+ } |
+ } |
public DevToolsServer(String socketNamePrefix) { |
mNativeDevToolsServer = nativeInitRemoteDebugging(socketNamePrefix); |
} |
+ /* |
+ * Makes DevTools socket accessible to a process with this permission |
+ * granted (in addition to SHELL and ROOT users). |
+ */ |
+ public static void requirePermission(final Context context, final String androidPermission) { |
+ sAuthentication = new SocketAuthentication() { |
+ @Override |
+ public boolean checkPermission(int pid, int uid) { |
+ return context.checkPermission(androidPermission, pid, uid) |
+ == PackageManager.PERMISSION_GRANTED; |
+ } |
+ }; |
+ } |
+ |
public void destroy() { |
nativeDestroyRemoteDebugging(mNativeDevToolsServer); |
mNativeDevToolsServer = 0; |
@@ -32,4 +58,9 @@ public class DevToolsServer { |
private native void nativeDestroyRemoteDebugging(long devToolsServer); |
private native boolean nativeIsRemoteDebuggingEnabled(long devToolsServer); |
private native void nativeSetRemoteDebuggingEnabled(long devToolsServer, boolean enabled); |
+ |
+ @CalledByNative |
+ private static boolean checkPermission(int pid, int uid) { |
+ return sAuthentication.checkPermission(pid, uid); |
+ } |
} |