예제 #1
0
// static
bool
IndexedDatabaseManager::TabContextMayAccessOrigin(const TabContext& aContext,
                                                  const nsACString& aOrigin)
{
  NS_ASSERTION(!aOrigin.IsEmpty(), "Empty origin!");

  // If aContext is for a browser element, it's allowed only to access other
  // browser elements.  But if aContext is not for a browser element, it may
  // access both browser and non-browser elements.
  nsAutoCString pattern;
  QuotaManager::GetOriginPatternStringMaybeIgnoreBrowser(
                                                aContext.OwnOrContainingAppId(),
                                                aContext.IsBrowserElement(),
                                                pattern);

  return PatternMatchesOrigin(pattern, aOrigin);
}
예제 #2
0
void
GroupInfo::LockedRemoveOriginInfosForPattern(const nsACString& aPattern)
{
  AssertCurrentThreadOwnsQuotaMutex();

  for (uint32_t index = mOriginInfos.Length(); index > 0; index--) {
    if (PatternMatchesOrigin(aPattern, mOriginInfos[index - 1]->mOrigin)) {
      mUsage -= mOriginInfos[index - 1]->mUsage;

      if (IsForTemporaryStorage()) {
        QuotaManager* quotaManager = QuotaManager::Get();
        NS_ASSERTION(quotaManager, "Shouldn't be null!");

        quotaManager->mTemporaryStorageUsage -= mOriginInfos[index - 1]->mUsage;
      }

      mOriginInfos.RemoveElementAt(index - 1);
    }
  }
}