author | Seth Fowler <seth@mozilla.com> |
Wed, 11 Sep 2013 17:01:59 -0700 | |
changeset 146728 | 1c9fc8a6e7078ff449aa63be1ab69e514978b804 |
parent 146727 | b9552f5d4476f4f079c80a8ff4f4c8312fe71b3d |
child 146729 | eaf8acdace58b717ce69fe0a6d0b43fa16b9b9ba |
push id | 25270 |
push user | emorley@mozilla.com |
push date | Thu, 12 Sep 2013 11:04:52 +0000 |
treeherder | mozilla-central@b83f6d80af5f [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jdm |
bugs | 912514 |
milestone | 26.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
image/src/Image.cpp | file | annotate | diff | comparison | revisions | |
image/src/Image.h | file | annotate | diff | comparison | revisions |
--- a/image/src/Image.cpp +++ b/image/src/Image.cpp @@ -5,19 +5,25 @@ #include "nsMimeTypes.h" #include "Image.h" namespace mozilla { namespace image { +#ifdef DEBUG_imagelib +static const bool allowOMTURIAccess = true; +#else +static const bool allowOMTURIAccess = false; +#endif + // Constructor ImageResource::ImageResource(imgStatusTracker* aStatusTracker, nsIURI* aURI) : - mURI(aURI), + mURI(new nsMainThreadPtrHolder<nsIURI>(aURI, allowOMTURIAccess)), mInnerWindowId(0), mAnimationConsumers(0), mAnimationMode(kNormalAnimMode), mInitialized(false), mAnimating(false), mError(false) { if (aStatusTracker) {
--- a/image/src/Image.h +++ b/image/src/Image.h @@ -5,16 +5,17 @@ #ifndef MOZILLA_IMAGELIB_IMAGE_H_ #define MOZILLA_IMAGELIB_IMAGE_H_ #include "mozilla/MemoryReporting.h" #include "imgIContainer.h" #include "imgStatusTracker.h" #include "nsIURI.h" +#include "nsProxyRelease.h" // for nsMainThreadPtrHolder and nsMainThreadPtrHandle class nsIRequest; class nsIInputStream; namespace mozilla { namespace image { class Image : public imgIContainer @@ -151,18 +152,19 @@ public: } virtual uint64_t InnerWindowID() const MOZ_OVERRIDE { return mInnerWindowId; } virtual bool HasError() MOZ_OVERRIDE { return mError; } virtual void SetHasError() MOZ_OVERRIDE { mError = true; } /* * Returns a non-AddRefed pointer to the URI associated with this image. + * Illegal to use off-main-thread. */ - virtual nsIURI* GetURI() MOZ_OVERRIDE { return mURI; } + virtual nsIURI* GetURI() MOZ_OVERRIDE { return mURI.get(); } protected: ImageResource(imgStatusTracker* aStatusTracker, nsIURI* aURI); // Shared functionality for implementors of imgIContainer. Every // implementation of attribute animationMode should forward here. nsresult GetAnimationModeInternal(uint16_t *aAnimationMode); nsresult SetAnimationModeInternal(uint16_t aAnimationMode); @@ -180,22 +182,22 @@ protected: virtual bool ShouldAnimate() { return mAnimationConsumers > 0 && mAnimationMode != kDontAnimMode; } virtual nsresult StartAnimation() = 0; virtual nsresult StopAnimation() = 0; // Member data shared by all implementations of this abstract class - nsRefPtr<imgStatusTracker> mStatusTracker; - nsCOMPtr<nsIURI> mURI; - uint64_t mInnerWindowId; - uint32_t mAnimationConsumers; - uint16_t mAnimationMode; // Enum values in imgIContainer - bool mInitialized:1; // Have we been initalized? - bool mAnimating:1; // Are we currently animating? - bool mError:1; // Error handling + nsRefPtr<imgStatusTracker> mStatusTracker; + nsMainThreadPtrHandle<nsIURI> mURI; + uint64_t mInnerWindowId; + uint32_t mAnimationConsumers; + uint16_t mAnimationMode; // Enum values in imgIContainer + bool mInitialized:1; // Have we been initalized? + bool mAnimating:1; // Are we currently animating? + bool mError:1; // Error handling }; } // namespace image } // namespace mozilla #endif // MOZILLA_IMAGELIB_IMAGE_H_