diff --git a/mobile/android/base/java/org/mozilla/gecko/ANRReporter.java b/mobile/android/base/java/org/mozilla/gecko/ANRReporter.java index c18431166b63..e9469a8a3718 100644 --- a/mobile/android/base/java/org/mozilla/gecko/ANRReporter.java +++ b/mobile/android/base/java/org/mozilla/gecko/ANRReporter.java @@ -191,10 +191,7 @@ public final class ANRReporter extends BroadcastReceiver } private static File getPingFile() { - if (GeckoAppShell.getContext() == null) { - return null; - } - GeckoProfile profile = GeckoAppShell.getGeckoInterface().getProfile(); + final GeckoProfile profile = GeckoThread.getActiveProfile(); if (profile == null) { return null; } diff --git a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java index f343f185fb41..1e7c2e562ac7 100644 --- a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java @@ -2016,8 +2016,7 @@ public abstract class GeckoApp extends GeckoActivity return mLayerView.getEventDispatcher(); } - @Override - public GeckoProfile getProfile() { + protected static GeckoProfile getProfile() { return GeckoThread.getActiveProfile(); } diff --git a/mobile/android/base/java/org/mozilla/gecko/restrictions/Restrictions.java b/mobile/android/base/java/org/mozilla/gecko/restrictions/Restrictions.java index 0cf68081033b..cecfda4802b2 100644 --- a/mobile/android/base/java/org/mozilla/gecko/restrictions/Restrictions.java +++ b/mobile/android/base/java/org/mozilla/gecko/restrictions/Restrictions.java @@ -50,11 +50,6 @@ public class Restrictions { return configuration instanceof GuestProfileConfiguration; } - GeckoAppShell.GeckoInterface geckoInterface = GeckoAppShell.getGeckoInterface(); - if (geckoInterface != null) { - return geckoInterface.getProfile().inGuestMode(); - } - return GeckoProfile.get(context).inGuestMode(); } diff --git a/mobile/android/base/java/org/mozilla/gecko/telemetry/TelemetryCorePingDelegate.java b/mobile/android/base/java/org/mozilla/gecko/telemetry/TelemetryCorePingDelegate.java index 23845490be8e..2a60123ddb90 100644 --- a/mobile/android/base/java/org/mozilla/gecko/telemetry/TelemetryCorePingDelegate.java +++ b/mobile/android/base/java/org/mozilla/gecko/telemetry/TelemetryCorePingDelegate.java @@ -15,6 +15,7 @@ import org.mozilla.gecko.BrowserApp; import org.mozilla.gecko.GeckoApp; import org.mozilla.gecko.GeckoProfile; import org.mozilla.gecko.GeckoSharedPrefs; +import org.mozilla.gecko.GeckoThread; import org.mozilla.gecko.Telemetry; import org.mozilla.gecko.TelemetryContract; import org.mozilla.gecko.adjust.AttributionHelperListener; @@ -45,7 +46,7 @@ public class TelemetryCorePingDelegate extends BrowserAppDelegateWithReference @Override public void onStart(final BrowserApp browserApp) { - TelemetryPreferences.initPreferenceObserver(browserApp, browserApp.getProfile().getName()); + TelemetryPreferences.initPreferenceObserver(browserApp, GeckoThread.getActiveProfile().getName()); // We don't upload in onCreate because that's only called when the Activity needs to be instantiated // and it's possible the system will never free the Activity from memory. @@ -104,7 +105,7 @@ public class TelemetryCorePingDelegate extends BrowserAppDelegateWithReference @WorkerThread // via constructor private TelemetryDispatcher getTelemetryDispatcher(final BrowserApp browserApp) { if (telemetryDispatcher == null) { - final GeckoProfile profile = browserApp.getProfile(); + final GeckoProfile profile = GeckoThread.getActiveProfile(); final String profilePath = profile.getDir().getAbsolutePath(); final String profileName = profile.getName(); telemetryDispatcher = new TelemetryDispatcher(profilePath, profileName); @@ -113,7 +114,7 @@ public class TelemetryCorePingDelegate extends BrowserAppDelegateWithReference } private SharedPreferences getSharedPreferences(final BrowserApp activity) { - return GeckoSharedPrefs.forProfileName(activity, activity.getProfile().getName()); + return GeckoSharedPrefs.forProfileName(activity, GeckoThread.getActiveProfile().getName()); } // via SearchEngineCallback - may be called from any thread. @@ -137,7 +138,7 @@ public class TelemetryCorePingDelegate extends BrowserAppDelegateWithReference return; } - final GeckoProfile profile = activity.getProfile(); + final GeckoProfile profile = GeckoThread.getActiveProfile(); if (!TelemetryUploadService.isUploadEnabledByProfileConfig(activity, profile)) { Log.d(LOGTAG, "Core ping upload disabled by profile config. Returning."); return; diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/BaseGeckoInterface.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/BaseGeckoInterface.java index b2891d7ca008..45f703651a18 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/BaseGeckoInterface.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/BaseGeckoInterface.java @@ -15,7 +15,6 @@ import android.widget.AbsoluteLayout; public class BaseGeckoInterface implements GeckoAppShell.GeckoInterface { private final Context mContext; - private GeckoProfile mProfile; private final EventDispatcher eventDispatcher; public BaseGeckoInterface(Context context) { @@ -28,15 +27,6 @@ public class BaseGeckoInterface implements GeckoAppShell.GeckoInterface { return eventDispatcher; } - @Override - public GeckoProfile getProfile() { - // Fall back to default profile if we didn't load a specific one - if (mProfile == null) { - mProfile = GeckoProfile.get(mContext); - } - return mProfile; - } - @Override public Activity getActivity() { // By default, GeckoView consumers do not have a distinguished current foreground Activity. diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java index 7455cab8ace0..4f1171887a6a 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java @@ -1661,7 +1661,6 @@ public class GeckoAppShell public interface GeckoInterface { public @NonNull EventDispatcher getAppEventDispatcher(); - public GeckoProfile getProfile(); public Activity getActivity(); public String getDefaultUAString(); @@ -2014,8 +2013,8 @@ public class GeckoAppShell GeckoAppShell.killAnyZombies(); // Then force unlock this profile - if (getGeckoInterface() != null) { - GeckoProfile profile = getGeckoInterface().getProfile(); + final GeckoProfile profile = GeckoThread.getActiveProfile(); + if (profile != null) { File lock = profile.getFile(".parentlock"); return lock.exists() && lock.delete(); } diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoThread.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoThread.java index 75e5e34e4e75..203d7d3e43b9 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoThread.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoThread.java @@ -333,6 +333,7 @@ public class GeckoThread extends Thread { return args.toArray(new String[args.size()]); } + @RobocopTarget public static GeckoProfile getActiveProfile() { return INSTANCE.getProfile(); } diff --git a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGeckoProfile.java b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGeckoProfile.java index eb9a705be68f..f2e4355d31fb 100644 --- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGeckoProfile.java +++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testGeckoProfile.java @@ -8,10 +8,10 @@ import java.io.File; import java.util.Enumeration; import java.util.Hashtable; -import org.mozilla.gecko.GeckoApp; import org.mozilla.gecko.GeckoProfile; import org.mozilla.gecko.GeckoProfileDirectories; import org.mozilla.gecko.GeckoSharedPrefs; +import org.mozilla.gecko.GeckoThread; import org.mozilla.gecko.util.INIParser; import org.mozilla.gecko.util.INISection; @@ -46,7 +46,8 @@ public class testGeckoProfile extends PixelTest { // "Default" is a custom profile set up by the test harness. mAsserter.info("Test using the test profile", GeckoProfile.CUSTOM_PROFILE); GeckoProfile profile = GeckoProfile.get(getActivity()); - verifyProfile(profile, GeckoProfile.CUSTOM_PROFILE, ((GeckoApp) getActivity()).getProfile().getDir(), true); + verifyProfile(profile, GeckoProfile.CUSTOM_PROFILE, + GeckoThread.getActiveProfile().getDir(), true); try { profile = GeckoProfile.get(null); @@ -65,7 +66,7 @@ public class testGeckoProfile extends PixelTest { removeProfile(profile, true); } else { // Passing in null for a profile name, should get you the default - File defaultProfile = ((GeckoApp) getActivity()).getProfile().getDir(); + File defaultProfile = GeckoThread.getActiveProfile().getDir(); verifyProfile(profile, GeckoProfile.CUSTOM_PROFILE, defaultProfile, true); } } @@ -116,7 +117,7 @@ public class testGeckoProfile extends PixelTest { f.mkdir(); } - final File testProfileDir = ((GeckoApp) getActivity()).getProfile().getDir(); + final File testProfileDir = GeckoThread.getActiveProfile().getDir(); final String expectedName = name != null ? name : GeckoProfile.CUSTOM_PROFILE; final GeckoProfile profile; @@ -182,7 +183,7 @@ public class testGeckoProfile extends PixelTest { // Tests of Guest profile methods private void checkGuestProfile() { - final File testProfileDir = ((GeckoApp) getActivity()).getProfile().getDir(); + final File testProfileDir = GeckoThread.getActiveProfile().getDir(); mAsserter.info("Test getting a guest profile", ""); GeckoProfile profile = GeckoProfile.getGuestProfile(getActivity());