mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-11 12:25:53 +00:00
Bug 1482782 - Part 2: Move directory service atoms into nsGkAtoms. r=njn
Summary: Depends On D3280 Reviewers: njn! Tags: #secure-revision Bug #: 1482782 Differential Revision: https://phabricator.services.mozilla.com/D3281
This commit is contained in:
parent
ee27868fc6
commit
ae87156cab
@ -2211,6 +2211,32 @@ STATIC_ATOMS = [
|
||||
# Atom("kLiAtom", "li"), # "li" is present above
|
||||
# Atom("kXMLNSAtom", "xmlns"), # "xmlns" is present above
|
||||
Atom("parseType", "parseType"),
|
||||
|
||||
# Directory service
|
||||
Atom("DirectoryService_CurrentProcess", "XCurProcD"),
|
||||
Atom("DirectoryService_GRE_Directory", "GreD"),
|
||||
Atom("DirectoryService_GRE_BinDirectory", "GreBinD"),
|
||||
Atom("DirectoryService_OS_TemporaryDirectory", "TmpD"),
|
||||
Atom("DirectoryService_OS_CurrentProcessDirectory", "CurProcD"),
|
||||
Atom("DirectoryService_OS_CurrentWorkingDirectory", "CurWorkD"),
|
||||
# Atom("DirectoryService_OS_HomeDirectory", "Home"), # "Home" is present above
|
||||
Atom("DirectoryService_OS_DesktopDirectory", "Desk"),
|
||||
Atom("DirectoryService_InitCurrentProcess_dummy", "MozBinD"),
|
||||
Atom("DirectoryService_SystemDirectory", "SysD"),
|
||||
Atom("DirectoryService_UserLibDirectory", "ULibDir"),
|
||||
Atom("DirectoryService_DefaultDownloadDirectory", "DfltDwnld"),
|
||||
Atom("DirectoryService_LocalApplicationsDirectory", "LocApp"),
|
||||
Atom("DirectoryService_UserPreferencesDirectory", "UsrPrfs"),
|
||||
Atom("DirectoryService_PictureDocumentsDirectory", "Pct"),
|
||||
Atom("DirectoryService_WindowsDirectory", "WinD"),
|
||||
Atom("DirectoryService_WindowsProgramFiles", "ProgF"),
|
||||
Atom("DirectoryService_Programs", "Progs"),
|
||||
Atom("DirectoryService_Favorites", "Favs"),
|
||||
Atom("DirectoryService_Appdata", "AppData"),
|
||||
Atom("DirectoryService_LocalAppdata", "LocalAppData"),
|
||||
Atom("DirectoryService_LocalAppdataLow", "LocalAppDataLow"),
|
||||
Atom("DirectoryService_LowIntegrityTempBase", "LowTmpDBase"),
|
||||
Atom("DirectoryService_WinCookiesDirectory", "CookD"),
|
||||
] + HTML_PARSER_ATOMS
|
||||
|
||||
|
||||
|
@ -65,7 +65,6 @@ EXPORTS += [
|
||||
'nsAnonymousTemporaryFile.h',
|
||||
'nsAppDirectoryServiceDefs.h',
|
||||
'nsDirectoryService.h',
|
||||
'nsDirectoryServiceAtomList.h',
|
||||
'nsDirectoryServiceDefs.h',
|
||||
'nsDirectoryServiceUtils.h',
|
||||
'nsEscape.h',
|
||||
|
@ -94,36 +94,6 @@ nsDirectoryService::Create(nsISupports* aOuter, REFNSIID aIID, void** aResult)
|
||||
return gService->QueryInterface(aIID, aResult);
|
||||
}
|
||||
|
||||
namespace mozilla {
|
||||
namespace detail {
|
||||
|
||||
MOZ_PUSH_DISABLE_INTEGRAL_CONSTANT_OVERFLOW_WARNING
|
||||
extern constexpr DirectoryAtoms gDirectoryAtoms = {
|
||||
#define DIR_ATOM(name_, value_) NS_STATIC_ATOM_INIT_STRING(value_)
|
||||
#include "nsDirectoryServiceAtomList.h"
|
||||
#undef DIR_ATOM
|
||||
{
|
||||
#define DIR_ATOM(name_, value_) \
|
||||
NS_STATIC_ATOM_INIT_ATOM(nsStaticAtom, DirectoryAtoms, name_, value_)
|
||||
#include "nsDirectoryServiceAtomList.h"
|
||||
#undef DIR_ATOM
|
||||
}
|
||||
};
|
||||
MOZ_POP_DISABLE_INTEGRAL_CONSTANT_OVERFLOW_WARNING
|
||||
|
||||
} // namespace detail
|
||||
} // namespace mozilla
|
||||
|
||||
const nsStaticAtom* const nsDirectoryService::sAtoms =
|
||||
mozilla::detail::gDirectoryAtoms.mAtoms;
|
||||
|
||||
#define DIR_ATOM(name_, value_) \
|
||||
NS_STATIC_ATOM_DEFN_PTR( \
|
||||
nsStaticAtom, mozilla::detail::DirectoryAtoms, \
|
||||
mozilla::detail::gDirectoryAtoms, nsDirectoryService, name_)
|
||||
#include "nsDirectoryServiceAtomList.h"
|
||||
#undef DIR_ATOM
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDirectoryService::Init()
|
||||
{
|
||||
@ -139,8 +109,6 @@ nsDirectoryService::RealInit()
|
||||
|
||||
gService = new nsDirectoryService();
|
||||
|
||||
NS_RegisterStaticAtoms(sAtoms, sAtomsLen);
|
||||
|
||||
// Let the list hold the only reference to the provider.
|
||||
nsAppFileLocationProvider* defaultProvider = new nsAppFileLocationProvider;
|
||||
gService->mProviders.AppendElement(defaultProvider);
|
||||
@ -419,91 +387,86 @@ nsDirectoryService::GetFile(const char* aProp, bool* aPersistent,
|
||||
|
||||
RefPtr<nsAtom> inAtom = NS_Atomize(aProp);
|
||||
|
||||
// Check that nsGkAtoms::Home matches the value that sOS_HomeDirectory would
|
||||
// have if it wasn't commented out to avoid static atom duplication.
|
||||
MOZ_ASSERT(
|
||||
NS_strcmp(nsGkAtoms::Home->GetUTF16String(), u"" NS_OS_HOME_DIR) == 0);
|
||||
|
||||
// check to see if it is one of our defaults
|
||||
|
||||
if (inAtom == nsDirectoryService::sCurrentProcess ||
|
||||
inAtom == nsDirectoryService::sOS_CurrentProcessDirectory) {
|
||||
if (inAtom == nsGkAtoms::DirectoryService_CurrentProcess ||
|
||||
inAtom == nsGkAtoms::DirectoryService_OS_CurrentProcessDirectory) {
|
||||
rv = GetCurrentProcessDirectory(getter_AddRefs(localFile));
|
||||
}
|
||||
|
||||
// Unless otherwise set, the core pieces of the GRE exist
|
||||
// in the current process directory.
|
||||
else if (inAtom == nsDirectoryService::sGRE_Directory ||
|
||||
inAtom == nsDirectoryService::sGRE_BinDirectory) {
|
||||
else if (inAtom == nsGkAtoms::DirectoryService_GRE_Directory ||
|
||||
inAtom == nsGkAtoms::DirectoryService_GRE_BinDirectory) {
|
||||
rv = GetCurrentProcessDirectory(getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sOS_TemporaryDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_OS_TemporaryDirectory) {
|
||||
rv = GetSpecialSystemDirectory(OS_TemporaryDirectory, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sOS_CurrentProcessDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_OS_CurrentProcessDirectory) {
|
||||
rv = GetSpecialSystemDirectory(OS_CurrentProcessDirectory, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sOS_CurrentWorkingDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_OS_CurrentWorkingDirectory) {
|
||||
rv = GetSpecialSystemDirectory(OS_CurrentWorkingDirectory, getter_AddRefs(localFile));
|
||||
}
|
||||
|
||||
#if defined(MOZ_WIDGET_COCOA)
|
||||
else if (inAtom == nsDirectoryService::sDirectory) {
|
||||
else if (inAtom == nsGkAtoms::DirectoryService_Directory) {
|
||||
rv = GetOSXFolderType(kClassicDomain, kSystemFolderType, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sUserLibDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_UserLibDirectory) {
|
||||
rv = GetOSXFolderType(kUserDomain, kDomainLibraryFolderType, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsGkAtoms::Home) {
|
||||
rv = GetOSXFolderType(kUserDomain, kDomainTopLevelFolderType, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sDefaultDownloadDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_DefaultDownloadDirectory) {
|
||||
rv = GetOSXFolderType(kUserDomain, kDownloadsFolderType,
|
||||
getter_AddRefs(localFile));
|
||||
if (NS_FAILED(rv)) {
|
||||
rv = GetOSXFolderType(kUserDomain, kDesktopFolderType,
|
||||
getter_AddRefs(localFile));
|
||||
}
|
||||
} else if (inAtom == nsDirectoryService::sOS_DesktopDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_OS_DesktopDirectory) {
|
||||
rv = GetOSXFolderType(kUserDomain, kDesktopFolderType, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sLocalApplicationsDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_LocalApplicationsDirectory) {
|
||||
rv = GetOSXFolderType(kLocalDomain, kApplicationsFolderType, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sUserPreferencesDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_UserPreferencesDirectory) {
|
||||
rv = GetOSXFolderType(kUserDomain, kPreferencesFolderType, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sPictureDocumentsDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_PictureDocumentsDirectory) {
|
||||
rv = GetOSXFolderType(kUserDomain, kPictureDocumentsFolderType, getter_AddRefs(localFile));
|
||||
}
|
||||
#elif defined (XP_WIN)
|
||||
else if (inAtom == nsDirectoryService::sSystemDirectory) {
|
||||
else if (inAtom == nsGkAtoms::DirectoryService_SystemDirectory) {
|
||||
rv = GetSpecialSystemDirectory(Win_SystemDirectory, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sWindowsDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_WindowsDirectory) {
|
||||
rv = GetSpecialSystemDirectory(Win_WindowsDirectory, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sWindowsProgramFiles) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_WindowsProgramFiles) {
|
||||
rv = GetSpecialSystemDirectory(Win_ProgramFiles, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsGkAtoms::Home) {
|
||||
rv = GetSpecialSystemDirectory(Win_HomeDirectory, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sPrograms) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_Programs) {
|
||||
rv = GetSpecialSystemDirectory(Win_Programs, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sFavorites) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_Favorites) {
|
||||
rv = GetSpecialSystemDirectory(Win_Favorites, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sOS_DesktopDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_OS_DesktopDirectory) {
|
||||
rv = GetSpecialSystemDirectory(Win_Desktopdirectory, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sAppdata) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_Appdata) {
|
||||
rv = GetSpecialSystemDirectory(Win_Appdata, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sLocalAppdata) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_LocalAppdata) {
|
||||
rv = GetSpecialSystemDirectory(Win_LocalAppdata, getter_AddRefs(localFile));
|
||||
#if defined(MOZ_CONTENT_SANDBOX)
|
||||
} else if (inAtom == nsDirectoryService::sLocalAppdataLow) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_LocalAppdataLow) {
|
||||
rv = GetSpecialSystemDirectory(Win_LocalAppdataLow, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sLowIntegrityTempBase) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_LowIntegrityTempBase) {
|
||||
rv = GetLowIntegrityTempBase(getter_AddRefs(localFile));
|
||||
#endif
|
||||
} else if (inAtom == nsDirectoryService::sWinCookiesDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_WinCookiesDirectory) {
|
||||
rv = GetSpecialSystemDirectory(Win_Cookies, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sDefaultDownloadDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_DefaultDownloadDirectory) {
|
||||
rv = GetSpecialSystemDirectory(Win_Downloads, getter_AddRefs(localFile));
|
||||
}
|
||||
#elif defined (XP_UNIX)
|
||||
else if (inAtom == nsGkAtoms::Home) {
|
||||
rv = GetSpecialSystemDirectory(Unix_HomeDirectory, getter_AddRefs(localFile));
|
||||
} else if (inAtom == nsDirectoryService::sOS_DesktopDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_OS_DesktopDirectory) {
|
||||
rv = GetSpecialSystemDirectory(Unix_XDG_Desktop, getter_AddRefs(localFile));
|
||||
*aPersistent = false;
|
||||
} else if (inAtom == nsDirectoryService::sDefaultDownloadDirectory) {
|
||||
} else if (inAtom == nsGkAtoms::DirectoryService_DefaultDownloadDirectory) {
|
||||
rv = GetSpecialSystemDirectory(Unix_XDG_Download, getter_AddRefs(localFile));
|
||||
*aPersistent = false;
|
||||
}
|
||||
|
@ -10,9 +10,7 @@
|
||||
#include "nsIDirectoryService.h"
|
||||
#include "nsInterfaceHashtable.h"
|
||||
#include "nsIFile.h"
|
||||
#include "nsAtom.h"
|
||||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsStaticAtom.h"
|
||||
#include "nsTArray.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
@ -21,28 +19,6 @@
|
||||
// CANNOT be used to GET a location
|
||||
#define NS_DIRECTORY_SERVICE_CID {0xf00152d0,0xb40b,0x11d3,{0x8c, 0x9c, 0x00, 0x00, 0x64, 0x65, 0x73, 0x74}}
|
||||
|
||||
namespace mozilla {
|
||||
namespace detail {
|
||||
|
||||
struct DirectoryAtoms
|
||||
{
|
||||
#define DIR_ATOM(name_, value_) NS_STATIC_ATOM_DECL_STRING(name_, value_)
|
||||
#include "nsDirectoryServiceAtomList.h"
|
||||
#undef DIR_ATOM
|
||||
|
||||
enum class Atoms {
|
||||
#define DIR_ATOM(name_, value_) NS_STATIC_ATOM_ENUM(name_)
|
||||
#include "nsDirectoryServiceAtomList.h"
|
||||
#undef DIR_ATOM
|
||||
AtomsCount
|
||||
};
|
||||
|
||||
const nsStaticAtom mAtoms[static_cast<size_t>(Atoms::AtomsCount)];
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
} // namespace mozilla
|
||||
|
||||
class nsDirectoryService final
|
||||
: public nsIDirectoryService
|
||||
, public nsIProperties
|
||||
@ -76,15 +52,6 @@ private:
|
||||
|
||||
nsInterfaceHashtable<nsCStringHashKey, nsIFile> mHashtable;
|
||||
nsTArray<nsCOMPtr<nsIDirectoryServiceProvider>> mProviders;
|
||||
|
||||
static const nsStaticAtom* const sAtoms;
|
||||
static constexpr size_t sAtomsLen =
|
||||
static_cast<size_t>(mozilla::detail::DirectoryAtoms::Atoms::AtomsCount);
|
||||
|
||||
public:
|
||||
#define DIR_ATOM(name_, value_) NS_STATIC_ATOM_DECL_PTR(nsStaticAtom, name_)
|
||||
#include "nsDirectoryServiceAtomList.h"
|
||||
#undef DIR_ATOM
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -1,41 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
DIR_ATOM(sCurrentProcess, NS_XPCOM_CURRENT_PROCESS_DIR)
|
||||
DIR_ATOM(sGRE_Directory, NS_GRE_DIR)
|
||||
DIR_ATOM(sGRE_BinDirectory, NS_GRE_BIN_DIR)
|
||||
DIR_ATOM(sOS_TemporaryDirectory, NS_OS_TEMP_DIR)
|
||||
DIR_ATOM(sOS_CurrentProcessDirectory, NS_OS_CURRENT_PROCESS_DIR)
|
||||
DIR_ATOM(sOS_CurrentWorkingDirectory, NS_OS_CURRENT_WORKING_DIR)
|
||||
// This one is commented out because nsGkAtoms::Home also exists, and we don't
|
||||
// allow duplicate static atoms.
|
||||
//DIR_ATOM(sOS_HomeDirectory, NS_OS_HOME_DIR)
|
||||
DIR_ATOM(sOS_DesktopDirectory, NS_OS_DESKTOP_DIR)
|
||||
DIR_ATOM(sInitCurrentProcess_dummy, NS_XPCOM_INIT_CURRENT_PROCESS_DIR)
|
||||
#if defined (MOZ_WIDGET_COCOA)
|
||||
DIR_ATOM(sDirectory, NS_OS_SYSTEM_DIR)
|
||||
DIR_ATOM(sUserLibDirectory, NS_MAC_USER_LIB_DIR)
|
||||
DIR_ATOM(sDefaultDownloadDirectory, NS_OSX_DEFAULT_DOWNLOAD_DIR)
|
||||
DIR_ATOM(sLocalApplicationsDirectory, NS_OSX_LOCAL_APPLICATIONS_DIR)
|
||||
DIR_ATOM(sUserPreferencesDirectory, NS_OSX_USER_PREFERENCES_DIR)
|
||||
DIR_ATOM(sPictureDocumentsDirectory, NS_OSX_PICTURE_DOCUMENTS_DIR)
|
||||
#elif defined (XP_WIN)
|
||||
DIR_ATOM(sSystemDirectory, NS_OS_SYSTEM_DIR)
|
||||
DIR_ATOM(sWindowsDirectory, NS_WIN_WINDOWS_DIR)
|
||||
DIR_ATOM(sWindowsProgramFiles, NS_WIN_PROGRAM_FILES_DIR)
|
||||
DIR_ATOM(sPrograms, NS_WIN_PROGRAMS_DIR)
|
||||
DIR_ATOM(sFavorites, NS_WIN_FAVORITES_DIR)
|
||||
DIR_ATOM(sAppdata, NS_WIN_APPDATA_DIR)
|
||||
DIR_ATOM(sLocalAppdata, NS_WIN_LOCAL_APPDATA_DIR)
|
||||
#if defined(MOZ_CONTENT_SANDBOX)
|
||||
DIR_ATOM(sLocalAppdataLow, NS_WIN_LOCAL_APPDATA_LOW_DIR)
|
||||
DIR_ATOM(sLowIntegrityTempBase, NS_WIN_LOW_INTEGRITY_TEMP_BASE)
|
||||
#endif
|
||||
DIR_ATOM(sWinCookiesDirectory, NS_WIN_COOKIES_DIR)
|
||||
DIR_ATOM(sDefaultDownloadDirectory, NS_WIN_DEFAULT_DOWNLOAD_DIR)
|
||||
#elif defined (XP_UNIX)
|
||||
DIR_ATOM(sDefaultDownloadDirectory, NS_UNIX_DEFAULT_DOWNLOAD_DIR)
|
||||
#endif
|
@ -14,7 +14,10 @@
|
||||
* subclass). Keys whose definition ends in "LIST" return an nsISimpleEnumerator
|
||||
* which enumerates a list of file objects.
|
||||
*
|
||||
* Defines listed in this file are FROZEN. This list may grow.
|
||||
* Defines listed in this file are FROZEN. This list may grow. Each unique
|
||||
* string in this file should have a corresponding atom defined in
|
||||
* StaticAtoms.py (search for "DirectoryService"), regardless of whether it
|
||||
* is defined here due to conditional compilation.
|
||||
*/
|
||||
|
||||
#ifndef nsDirectoryServiceDefs_h___
|
||||
@ -22,9 +25,6 @@
|
||||
|
||||
/* General OS specific locations */
|
||||
|
||||
// If this value ever changes, the special handling of the
|
||||
// nsDirectoryService::sOS_HomeDirectory static atom -- i.e. the use of
|
||||
// nsGkAtoms::Home in its place -- must be removed.
|
||||
#define NS_OS_HOME_DIR "Home"
|
||||
|
||||
#define NS_OS_TEMP_DIR "TmpD"
|
||||
|
Loading…
Reference in New Issue
Block a user