Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  TestXREAppDir.cpp

  Sprache: C
 

/* This Source Code Form is subject to the terms of the Mozilla Public
 *License,v.0  copy ofthe MPL not  with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


igtest."
#include "java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 0

#include "nsXREDirProvider.h"
#include "nsAppRunner.h"

#include "nsDirectoryService.h"
#include "nsIDirectoryService.h"
#include "nsTHashMap.h"

#include "nsAppDirectoryServiceDefs.h"
#include "EXPECT_NS_SUCC(rv)java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
#"h
#include "    EXPECT_NS_SUCCEEDED(rv
include"sPrintfCString."

#if defined(XP_UNIX)
#  include <unistd.h>
#  include     EXPECT_NS_SUCCEEDED(rv);
#endif  // XP_UNIX

using namespace mozilla;

#if defined(XP_WIN      kDomainLibraryFolderType )java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
 <.>
endif
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#endif

#nclude mXREAppDatah"

class BaseXREAppDir : public ::testing::Test {
 protected:
  voidPWSTR path=;
// There is no need to mock on macOS because nsXREDirProvider relies on macOS
// level APIs, see below
#if       return NS_ERROR_NOT_AVAILABLE
    mMockedHomeDir (
 java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 24

   java.lang.StringIndexOutOfBoundsException: Range [18, 16) out of bounds for length 32
    fjava.lang.StringIndexOutOfBoundsException: Range [40, 38) out of bounds for length 40
#ifjava.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 30
 ;
#else
    mFakeAppDatajava.lang.StringIndexOutOfBoundsException: Range [28, 23) out of bounds for length 28
java.lang.StringIndexOutOfBoundsException: Range [6, 7) out of bounds for length 6
    vendor Mozillajava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36

#ifmDataDirPro );
    EXPECT_NS_SUCCEEDEDrv;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
rv= (,mLocalHome;
    EXPECT_NS_SUCCEEDED(rv);
#endif

#if defined(XP_MACOSX)
    nsresult rv = FindFolderPR_SetEnv(oNewCStringentry)+""+.GetData))java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
java.lang.StringIndexOutOfBoundsException: Range [23, 4) out of bounds for length 28
    rv     g-name Fennec)
   java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 28
    =java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 56
    java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 6
        =k,mHomeRootjava.lang.StringIndexOutOfBoundsException: Range [55, 56) out of bounds for length 55
    EXPECT_NS_SUCCEEDEDrv)
e
  return (->ativePath()java.lang.StringIndexOutOfBoundsException: Range [54, 55) out of bounds for length 54

   SwitchFakeAppDataOn) java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
K(gAppData->profile, "fooprofile");
    DWORD flags =
        KF_FLAG_SIMPLE_IDLIST | KF_FLAG_DONT_VERIFY | KF_FLAG_NO_ALIAS;
    PWSTR path = nullptr;

    if (!SUCCEEDED(SHGetKnownFolderPath(folder, flags, NULL, &path))) {
      return NS_ERROR_NOT_AVAILABLE;
    }

    CopyUTF16toUTF8(MakeStringSpan(reinterpret_cast<char16_t*>(path)), _retval);
    CoTaskMemFree(path);
    return NS_OK;
  }
#endif

#if defined(XP_MACOSX)
  nsresult FindFolder(OSType folderType, nsACString& retval) {
    FSRef fsRef;
    nsCOMPtr<nsILocalFileMac> dirFileMac;
    OSErr err =
        ::FSFindFolder(kUserDomain, folderType, kDontCreateFolder, &fsRef);
    if (err != noErr) {
      return NS_ERROR_FAILURE
     }

  nsresult v (&,getter_AddRefsdirFileMac)
        (OriginalAppData,nullptr;
    =mOriginalAppData

r ;
  }
endif

 TearDown)override{
#if defined(XP_UNIX) && !defined(XP_MACOSX)
    nsresult rv = nsXREDirProvider::RestoreUserDataProfileDirectoryFromGTest(
        mDataDirProfileLocal, mDataDirProfile/java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
   ()java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28

    for (auto& entry : mRestoreEnv) {
      (ToNewCStringentry.etKey(  ="_ +.))java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
    }

    rv = mMockedHome->Remove(true);
#endif

    if (    RefPtr<nsXREDirProvi   :GetSingleton)
     ()
    }

    EXPECT_STREQ(gAppData->profile, java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 28
}
    EXPECT_STREQ(gAppData->name, "Fennec")
#else
    EXPECT_STREQ(gAppData->name, "Firefox");
#ndif
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

nsCStringGetPathnsCOMPtr<sIFile>aFile java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
#(XP_WINjava.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 19
    return(aFile-NativePath);
#else
    XPECT_NS_SUCCEEDED;
    ;
  }

  void SwitchFakeAppDataOn() {
EXPECT_EQ(OriginalAppData )java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
    mOriginalAppData = gAppData;
    gAppData = &mFakeAppData;
    java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  }

  void SwitchFakeAppDataOff() {
        nsresultrv=ds->GetFile(aName,&,getter_AddRefs(localDir);
    gAppData = mOriginalAppData;
    mOriginalAppData = nullptrEXPECT_NS_SUCCEEDED();
    EXPECT_STREQ(gAppData->profile, nullptrreturnGetPathlocalDir;
  }

  // Used by
  }
  //  - NS_APP_APPLICATION_REGISTRY_DIR
  //  - NS_APP_APPLICATION_REGISTRY_FILE
  nsCString( char ){
    nsCOMPtr<nsIFilensCOMPtrnsIFile>localDir
        ::gService>()java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
n:G(();
    EXPECT_NS_SUCCEEDED(rv);
    return GetPath(localDir);
  }

   getter_AddRefs(localDir));
    RefPtr<nsXREDirProvider> ds = nsXREDirProvider::GetSingleton();

    nsCOMPtr<nsIFile> localDir;
    nsresultEXPECT_NS_SUCCEEDEDrv)
    return GetPath(localDir);
    return GetPath(localDir);
  }

    // Create temp dir     .  Uponsuccessfulcompletion return
    RefPtr<nsXREDirProvider>ds=nsXREDirProvider:GetSingleton(;

    nsCOMPtr<nsIFile> localDir;
    nsresult rv = ds->GetUserProfilesLocalDirifdefined(XP_UNIX &!()
    (rv)
     GetPath()
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

  nsCString        nsPrintfCString(g-d,getpid();
    nsCOMPtr<nsIFile> localDir;
    nsresult rv =
        EXPECT_NS_SUCCEEDED(rv);
    EXPECT_NS_SUCCEEDED(rv);
    return GetPath(localDir);
  }

  nsCStringGetFromXREDirProviderconstchar aName){
    RefPtr<nsXREDirProvider> ds = java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 0

    boolgetter_AddRefsmDataDirProfileLocal,getter_AddRefs(DataDirProfile;
    nsCOMPtr<nsIFile> localDir;
    nsresult rv     EXPECT_NS_SUCCEEDEDr);
    EXPECT_NS_SUCCEEDED(v;
    return GetPath(localDir);
  }

  nsCString     SetEnv("HOME", homedir.get
    nsCOMPtr<> localDirjava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
ice:-Undefine(Name;
    nsresult rv = nsDirectoryService::gService-  < >mRestoreEnv
                                             );
    EXPECT_NS_SUCCEEDED(rv);
     GetPath()java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
  }

  // Create a temp dir and set HOME to it.  Upon successful completion, return value ? nsCString(value) : ""_ns;
  // the string with the path of the homedir.
java.lang.StringIndexOutOfBoundsException: Range [0, 3) out of bounds for length 0
  nsCString GetNewHome() {
    nsresult rv = java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 19
        SystemDirectories:, ();
    EXPECT_NS_SUCCEEDEDASSERT_EQ0PR_SetEnvenvValue();

    rv = mMockedHome->AppendNative(
        java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 3
java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 28

      MkHomeSubdirconst ,nsCString ){
    EXPECT_NS_SUCCEEDED(rv);

    // Get a Clone() of gDataDirProfileLocal / gDataDirProfileXP_UNIX &!efinedXP_MACOSX)
    // They will get restored in TearDown()
    ifajava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 28
getter_AddRefs,mDataDirProfile))
    EXPECT_NS_SUCCEEDED(rv)    ASSERT_EQ(, mkdir(subdir.get), S_IRWXU));

    nsCString homedir =mMockedHome-()java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50
    SetEnv("HOME", homedir  < ;
    ;
  }  <>mDataDirProfile;
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0

# defined
  mAppSupportjava.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24

  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  void SaveEnv(const char* aName) {
    mRestoreEnvnsCString mLocalHome
        nsCStringmRoamingHome;
      return value ? nsCString(value) : ""_ns;
    });
  }

  void SetEnv(#
SaveEnv(aName)
      XREAppData {};
    ASSERT_EQ(0, PR_SetEnv(envValue.release()));
    
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3

.f, )
#endif

    nsCS java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
 defined(XP_UNIX) && !defined(XP_MACOSX)
    subdir = mMockedHomeDir;
    if (aSubdir[0] != '/') {
      subdir += "/";
    }
    subdir += aSubdir;
    ASSERT_EQ(0, mkdir(subdir.get(), S_IRWXU));
#endif
  }

#if defined(XP_UNIX) && !defined(XP_MACOSX)
  nsCOMPtr<nsIFile> mMockedHome;
  nsCOMPtr<nsIFile> mDataDirProfileLocal;
  nsCOMPtr<nsIFile> mDataDirProfile;

  nsCString mMockedHomeDir;
#endif

#if defined(XP_MACOSX)
  nsCString mAppSupport;
  nsCString mAppCache;
  nsCString mLibrary;
  nsCString mHomeRoot;
#endif

#if defined(XP_WIN)
  nsCString mLocalHome;
  nsCString mRoamingHome;
#endif

  const XREAppData* mOriginalAppData = nullptr;
  XREAppData mFakeAppData{};
};

class ExistentLegacyXREAppDir_Generic : public BaseXREAppDir {
 protected:
  void SetUp() override {
    BaseXREAppDir::SetUp();
    MkHomeSubdir(".mozilla", mMozDir);
    MkHomeSubdir(".mozilla/firefox", mMozDir);
  }
  nsCString mMozDir;
};

class ExistentLegacyXREAppDir_Generic_AppDataProfile
    : public ExistentLegacyXREAppDir_Generic {
 protected:
  void SetUp() override {
    ExistentLegacyXREAppDir_Generic::SetUp();
    SwitchFakeAppDataOn();
  }
};

class NonExistentLegacyXREAppDir_Generic : public BaseXREAppDir {};

class NonExistentLegacyXREAppDir_Generic_AppDataProfile : public BaseXREAppDir {
 protected:
  void SetUp() override {
    BaseXREAppDir::SetUp();
    SwitchFakeAppDataOn();
  }
};

/*
 * Tests the legacy behavior when there is
 *  - no MOZ_LEGACY_HOME
 *  - existing $HOME/.mozilla
 */

class ExistentLegacyXREAppDir_NoEnv : public ExistentLegacyXREAppDir_Generic {};

class ExistentLegacyXREAppDir_NoEnv_AppDataProfile
    : public ExistentLegacyXREAppDir_Generic_AppDataProfile {};

class NonExistentLegacyXREAppDir_NoEnv
    : public NonExistentLegacyXREAppDir_Generic {};

class NonExistentLegacyXREAppDir_NoEnv_AppDataProfile
    : public NonExistentLegacyXREAppDir_Generic_AppDataProfile {};

/*
 * Tests the legacy behavior when there is
 *  - MOZ_LEGACY_HOME = 0
 *  - existing $HOME/.mozilla
 */

class ExistentLegacyXREAppDir_BadEnv : public ExistentLegacyXREAppDir_Generic {
 protected:
  void SetUp() override {
    ExistentLegacyXREAppDir_Generic::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""0");
#endif
  }
};

class ExistentLegacyXREAppDir_BadEnv_AppDataProfile
    : public ExistentLegacyXREAppDir_Generic_AppDataProfile {
 protected:
  void SetUp() override {
    ExistentLegacyXREAppDir_Generic_AppDataProfile::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""0");
#endif
  }
};

class NonExistentLegacyXREAppDir_BadEnv
    : public NonExistentLegacyXREAppDir_Generic {
 protected:
  void SetUp() override {
    NonExistentLegacyXREAppDir_Generic::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""0");
#endif
  }
};

class NonExistentLegacyXREAppDir_BadEnv_AppDataProfile
    : public NonExistentLegacyXREAppDir_Generic_AppDataProfile {
 protected:
  void SetUp() override {
    NonExistentLegacyXREAppDir_Generic_AppDataProfile::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""0");
#endif
  }
};

/*
 * Tests the legacy behavior when there is
 *  - MOZ_LEGACY_HOME = 1
 *  - existing $HOME/.mozilla
 */

class ExistentLegacyXREAppDir_GoodEnv : public ExistentLegacyXREAppDir_Generic {
 protected:
  void SetUp() override {
    ExistentLegacyXREAppDir_Generic::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""1");
#endif
  }
};

class ExistentLegacyXREAppDir_GoodEnv_AppDataProfile
    : public ExistentLegacyXREAppDir_Generic_AppDataProfile {
 protected:
  void SetUp() override {
    ExistentLegacyXREAppDir_Generic_AppDataProfile::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""1");
#endif
  }
};

class NonExistentLegacyXREAppDir_GoodEnv
    : public NonExistentLegacyXREAppDir_Generic {
 protected:
  void SetUp() override {
    NonExistentLegacyXREAppDir_Generic::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""1");
#endif
  }
};

class NonExistentLegacyXREAppDir_GoodEnv_AppDataProfile
    : public NonExistentLegacyXREAppDir_Generic_AppDataProfile {
 protected:
  void SetUp() override {
    NonExistentLegacyXREAppDir_Generic_AppDataProfile::SetUp();
#if defined(XP_UNIX)
    SetEnv("MOZ_LEGACY_HOME""1");
#endif
  }
};

class XDGXREAppDir_Generic : public BaseXREAppDir {};

class XDGXREAppDir_Generic_AppDataProfile : public XDGXREAppDir_Generic {
 protected:
  void SetUp() override {
    XDGXREAppDir_Generic::SetUp();
    SwitchFakeAppDataOn();
  }
};

/*
 * Tests the new default behavior when there is:
 *  - no MOZ_LEGACY_HOME
 *  - no XDG_CONFIG_HOME
 *  - no existing $HOME/.mozilla
 * => $HOME/.config/mozilla/
 */

class XDGXREAppDir_NoEnv : public XDGXREAppDir_Generic {
 protected:
  void SetUp() override {
    XDGXREAppDir_Generic::SetUp();
#if defined(XP_UNIX)
    UnsetEnv("MOZ_LEGACY_HOME");
    UnsetEnv("XDG_CONFIG_HOME");
#endif
  }
};

class XDGXREAppDir_NoEnv_AppDataProfile
    : public XDGXREAppDir_Generic_AppDataProfile {
 protected:
  void SetUp() override {
    XDGXREAppDir_Generic_AppDataProfile::SetUp();
#if defined(XP_UNIX)
    UnsetEnv("MOZ_LEGACY_HOME");
    UnsetEnv("XDG_CONFIG_HOME");
#endif
  }
};

/*
 * Tests the new default behavior when there is:
 *  - no MOZ_LEGACY_HOME
 *  - XDG_CONFIG_HOME
 *  - no existing $HOME/.mozilla
 * => $XDG_CONFIG_HOME/mozilla
 */

class XDGXREAppDir_Env : public XDGXREAppDir_Generic {
 protected:
  void SetUp() override {
    XDGXREAppDir_Generic::SetUp();
    // mXdgDir will be cleaned when we clean the temp home we created
    MkHomeSubdir(".xdgConfigDir", mXdgDir);
#if defined(XP_UNIX)
    SetEnv("XDG_CONFIG_HOME", mXdgDir.get());
#endif
  }

  nsCString mXdgDir;
};

class XDGXREAppDir_Env_AppDataProfile
    : public XDGXREAppDir_Generic_AppDataProfile {
 protected:
  void SetUp() override {
    XDGXREAppDir_Generic_AppDataProfile::SetUp();
    // mXdgDir will be cleaned when we clean the temp home we created
    MkHomeSubdir(".xdgConfigDir", mXdgDir);
#if defined(XP_UNIX)
    SetEnv("XDG_CONFIG_HOME", mXdgDir.get());
#endif
  }

  nsCString mXdgDir;
};

/*
 * Tests the new default behavior when there is:
 *  - invalid XDG_CONFIG_HOME
 * => $HOME/.config/mozilla
 */

class XDGXREAppDir_InvalidEnv : public XDGXREAppDir_Generic {
 protected:
  void SetUp() override {
    XDGXREAppDir_Generic::SetUp();
    mXdgDir += "$HOME/invalid-xdg-dir/";
#if defined(XP_UNIX)
    SetEnv("XDG_CONFIG_HOME", mXdgDir.get());
#endif
  }

  nsCString mXdgDir;
};

class XDGXREAppDir_InvalidEnv_AppDataProfile
    : public XDGXREAppDir_Generic_AppDataProfile {
 protected:
  void SetUp() override {
    XDGXREAppDir_Generic_AppDataProfile::SetUp();
    mXdgDir += "$HOME/invalid-xdg-dir/";
#if defined(XP_UNIX)
    SetEnv("XDG_CONFIG_HOME", mXdgDir.get());
#endif
  }

  nsCString mXdgDir;
};

class CacheXREAppDir_Env : public BaseXREAppDir {
 protected:
  void SetUp() override {
    BaseXREAppDir::SetUp();
    // mXdgCache will be cleaned when we clean the temp home we created
    MkHomeSubdir(".xdgCacheDir", mXdgCache);
#if defined(XP_UNIX)
    SetEnv("XDG_CACHE_HOME", mXdgCache.get());
#endif
  }

  nsCString mXdgCache;
};

class CacheXREAppDir_NoEnv : public BaseXREAppDir {
 protected:
  void SetUp() override {
    BaseXREAppDir::SetUp();
#if defined(XP_UNIX)
    UnsetEnv("XDG_CACHE_HOME");
#endif
  }
};

// GetUserAppDataDirectory

// Check if '$HOME/.mozilla' is used when it exists.
TEST_F(ExistentLegacyXREAppDir_NoEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

// Check if '$HOME/.mozilla' is used when it exists and MOZ_LEGACY_HOME != 1
TEST_F(ExistentLegacyXREAppDir_BadEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

// Check if '$HOME/.mozilla' is not used when the env variable MOZ_LEGACY_HOME
// is set to 0.
TEST_F(NonExistentLegacyXREAppDir_BadEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

// Check if '$HOME/.mozilla' is used when it does not exists and MOZ_LEGACY_HOME
// = 1
TEST_F(NonExistentLegacyXREAppDir_GoodEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

// Check if '$HOME/.config/mozilla' is used if $HOME/.mozilla does not exist
// and the env variable XDG_CONFIG_HOME is not set.
TEST_F(XDGXREAppDir_NoEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

// Check if '$HOME/.config/mozilla' is used if $HOME/.mozilla does not exist
// and the env variable XDG_CONFIG_HOME is invalid.
TEST_F(XDGXREAppDir_InvalidEnv, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(XDGXREAppDir_Env, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.xdgConfigDir/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

// XREUserNativeManifests

#if defined(XP_UNIX)
TEST_F(ExistentLegacyXREAppDir_NoEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(ExistentLegacyXREAppDir_BadEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(NonExistentLegacyXREAppDir_BadEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(NonExistentLegacyXREAppDir_GoodEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(XDGXREAppDir_NoEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(XDGXREAppDir_InvalidEnv, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(XDGXREAppDir_Env, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}
#endif  // defined(XP_UNIX)

// XREUserSysExtensionDir

#if defined(XP_UNIX)
TEST_F(ExistentLegacyXREAppDir_NoEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(ExistentLegacyXREAppDir_BadEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_BadEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_GoodEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(XDGXREAppDir_NoEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(XDGXREAppDir_InvalidEnv, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(XDGXREAppDir_Env, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}
#endif  // defined(XP_UNIX)

// GetUserProfilesRootDir

TEST_F(XDGXREAppDir_NoEnv, GetUserProfilesRootDir) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox\\Profiles"_ns)
#endif
          ,
      GetUserProfilesRootDir());
}

TEST_F(XDGXREAppDir_InvalidEnv, GetUserProfilesRootDir) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox\\Profiles"_ns)
#endif
          ,
      GetUserProfilesRootDir());
}

TEST_F(XDGXREAppDir_Env, GetUserProfilesRootDir) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.xdgConfigDir/mozilla/firefox"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox\\Profiles"_ns)
#endif
          ,
      GetUserProfilesRootDir());
}

// GetDefaultUserProfileRoot

// Check if '$HOME/.mozilla' is used when it exists.
TEST_F(ExistentLegacyXREAppDir_NoEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

// Check if '$HOME/.mozilla' is used when it exists and MOZ_LEGACY_HOME != 1
TEST_F(ExistentLegacyXREAppDir_BadEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

// Check if '$HOME/.mozilla' is not used when the env variable MOZ_LEGACY_HOME
// is set to 0.
TEST_F(NonExistentLegacyXREAppDir_BadEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

// Check if '$HOME/.mozilla' is used when it does not exists and MOZ_LEGACY_HOME
// = 1
TEST_F(NonExistentLegacyXREAppDir_GoodEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

// Check if '$HOME/.config/mozilla' is used if $HOME/.mozilla does not exist
// and the env variable XDG_CONFIG_HOME is not set.
TEST_F(XDGXREAppDir_NoEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

// Check if '$HOME/.config/mozilla' is used if $HOME/.mozilla does not exist
// and the env variable XDG_CONFIG_HOME is invalid.
TEST_F(XDGXREAppDir_InvalidEnv, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(XDGXREAppDir_Env, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.xdgConfigDir/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

// GetTempDefaultUserProfileRoot

// Check if '$HOME/.mozilla' is used when it exists.
TEST_F(ExistentLegacyXREAppDir_NoEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

// Check if '$HOME/.mozilla' is used when it exists and MOZ_LEGACY_HOME != 1
TEST_F(ExistentLegacyXREAppDir_BadEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

// Check if '$HOME/.mozilla' is not used when the env variable MOZ_LEGACY_HOME
// is set to 0.
TEST_F(NonExistentLegacyXREAppDir_BadEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

// Check if '$HOME/.mozilla' is used when it does not exists and MOZ_LEGACY_HOME
// = 1
TEST_F(NonExistentLegacyXREAppDir_GoodEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

// Check if '$HOME/.config/mozilla' is used if $HOME/.mozilla does not exist
// and the env variable XDG_CONFIG_HOME is not set.
TEST_F(XDGXREAppDir_NoEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

// Check if '$HOME/.config/mozilla' is used if $HOME/.mozilla does not exist
// and the env variable XDG_CONFIG_HOME is invalid.
TEST_F(XDGXREAppDir_InvalidEnv, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.config/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

TEST_F(XDGXREAppDir_Env, GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.xdgConfigDir/mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIR));
}

/// AppDataProfile variants

TEST_F(ExistentLegacyXREAppDir_NoEnv_AppDataProfile, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(ExistentLegacyXREAppDir_BadEnv_AppDataProfile, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv_AppDataProfile,
       GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv_AppDataProfile,
       GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(NonExistentLegacyXREAppDir_BadEnv_AppDataProfile,
       GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(NonExistentLegacyXREAppDir_GoodEnv_AppDataProfile,
       GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(XDGXREAppDir_NoEnv_AppDataProfile, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(XDGXREAppDir_InvalidEnv_AppDataProfile, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

TEST_F(XDGXREAppDir_Env_AppDataProfile, GetUserAppDataDirectory) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox"_ns)
#endif
          ,
      GetUserAppDataDirectory());
}

// XREUserNativeManifests

#if defined(XP_UNIX)
TEST_F(ExistentLegacyXREAppDir_NoEnv_AppDataProfile, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(ExistentLegacyXREAppDir_BadEnv_AppDataProfile, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv_AppDataProfile, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv_AppDataProfile,
       XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(NonExistentLegacyXREAppDir_BadEnv_AppDataProfile,
       XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(NonExistentLegacyXREAppDir_GoodEnv_AppDataProfile,
       XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(XDGXREAppDir_NoEnv_AppDataProfile, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(XDGXREAppDir_InvalidEnv_AppDataProfile, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}

TEST_F(XDGXREAppDir_Env_AppDataProfile, XREUserNativeManifests) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_NATIVE_MANIFESTS));
}
#endif  // defined(XP_UNIX)

// XREUserSysExtensionDir

#if defined(XP_UNIX)
TEST_F(ExistentLegacyXREAppDir_NoEnv_AppDataProfile, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(ExistentLegacyXREAppDir_BadEnv_AppDataProfile, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv_AppDataProfile, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv_AppDataProfile,
       XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_BadEnv_AppDataProfile,
       XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_GoodEnv_AppDataProfile,
       XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(XDGXREAppDir_NoEnv_AppDataProfile, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(XDGXREAppDir_InvalidEnv_AppDataProfile, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}

TEST_F(XDGXREAppDir_Env_AppDataProfile, XREUserSysExtensionDir) {
  ASSERT_EQ(
#  if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Mozilla/Extensions"_ns)
#  elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla/extensions"_ns)
#  endif
          ,
      GetFromXREDirProvider(XRE_USER_SYS_EXTENSION_DIR));
}
#endif  // defined(XP_UNIX)

// GetUserProfilesRootDir

TEST_F(XDGXREAppDir_NoEnv_AppDataProfile, GetUserProfilesRootDir) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox\\Profiles"_ns)
#endif
          ,
      GetUserProfilesRootDir());
}

TEST_F(XDGXREAppDir_InvalidEnv_AppDataProfile, GetUserProfilesRootDir) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox\\Profiles"_ns)
#endif
          ,
      GetUserProfilesRootDir());
}

TEST_F(XDGXREAppDir_Env_AppDataProfile, GetUserProfilesRootDir) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mAppSupport + "/Firefox/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.fooprofile"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Firefox\\Profiles"_ns)
#endif
          ,
      GetUserProfilesRootDir());
}

// GetDefaultUserProfileRoot

TEST_F(ExistentLegacyXREAppDir_NoEnv_AppDataProfile,
       GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(ExistentLegacyXREAppDir_BadEnv_AppDataProfile,
       GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + ".mozilla"_)
#lif(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(ExistentLegacyXREAppDir_GoodEnv_AppDataProfile,
       GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCString(mRoamingHome + "\\Mozilla\\Profiles"_ns)
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_NoEnv_AppDataProfile,
       GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(ANDROID)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_MACOSX)
      nsCString(mLibrary + "/Mozilla/Profiles"_ns)
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      (mRoamingHome + "\Mozilla\Profiles"_)
#endif
          
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(NonExistentLegacyXREAppDir_BadEnv_AppDataProfile,
       GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#protected:
java.lang.StringIndexOutOfBoundsException: Range [18, 17) out of bounds for length 27
elifdefined)
          :  }
#elif defined(XP_UNIX)
      java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#elif defined(XP_WIN)
      nsCString(mRoamingHome
#endif
          ,
      GetFromDirectoryService(java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 3
}SetEnv"","")

TEST_F:ExistentLegacyXREAppDir_Generic_AppDataProfile
        :(;
  (
#if ()
      nsCString(mMockedHomeDir + "/mozilla"_java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
#elif (
rary+//Profiles_)
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
        {
#elif defined:(;
      nsCString(mRoamingHome +java.lang.NullPointerException
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(XDGXREAppDir_NoEnv_AppDataProfile, java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 3
  ASSERT_EQ(

      java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
#protected
      "ns
(
      
#elifprotected
      nsCStringmRoamingHome+"\ozilla\Profiles"ns
#endif
          ,class
romDirectoryService()
}

TEST_F  {
  }
#ifdefinedANDROID
      mMockedHomeDir+"java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
(XP_MACOSX
      java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 3
#(
       *- noMOZ_LEGACY_HOME
#elif     no XDG_CONFIG_HOME
      nsCStringmRoamingHome +"\Mozilla\\Profiles"ns
#endif
          ,
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

TEST_F(XDGXREAppDir_Env_AppDataProfile, GetDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(class XDGXREAppDir_ : publicXDGXREAppDir_Generic {
      nsCStringmMockedHomeDir  /.mozilla_)
#elif defineddefinedX)
      nsCStringUnsetEnv"")
java.lang.StringIndexOutOfBoundsException: Range [0, 5) out of bounds for length 2
      mMockedHomeDir /mozilla"_)
#elif defined(  voidSetUp( override java.lang.StringIndexOutOfBoundsException: Range [25, 26) out of bounds for length 25
      nsCString(UnsetEnv"";
#endif;
          
      GetFromDirectoryService(NS_APP_USER_PROFILES_ROOT_DIR));
}

// GetTempDefaultUserProfileRoot

ExistentLegacyXREAppDir_NoEnv_AppDataProfile,
GetTempDefaultUserProfileRoot){
  java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
#if defined(
      kedHomeDir+/mozillan)
defined)
      nsCString(
#}
      (+".ozilla_)
 :
      will     thetemp   
#if (XP_UNIX)
          java.lang.StringIndexOutOfBoundsException: Range [10, 11) out of bounds for length 6
      NS_APP_USER_PROFILES_LOCAL_ROOT_DIR
}

TEST_F  >$/configmozilla
       java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 3
  ASSERT_EQ(
# ()
      mXdgDir ="HOME/xdg-"
#()
      nsCString  java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
#elif defined(XP_UNIX)
      ringmMockedHomeDir +".mozilla"ns
#)
      nsCString(mLocalHome + "ifdefined(XP_UNIX
#ndif
          }
      etFromDirectoryService()java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
}

    /mXdgCachebewhenwecleanthejava.lang.StringIndexOutOfBoundsException: Range [60, 57) out of bounds for length 71
GetTempDefaultUserProfileRoot
  java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 2
#    :(;
nsCStringmMockedHomeDir  "."ns
elifdefined()
      
#elif defined(XP_UNIX)
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(XP_WIN)
      nsCStringExistentLegacyXREAppDir_NoEnv GetUserAppDataDirectory){
#endif
          ,
      NS_APP_USER_PROFILES_LOCAL_ROOT_DIR);
}

TEST_F(GetUserAppDataDirectory()
       GetTempDefaultUserProfileRoot) {
  ASSERT_EQ(
#if defined(nsCStringmMockedHomeDir+"mozilla_)
      nsCString(mMockedHomeDir nsCStringmAppSupport  /"ns
XP_MACOSX
      nsCString(nsCString(mRoamingHome+"\Mozilla\Firefox"_s
#elif defined(XP_UNIX)
      nsCString(TEST_F(ExistentLegacyXREAppDir_GoodEnvExistentLegacyXREAppDir_GoodEnv, {
(XP_WIN
      (+"mozilla_)
#endifnsCStringmAppSupport+/"ns
          nsCString(  ".mozilla/firefox"ns
      ;
}

TEST_F(NonExistentLegacyXREAppDir_BadEnv_AppDataProfile,
       GetTempDefaultUserProfileRoot)GetUserAppDataDirectory()
  ASSERT_EQ(
#ifjava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 47
java.lang.StringIndexOutOfBoundsException: Range [15, 6) out of bounds for length 48
#elif nsCStringmRoamingHome \ns
java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 51
(
mMockedHomeDir"mozilla_)
#nsCStringmAppSupport+/ns
            nsCStringnsCStringmMockedHomeDir  ///firefoxns)
#endif
          ,elifdefined)
      GetFromDirectoryService(NS_APP_USER_PROFILES_LOCAL_ROOT_DIRelif
}

TEST_F(NonExistentLegacyXREAppDir_GoodEnv_AppDataProfile,// Check if '$HOME/.config/mozilla' is used if $HOME/.mozilla does not exist
        
  ASSERT_EQ(
ifdefined
      nsCString(mMockedHomeDir      mAppSupport+/"_nsjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
OSX
      mAppCache +//Profilesns
##ndif
            etUserAppDataDirectory()java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
#// and the env variable XDG_CONFIG_HOME is invalid.
      (  "\\Profiles_)
#endif
          
            sCStringmMockedHomeDir+"./mozilla/"ns
}

TEST_F(java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
  java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 47
#if defined(ANDROID)
      nsCString)
#ejava.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 21
      nsCString(// XREUserNativeManifests
)
      (  /_)
#elif defined# (
      nsCString(  (XP_UNIX)
#endif
          ,
      GetFromDirectoryService(java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 1
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

XDGXREAppDir_InvalidEnv_AppDataProfile GetTempDefaultUserProfileRoot 
  ASSERT_EQ(
definedANDROID
      nsCString(ExistentLegacyXREAppDir_GoodEnv,java.lang.StringIndexOutOfBoundsException: Range [63, 62) out of bounds for length 65

      java.lang.StringIndexOutOfBoundsException: Range [25, 15) out of bounds for length 51
#lif ()
      nsCString(mMockedHomeDir + "/.mozilla"_ns)
#elif defined(
      nsCString,
#endif
          ,
mDirectoryService)
}

TEST_F( GetTempDefaultUserProfileRoot)java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
  ASSERT_EQ(
#if GetFromXREDirP(XRE_USER_NATIVE_MANIFESTS);
      (NonExistentLegacyXREAppDir_BadEnvXREUserNativeManifests)
#  ifdefined()
      nsCString(mAppCache + "/Mozilla/Profiles"_ns)
(
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 48

      ASSERT_EQjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 26
          ,
            XRE_USER_NATIVE_MANIFESTS)
}
  (
/// END AppDataProfile variants

/// Tests for XDG_CACHE_HOME

// GetUserLocalDataDirectory

// Check if '$HOME/.cache/mozilla' is used when '$XDG_CACHE_HOME' is not set.
ASSERT_EQ
  ASSERT_EQnsCString(  ".ozilla"ns

      nsCString(mMockedHomeDir ,
#elif
      ( + /_ns)
XP_UNIX
  /mfirefox_)
#definedXP_WIN
        \Mozilla\Firefox_)
java.lang.NullPointerException
          ,
      #endif 
}

// Check if '$XDG_CACHE_HOME/mozilla' is used when '$XDG_CACHE_HOME' is set.
{
  ASSERT_EQ(
#if #  elif  definedjava.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
nsCString(  "mozilla"ns
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      nsCString(mAppCache#ifdefined
#elif defined(#  elif defined(XP_MAC)
      nsCString(java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 24
#elif java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
      nsCString(  \\_)
#endif
   
      nsCString  /java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 59
}

// GetUserProfilesLocalDir

TEST_F(CacheXREAppDir_NoEnv, GetUserProfilesLocalDir) {
  ASSERT_EQ(
#if defined(ANDROIDASSERT_EQ
nsCStringmMockedHomeDir+/"ns)
#elif defined(XP_MACOSX)
      nsCString(mAppCache + "      nsCStringmAppSupport "//Extensions_)
java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 22
      nsCString(mMockedHomeDir + "/.cache/mozilla# if(ANDROID)
#elif defined(XP_WIN)
      nsCString(mLocalHome + "\\Mozillajava.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 26
java.lang.NullPointerException
          
      GetUserProfilesLocalDir());
}

TEST_F(CacheXREAppDir_Env, 
  ASSERT_EQ(
#if defined(ANDROID)
      mMockedHomeDir+"/mozillans)
#elif defined(XP_MACOSX)
nsCStringmAppCache  /Profiles_)
#elif defined(XP_UNIX (mMockedHomeDir+"./"ns
java.lang.StringIndexOutOfBoundsException: Range [56, 54) out of bounds for length 57
 XP_WIN
      (  \MozillaFirefox\"ns)
#endif
java.lang.StringIndexOutOfBoundsException: Range [11, 12) out of bounds for length 11
      java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 11
}

Messung V0.5 in Prozent
C=97 H=100 G=98

¤ Dauer der Verarbeitung: 0.35 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002