summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2020-09-17 15:24:50 +0000
committerMoonchild <moonchild@palemoon.org>2020-09-21 11:04:52 +0000
commit892a2d9655650616c361750a4d1a49f7d7914ad2 (patch)
tree7cedb1b8e368543f56d755781f4ed33d5c2e6adf
parent075fa012868017c9cb49f1b92960bf02f4bf27ca (diff)
downloadUXP-892a2d9655650616c361750a4d1a49f7d7914ad2.tar
UXP-892a2d9655650616c361750a4d1a49f7d7914ad2.tar.gz
UXP-892a2d9655650616c361750a4d1a49f7d7914ad2.tar.lz
UXP-892a2d9655650616c361750a4d1a49f7d7914ad2.tar.xz
UXP-892a2d9655650616c361750a4d1a49f7d7914ad2.zip
Issue #1653 - Part 1: Remove WinUtils::SHGetKnownFolderPath
Instead of doing the whole dll-load, replace function dance, we can just use the shlobj.h version of Windows.
-rw-r--r--dom/plugins/ipc/PluginModuleChild.cpp6
-rw-r--r--widget/windows/WinIMEHandler.cpp4
-rw-r--r--widget/windows/WinUtils.cpp28
-rw-r--r--widget/windows/WinUtils.h14
4 files changed, 5 insertions, 47 deletions
diff --git a/dom/plugins/ipc/PluginModuleChild.cpp b/dom/plugins/ipc/PluginModuleChild.cpp
index f943dfc42..98c9cd494 100644
--- a/dom/plugins/ipc/PluginModuleChild.cpp
+++ b/dom/plugins/ipc/PluginModuleChild.cpp
@@ -40,8 +40,8 @@
#ifdef XP_WIN
#include "nsWindowsDllInterceptor.h"
#include "mozilla/widget/AudioSession.h"
-#include "WinUtils.h"
#include <knownfolders.h>
+#include <shlobj.h>
#endif
#ifdef MOZ_WIDGET_COCOA
@@ -1918,8 +1918,8 @@ GetLocalLowTempPath(size_t aLen, LPWSTR aPath)
{
NS_NAMED_LITERAL_STRING(tempname, "\\Temp");
LPWSTR path;
- if (SUCCEEDED(WinUtils::SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0,
- nullptr, &path))) {
+ if (SUCCEEDED(SHGetKnownFolderPath(FOLDERID_LocalAppDataLow, 0,
+ nullptr, &path))) {
if (wcslen(path) + tempname.Length() < aLen) {
wcscpy(aPath, path);
wcscat(aPath, tempname.get());
diff --git a/widget/windows/WinIMEHandler.cpp b/widget/windows/WinIMEHandler.cpp
index 9debaa2dd..f411cdd50 100644
--- a/widget/windows/WinIMEHandler.cpp
+++ b/widget/windows/WinIMEHandler.cpp
@@ -961,8 +961,8 @@ IMEHandler::ShowOnScreenKeyboard()
} else {
PWSTR path = nullptr;
HRESULT hres =
- WinUtils::SHGetKnownFolderPath(FOLDERID_ProgramFilesCommon, 0,
- nullptr, &path);
+ SHGetKnownFolderPath(FOLDERID_ProgramFilesCommon, 0,
+ nullptr, &path);
if (FAILED(hres) || !path) {
return;
}
diff --git a/widget/windows/WinUtils.cpp b/widget/windows/WinUtils.cpp
index bd42e78f6..6d9aab50d 100644
--- a/widget/windows/WinUtils.cpp
+++ b/widget/windows/WinUtils.cpp
@@ -419,8 +419,6 @@ const char FaviconHelper::kShortcutCacheDir[] = "shortcutCache";
// apis available on vista and up.
WinUtils::SHCreateItemFromParsingNamePtr WinUtils::sCreateItemFromParsingName = nullptr;
-WinUtils::SHGetKnownFolderPathPtr WinUtils::sGetKnownFolderPath = nullptr;
-
// We just leak these DLL HMODULEs. There's no point in calling FreeLibrary
// on them during shutdown anyway.
static const wchar_t kShellLibraryName[] = L"shell32.dll";
@@ -1179,32 +1177,6 @@ WinUtils::SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc,
return sCreateItemFromParsingName(pszPath, pbc, riid, ppv);
}
-/* static */
-HRESULT
-WinUtils::SHGetKnownFolderPath(REFKNOWNFOLDERID rfid,
- DWORD dwFlags,
- HANDLE hToken,
- PWSTR *ppszPath)
-{
- if (sGetKnownFolderPath) {
- return sGetKnownFolderPath(rfid, dwFlags, hToken, ppszPath);
- }
-
- if (!sShellDll) {
- sShellDll = ::LoadLibraryW(kShellLibraryName);
- if (!sShellDll) {
- return false;
- }
- }
-
- sGetKnownFolderPath = (SHGetKnownFolderPathPtr)
- GetProcAddress(sShellDll, "SHGetKnownFolderPath");
- if (!sGetKnownFolderPath)
- return E_FAIL;
-
- return sGetKnownFolderPath(rfid, dwFlags, hToken, ppszPath);
-}
-
static BOOL
WINAPI EnumFirstChild(HWND hwnd, LPARAM lParam)
{
diff --git a/widget/windows/WinUtils.h b/widget/windows/WinUtils.h
index 37469ce07..9aa2c1c8a 100644
--- a/widget/windows/WinUtils.h
+++ b/widget/windows/WinUtils.h
@@ -399,14 +399,6 @@ public:
REFIID riid, void **ppv);
/**
- * SHGetKnownFolderPath() calls native SHGetKnownFolderPath()
- * API which is available on Vista and up.
- */
- static HRESULT SHGetKnownFolderPath(REFKNOWNFOLDERID rfid,
- DWORD dwFlags,
- HANDLE hToken,
- PWSTR *ppszPath);
- /**
* GetShellItemPath return the file or directory path of a shell item.
* Internally calls IShellItem's GetDisplayName.
*
@@ -529,12 +521,6 @@ private:
REFIID riid,
void **ppv);
static SHCreateItemFromParsingNamePtr sCreateItemFromParsingName;
- typedef HRESULT (WINAPI * SHGetKnownFolderPathPtr)(REFKNOWNFOLDERID rfid,
- DWORD dwFlags,
- HANDLE hToken,
- PWSTR *ppszPath);
- static SHGetKnownFolderPathPtr sGetKnownFolderPath;
-
static void GetWhitelistedPaths(
nsTArray<mozilla::Pair<nsString,nsDependentString>>& aOutput);
};