NS_IMETHODIMP QuotaManagerService::ClearStoragesForPrincipal(nsIPrincipal* aPrincipal, const nsACString& aPersistenceType, nsIQuotaRequest** _retval) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aPrincipal); MOZ_ASSERT(nsContentUtils::IsCallerChrome()); RefPtr<Request> request = new Request(aPrincipal); ClearOriginParams params; PrincipalInfo& principalInfo = params.principalInfo(); nsresult rv = PrincipalToPrincipalInfo(aPrincipal, &principalInfo); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } if (principalInfo.type() != PrincipalInfo::TContentPrincipalInfo && principalInfo.type() != PrincipalInfo::TSystemPrincipalInfo) { return NS_ERROR_UNEXPECTED; } Nullable<PersistenceType> persistenceType; rv = NullablePersistenceTypeFromText(aPersistenceType, &persistenceType); if (NS_WARN_IF(NS_FAILED(rv))) { return NS_ERROR_INVALID_ARG; } if (persistenceType.IsNull()) { params.persistenceTypeIsExplicit() = false; } else { params.persistenceType() = persistenceType.Value(); params.persistenceTypeIsExplicit() = true; } nsAutoPtr<PendingRequestInfo> info(new RequestInfo(request, params)); rv = InitiateRequest(info); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } request.forget(_retval); return NS_OK; }
NS_IMETHODIMP QuotaManagerService::ClearStoragesForPrincipal(nsIPrincipal* aPrincipal, const nsACString& aPersistenceType, bool aClearAll, nsIQuotaRequest** _retval) { MOZ_ASSERT(NS_IsMainThread()); MOZ_ASSERT(aPrincipal); nsCString suffix; aPrincipal->OriginAttributesRef().CreateSuffix(suffix); if (NS_WARN_IF(aClearAll && !suffix.IsEmpty())) { // The originAttributes should be default originAttributes when the // aClearAll flag is set. return NS_ERROR_INVALID_ARG; } RefPtr<Request> request = new Request(aPrincipal); ClearOriginParams params; nsresult rv = CheckedPrincipalToPrincipalInfo(aPrincipal, params.principalInfo()); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } Nullable<PersistenceType> persistenceType; rv = NullablePersistenceTypeFromText(aPersistenceType, &persistenceType); if (NS_WARN_IF(NS_FAILED(rv))) { return NS_ERROR_INVALID_ARG; } if (persistenceType.IsNull()) { params.persistenceTypeIsExplicit() = false; } else { params.persistenceType() = persistenceType.Value(); params.persistenceTypeIsExplicit() = true; } params.clearAll() = aClearAll; nsAutoPtr<PendingRequestInfo> info(new RequestInfo(request, params)); rv = InitiateRequest(info); if (NS_WARN_IF(NS_FAILED(rv))) { return rv; } request.forget(_retval); return NS_OK; }