X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fandroid%2Fjava%2Fsrc%2Forg%2Fchromium%2Fchrome%2Fbrowser%2FDevToolsServer.java;h=5f84994002fba43f1ebe4474c6ca8e4e4b5b2024;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=7ed33f90b78d0264c2bb533af479ddd0eaccb4b2;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java b/src/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java index 7ed33f9..5f84994 100644 --- a/src/chrome/android/java/src/org/chromium/chrome/browser/DevToolsServer.java +++ b/src/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; + } }