Implement the new WebView.setWebContentsDebuggingEnabled API
BUG: 8691809
Change-Id: I62441515da9bf70712305ba245db53bb22f52fbf
(cherry picked from commit d9e4aedf3d14b3494d54dbb482ece3603d0f693d)
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
index 14c86d9..afb77ed 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -36,6 +36,7 @@
import org.chromium.android_webview.AwBrowserProcess;
import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwCookieManager;
+import org.chromium.android_webview.AwDevToolsServer;
import org.chromium.android_webview.AwFormDatabase;
import org.chromium.android_webview.AwGeolocationPermissions;
import org.chromium.android_webview.AwQuotaManagerBridge;
@@ -66,6 +67,7 @@
private WebIconDatabaseAdapter mWebIconDatabase;
private WebStorageAdapter mWebStorage;
private WebViewDatabaseAdapter mWebViewDatabase;
+ private AwDevToolsServer mDevToolsServer;
// Read/write protected by mLock.
private boolean mStarted;
@@ -165,6 +167,11 @@
AwBrowserProcess.start(ActivityThread.currentApplication());
initPlatSupportLibrary();
+
+ if (Build.IS_DEBUGGABLE) {
+ setWebContentsDebuggingEnabled(true);
+ }
+
mStarted = true;
}
@@ -193,6 +200,15 @@
}
@Override
+ public void setWebContentsDebuggingEnabled(boolean enable) {
+ // Web Contents debugging is always enabled on debug builds.
+ if (!Build.IS_DEBUGGABLE) {
+ WebViewChromiumFactoryProvider.this.
+ setWebContentsDebuggingEnabled(enable);
+ }
+ }
+
+ @Override
public void freeMemoryForTests() {
if (ActivityManager.isRunningInTestHarness()) {
MemoryPressureListener.simulateMemoryPressureSignal(
@@ -292,4 +308,16 @@
}
return mWebViewDatabase;
}
+
+ private void setWebContentsDebuggingEnabled(boolean enable) {
+ if (Looper.myLooper() != Looper.getMainLooper()) {
+ throw new RuntimeException(
+ "Toggling of Web Contents Debugging must be done on the main thread");
+ }
+ if (mDevToolsServer == null) {
+ if (!enable) return;
+ mDevToolsServer = new AwDevToolsServer();
+ }
+ mDevToolsServer.setRemoteDebuggingEnabled(enable);
+ }
}