uint32_t MsaaIdGenerator::GetID() { uint32_t id = mIDSet.GetID(); MOZ_ASSERT(id <= ((1UL << kNumUniqueIDBits) - 1UL)); return detail::BuildMsaaID(id, ResolveContentProcessID()); }
bool MsaaIdGenerator::IsIDForThisContentProcess(uint32_t aID) { MOZ_ASSERT(XRE_IsContentProcess()); detail::MsaaIDCracker cracked(aID); return cracked.GetContentProcessId() == ResolveContentProcessID(); }
bool MsaaIdGenerator::ReleaseID(uint32_t aID) { MOZ_ASSERT(aID != AccessibleWrap::kNoID); detail::MsaaIDCracker cracked(aID); if (cracked.GetContentProcessId() != ResolveContentProcessID()) { return false; } mIDSet.ReleaseID(cracked.GetUniqueId()); return true; }
void MsaaIdGenerator::ReleaseID(AccessibleWrap* aAccWrap) { MOZ_ASSERT(aAccWrap); uint32_t id = aAccWrap->GetExistingID(); MOZ_ASSERT(id != AccessibleWrap::kNoID); detail::MsaaIDCracker cracked(id); if (cracked.GetContentProcessId() != ResolveContentProcessID()) { // This may happen if chrome holds a proxy whose ID was originally generated // by a content process. Since ReleaseID only has meaning in the process // that originally generated that ID, we ignore ReleaseID calls for any ID // that did not come from the current process. MOZ_ASSERT(aAccWrap->IsProxy()); return; } mIDSet.ReleaseID(cracked.GetUniqueId()); }