diff --git a/image/src/imgStatusTracker.cpp b/image/src/imgStatusTracker.cpp index 2fd4718abc3c96be66eb10ad1f858750e12f7db6..6472a6ceb7e1095718c2dffc32152e8211d50c53 100644 --- a/image/src/imgStatusTracker.cpp +++ b/image/src/imgStatusTracker.cpp @@ -19,203 +19,6 @@ using namespace mozilla::image; -class imgStatusTrackerNotifyingObserver : public imgDecoderObserver -{ -public: - imgStatusTrackerNotifyingObserver(imgStatusTracker* aTracker) - : mTracker(aTracker) - { - MOZ_ASSERT(aTracker); - } - - virtual ~imgStatusTrackerNotifyingObserver() {} - - void SetTracker(imgStatusTracker* aTracker) - { - MOZ_ASSERT(aTracker); - mTracker = aTracker; - } - - /** imgDecoderObserver methods **/ - - virtual void OnStartDecode() - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - LOG_SCOPE(GetImgLog(), "imgStatusTrackerNotifyingObserver::OnStartDecode"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnStartDecode callback before we've created our image"); - - mTracker->RecordStartDecode(); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendStartDecode(iter.GetNext()); - } - - if (!mTracker->IsMultipart()) { - mTracker->RecordBlockOnload(); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendBlockOnload(iter.GetNext()); - } - } - } - - virtual void OnStartRequest() - { - NS_NOTREACHED("imgStatusTrackerNotifyingObserver(imgDecoderObserver)::OnStartRequest"); - } - - virtual void OnStartContainer() - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - LOG_SCOPE(GetImgLog(), "imgStatusTrackerNotifyingObserver::OnStartContainer"); - - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnStartContainer callback before we've created our image"); - { - nsRefPtr<Image> image = mTracker->GetImage(); - mTracker->RecordStartContainer(image); - } - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendStartContainer(iter.GetNext()); - } - } - - virtual void OnStartFrame() - { - LOG_SCOPE(GetImgLog(), "imgStatusTrackerNotifyingObserver::OnStartFrame"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnStartFrame callback before we've created our image"); - - mTracker->RecordStartFrame(); - - // This is not observed below the imgStatusTracker level, so we don't need - // to SendStartFrame. - } - - virtual void FrameChanged(const nsIntRect* dirtyRect) - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - LOG_SCOPE(GetImgLog(), "imgStatusTrackerNotifyingObserver::FrameChanged"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "FrameChanged callback before we've created our image"); - - mTracker->RecordFrameChanged(dirtyRect); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendFrameChanged(iter.GetNext(), dirtyRect); - } - } - - virtual void OnStopFrame() - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - LOG_SCOPE(GetImgLog(), "imgStatusTrackerNotifyingObserver::OnStopFrame"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnStopFrame callback before we've created our image"); - - mTracker->RecordStopFrame(); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendStopFrame(iter.GetNext()); - } - - mTracker->MaybeUnblockOnload(); - } - - virtual void OnStopDecode(nsresult aStatus) - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - LOG_SCOPE(GetImgLog(), "imgStatusTrackerNotifyingObserver::OnStopDecode"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnStopDecode callback before we've created our image"); - - bool preexistingError = mTracker->GetImageStatus() == imgIRequest::STATUS_ERROR; - - mTracker->RecordStopDecode(aStatus); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendStopDecode(iter.GetNext(), aStatus); - } - - // This is really hacky. We need to handle the case where we start decoding, - // block onload, but then hit an error before we get to our first frame. - mTracker->MaybeUnblockOnload(); - - if (NS_FAILED(aStatus) && !preexistingError) { - mTracker->FireFailureNotification(); - } - } - - virtual void OnStopRequest(bool aLastPart, nsresult aStatus) - { - NS_NOTREACHED("imgStatusTrackerNotifyingObserver(imgDecoderObserver)::OnStopRequest"); - } - - virtual void OnDiscard() - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnDiscard callback before we've created our image"); - - mTracker->RecordDiscard(); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendDiscard(iter.GetNext()); - } - } - - virtual void OnUnlockedDraw() - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnUnlockedDraw callback before we've created our image"); - mTracker->RecordUnlockedDraw(); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendUnlockedDraw(iter.GetNext()); - } - } - - virtual void OnImageIsAnimated() - { - MOZ_ASSERT(NS_IsMainThread(), - "Use imgStatusTracker::mConsumers on main thread only"); - NS_ABORT_IF_FALSE(mTracker->HasImage(), - "OnImageIsAnimated callback before we've created our image"); - mTracker->RecordImageIsAnimated(); - - nsTObserverArray<imgRequestProxy*>::ForwardIterator iter(mTracker->mConsumers); - while (iter.HasMore()) { - mTracker->SendImageIsAnimated(iter.GetNext()); - } - } - - virtual void OnError() - { - mTracker->RecordError(); - } - -private: - nsRefPtr<imgStatusTracker> mTracker; -}; - class imgStatusTrackerObserver : public imgDecoderObserver { public: diff --git a/image/src/imgStatusTracker.h b/image/src/imgStatusTracker.h index 38db169ba5663618b1dbf9817762f19494598057..d70fdbef97d8b24e047368ddfff17e4e6019faec 100644 --- a/image/src/imgStatusTracker.h +++ b/image/src/imgStatusTracker.h @@ -13,7 +13,6 @@ class imgRequestProxy; class imgStatusNotifyRunnable; class imgRequestNotifyRunnable; class imgStatusTrackerObserver; -class imgStatusTrackerNotifyingObserver; class nsIRunnable; #include "mozilla/RefPtr.h" @@ -299,7 +298,6 @@ private: friend class imgStatusNotifyRunnable; friend class imgRequestNotifyRunnable; friend class imgStatusTrackerObserver; - friend class imgStatusTrackerNotifyingObserver; friend class imgStatusTrackerInit; imgStatusTracker(const imgStatusTracker& aOther);