Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java

Issue 382143005: Supports DevTools socket access authentication based on Android permissions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Commented process_id Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/android/dev_tools_server.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..5f84994002fba43f1ebe4474c6ca8e4e4b5b2024 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java
@@ -4,13 +4,29 @@
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 static final String DEBUG_PERMISSION_SIFFIX = ".permission.DEBUG";
private long mNativeDevToolsServer = 0;
+ // Defines what processes may access to the socket.
+ public enum Security {
+ // Use content::CanUserConnectToDevTools to authorize access to the socket.
+ DEFAULT,
+
+ // In addition to default authorization allows access to an app with android permission
+ // named chromeAppPackageName + DEBUG_PERMISSION_SIFFIX.
+ ALLOW_DEBUG_PERMISSION,
+ }
+
public DevToolsServer(String socketNamePrefix) {
mNativeDevToolsServer = nativeInitRemoteDebugging(socketNamePrefix);
}
@@ -24,12 +40,25 @@ public class DevToolsServer {
return nativeIsRemoteDebuggingEnabled(mNativeDevToolsServer);
}
+ public void setRemoteDebuggingEnabled(boolean enabled, Security security) {
+ boolean allowDebugPermission = security == Security.ALLOW_DEBUG_PERMISSION;
+ nativeSetRemoteDebuggingEnabled(mNativeDevToolsServer, enabled, allowDebugPermission);
+ }
+
public void setRemoteDebuggingEnabled(boolean enabled) {
- nativeSetRemoteDebuggingEnabled(mNativeDevToolsServer, enabled);
+ setRemoteDebuggingEnabled(enabled, Security.DEFAULT);
}
private native long nativeInitRemoteDebugging(String socketNamePrefix);
private native void nativeDestroyRemoteDebugging(long devToolsServer);
private native boolean nativeIsRemoteDebuggingEnabled(long devToolsServer);
- private native void nativeSetRemoteDebuggingEnabled(long devToolsServer, boolean enabled);
+ private native void nativeSetRemoteDebuggingEnabled(
+ long devToolsServer, boolean enabled, boolean allowDebugPermission);
+
+ @CalledByNative
+ private static boolean checkDebugPermission(Context context, int pid, int uid) {
+ String debugPermissionName = context.getPackageName() + DEBUG_PERMISSION_SIFFIX;
+ return context.checkPermission(debugPermissionName, pid, uid)
+ == PackageManager.PERMISSION_GRANTED;
+ }
}
« no previous file with comments | « no previous file | chrome/browser/android/dev_tools_server.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698