Commit c2a98926 authored by Nika Layzell's avatar Nika Layzell
Browse files

Bug 1401379 - Part 6: Cycle collect nsWebBrowser, r=smaug

MozReview-Commit-ID: 1hteVsTlTvd
parent 0c0337bf
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -175,13 +175,11 @@ StaticMutex sTabChildrenMutex;
TabChildBase::TabChildBase()
  : mTabChildGlobal(nullptr)
{
  mozilla::HoldJSObjects(this);
}

TabChildBase::~TabChildBase()
{
  mAnonymousGlobalScopes.Clear();
  mozilla::DropJSObjects(this);
}

NS_IMPL_CYCLE_COLLECTION_CLASS(TabChildBase)
@@ -444,6 +442,8 @@ TabChild::TabChild(nsIContentChild* aManager,
  , mPendingDocShellBlockers(0)
  , mWidgetNativeData(0)
{
  mozilla::HoldJSObjects(this);

  nsWeakPtr weakPtrThis(do_GetWeakReference(static_cast<nsITabChild*>(this)));  // for capture by the lambda
  mSetAllowedTouchBehaviorCallback = [weakPtrThis](uint64_t aInputBlockId,
                                                   const nsTArray<TouchBehaviorFlags>& aFlags)
@@ -702,6 +702,19 @@ TabChild::UpdateFrameType()
                           nsIDocShell::FRAME_TYPE_REGULAR);
}

NS_IMPL_CYCLE_COLLECTION_CLASS(TabChild)

NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(TabChild, TabChildBase)
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mWebNav)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END

NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(TabChild, TabChildBase)
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWebNav)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END

NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(TabChild, TabChildBase)
NS_IMPL_CYCLE_COLLECTION_TRACE_END

NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TabChild)
  NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome)
  NS_INTERFACE_MAP_ENTRY(nsIWebBrowserChrome2)
@@ -1147,6 +1160,8 @@ TabChild::~TabChild()
  if (mHistoryListener) {
    mHistoryListener->ClearTabChild();
  }

  mozilla::DropJSObjects(this);
}

mozilla::ipc::IPCResult
+2 −0
Original line number Diff line number Diff line
@@ -330,6 +330,8 @@ public:
  NS_DECL_NSIOBSERVER
  NS_DECL_NSITOOLTIPLISTENER

  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(TabChild, TabChildBase)

  FORWARD_SHMEM_ALLOCATOR_TO(PBrowserChild)

  /**
+13 −4
Original line number Diff line number Diff line
@@ -105,10 +105,19 @@ nsWebBrowser::InternalDestroy()
  return NS_OK;
}

NS_IMPL_ADDREF(nsWebBrowser)
NS_IMPL_RELEASE(nsWebBrowser)

NS_INTERFACE_MAP_BEGIN(nsWebBrowser)
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsWebBrowser)
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsWebBrowser)

NS_IMPL_CYCLE_COLLECTION(nsWebBrowser,
                         mDocShell,
                         mDocShellAsReq,
                         mDocShellAsWin,
                         mDocShellAsNav,
                         mDocShellAsScrollable,
                         mDocShellAsTextScroll,
                         mWebProgress)

NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsWebBrowser)
  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIWebBrowser)
  NS_INTERFACE_MAP_ENTRY(nsIWebBrowser)
  NS_INTERFACE_MAP_ENTRY(nsIWebNavigation)
+3 −1
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@
// Core Includes
#include "nsAutoPtr.h"
#include "nsCOMPtr.h"
#include "nsCycleCollectionParticipant.h"

// Interfaces needed
#include "nsCWebBrowser.h"
@@ -89,7 +90,8 @@ class nsWebBrowser final : public nsIWebBrowser,
public:
  nsWebBrowser();

  NS_DECL_ISUPPORTS
  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
  NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsWebBrowser, nsIWebBrowser)

  NS_DECL_NSIBASEWINDOW
  NS_DECL_NSIDOCSHELLTREEITEM