mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 827327 - Remember my permissions for the privileged apis in a privileged app is broken. r=sicking
This commit is contained in:
parent
df0aa845a4
commit
49a486f8ee
@ -760,14 +760,20 @@ nsPermissionManager::AddInternal(nsIPrincipal* aPrincipal,
|
||||
id = entry->GetPermissions()[index].mID;
|
||||
|
||||
// If the new expireType is EXPIRE_SESSION, then we have to keep a
|
||||
// copy of the previous permission value. This cached value will be
|
||||
// copy of the previous permission/expireType values. This cached value will be
|
||||
// used when restoring the permissions of an app.
|
||||
if (entry->GetPermissions()[index].mExpireType != nsIPermissionManager::EXPIRE_SESSION &&
|
||||
aExpireType == nsIPermissionManager::EXPIRE_SESSION) {
|
||||
entry->GetPermissions()[index].mNonSessionPermission = entry->GetPermissions()[index].mPermission;
|
||||
entry->GetPermissions()[index].mNonSessionExpireType = entry->GetPermissions()[index].mExpireType;
|
||||
} else if (aExpireType != nsIPermissionManager::EXPIRE_SESSION) {
|
||||
entry->GetPermissions()[index].mNonSessionPermission = aPermission;
|
||||
entry->GetPermissions()[index].mNonSessionExpireType = aExpireType;
|
||||
entry->GetPermissions()[index].mExpireTime = aExpireTime;
|
||||
}
|
||||
|
||||
entry->GetPermissions()[index].mPermission = aPermission;
|
||||
entry->GetPermissions()[index].mExpireType = aExpireType;
|
||||
|
||||
if (aDBOperation == eWriteToDB && aExpireType != nsIPermissionManager::EXPIRE_SESSION)
|
||||
// We care only about the id, the permission and expireType/expireTime here.
|
||||
@ -1234,7 +1240,11 @@ nsPermissionManager::RemoveExpiredPermissionsForAppEnumerator(
|
||||
}
|
||||
|
||||
nsPermissionManager::PermissionEntry& permEntry = entry->GetPermissions()[i];
|
||||
if (permEntry.mExpireType == nsIPermissionManager::EXPIRE_SESSION) {
|
||||
if (permEntry.mExpireType != nsIPermissionManager::EXPIRE_SESSION) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (permEntry.mNonSessionExpireType == nsIPermissionManager::EXPIRE_SESSION) {
|
||||
PermissionEntry oldPermissionEntry = entry->GetPermissions()[i];
|
||||
|
||||
entry->GetPermissions().RemoveElementAt(i);
|
||||
@ -1251,18 +1261,17 @@ nsPermissionManager::RemoveExpiredPermissionsForAppEnumerator(
|
||||
continue;
|
||||
}
|
||||
|
||||
if (permEntry.mNonSessionPermission != permEntry.mPermission) {
|
||||
permEntry.mPermission = permEntry.mNonSessionPermission;
|
||||
permEntry.mPermission = permEntry.mNonSessionPermission;
|
||||
permEntry.mExpireType = permEntry.mNonSessionExpireType;
|
||||
|
||||
gPermissionManager->NotifyObserversWithPermission(entry->GetKey()->mHost,
|
||||
entry->GetKey()->mAppId,
|
||||
entry->GetKey()->mIsInBrowserElement,
|
||||
gPermissionManager->mTypeArray.ElementAt(permEntry.mType),
|
||||
permEntry.mPermission,
|
||||
permEntry.mExpireType,
|
||||
permEntry.mExpireTime,
|
||||
NS_LITERAL_STRING("changed").get());
|
||||
}
|
||||
gPermissionManager->NotifyObserversWithPermission(entry->GetKey()->mHost,
|
||||
entry->GetKey()->mAppId,
|
||||
entry->GetKey()->mIsInBrowserElement,
|
||||
gPermissionManager->mTypeArray.ElementAt(permEntry.mType),
|
||||
permEntry.mPermission,
|
||||
permEntry.mExpireType,
|
||||
permEntry.mExpireTime,
|
||||
NS_LITERAL_STRING("changed").get());
|
||||
}
|
||||
|
||||
return PL_DHASH_NEXT;
|
||||
|
@ -44,6 +44,7 @@ public:
|
||||
, mExpireType(aExpireType)
|
||||
, mExpireTime(aExpireTime)
|
||||
, mNonSessionPermission(aPermission)
|
||||
, mNonSessionExpireType(aExpireType)
|
||||
{}
|
||||
|
||||
int64_t mID;
|
||||
@ -52,6 +53,7 @@ public:
|
||||
uint32_t mExpireType;
|
||||
int64_t mExpireTime;
|
||||
uint32_t mNonSessionPermission;
|
||||
uint32_t mNonSessionExpireType;
|
||||
};
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user