diff --git a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java index cf44e44a47ec..5facbc0ffea2 100644 --- a/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java +++ b/mobile/android/base/java/org/mozilla/gecko/customtabs/CustomTabsActivity.java @@ -125,10 +125,6 @@ public class CustomTabsActivity extends AppCompatActivity final GeckoSessionSettings settings = new GeckoSessionSettings(); settings.setBoolean(GeckoSessionSettings.USE_MULTIPROCESS, false); - settings.setBoolean( - GeckoSessionSettings.USE_REMOTE_DEBUGGER, - GeckoSharedPrefs.forApp(this).getBoolean( - GeckoPreferences.PREFS_DEVTOOLS_REMOTE_USB_ENABLED, false)); mGeckoSession = new GeckoSession(settings); mGeckoSession.setNavigationDelegate(this); mGeckoSession.setProgressDelegate(this); diff --git a/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java b/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java index e909cea66fe9..49e36bbe9ee7 100644 --- a/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java +++ b/mobile/android/base/java/org/mozilla/gecko/webapps/WebAppActivity.java @@ -93,10 +93,6 @@ public class WebAppActivity extends AppCompatActivity final GeckoSessionSettings settings = new GeckoSessionSettings(); settings.setBoolean(GeckoSessionSettings.USE_MULTIPROCESS, false); - settings.setBoolean( - GeckoSessionSettings.USE_REMOTE_DEBUGGER, - GeckoSharedPrefs.forApp(this).getBoolean( - GeckoPreferences.PREFS_DEVTOOLS_REMOTE_USB_ENABLED, false)); mGeckoSession = new GeckoSession(settings); mGeckoView.setSession(mGeckoSession, GeckoRuntime.getDefault(this)); diff --git a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java index 4b30e83254c7..d845667101e5 100644 --- a/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java +++ b/mobile/android/geckoview/src/androidTest/java/org/mozilla/geckoview/test/rule/GeckoSessionTestRule.java @@ -145,7 +145,6 @@ public class GeckoSessionTestRule extends UiThreadTestRule { SCREEN_ID, USE_MULTIPROCESS, USE_PRIVATE_MODE, - USE_REMOTE_DEBUGGER, USE_TRACKING_PROTECTION; private final GeckoSessionSettings.Key mKey; diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java index b3bb4b2775b4..9433a8302c24 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoRuntimeSettings.java @@ -82,6 +82,16 @@ public final class GeckoRuntimeSettings implements Parcelable { return this; } + /** + * Set whether remote debugging support should be enabled. + * + * @param enabled True if remote debugging should be enabled. + */ + public @NonNull Builder remoteDebuggingEnabled(final boolean enabled) { + mSettings.mRemoteDebugging.set(enabled); + return this; + } + /** * Set whether support for web fonts should be enabled. * @@ -130,11 +140,13 @@ public final class GeckoRuntimeSettings implements Parcelable { /* package */ Pref mJavaScript = new Pref( "javascript.enabled", true); + /* package */ Pref mRemoteDebugging = new Pref( + "devtools.debugger.remote-enabled", false); /* package */ Pref mWebFonts = new Pref( "browser.display.use_document_fonts", true); private final Pref[] mPrefs = new Pref[] { - mJavaScript, mWebFonts + mJavaScript, mRemoteDebugging, mWebFonts }; /* package */ GeckoRuntimeSettings() { @@ -149,12 +161,18 @@ public final class GeckoRuntimeSettings implements Parcelable { if (settings == null) { mArgs = new String[0]; mExtras = new Bundle(); - } else { - mUseContentProcess = settings.getUseContentProcessHint(); - mArgs = settings.getArguments().clone(); - mExtras = new Bundle(settings.getExtras()); - mJavaScript.set(settings.mJavaScript.get()); - mWebFonts.set(settings.mWebFonts.get()); + return; + } + + mUseContentProcess = settings.getUseContentProcessHint(); + mArgs = settings.getArguments().clone(); + mExtras = new Bundle(settings.getExtras()); + + for (int i = 0; i < mPrefs.length; i++) { + // We know this is safe. + @SuppressWarnings("unchecked") + final Pref uncheckedPref = (Pref) mPrefs[i]; + uncheckedPref.set(settings.mPrefs[i].get()); } } @@ -210,6 +228,25 @@ public final class GeckoRuntimeSettings implements Parcelable { return this; } + /** + * Get whether remote debugging support is enabled. + * + * @return True if remote debugging support is enabled. + */ + public boolean getRemoteDebuggingEnabled() { + return mRemoteDebugging.get(); + } + + /** + * Set whether remote debugging support should be enabled. + * + * @param enabled True if remote debugging should be enabled. + */ + public @NonNull GeckoRuntimeSettings setRemoteDebuggingEnabled(final boolean enabled) { + mRemoteDebugging.set(enabled); + return this; + } + /** * Get whether web fonts support is enabled. * @@ -239,8 +276,10 @@ public final class GeckoRuntimeSettings implements Parcelable { out.writeByte((byte) (mUseContentProcess ? 1 : 0)); out.writeStringArray(mArgs); mExtras.writeToParcel(out, flags); - out.writeByte((byte) (mJavaScript.get() ? 1 : 0)); - out.writeByte((byte) (mWebFonts.get() ? 1 : 0)); + + for (final Pref pref : mPrefs) { + out.writeValue(pref.get()); + } } // AIDL code may call readFromParcel even though it's not part of Parcelable. @@ -248,8 +287,13 @@ public final class GeckoRuntimeSettings implements Parcelable { mUseContentProcess = source.readByte() == 1; mArgs = source.createStringArray(); mExtras.readFromParcel(source); - mJavaScript.set(source.readByte() == 1); - mWebFonts.set(source.readByte() == 1); + + for (final Pref pref : mPrefs) { + // We know this is safe. + @SuppressWarnings("unchecked") + final Pref uncheckedPref = (Pref) pref; + uncheckedPref.set(source.readValue(getClass().getClassLoader())); + } } public static final Parcelable.Creator CREATOR diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSessionSettings.java b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSessionSettings.java index 8d2e344b658f..1f23b4d9502b 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSessionSettings.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/geckoview/GeckoSessionSettings.java @@ -90,9 +90,6 @@ public final class GeckoSessionSettings implements Parcelable { Arrays.asList(DISPLAY_MODE_BROWSER, DISPLAY_MODE_MINIMAL_UI, DISPLAY_MODE_STANDALONE, DISPLAY_MODE_FULLSCREEN)); - public static final Key USE_REMOTE_DEBUGGER = - new Key("useRemoteDebugger"); - private final GeckoSession mSession; private final GeckoBundle mBundle; @@ -121,7 +118,6 @@ public final class GeckoSessionSettings implements Parcelable { mBundle.putBoolean(USE_MULTIPROCESS.name, true); mBundle.putBoolean(USE_DESKTOP_MODE.name, false); mBundle.putInt(DISPLAY_MODE.name, DISPLAY_MODE_BROWSER); - mBundle.putBoolean(USE_REMOTE_DEBUGGER.name, false); } public void setBoolean(final Key key, final boolean value) { diff --git a/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java b/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java index 36db7de42236..3a9448e58d0a 100644 --- a/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java +++ b/mobile/android/geckoview_example/src/main/java/org/mozilla/geckoview_example/GeckoViewActivity.java @@ -138,12 +138,8 @@ public class GeckoViewActivity extends Activity { } private void loadSettings(final Intent intent) { - final GeckoSessionSettings settings = mGeckoSession.getSettings(); - settings.setBoolean( - GeckoSessionSettings.USE_REMOTE_DEBUGGER, + sGeckoRuntime.getSettings().setRemoteDebuggingEnabled( intent.getBooleanExtra(USE_REMOTE_DEBUGGER_EXTRA, false)); - - Log.i(LOGTAG, "Load with settings " + settings); } @Override