void VectorImage::OnSVGDocumentLoaded() { MOZ_ASSERT(mSVGDocumentWrapper->GetRootSVGElem(), "Should have parsed successfully"); MOZ_ASSERT(!mIsFullyLoaded && !mHaveAnimations, "These flags shouldn't get set until OnSVGDocumentLoaded. " "Duplicate calls to OnSVGDocumentLoaded?"); CancelAllListeners(); // XXX Flushing is wasteful if embedding frame hasn't had initial reflow. mSVGDocumentWrapper->FlushLayout(); mIsFullyLoaded = true; mHaveAnimations = mSVGDocumentWrapper->IsAnimated(); // Start listening to our image for rendering updates. mRenderingObserver = new SVGRootRenderingObserver(mSVGDocumentWrapper, this); // Tell *our* observers that we're done loading. if (mProgressTracker) { mProgressTracker->SyncNotifyProgress(FLAG_SIZE_AVAILABLE | FLAG_HAS_TRANSPARENCY | FLAG_FRAME_COMPLETE | FLAG_DECODE_COMPLETE | FLAG_ONLOAD_UNBLOCKED, GetMaxSizedIntRect()); } EvaluateAnimation(); }
void VectorImage::OnSVGDocumentError() { CancelAllListeners(); // XXXdholbert Need to do something more for the parsing failed case -- right // now, this just makes us draw the "object" icon, rather than the (jagged) // "broken image" icon. See bug 594505. mError = true; if (mProgressTracker) { // Notify observers about the error and unblock page load. Progress progress = FLAG_DECODE_COMPLETE | FLAG_ONLOAD_UNBLOCKED | FLAG_HAS_ERROR; // Merge in any saved progress from OnImageDataComplete. if (mLoadProgress) { progress |= *mLoadProgress; mLoadProgress = Nothing(); } mProgressTracker->SyncNotifyProgress(progress); } }
void VectorImage::OnSVGDocumentLoaded() { MOZ_ASSERT(mSVGDocumentWrapper->GetRootSVGElem(), "Should have parsed successfully"); MOZ_ASSERT(!mIsFullyLoaded && !mHaveAnimations, "These flags shouldn't get set until OnSVGDocumentLoaded. " "Duplicate calls to OnSVGDocumentLoaded?"); CancelAllListeners(); // XXX Flushing is wasteful if embedding frame hasn't had initial reflow. mSVGDocumentWrapper->FlushLayout(); mIsFullyLoaded = true; mHaveAnimations = mSVGDocumentWrapper->IsAnimated(); // Start listening to our image for rendering updates. mRenderingObserver = new SVGRootRenderingObserver(mSVGDocumentWrapper, this); // ProgressTracker::SyncNotifyProgress may release us, so ensure we // stick around long enough to complete our work. RefPtr<VectorImage> kungFuDeathGrip(this); // Tell *our* observers that we're done loading. if (mProgressTracker) { Progress progress = FLAG_SIZE_AVAILABLE | FLAG_HAS_TRANSPARENCY | FLAG_FRAME_COMPLETE | FLAG_DECODE_COMPLETE | FLAG_ONLOAD_UNBLOCKED; if (mHaveAnimations) { progress |= FLAG_IS_ANIMATED; } // Merge in any saved progress from OnImageDataComplete. if (mLoadProgress) { progress |= *mLoadProgress; mLoadProgress = Nothing(); } mProgressTracker->SyncNotifyProgress(progress, GetMaxSizedIntRect()); } EvaluateAnimation(); }
void VectorImage::OnSVGDocumentError() { CancelAllListeners(); // XXXdholbert Need to do something more for the parsing failed case -- right // now, this just makes us draw the "object" icon, rather than the (jagged) // "broken image" icon. See bug 594505. mError = true; if (mProgressTracker) { // Unblock page load. mProgressTracker->SyncNotifyProgress(FLAG_DECODE_COMPLETE | FLAG_ONLOAD_UNBLOCKED | FLAG_HAS_ERROR); } }
void VectorImage::OnSVGDocumentError() { CancelAllListeners(); mError = true; if (mProgressTracker) { // Notify observers about the error and unblock page load. Progress progress = FLAG_ONLOAD_UNBLOCKED | FLAG_HAS_ERROR; // Merge in any saved progress from OnImageDataComplete. if (mLoadProgress) { progress |= *mLoadProgress; mLoadProgress = Nothing(); } mProgressTracker->SyncNotifyProgress(progress); } }