Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit ce22862

Browse files
committed
Bug 920630 - Part 3. Change Image/ImageResource and derived classes to use nsIURI directly instead of ImageURL. r=tnikkel
1 parent 2180699 commit ce22862

12 files changed

Lines changed: 47 additions & 33 deletions

image/DynamicImage.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ void
104104
DynamicImage::SetHasError()
105105
{ }
106106

107-
ImageURL*
108-
DynamicImage::GetURI()
107+
nsIURI*
108+
DynamicImage::GetURI() const
109109
{
110110
return nullptr;
111111
}

image/DynamicImage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class DynamicImage : public Image
6363
virtual bool HasError() override;
6464
virtual void SetHasError() override;
6565

66-
virtual ImageURL* GetURI() override;
66+
nsIURI* GetURI() const override;
6767

6868
private:
6969
virtual ~DynamicImage() { }

image/Image.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ ImageMemoryCounter::ImageMemoryCounter(Image* aImage,
2626
MOZ_ASSERT(aImage);
2727

2828
// Extract metadata about the image.
29-
RefPtr<ImageURL> imageURL(aImage->GetURI());
29+
nsCOMPtr<nsIURI> imageURL(aImage->GetURI());
3030
if (imageURL) {
3131
imageURL->GetSpec(mURI);
3232
}
@@ -54,6 +54,20 @@ ImageMemoryCounter::ImageMemoryCounter(Image* aImage,
5454
// Image Base Types
5555
///////////////////////////////////////////////////////////////////////////////
5656

57+
bool
58+
ImageResource::GetSpecTruncatedTo1k(nsCString& aSpec) const
59+
{
60+
static const size_t sMaxTruncatedLength = 1024;
61+
62+
mURI->GetSpec(aSpec);
63+
if (sMaxTruncatedLength >= aSpec.Length()) {
64+
return true;
65+
}
66+
67+
aSpec.Truncate(sMaxTruncatedLength);
68+
return false;
69+
}
70+
5771
void
5872
ImageResource::SetCurrentImage(ImageContainer* aContainer,
5973
SourceSurface* aSurface,
@@ -269,7 +283,7 @@ ImageResource::ReleaseImageContainer()
269283
}
270284

271285
// Constructor
272-
ImageResource::ImageResource(ImageURL* aURI) :
286+
ImageResource::ImageResource(nsIURI* aURI) :
273287
mURI(aURI),
274288
mInnerWindowId(0),
275289
mAnimationConsumers(0),
@@ -404,7 +418,7 @@ ImageResource::NotifyDrawingObservers()
404418
}
405419

406420
// Record the image drawing for startup performance testing.
407-
nsCOMPtr<nsIURI> uri = mURI->ToIURI();
421+
nsCOMPtr<nsIURI> uri = mURI;
408422
nsContentUtils::AddScriptRunner(NS_NewRunnableFunction(
409423
"image::ImageResource::NotifyDrawingObservers", [uri]() {
410424
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();

image/Image.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include "mozilla/TimeStamp.h"
1212
#include "gfx2DGlue.h"
1313
#include "imgIContainer.h"
14-
#include "ImageURL.h"
1514
#include "ImageContainer.h"
1615
#include "LookupResult.h"
1716
#include "nsStringFwd.h"
@@ -233,7 +232,7 @@ class Image : public imgIContainer
233232
virtual bool HasError() = 0;
234233
virtual void SetHasError() = 0;
235234

236-
virtual ImageURL* GetURI() = 0;
235+
virtual nsIURI* GetURI() const = 0;
237236

238237
virtual void ReportUseCounters() { }
239238
};
@@ -279,12 +278,14 @@ class ImageResource : public Image
279278
* Returns a non-AddRefed pointer to the URI associated with this image.
280279
* Illegal to use off-main-thread.
281280
*/
282-
virtual ImageURL* GetURI() override { return mURI.get(); }
281+
nsIURI* GetURI() const override { return mURI; }
283282

284283
protected:
285-
explicit ImageResource(ImageURL* aURI);
284+
explicit ImageResource(nsIURI* aURI);
286285
~ImageResource();
287286

287+
bool GetSpecTruncatedTo1k(nsCString& aSpec) const;
288+
288289
// Shared functionality for implementors of imgIContainer. Every
289290
// implementation of attribute animationMode should forward here.
290291
nsresult GetAnimationModeInternal(uint16_t* aAnimationMode);
@@ -326,8 +327,8 @@ class ImageResource : public Image
326327
#endif
327328

328329
// Member data shared by all implementations of this abstract class
329-
RefPtr<ProgressTracker> mProgressTracker;
330-
RefPtr<ImageURL> mURI;
330+
RefPtr<ProgressTracker> mProgressTracker;
331+
nsCOMPtr<nsIURI> mURI;
331332
TimeStamp mLastRefreshTime;
332333
uint64_t mInnerWindowId;
333334
uint32_t mAnimationConsumers;

image/ImageFactory.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ ImageFactory::Initialize()
3434
{ }
3535

3636
static uint32_t
37-
ComputeImageFlags(ImageURL* uri, const nsCString& aMimeType, bool isMultiPart)
37+
ComputeImageFlags(nsIURI* uri, const nsCString& aMimeType, bool isMultiPart)
3838
{
3939
nsresult rv;
4040

@@ -88,10 +88,10 @@ ComputeImageFlags(ImageURL* uri, const nsCString& aMimeType, bool isMultiPart)
8888

8989
#ifdef DEBUG
9090
static void
91-
NotifyImageLoading(ImageURL* aURI)
91+
NotifyImageLoading(nsIURI* aURI)
9292
{
9393
if (!NS_IsMainThread()) {
94-
RefPtr<ImageURL> uri(aURI);
94+
nsCOMPtr<nsIURI> uri(aURI);
9595
nsCOMPtr<nsIRunnable> ev =
9696
NS_NewRunnableFunction("NotifyImageLoading", [uri] () -> void {
9797
NotifyImageLoading(uri);
@@ -114,7 +114,7 @@ NotifyImageLoading(ImageURL* aURI)
114114
ImageFactory::CreateImage(nsIRequest* aRequest,
115115
ProgressTracker* aProgressTracker,
116116
const nsCString& aMimeType,
117-
ImageURL* aURI,
117+
nsIURI* aURI,
118118
bool aIsMultiPart,
119119
uint32_t aInnerWindowId)
120120
{
@@ -240,7 +240,7 @@ GetContentSize(nsIRequest* aRequest)
240240
ImageFactory::CreateRasterImage(nsIRequest* aRequest,
241241
ProgressTracker* aProgressTracker,
242242
const nsCString& aMimeType,
243-
ImageURL* aURI,
243+
nsIURI* aURI,
244244
uint32_t aImageFlags,
245245
uint32_t aInnerWindowId)
246246
{
@@ -271,7 +271,7 @@ ImageFactory::CreateRasterImage(nsIRequest* aRequest,
271271
ImageFactory::CreateVectorImage(nsIRequest* aRequest,
272272
ProgressTracker* aProgressTracker,
273273
const nsCString& aMimeType,
274-
ImageURL* aURI,
274+
nsIURI* aURI,
275275
uint32_t aImageFlags,
276276
uint32_t aInnerWindowId)
277277
{

image/ImageFactory.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@
1212
#include "nsStringFwd.h"
1313

1414
class nsIRequest;
15+
class nsIURI;
1516

1617
namespace mozilla {
1718
namespace image {
1819

1920
class Image;
20-
class ImageURL;
2121
class MultipartImage;
2222
class ProgressTracker;
2323

@@ -43,7 +43,7 @@ class ImageFactory
4343
static already_AddRefed<Image> CreateImage(nsIRequest* aRequest,
4444
ProgressTracker* aProgressTracker,
4545
const nsCString& aMimeType,
46-
ImageURL* aURI,
46+
nsIURI* aURI,
4747
bool aIsMultiPart,
4848
uint32_t aInnerWindowId);
4949
/**
@@ -74,15 +74,15 @@ class ImageFactory
7474
CreateRasterImage(nsIRequest* aRequest,
7575
ProgressTracker* aProgressTracker,
7676
const nsCString& aMimeType,
77-
ImageURL* aURI,
77+
nsIURI* aURI,
7878
uint32_t aImageFlags,
7979
uint32_t aInnerWindowId);
8080

8181
static already_AddRefed<Image>
8282
CreateVectorImage(nsIRequest* aRequest,
8383
ProgressTracker* aProgressTracker,
8484
const nsCString& aMimeType,
85-
ImageURL* aURI,
85+
nsIURI* aURI,
8686
uint32_t aImageFlags,
8787
uint32_t aInnerWindowId);
8888

image/ImageWrapper.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ ImageWrapper::SetHasError()
117117
mInnerImage->SetHasError();
118118
}
119119

120-
ImageURL*
121-
ImageWrapper::GetURI()
120+
nsIURI*
121+
ImageWrapper::GetURI() const
122122
{
123123
return mInnerImage->GetURI();
124124
}

image/ImageWrapper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class ImageWrapper : public Image
5555
virtual bool HasError() override;
5656
virtual void SetHasError() override;
5757

58-
virtual ImageURL* GetURI() override;
58+
nsIURI* GetURI() const override;
5959

6060
protected:
6161
explicit ImageWrapper(Image* aInnerImage)

image/RasterImage.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ NS_IMPL_ISUPPORTS(RasterImage, imgIContainer, nsIProperties,
7070
#endif
7171

7272
//******************************************************************************
73-
RasterImage::RasterImage(ImageURL* aURI /* = nullptr */) :
73+
RasterImage::RasterImage(nsIURI* aURI /* = nullptr */) :
7474
ImageResource(aURI), // invoke superclass's constructor
7575
mSize(0,0),
7676
mLockCount(0),
@@ -1817,8 +1817,8 @@ RasterImage::ReportDecoderError()
18171817
nsAutoString msg(NS_LITERAL_STRING("Image corrupt or truncated."));
18181818
nsAutoString src;
18191819
if (GetURI()) {
1820-
nsCString uri;
1821-
if (GetURI()->GetSpecTruncatedTo1k(uri) == ImageURL::TruncatedTo1k) {
1820+
nsAutoCString uri;
1821+
if (!GetSpecTruncatedTo1k(uri)) {
18221822
msg += NS_LITERAL_STRING(" URI in this note truncated due to length.");
18231823
}
18241824
src = NS_ConvertUTF8toUTF16(uri);

image/RasterImage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ class RasterImage final : public ImageResource
469469
DrawableSurface RequestDecodeForSizeInternal(const gfx::IntSize& aSize, uint32_t aFlags);
470470

471471
protected:
472-
explicit RasterImage(ImageURL* aURI = nullptr);
472+
explicit RasterImage(nsIURI* aURI = nullptr);
473473

474474
bool ShouldAnimate() override;
475475

0 commit comments

Comments
 (0)