/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* vim: set ts=4 et sw=2 tw=80: */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
static nsresult BroadcastDomainSetChange(DomainSetType aSetType,
DomainSetChangeType aChangeType,
nsIURI* aDomain = nullptr) {
MOZ_ASSERT(XRE_IsParentProcess(), "DomainPolicy should only be exposed to the chrome process.");
nsTArray<ContentParent*> parents;
ContentParent::GetAll(parents); if (!parents.Length()) { return NS_OK;
}
for (uint32_t i = 0; i < parents.Length(); i++) {
Unused << parents[i]->SendDomainSetChanged(aSetType, aChangeType, aDomain);
} return NS_OK;
}
DomainPolicy::~DomainPolicy() { // The SSM holds a strong ref to the DomainPolicy until Deactivate() is // invoked, so we should never hit the destructor until that happens.
MOZ_ASSERT(!mBlocklist && !mSuperBlocklist && !mAllowlist &&
!mSuperAllowlist);
}
NS_IMETHODIMP
DomainPolicy::Deactivate() { // Clear the hashtables first to free up memory, since script might // hold the doomed sets alive indefinitely.
mBlocklist->Clear();
mSuperBlocklist->Clear();
mAllowlist->Clear();
mSuperAllowlist->Clear();
NS_IMETHODIMP
DomainSet::ContainsSuperDomain(nsIURI* aDomain, bool* aContains) {
*aContains = false;
nsCOMPtr<nsIURI> clone = GetCanonicalClone(aDomain);
NS_ENSURE_TRUE(clone, NS_ERROR_FAILURE);
nsAutoCString domain;
nsresult rv = clone->GetHost(domain);
NS_ENSURE_SUCCESS(rv, rv); while (true) { // Check the current domain. if (mHashTable.Contains(clone)) {
*aContains = true; return NS_OK;
}
// Chop off everything before the first dot, or break if there are no // dots left.
int32_t index = domain.Find("."); if (index == kNotFound) break;
domain.Assign(Substring(domain, index + 1));
rv = NS_MutateURI(clone).SetHost(domain).Finalize(clone);
NS_ENSURE_SUCCESS(rv, rv);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.