Bug 1480364 - AbortSignal doesn't need to keep alive AbortController, r=smaug

This commit is contained in:
Andrea Marchesini 2018-08-03 07:06:16 +02:00
Родитель 864930c221
Коммит 09ac84e4ce
3 изменённых файлов: 4 добавлений и 11 удалений

Просмотреть файл

@ -56,7 +56,7 @@ AbortSignal*
AbortController::Signal()
{
if (!mSignal) {
mSignal = new AbortSignal(this, mAborted);
mSignal = new AbortSignal(mGlobal, mAborted);
}
return mSignal;

Просмотреть файл

@ -6,7 +6,6 @@
#include "AbortSignal.h"
#include "AbortController.h"
#include "mozilla/dom/Event.h"
#include "mozilla/dom/AbortSignalBinding.h"
@ -17,12 +16,10 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(AbortSignal)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(AbortSignal,
DOMEventTargetHelper)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mController)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(AbortSignal,
DOMEventTargetHelper)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mController)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(AbortSignal)
@ -31,10 +28,9 @@ NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
NS_IMPL_ADDREF_INHERITED(AbortSignal, DOMEventTargetHelper)
NS_IMPL_RELEASE_INHERITED(AbortSignal, DOMEventTargetHelper)
AbortSignal::AbortSignal(AbortController* aController,
AbortSignal::AbortSignal(nsIGlobalObject* aGlobalObject,
bool aAborted)
: DOMEventTargetHelper(aController->GetParentObject())
, mController(aController)
: DOMEventTargetHelper(aGlobalObject)
, mAborted(aAborted)
{}

Просмотреть файл

@ -12,7 +12,6 @@
namespace mozilla {
namespace dom {
class AbortController;
class AbortSignal;
// This class must be implemented by objects who want to follow a AbortSignal.
@ -43,7 +42,7 @@ public:
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(AbortSignal, DOMEventTargetHelper)
AbortSignal(AbortController* aController, bool aAborted);
AbortSignal(nsIGlobalObject* aGlobalObject, bool aAborted);
explicit AbortSignal(bool aAborted);
JSObject*
@ -66,8 +65,6 @@ public:
private:
~AbortSignal() = default;
RefPtr<AbortController> mController;
// Raw pointers. AbortFollower unregisters itself in the DTOR.
nsTArray<AbortFollower*> mFollowers;