Commit a690afa1 authored by Pier Angelo Vendrame's avatar Pier Angelo Vendrame 🎃
Browse files

BB 9173: Change the default Firefox profile directory to be relative.

This commit makes Firefox look for the default profile directory in a
directory relative to the binary path.
The directory can be specified through the --with-relative-data-dir.
This is relative to the same directory as the firefox main binary for
Linux and Windows.

On macOS, we remove Contents/MacOS from it.
Or, in other words, the directory is relative to the application
bundle.

This behavior can be overriden at runtime, by placing a file called
system-install adjacent to the firefox main binary (also on macOS).
parent 923bda7c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -48,3 +48,5 @@ ac_add_options --disable-legacy-profile-creation
if test -z "$WASI_SYSROOT"; then
    ac_add_options --without-wasm-sandboxed-libraries
fi

ac_add_options --with-relative-data-dir=BaseBrowser/Data/Browser
+19 −0
Original line number Diff line number Diff line
@@ -963,6 +963,25 @@ with only_when(cross_compiling):
    )
    set_config("JS_BINARY", depends_if("JS_BINARY")(lambda value: value[0]))

option(
    "--with-relative-data-dir",
    nargs=1,
    help="Sets the data directories to be relative to the application directory",
)


@depends("--with-relative-data-dir", target)
@imports("json")
def relative_data_dir(value, target):
    if value and target.os == "Android":
        die("--with-relative-data-dir is not supported on Android")
    if value:
        return json.dumps(value[0])


set_define("RELATIVE_DATA_DIR", relative_data_dir)


option(
    "--with-base-browser-version",
    nargs=1,
+3 −0
Original line number Diff line number Diff line
@@ -10,3 +10,6 @@ ac_add_options --disable-update-agent

# Let's make sure no preference is enabling either Adobe's or Google's CDM.
ac_add_options --disable-eme

# For base-browser we do not enable portable mode on macOS.
ac_add_options --without-relative-data-dir
+4 −4
Original line number Diff line number Diff line
@@ -2635,22 +2635,22 @@ def _run_desktop(
        if appdata is True:
            appdata = tmpdir

        extra_env["MOZ_APP_DATA"] = os.path.normpath(
        extra_env["BB_APP_DATA"] = os.path.normpath(
            os.path.join(appdata, "AppData", "Roaming")
        )
        command_context.log(
            logging.INFO,
            "run",
            {"app_data": extra_env["MOZ_APP_DATA"]},
            {"app_data": extra_env["BB_APP_DATA"]},
            "Overriding application data directory to {app_data}",
        )
        extra_env["MOZ_LOCAL_APP_DATA"] = os.path.normpath(
        extra_env["BB_LOCAL_APP_DATA"] = os.path.normpath(
            os.path.join(appdata, "Local")
        )
        command_context.log(
            logging.INFO,
            "run",
            {"local_app_data": extra_env["MOZ_LOCAL_APP_DATA"]},
            {"local_app_data": extra_env["BB_LOCAL_APP_DATA"]},
            "Overriding local application data directory to {local_app_data}",
        )

+8 −1
Original line number Diff line number Diff line
@@ -39,7 +39,14 @@ export class AboutPDFParent extends JSWindowActorParent {
  }

  #canSetDefaultPDFHandler() {
    if (!ShellService || AppConstants.platform != "win") {
    const xreDirProvider = Cc[
      "@mozilla.org/xre/directory-provider;1"
    ].getService(Ci.nsIXREDirProvider);
    if (
      !ShellService ||
      AppConstants.platform != "win" ||
      xreDirProvider.isPortableMode
    ) {
      return false;
    }

Loading