Commit 6ba9da59 authored by Simon Giesecke's avatar Simon Giesecke
Browse files

Bug 708901 - Migrate to nsTHashSet in docshell. r=smaug

parent c0a55713
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ bool BaseHistory::CanStore(nsIURI* aURI) {
}

void BaseHistory::ScheduleVisitedQuery(nsIURI* aURI) {
  mPendingQueries.PutEntry(aURI);
  mPendingQueries.Insert(aURI);
  if (mStartPendingVisitedQueriesScheduled) {
    return;
  }
@@ -67,7 +67,7 @@ void BaseHistory::ScheduleVisitedQuery(nsIURI* aURI) {
}

void BaseHistory::CancelVisitedQueryIfPossible(nsIURI* aURI) {
  mPendingQueries.RemoveEntry(aURI);
  mPendingQueries.Remove(aURI);
  // TODO(bug 1591393): It could be worth to make this virtual and allow places
  // to stop the existing database query? Needs some measurement.
}
+2 −1
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@

#include "IHistory.h"
#include "mozilla/dom/ContentParent.h"
#include "nsTHashSet.h"

/* A base class for history implementations that implement link coloring. */

@@ -40,7 +41,7 @@ class BaseHistory : public IHistory {
    }
  };

  using PendingVisitedQueries = nsTHashtable<nsURIHashKey>;
  using PendingVisitedQueries = nsTHashSet<nsURIHashKey>;
  using PendingVisitedResults = nsTArray<mozilla::dom::VisitedQueryResult>;

  // Starts all the queries in the pending queries list, potentially at the same
+5 −5
Original line number Diff line number Diff line
@@ -53,13 +53,13 @@ BrowsingContextGroup::BrowsingContextGroup(uint64_t aId) : mId(aId) {
void BrowsingContextGroup::Register(nsISupports* aContext) {
  MOZ_DIAGNOSTIC_ASSERT(!mDestroyed);
  MOZ_DIAGNOSTIC_ASSERT(aContext);
  mContexts.PutEntry(aContext);
  mContexts.Insert(aContext);
}

void BrowsingContextGroup::Unregister(nsISupports* aContext) {
  MOZ_DIAGNOSTIC_ASSERT(!mDestroyed);
  MOZ_DIAGNOSTIC_ASSERT(aContext);
  mContexts.RemoveEntry(aContext);
  mContexts.Remove(aContext);

  MaybeDestroy();
}
@@ -168,7 +168,7 @@ void BrowsingContextGroup::Subscribe(ContentParent* aProcess) {
void BrowsingContextGroup::Unsubscribe(ContentParent* aProcess) {
  MOZ_DIAGNOSTIC_ASSERT(aProcess);
  MOZ_DIAGNOSTIC_ASSERT(aProcess->GetRemoteType() != PREALLOC_REMOTE_TYPE);
  mSubscribers.RemoveEntry(aProcess);
  mSubscribers.Remove(aProcess);
  aProcess->RemoveBrowsingContextGroup(this);

#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
@@ -237,8 +237,8 @@ void BrowsingContextGroup::Destroy() {
  for (auto& entry : mHosts) {
    entry.GetData()->RemoveBrowsingContextGroup(this);
  }
  for (auto& entry : mSubscribers) {
    entry.GetKey()->RemoveBrowsingContextGroup(this);
  for (const auto& key : mSubscribers) {
    key->RemoveBrowsingContextGroup(this);
  }
  mHosts.Clear();
  mSubscribers.Clear();
+8 −8
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@
#include "nsRefPtrHashtable.h"
#include "nsHashKeys.h"
#include "nsTArray.h"
#include "nsTHashtable.h"
#include "nsTHashSet.h"
#include "nsWrapperCache.h"
#include "nsXULAppAPI.h"

@@ -105,9 +105,9 @@ class BrowsingContextGroup final : public nsWrapperCache {
  template <typename Func>
  void EachOtherParent(ContentParent* aExcludedParent, Func&& aCallback) {
    MOZ_DIAGNOSTIC_ASSERT(XRE_IsParentProcess());
    for (auto iter = mSubscribers.Iter(); !iter.Done(); iter.Next()) {
      if (iter.Get()->GetKey() != aExcludedParent) {
        aCallback(iter.Get()->GetKey());
    for (const auto& key : mSubscribers) {
      if (key != aExcludedParent) {
        aCallback(key);
      }
    }
  }
@@ -117,8 +117,8 @@ class BrowsingContextGroup final : public nsWrapperCache {
  template <typename Func>
  void EachParent(Func&& aCallback) {
    MOZ_DIAGNOSTIC_ASSERT(XRE_IsParentProcess());
    for (auto iter = mSubscribers.Iter(); !iter.Done(); iter.Next()) {
      aCallback(iter.Get()->GetKey());
    for (const auto& key : mSubscribers) {
      aCallback(key);
    }
  }

@@ -184,7 +184,7 @@ class BrowsingContextGroup final : public nsWrapperCache {
  // non-discarded contexts within discarded contexts alive. It should be
  // removed in the future.
  // FIXME: Consider introducing a better common base than `nsISupports`?
  nsTHashtable<nsRefPtrHashKey<nsISupports>> mContexts;
  nsTHashSet<nsRefPtrHashKey<nsISupports>> mContexts;

  // The set of toplevel browsing contexts in the current BrowsingContextGroup.
  nsTArray<RefPtr<BrowsingContext>> mToplevels;
@@ -206,7 +206,7 @@ class BrowsingContextGroup final : public nsWrapperCache {
  // process.
  nsRefPtrHashtable<nsCStringHashKey, ContentParent> mHosts;

  nsTHashtable<nsRefPtrHashKey<ContentParent>> mSubscribers;
  nsTHashSet<nsRefPtrHashKey<ContentParent>> mSubscribers;

  // A queue to store postMessage events during page load, the queue will be
  // flushed once the page is loaded
+3 −2
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@
#include "nsQueryObject.h"
#include "nsBrowserStatusFilter.h"
#include "nsIBrowser.h"
#include "nsTHashSet.h"

using namespace mozilla::ipc;

@@ -931,7 +932,7 @@ void CanonicalBrowsingContext::NotifyMediaMutedChanged(bool aMuted,
uint32_t CanonicalBrowsingContext::CountSiteOrigins(
    GlobalObject& aGlobal,
    const Sequence<OwningNonNull<BrowsingContext>>& aRoots) {
  nsTHashtable<nsCStringHashKey> uniqueSiteOrigins;
  nsTHashSet<nsCString> uniqueSiteOrigins;

  for (const auto& root : aRoots) {
    root->PreOrderWalk([&](BrowsingContext* aContext) {
@@ -945,7 +946,7 @@ uint32_t CanonicalBrowsingContext::CountSiteOrigins(
        if (isContentPrincipal) {
          nsCString siteOrigin;
          documentPrincipal->GetSiteOrigin(siteOrigin);
          uniqueSiteOrigins.PutEntry(siteOrigin);
          uniqueSiteOrigins.Insert(siteOrigin);
        }
      }
    });
Loading