зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1400317 - Win32k Lockdown: Remote IsAppThemed() r=jmathies
Differential Revision: https://phabricator.services.mozilla.com/D80566
This commit is contained in:
Родитель
f26e59ad61
Коммит
22b263e21b
|
@ -25,6 +25,9 @@ struct WinContentSystemParameters::Detail {
|
|||
bool cachedIsPerMonitorDPIAware{false};
|
||||
float cachedSystemDPI{0.0f};
|
||||
bool cachedFlatMenusEnabled{false};
|
||||
|
||||
// Almost-always true in Windows 7, always true starting in Windows 8
|
||||
bool cachedIsAppThemed{true};
|
||||
};
|
||||
|
||||
// static
|
||||
|
@ -63,6 +66,14 @@ bool WinContentSystemParameters::AreFlatMenusEnabled() {
|
|||
return mDetail->cachedFlatMenusEnabled;
|
||||
}
|
||||
|
||||
bool WinContentSystemParameters::IsAppThemed() {
|
||||
MOZ_ASSERT(XRE_IsContentProcess());
|
||||
|
||||
OffTheBooksMutexAutoLock lock(mDetail->mutex);
|
||||
MOZ_RELEASE_ASSERT(IsCachedValueValid(SystemParameterId::IsAppThemed));
|
||||
return mDetail->cachedIsAppThemed;
|
||||
}
|
||||
|
||||
void WinContentSystemParameters::SetContentValueInternal(
|
||||
const SystemParameterKVPair& aKVPair) {
|
||||
MOZ_ASSERT(XRE_IsContentProcess());
|
||||
|
@ -87,6 +98,10 @@ void WinContentSystemParameters::SetContentValueInternal(
|
|||
mDetail->cachedFlatMenusEnabled = aKVPair.value();
|
||||
return;
|
||||
|
||||
case SystemParameterId::IsAppThemed:
|
||||
mDetail->cachedIsAppThemed = aKVPair.value();
|
||||
return;
|
||||
|
||||
case SystemParameterId::Count:
|
||||
MOZ_CRASH("Invalid SystemParameterId");
|
||||
}
|
||||
|
@ -124,6 +139,10 @@ bool WinContentSystemParameters::GetParentValueInternal(
|
|||
aKVPair->value() = nsUXThemeData::AreFlatMenusEnabled();
|
||||
return true;
|
||||
|
||||
case SystemParameterId::IsAppThemed:
|
||||
aKVPair->value() = nsUXThemeData::IsAppThemed();
|
||||
return true;
|
||||
|
||||
case SystemParameterId::Count:
|
||||
MOZ_CRASH("Invalid SystemParameterId");
|
||||
}
|
||||
|
@ -154,6 +173,12 @@ void WinContentSystemParameters::OnThemeChanged() {
|
|||
updates.AppendElement(std::move(kvPair));
|
||||
}
|
||||
|
||||
{
|
||||
dom::SystemParameterKVPair kvPair{};
|
||||
GetParentValueInternal(SystemParameterId::IsAppThemed, &kvPair);
|
||||
updates.AppendElement(std::move(kvPair));
|
||||
}
|
||||
|
||||
nsTArray<dom::ContentParent*> contentProcesses{};
|
||||
dom::ContentParent::GetAll(contentProcesses);
|
||||
for (auto contentProcess : contentProcesses) {
|
||||
|
|
|
@ -22,6 +22,7 @@ enum class SystemParameterId : uint8_t {
|
|||
IsPerMonitorDPIAware = 0,
|
||||
SystemDPI,
|
||||
FlatMenusEnabled,
|
||||
IsAppThemed,
|
||||
Count,
|
||||
};
|
||||
|
||||
|
@ -35,6 +36,8 @@ class WinContentSystemParameters {
|
|||
|
||||
bool AreFlatMenusEnabled();
|
||||
|
||||
bool IsAppThemed();
|
||||
|
||||
void SetContentValues(const nsTArray<dom::SystemParameterKVPair>& values);
|
||||
|
||||
nsTArray<dom::SystemParameterKVPair> GetParentValues();
|
||||
|
|
|
@ -402,4 +402,9 @@ bool nsUXThemeData::AreFlatMenusEnabled() {
|
|||
}
|
||||
|
||||
// static
|
||||
bool nsUXThemeData::IsAppThemed() { return !!::IsAppThemed(); }
|
||||
bool nsUXThemeData::IsAppThemed() {
|
||||
if (XRE_IsContentProcess()) {
|
||||
return WinContentSystemParameters::GetSingleton()->IsAppThemed();
|
||||
}
|
||||
return !!::IsAppThemed();
|
||||
}
|
Загрузка…
Ссылка в новой задаче