зеркало из https://github.com/mozilla/gecko-dev.git
Bug 801061. Switch from imgIRequest to imgRequestProxy. r=joe
This doesn't switch all of the users yet, but is a step in the right direction. --HG-- extra : rebase_source : 91b4fef3f67586179c119208d000cf7629e04963
This commit is contained in:
Родитель
790a34e644
Коммит
47c921e73e
|
@ -18,7 +18,7 @@
|
|||
class nsAString;
|
||||
class nsIContent;
|
||||
class nsINodeInfo;
|
||||
class imgIRequest;
|
||||
class imgRequestProxy;
|
||||
class nsNodeInfoManager;
|
||||
class nsGenericHTMLElement;
|
||||
|
||||
|
@ -95,6 +95,6 @@ NS_NewSVGElement(nsIContent** aResult, already_AddRefed<nsINodeInfo> aNodeInfo,
|
|||
nsresult
|
||||
NS_NewGenConImageContent(nsIContent** aResult,
|
||||
already_AddRefed<nsINodeInfo> aNodeInfo,
|
||||
imgIRequest* aImageRequest);
|
||||
imgRequestProxy* aImageRequest);
|
||||
|
||||
#endif // nsContentCreatorFunctions_h__
|
||||
|
|
|
@ -63,7 +63,7 @@ class nsIIOService;
|
|||
class nsIURI;
|
||||
class imgIContainer;
|
||||
class imgINotificationObserver;
|
||||
class imgIRequest;
|
||||
class imgRequestProxy;
|
||||
class imgLoader;
|
||||
class imgICache;
|
||||
class nsIImageLoadingContent;
|
||||
|
@ -640,7 +640,7 @@ public:
|
|||
nsIURI* aReferrer,
|
||||
imgINotificationObserver* aObserver,
|
||||
int32_t aLoadFlags,
|
||||
imgIRequest** aRequest);
|
||||
imgRequestProxy** aRequest);
|
||||
|
||||
/**
|
||||
* Obtain an image loader that respects the given document/channel's privacy status.
|
||||
|
@ -666,7 +666,7 @@ public:
|
|||
/**
|
||||
* Helper method to call imgIRequest::GetStaticRequest.
|
||||
*/
|
||||
static already_AddRefed<imgIRequest> GetStaticRequest(imgIRequest* aRequest);
|
||||
static already_AddRefed<imgRequestProxy> GetStaticRequest(imgRequestProxy* aRequest);
|
||||
|
||||
/**
|
||||
* Method that decides whether a content node is draggable
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
#include "nsIFormControl.h"
|
||||
#include "nsGkAtoms.h"
|
||||
#include "imgINotificationObserver.h"
|
||||
#include "imgIRequest.h"
|
||||
#include "imgRequestProxy.h"
|
||||
#include "imgIContainer.h"
|
||||
#include "imgLoader.h"
|
||||
#include "nsDocShellCID.h"
|
||||
|
@ -2685,7 +2685,7 @@ nsresult
|
|||
nsContentUtils::LoadImage(nsIURI* aURI, nsIDocument* aLoadingDocument,
|
||||
nsIPrincipal* aLoadingPrincipal, nsIURI* aReferrer,
|
||||
imgINotificationObserver* aObserver, int32_t aLoadFlags,
|
||||
imgIRequest** aRequest)
|
||||
imgRequestProxy** aRequest)
|
||||
{
|
||||
NS_PRECONDITION(aURI, "Must have a URI");
|
||||
NS_PRECONDITION(aLoadingDocument, "Must have a document");
|
||||
|
@ -2768,11 +2768,11 @@ nsContentUtils::GetImageFromContent(nsIImageLoadingContent* aContent,
|
|||
}
|
||||
|
||||
//static
|
||||
already_AddRefed<imgIRequest>
|
||||
nsContentUtils::GetStaticRequest(imgIRequest* aRequest)
|
||||
already_AddRefed<imgRequestProxy>
|
||||
nsContentUtils::GetStaticRequest(imgRequestProxy* aRequest)
|
||||
{
|
||||
NS_ENSURE_TRUE(aRequest, nullptr);
|
||||
nsCOMPtr<imgIRequest> retval;
|
||||
nsRefPtr<imgRequestProxy> retval;
|
||||
aRequest->GetStaticRequest(getter_AddRefs(retval));
|
||||
return retval.forget();
|
||||
}
|
||||
|
|
|
@ -171,6 +171,7 @@
|
|||
#include "mozilla/Preferences.h"
|
||||
|
||||
#include "imgILoader.h"
|
||||
#include "imgRequestProxy.h"
|
||||
#include "nsWrapperCacheInlines.h"
|
||||
#include "nsSandboxFlags.h"
|
||||
#include "nsIAppsService.h"
|
||||
|
@ -7468,7 +7469,7 @@ nsDocument::MaybePreLoadImage(nsIURI* uri, const nsAString &aCrossOriginAttr)
|
|||
}
|
||||
|
||||
// Image not in cache - trigger preload
|
||||
nsCOMPtr<imgIRequest> request;
|
||||
nsRefPtr<imgRequestProxy> request;
|
||||
nsresult rv =
|
||||
nsContentUtils::LoadImage(uri,
|
||||
this,
|
||||
|
|
|
@ -29,7 +29,7 @@ public:
|
|||
AddStatesSilently(NS_EVENT_STATE_SUPPRESSED);
|
||||
}
|
||||
|
||||
nsresult Init(imgIRequest* aImageRequest)
|
||||
nsresult Init(imgRequestProxy* aImageRequest)
|
||||
{
|
||||
// No need to notify, since we have no frame.
|
||||
return UseAsPrimaryRequest(aImageRequest, false);
|
||||
|
@ -68,7 +68,7 @@ NS_IMPL_ISUPPORTS_INHERITED3(nsGenConImageContent,
|
|||
|
||||
nsresult
|
||||
NS_NewGenConImageContent(nsIContent** aResult, already_AddRefed<nsINodeInfo> aNodeInfo,
|
||||
imgIRequest* aImageRequest)
|
||||
imgRequestProxy* aImageRequest)
|
||||
{
|
||||
NS_PRECONDITION(aImageRequest, "Must have request!");
|
||||
nsGenConImageContent *it = new nsGenConImageContent(aNodeInfo);
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "nsILoadGroup.h"
|
||||
#include "imgIContainer.h"
|
||||
#include "imgLoader.h"
|
||||
#include "imgRequestProxy.h"
|
||||
#include "nsThreadUtils.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsAsyncDOMEvent.h"
|
||||
|
@ -464,7 +465,7 @@ nsImageLoadingContent::LoadImageWithChannel(nsIChannel* aChannel,
|
|||
AutoStateChanger changer(this, true);
|
||||
|
||||
// Do the load.
|
||||
nsCOMPtr<imgIRequest>& req = PrepareNextRequest();
|
||||
nsRefPtr<imgRequestProxy>& req = PrepareNextRequest();
|
||||
nsresult rv = nsContentUtils::GetImgLoaderForChannel(aChannel)->
|
||||
LoadImageWithChannel(aChannel, this, doc, aListener,
|
||||
getter_AddRefs(req));
|
||||
|
@ -654,7 +655,7 @@ nsImageLoadingContent::LoadImage(nsIURI* aNewURI,
|
|||
}
|
||||
|
||||
// Not blocked. Do the load.
|
||||
nsCOMPtr<imgIRequest>& req = PrepareNextRequest();
|
||||
nsRefPtr<imgRequestProxy>& req = PrepareNextRequest();
|
||||
nsresult rv;
|
||||
rv = nsContentUtils::LoadImage(aNewURI, aDocument,
|
||||
aDocument->NodePrincipal(),
|
||||
|
@ -784,7 +785,7 @@ nsImageLoadingContent::CancelImageRequests(bool aNotify)
|
|||
}
|
||||
|
||||
nsresult
|
||||
nsImageLoadingContent::UseAsPrimaryRequest(imgIRequest* aRequest,
|
||||
nsImageLoadingContent::UseAsPrimaryRequest(imgRequestProxy* aRequest,
|
||||
bool aNotify)
|
||||
{
|
||||
// Our state will change. Watch it.
|
||||
|
@ -795,7 +796,7 @@ nsImageLoadingContent::UseAsPrimaryRequest(imgIRequest* aRequest,
|
|||
ClearCurrentRequest(NS_BINDING_ABORTED);
|
||||
|
||||
// Clone the request we were given.
|
||||
nsCOMPtr<imgIRequest>& req = PrepareNextRequest();;
|
||||
nsRefPtr<imgRequestProxy>& req = PrepareNextRequest();
|
||||
nsresult rv = aRequest->Clone(this, getter_AddRefs(req));
|
||||
if (NS_SUCCEEDED(rv))
|
||||
TrackImage(req);
|
||||
|
@ -883,7 +884,7 @@ nsImageLoadingContent::FireEvent(const nsAString& aEventType)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest>&
|
||||
nsRefPtr<imgRequestProxy>&
|
||||
nsImageLoadingContent::PrepareNextRequest()
|
||||
{
|
||||
// If we don't have a usable current request, get rid of any half-baked
|
||||
|
@ -922,7 +923,7 @@ nsImageLoadingContent::SetBlockedRequest(nsIURI* aURI, int16_t aContentDecision)
|
|||
}
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest>&
|
||||
nsRefPtr<imgRequestProxy>&
|
||||
nsImageLoadingContent::PrepareCurrentRequest()
|
||||
{
|
||||
// Blocked images go through SetBlockedRequest, which is a separate path. For
|
||||
|
@ -940,7 +941,7 @@ nsImageLoadingContent::PrepareCurrentRequest()
|
|||
return mCurrentRequest;
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest>&
|
||||
nsRefPtr<imgRequestProxy>&
|
||||
nsImageLoadingContent::PreparePendingRequest()
|
||||
{
|
||||
// Get rid of anything that was there previously.
|
||||
|
|
|
@ -124,11 +124,11 @@ protected:
|
|||
|
||||
/**
|
||||
* UseAsPrimaryRequest is called by subclasses when they have an existing
|
||||
* imgIRequest that they want this nsImageLoadingContent to use. This may
|
||||
* imgRequestProxy that they want this nsImageLoadingContent to use. This may
|
||||
* effectively be called instead of LoadImage or LoadImageWithChannel.
|
||||
* If aNotify is true, this method will notify on state changes.
|
||||
*/
|
||||
nsresult UseAsPrimaryRequest(imgIRequest* aRequest, bool aNotify);
|
||||
nsresult UseAsPrimaryRequest(imgRequestProxy* aRequest, bool aNotify);
|
||||
|
||||
/**
|
||||
* Derived classes of nsImageLoadingContent MUST call
|
||||
|
@ -255,7 +255,7 @@ protected:
|
|||
* "pending" until it becomes usable. Otherwise, this becomes the current
|
||||
* request.
|
||||
*/
|
||||
nsCOMPtr<imgIRequest>& PrepareNextRequest();
|
||||
nsRefPtr<imgRequestProxy>& PrepareNextRequest();
|
||||
|
||||
/**
|
||||
* Called when we would normally call PrepareNextRequest(), but the request was
|
||||
|
@ -270,8 +270,8 @@ protected:
|
|||
* Clear*Request(NS_BINDING_ABORTED) instead, since it passes a more appropriate
|
||||
* aReason than Prepare*Request() does (NS_ERROR_IMAGE_SRC_CHANGED).
|
||||
*/
|
||||
nsCOMPtr<imgIRequest>& PrepareCurrentRequest();
|
||||
nsCOMPtr<imgIRequest>& PreparePendingRequest();
|
||||
nsRefPtr<imgRequestProxy>& PrepareCurrentRequest();
|
||||
nsRefPtr<imgRequestProxy>& PreparePendingRequest();
|
||||
|
||||
/**
|
||||
* Switch our pending request to be our current request.
|
||||
|
@ -316,8 +316,8 @@ protected:
|
|||
nsresult UntrackImage(imgIRequest* aImage);
|
||||
|
||||
/* MEMBERS */
|
||||
nsCOMPtr<imgIRequest> mCurrentRequest;
|
||||
nsCOMPtr<imgIRequest> mPendingRequest;
|
||||
nsRefPtr<imgRequestProxy> mCurrentRequest;
|
||||
nsRefPtr<imgRequestProxy> mPendingRequest;
|
||||
uint32_t mCurrentRequestFlags;
|
||||
uint32_t mPendingRequestFlags;
|
||||
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
|
||||
#include "imgIContainer.h"
|
||||
#include "imgILoader.h"
|
||||
#include "imgIRequest.h"
|
||||
#include "imgINotificationObserver.h"
|
||||
#include "imgRequestProxy.h"
|
||||
|
||||
#include "nsILoadGroup.h"
|
||||
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
|
||||
// input type=image
|
||||
#include "nsImageLoadingContent.h"
|
||||
#include "imgRequestProxy.h"
|
||||
|
||||
#include "mozAutoDocUpdate.h"
|
||||
#include "nsContentCreatorFunctions.h"
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
#include "nsXBLPrototypeResources.h"
|
||||
#include "nsIDocumentObserver.h"
|
||||
#include "imgILoader.h"
|
||||
#include "imgIRequest.h"
|
||||
#include "imgRequestProxy.h"
|
||||
#include "mozilla/css/Loader.h"
|
||||
#include "nsIURI.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
@ -102,7 +102,7 @@ nsXBLResourceLoader::LoadResources(bool* aResult)
|
|||
// Now kick off the image load...
|
||||
// Passing NULL for pretty much everything -- cause we don't care!
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
nsCOMPtr<imgIRequest> req;
|
||||
nsRefPtr<imgRequestProxy> req;
|
||||
nsContentUtils::LoadImage(url, doc, docPrincipal, docURL, nullptr,
|
||||
nsIRequest::LOAD_BACKGROUND,
|
||||
getter_AddRefs(req));
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include "nsContextMenuInfo.h"
|
||||
|
||||
#include "nsIImageLoadingContent.h"
|
||||
#include "imgILoader.h"
|
||||
#include "imgLoader.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIDOMHTMLDocument.h"
|
||||
#include "nsIDOMHTMLElement.h"
|
||||
|
@ -26,6 +26,8 @@
|
|||
#include "nsIChannelPolicy.h"
|
||||
#include "nsIContentSecurityPolicy.h"
|
||||
#include "nsIContentPolicy.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "imgRequestProxy.h"
|
||||
|
||||
//*****************************************************************************
|
||||
// class nsContextMenuInfo
|
||||
|
@ -160,7 +162,7 @@ nsContextMenuInfo::GetBackgroundImageContainer(imgIContainer **aImageContainer)
|
|||
NS_ENSURE_ARG_POINTER(aImageContainer);
|
||||
NS_ENSURE_STATE(mDOMNode);
|
||||
|
||||
nsCOMPtr<imgIRequest> request;
|
||||
nsRefPtr<imgRequestProxy> request;
|
||||
GetBackgroundImageRequest(mDOMNode, getter_AddRefs(request));
|
||||
if (request)
|
||||
return request->GetImage(aImageContainer);
|
||||
|
@ -175,7 +177,7 @@ nsContextMenuInfo::GetBackgroundImageSrc(nsIURI **aURI)
|
|||
NS_ENSURE_ARG_POINTER(aURI);
|
||||
NS_ENSURE_STATE(mDOMNode);
|
||||
|
||||
nsCOMPtr<imgIRequest> request;
|
||||
nsRefPtr<imgRequestProxy> request;
|
||||
GetBackgroundImageRequest(mDOMNode, getter_AddRefs(request));
|
||||
if (request)
|
||||
return request->GetURI(aURI);
|
||||
|
@ -204,14 +206,14 @@ nsContextMenuInfo::HasBackgroundImage(nsIDOMNode * aDOMNode)
|
|||
{
|
||||
NS_ENSURE_TRUE(aDOMNode, false);
|
||||
|
||||
nsCOMPtr<imgIRequest> request;
|
||||
nsRefPtr<imgRequestProxy> request;
|
||||
GetBackgroundImageRequest(aDOMNode, getter_AddRefs(request));
|
||||
|
||||
return (request != nullptr);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsContextMenuInfo::GetBackgroundImageRequest(nsIDOMNode *aDOMNode, imgIRequest **aRequest)
|
||||
nsContextMenuInfo::GetBackgroundImageRequest(nsIDOMNode *aDOMNode, imgRequestProxy **aRequest)
|
||||
{
|
||||
|
||||
NS_ENSURE_ARG(aDOMNode);
|
||||
|
@ -246,7 +248,7 @@ nsContextMenuInfo::GetBackgroundImageRequest(nsIDOMNode *aDOMNode, imgIRequest *
|
|||
}
|
||||
|
||||
nsresult
|
||||
nsContextMenuInfo::GetBackgroundImageRequestInternal(nsIDOMNode *aDOMNode, imgIRequest **aRequest)
|
||||
nsContextMenuInfo::GetBackgroundImageRequestInternal(nsIDOMNode *aDOMNode, imgRequestProxy **aRequest)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aDOMNode);
|
||||
|
||||
|
@ -301,7 +303,7 @@ nsContextMenuInfo::GetBackgroundImageRequestInternal(nsIDOMNode *aDOMNode, imgIR
|
|||
NS_NewURI(getter_AddRefs(bgUri), bgStringValue);
|
||||
NS_ENSURE_TRUE(bgUri, NS_ERROR_FAILURE);
|
||||
|
||||
nsCOMPtr<imgILoader> il(do_CreateInstance("@mozilla.org/image/loader;1"));
|
||||
nsRefPtr<imgLoader> il = imgLoader::GetInstance();
|
||||
NS_ENSURE_TRUE(il, NS_ERROR_FAILURE);
|
||||
|
||||
return il->LoadImage(bgUri, nullptr, nullptr, principal, nullptr,
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "imgIRequest.h"
|
||||
|
||||
class ChromeContextMenuListener;
|
||||
class imgRequestProxy;
|
||||
|
||||
//*****************************************************************************
|
||||
// class nsContextMenuInfo
|
||||
|
@ -50,10 +51,10 @@ private:
|
|||
bool HasBackgroundImage(nsIDOMNode *aDOMNode);
|
||||
|
||||
nsresult GetBackgroundImageRequest(nsIDOMNode *aDOMNode,
|
||||
imgIRequest **aRequest);
|
||||
imgRequestProxy **aRequest);
|
||||
|
||||
nsresult GetBackgroundImageRequestInternal(nsIDOMNode *aDOMNode,
|
||||
imgIRequest **aRequest);
|
||||
imgRequestProxy **aRequest);
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIDOMEvent> mMouseEvent;
|
||||
|
|
|
@ -27,7 +27,7 @@ interface nsIChannelPolicy;
|
|||
* @version 0.3
|
||||
* @see imagelib2
|
||||
*/
|
||||
[scriptable, builtinclass, uuid(278c4c8e-934f-4364-b49b-081cd8b1d595)]
|
||||
[scriptable, builtinclass, uuid(c8126129-8dac-43cd-b1ba-3896fba2dd01)]
|
||||
interface imgILoader : nsISupports
|
||||
{
|
||||
// Extra flags to pass to loadImage if you want a load to use CORS
|
||||
|
@ -54,16 +54,16 @@ interface imgILoader : nsISupports
|
|||
* make sure to Cancel() the resulting request before the observer
|
||||
* goes away.
|
||||
*/
|
||||
imgIRequest loadImage(in nsIURI aURI,
|
||||
in nsIURI aInitialDocumentURL,
|
||||
in nsIURI aReferrerURI,
|
||||
in nsIPrincipal aLoadingPrincipal,
|
||||
in nsILoadGroup aLoadGroup,
|
||||
in imgINotificationObserver aObserver,
|
||||
in nsISupports aCX,
|
||||
in nsLoadFlags aLoadFlags,
|
||||
in nsISupports cacheKey,
|
||||
in nsIChannelPolicy channelPolicy);
|
||||
imgIRequest loadImageXPCOM(in nsIURI aURI,
|
||||
in nsIURI aInitialDocumentURL,
|
||||
in nsIURI aReferrerURI,
|
||||
in nsIPrincipal aLoadingPrincipal,
|
||||
in nsILoadGroup aLoadGroup,
|
||||
in imgINotificationObserver aObserver,
|
||||
in nsISupports aCX,
|
||||
in nsLoadFlags aLoadFlags,
|
||||
in nsISupports cacheKey,
|
||||
in nsIChannelPolicy channelPolicy);
|
||||
|
||||
/**
|
||||
* Start the load and decode of an image.
|
||||
|
@ -82,8 +82,8 @@ interface imgILoader : nsISupports
|
|||
* reference cycles. This means that callers of loadImageWithChannel should
|
||||
* make sure to Cancel() the resulting request before the observer goes away.
|
||||
*/
|
||||
imgIRequest loadImageWithChannel(in nsIChannel aChannel,
|
||||
in imgINotificationObserver aObserver,
|
||||
in nsISupports cx,
|
||||
out nsIStreamListener aListener);
|
||||
imgIRequest loadImageWithChannelXPCOM(in nsIChannel aChannel,
|
||||
in imgINotificationObserver aObserver,
|
||||
in nsISupports cx,
|
||||
out nsIStreamListener aListener);
|
||||
};
|
||||
|
|
|
@ -21,6 +21,7 @@ FAIL_ON_WARNINGS = 1
|
|||
|
||||
EXPORTS = imgLoader.h \
|
||||
imgRequest.h \
|
||||
imgRequestProxy.h \
|
||||
$(NULL)
|
||||
|
||||
CPPSRCS = \
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/ClearOnShutdown.h"
|
||||
|
||||
#include "ImageLogging.h"
|
||||
#include "imgLoader.h"
|
||||
|
@ -681,7 +682,7 @@ imgCacheQueue::const_iterator imgCacheQueue::end() const
|
|||
|
||||
nsresult imgLoader::CreateNewProxyForRequest(imgRequest *aRequest, nsILoadGroup *aLoadGroup,
|
||||
imgINotificationObserver *aObserver,
|
||||
nsLoadFlags aLoadFlags, imgIRequest **_retval)
|
||||
nsLoadFlags aLoadFlags, imgRequestProxy **_retval)
|
||||
{
|
||||
LOG_SCOPE_WITH_PARAM(GetImgLog(), "imgLoader::CreateNewProxyForRequest", "imgRequest", aRequest);
|
||||
|
||||
|
@ -709,7 +710,7 @@ nsresult imgLoader::CreateNewProxyForRequest(imgRequest *aRequest, nsILoadGroup
|
|||
}
|
||||
|
||||
// transfer reference to caller
|
||||
*_retval = static_cast<imgIRequest*>(proxyRequest);
|
||||
*_retval = proxyRequest;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -787,6 +788,20 @@ imgLoader::imgLoader()
|
|||
sMemReporter->RegisterLoader(this);
|
||||
}
|
||||
|
||||
already_AddRefed<imgLoader>
|
||||
imgLoader::GetInstance()
|
||||
{
|
||||
static StaticRefPtr<imgLoader> singleton;
|
||||
if (!singleton) {
|
||||
singleton = imgLoader::Create();
|
||||
if (!singleton)
|
||||
return nullptr;
|
||||
ClearOnShutdown(&singleton);
|
||||
}
|
||||
nsRefPtr<imgLoader> loader = singleton.get();
|
||||
return loader.forget();
|
||||
}
|
||||
|
||||
imgLoader::~imgLoader()
|
||||
{
|
||||
ClearChromeImageCache();
|
||||
|
@ -1159,7 +1174,7 @@ bool imgLoader::ValidateRequestWithNewChannel(imgRequest *request,
|
|||
imgINotificationObserver *aObserver,
|
||||
nsISupports *aCX,
|
||||
nsLoadFlags aLoadFlags,
|
||||
imgIRequest **aProxyRequest,
|
||||
imgRequestProxy **aProxyRequest,
|
||||
nsIChannelPolicy *aPolicy,
|
||||
nsIPrincipal* aLoadingPrincipal,
|
||||
int32_t aCORSMode)
|
||||
|
@ -1173,8 +1188,8 @@ bool imgLoader::ValidateRequestWithNewChannel(imgRequest *request,
|
|||
// If we're currently in the middle of validating this request, just hand
|
||||
// back a proxy to it; the required work will be done for us.
|
||||
if (request->mValidator) {
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver, aLoadFlags,
|
||||
reinterpret_cast<imgIRequest **>(aProxyRequest));
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver,
|
||||
aLoadFlags, aProxyRequest);
|
||||
if (NS_FAILED(rv)) {
|
||||
return false;
|
||||
}
|
||||
|
@ -1214,7 +1229,7 @@ bool imgLoader::ValidateRequestWithNewChannel(imgRequest *request,
|
|||
return false;
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest> req;
|
||||
nsRefPtr<imgRequestProxy> req;
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver,
|
||||
aLoadFlags, getter_AddRefs(req));
|
||||
if (NS_FAILED(rv)) {
|
||||
|
@ -1280,7 +1295,7 @@ bool imgLoader::ValidateEntry(imgCacheEntry *aEntry,
|
|||
nsISupports *aCX,
|
||||
nsLoadFlags aLoadFlags,
|
||||
bool aCanMakeNewChannel,
|
||||
imgIRequest **aProxyRequest,
|
||||
imgRequestProxy **aProxyRequest,
|
||||
nsIChannelPolicy *aPolicy,
|
||||
nsIPrincipal* aLoadingPrincipal,
|
||||
int32_t aCORSMode)
|
||||
|
@ -1516,10 +1531,7 @@ nsresult imgLoader::EvictEntries(imgCacheQueue &aQueueToClear)
|
|||
nsIRequest::VALIDATE_NEVER | \
|
||||
nsIRequest::VALIDATE_ONCE_PER_SESSION)
|
||||
|
||||
|
||||
/* imgIRequest loadImage(in nsIURI aURI, in nsIURI aInitialDocumentURL, in nsIURI aReferrerURI, in nsIPrincipal aLoadingPrincipal, in nsILoadGroup aLoadGroup, in imgINotificationObserver aObserver, in nsISupports aCX, in nsLoadFlags aLoadFlags, in nsISupports cacheKey, in nsIChannelPolicy channelPolicy); */
|
||||
|
||||
NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
||||
NS_IMETHODIMP imgLoader::LoadImageXPCOM(nsIURI *aURI,
|
||||
nsIURI *aInitialDocumentURI,
|
||||
nsIURI *aReferrerURI,
|
||||
nsIPrincipal* aLoadingPrincipal,
|
||||
|
@ -1531,7 +1543,39 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
|||
nsIChannelPolicy *aPolicy,
|
||||
imgIRequest **_retval)
|
||||
{
|
||||
VerifyCacheSizes();
|
||||
imgRequestProxy *proxy;
|
||||
nsresult result = LoadImage(aURI,
|
||||
aInitialDocumentURI,
|
||||
aReferrerURI,
|
||||
aLoadingPrincipal,
|
||||
aLoadGroup,
|
||||
aObserver,
|
||||
aCX,
|
||||
aLoadFlags,
|
||||
aCacheKey,
|
||||
aPolicy,
|
||||
&proxy);
|
||||
*_retval = proxy;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* imgIRequest loadImage(in nsIURI aURI, in nsIURI aInitialDocumentURL, in nsIURI aReferrerURI, in nsIPrincipal aLoadingPrincipal, in nsILoadGroup aLoadGroup, in imgINotificationObserver aObserver, in nsISupports aCX, in nsLoadFlags aLoadFlags, in nsISupports cacheKey, in nsIChannelPolicy channelPolicy); */
|
||||
|
||||
nsresult imgLoader::LoadImage(nsIURI *aURI,
|
||||
nsIURI *aInitialDocumentURI,
|
||||
nsIURI *aReferrerURI,
|
||||
nsIPrincipal* aLoadingPrincipal,
|
||||
nsILoadGroup *aLoadGroup,
|
||||
imgINotificationObserver *aObserver,
|
||||
nsISupports *aCX,
|
||||
nsLoadFlags aLoadFlags,
|
||||
nsISupports *aCacheKey,
|
||||
nsIChannelPolicy *aPolicy,
|
||||
imgRequestProxy **_retval)
|
||||
{
|
||||
VerifyCacheSizes();
|
||||
|
||||
NS_ASSERTION(aURI, "imgLoader::LoadImage -- NULL URI pointer");
|
||||
|
||||
|
@ -1747,7 +1791,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
|||
return rv;
|
||||
}
|
||||
|
||||
imgRequestProxy *proxy = static_cast<imgRequestProxy *>(*_retval);
|
||||
imgRequestProxy *proxy = *_retval;
|
||||
|
||||
// Make sure that OnStatus/OnProgress calls have the right request set, if
|
||||
// we did create a channel here.
|
||||
|
@ -1780,8 +1824,21 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* imgIRequest loadImageWithChannel(in nsIChannel channel, in imgINotificationObserver aObserver, in nsISupports cx, out nsIStreamListener); */
|
||||
NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgINotificationObserver *aObserver, nsISupports *aCX, nsIStreamListener **listener, imgIRequest **_retval)
|
||||
/* imgIRequest loadImageWithChannelXPCOM(in nsIChannel channel, in imgINotificationObserver aObserver, in nsISupports cx, out nsIStreamListener); */
|
||||
NS_IMETHODIMP imgLoader::LoadImageWithChannelXPCOM(nsIChannel *channel, imgINotificationObserver *aObserver, nsISupports *aCX, nsIStreamListener **listener, imgIRequest **_retval)
|
||||
{
|
||||
nsresult result;
|
||||
imgRequestProxy* proxy;
|
||||
result = LoadImageWithChannel(channel,
|
||||
aObserver,
|
||||
aCX,
|
||||
listener,
|
||||
&proxy);
|
||||
*_retval = proxy;
|
||||
return result;
|
||||
}
|
||||
|
||||
nsresult imgLoader::LoadImageWithChannel(nsIChannel *channel, imgINotificationObserver *aObserver, nsISupports *aCX, nsIStreamListener **listener, imgRequestProxy **_retval)
|
||||
{
|
||||
NS_ASSERTION(channel, "imgLoader::LoadImageWithChannel -- NULL channel pointer");
|
||||
|
||||
|
|
|
@ -239,6 +239,25 @@ public:
|
|||
return static_cast<imgLoader*>(loader);
|
||||
}
|
||||
|
||||
static already_AddRefed<imgLoader> GetInstance();
|
||||
|
||||
nsresult LoadImage(nsIURI *aURI,
|
||||
nsIURI *aInitialDocumentURI,
|
||||
nsIURI *aReferrerURI,
|
||||
nsIPrincipal* aLoadingPrincipal,
|
||||
nsILoadGroup *aLoadGroup,
|
||||
imgINotificationObserver *aObserver,
|
||||
nsISupports *aCX,
|
||||
nsLoadFlags aLoadFlags,
|
||||
nsISupports *aCacheKey,
|
||||
nsIChannelPolicy *aPolicy,
|
||||
imgRequestProxy **_retval);
|
||||
nsresult LoadImageWithChannel(nsIChannel *channel,
|
||||
imgINotificationObserver *aObserver,
|
||||
nsISupports *aCX,
|
||||
nsIStreamListener **listener,
|
||||
imgRequestProxy **_retval);
|
||||
|
||||
static nsresult GetMimeTypeFromContent(const char* aContents, uint32_t aLength, nsACString& aContentType);
|
||||
// exported for use by mimei.cpp in libxul sdk builds
|
||||
static NS_EXPORT_(bool) SupportImageWithMimeType(const char* aMimeType);
|
||||
|
@ -304,7 +323,7 @@ private: // methods
|
|||
nsILoadGroup *aLoadGroup,
|
||||
imgINotificationObserver *aObserver, nsISupports *aCX,
|
||||
nsLoadFlags aLoadFlags, bool aCanMakeNewChannel,
|
||||
imgIRequest **aProxyRequest,
|
||||
imgRequestProxy **aProxyRequest,
|
||||
nsIChannelPolicy *aPolicy,
|
||||
nsIPrincipal* aLoadingPrincipal,
|
||||
int32_t aCORSMode);
|
||||
|
@ -315,14 +334,14 @@ private: // methods
|
|||
nsILoadGroup *aLoadGroup,
|
||||
imgINotificationObserver *aObserver,
|
||||
nsISupports *aCX, nsLoadFlags aLoadFlags,
|
||||
imgIRequest **aProxyRequest,
|
||||
imgRequestProxy **aProxyRequest,
|
||||
nsIChannelPolicy *aPolicy,
|
||||
nsIPrincipal* aLoadingPrincipal,
|
||||
int32_t aCORSMode);
|
||||
|
||||
nsresult CreateNewProxyForRequest(imgRequest *aRequest, nsILoadGroup *aLoadGroup,
|
||||
imgINotificationObserver *aObserver,
|
||||
nsLoadFlags aLoadFlags, imgIRequest **_retval);
|
||||
nsLoadFlags aLoadFlags, imgRequestProxy **_retval);
|
||||
|
||||
void ReadAcceptHeaderPref();
|
||||
|
||||
|
|
|
@ -552,13 +552,23 @@ imgRequestProxy* NewStaticProxy(imgRequestProxy* aThis)
|
|||
|
||||
NS_IMETHODIMP imgRequestProxy::Clone(imgINotificationObserver* aObserver,
|
||||
imgIRequest** aClone)
|
||||
{
|
||||
nsresult result;
|
||||
imgRequestProxy* proxy;
|
||||
result = Clone(aObserver, &proxy);
|
||||
*aClone = proxy;
|
||||
return result;
|
||||
}
|
||||
|
||||
nsresult imgRequestProxy::Clone(imgINotificationObserver* aObserver,
|
||||
imgRequestProxy** aClone)
|
||||
{
|
||||
return PerformClone(aObserver, NewProxy, aClone);
|
||||
}
|
||||
|
||||
nsresult imgRequestProxy::PerformClone(imgINotificationObserver* aObserver,
|
||||
imgRequestProxy* (aAllocFn)(imgRequestProxy*),
|
||||
imgIRequest** aClone)
|
||||
imgRequestProxy** aClone)
|
||||
{
|
||||
NS_PRECONDITION(aClone, "Null out param");
|
||||
|
||||
|
@ -837,6 +847,15 @@ void imgRequestProxy::NullOutListener()
|
|||
|
||||
NS_IMETHODIMP
|
||||
imgRequestProxy::GetStaticRequest(imgIRequest** aReturn)
|
||||
{
|
||||
imgRequestProxy *proxy;
|
||||
nsresult result = GetStaticRequest(&proxy);
|
||||
*aReturn = proxy;
|
||||
return result;
|
||||
}
|
||||
|
||||
nsresult
|
||||
imgRequestProxy::GetStaticRequest(imgRequestProxy** aReturn)
|
||||
{
|
||||
*aReturn = nullptr;
|
||||
mozilla::image::Image* image = GetImage();
|
||||
|
@ -989,5 +1008,9 @@ NS_IMETHODIMP
|
|||
imgRequestProxyStatic::Clone(imgINotificationObserver* aObserver,
|
||||
imgIRequest** aClone)
|
||||
{
|
||||
return PerformClone(aObserver, NewStaticProxy, aClone);
|
||||
nsresult result;
|
||||
imgRequestProxy* proxy;
|
||||
result = PerformClone(aObserver, NewStaticProxy, &proxy);
|
||||
*aClone = proxy;
|
||||
return result;
|
||||
}
|
||||
|
|
|
@ -103,6 +103,9 @@ public:
|
|||
// imgRequest::RemoveProxy
|
||||
void ClearAnimationConsumers();
|
||||
|
||||
nsresult Clone(imgINotificationObserver* aObserver, imgRequestProxy** aClone);
|
||||
nsresult GetStaticRequest(imgRequestProxy** aReturn);
|
||||
|
||||
protected:
|
||||
friend class imgStatusTracker;
|
||||
friend class imgStatusNotifyRunnable;
|
||||
|
@ -176,7 +179,7 @@ protected:
|
|||
|
||||
nsresult PerformClone(imgINotificationObserver* aObserver,
|
||||
imgRequestProxy* (aAllocFn)(imgRequestProxy*),
|
||||
imgIRequest** aClone);
|
||||
imgRequestProxy** aClone);
|
||||
|
||||
public:
|
||||
NS_FORWARD_SAFE_NSITIMEDCHANNEL(TimedChannel())
|
||||
|
|
|
@ -96,7 +96,7 @@ function checkSecondLoad()
|
|||
var listener = new ImageListener(checkClone, secondLoadDone);
|
||||
var outer = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools)
|
||||
.createScriptedObserver(listener);
|
||||
requests.push(gCurrentLoader.loadImage(uri, null, null, null, null, outer, null, 0, null, null));
|
||||
requests.push(gCurrentLoader.loadImageXPCOM(uri, null, null, null, null, outer, null, 0, null, null));
|
||||
listener.synchronous = false;
|
||||
}
|
||||
|
||||
|
@ -154,7 +154,7 @@ function checkSecondChannelLoad()
|
|||
var outer = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools)
|
||||
.createScriptedObserver(listener);
|
||||
var outlistener = {};
|
||||
requests.push(gCurrentLoader.loadImageWithChannel(channel, outer, null, outlistener));
|
||||
requests.push(gCurrentLoader.loadImageWithChannelXPCOM(channel, outer, null, outlistener));
|
||||
channellistener.outputListener = outlistener.value;
|
||||
|
||||
listener.synchronous = false;
|
||||
|
@ -178,7 +178,7 @@ function run_loadImageWithChannel_tests()
|
|||
var outer = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools)
|
||||
.createScriptedObserver(listener);
|
||||
var outlistener = {};
|
||||
requests.push(gCurrentLoader.loadImageWithChannel(channel, outer, null, outlistener));
|
||||
requests.push(gCurrentLoader.loadImageWithChannelXPCOM(channel, outer, null, outlistener));
|
||||
channellistener.outputListener = outlistener.value;
|
||||
|
||||
listener.synchronous = false;
|
||||
|
@ -198,7 +198,7 @@ function startImageCallback(otherCb)
|
|||
var listener2 = new ImageListener(null, function(foo, bar) { do_test_finished(); });
|
||||
var outer = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools)
|
||||
.createScriptedObserver(listener2);
|
||||
requests.push(gCurrentLoader.loadImage(uri, null, null, null, null, outer, null, 0, null, null));
|
||||
requests.push(gCurrentLoader.loadImageXPCOM(uri, null, null, null, null, outer, null, 0, null, null));
|
||||
listener2.synchronous = false;
|
||||
|
||||
// Now that we've started another load, chain to the callback.
|
||||
|
@ -216,7 +216,7 @@ function run_test()
|
|||
var listener = new ImageListener(startImageCallback(checkClone), firstLoadDone);
|
||||
var outer = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools)
|
||||
.createScriptedObserver(listener);
|
||||
var req = gCurrentLoader.loadImage(uri, null, null, null, null, outer, null, 0, null, null);
|
||||
var req = gCurrentLoader.loadImageXPCOM(uri, null, null, null, null, outer, null, 0, null, null);
|
||||
requests.push(req);
|
||||
|
||||
// Ensure that we don't cause any mayhem when we lock an image.
|
||||
|
|
|
@ -60,7 +60,7 @@ function setup_chan(path, isPrivate, callback) {
|
|||
var outer = Cc["@mozilla.org/image/tools;1"].getService(Ci.imgITools)
|
||||
.createScriptedObserver(listener);
|
||||
listeners.push(outer);
|
||||
requests.push(loader.loadImageWithChannel(chan, outer, null, outlistener));
|
||||
requests.push(loader.loadImageWithChannelXPCOM(chan, outer, null, outlistener));
|
||||
channelListener.outputListener = outlistener.value;
|
||||
listener.synchronous = false;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ function loadImage(isPrivate, callback) {
|
|||
var loadGroup = Cc["@mozilla.org/network/load-group;1"].createInstance(Ci.nsILoadGroup);
|
||||
loadGroup.notificationCallbacks = new NotificationCallbacks(isPrivate);
|
||||
var loader = isPrivate ? gPrivateLoader : gPublicLoader;
|
||||
requests.push(loader.loadImage(uri, null, null, null, loadGroup, outer, null, 0, null, null));
|
||||
requests.push(loader.loadImageXPCOM(uri, null, null, null, loadGroup, outer, null, 0, null, null));
|
||||
listener.synchronous = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include "imgILoader.h"
|
||||
#include "imgIContainer.h"
|
||||
#include "imgRequestProxy.h"
|
||||
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIComponentManager.h"
|
||||
|
@ -94,7 +95,7 @@ nsBulletFrame::DidSetStyleContext(nsStyleContext* aOldStyleContext)
|
|||
{
|
||||
nsFrame::DidSetStyleContext(aOldStyleContext);
|
||||
|
||||
imgIRequest *newRequest = GetStyleList()->GetListStyleImage();
|
||||
imgRequestProxy *newRequest = GetStyleList()->GetListStyleImage();
|
||||
|
||||
if (newRequest) {
|
||||
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
#include "imgIDecoderObserver.h"
|
||||
#include "imgINotificationObserver.h"
|
||||
|
||||
class imgRequestProxy;
|
||||
|
||||
#define BULLET_FRAME_IMAGE_LOADING NS_FRAME_STATE_BIT(63)
|
||||
#define BULLET_FRAME_HAS_FONT_INFLATION NS_FRAME_STATE_BIT(62)
|
||||
|
||||
|
@ -109,7 +111,7 @@ protected:
|
|||
void GetLoadGroup(nsPresContext *aPresContext, nsILoadGroup **aLoadGroup);
|
||||
|
||||
nsMargin mPadding;
|
||||
nsCOMPtr<imgIRequest> mImageRequest;
|
||||
nsRefPtr<imgRequestProxy> mImageRequest;
|
||||
nsRefPtr<nsBulletListener> mListener;
|
||||
|
||||
nsSize mIntrinsicSize;
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
|
||||
#include "imgIContainer.h"
|
||||
#include "imgLoader.h"
|
||||
#include "imgRequestProxy.h"
|
||||
|
||||
#include "nsCSSFrameConstructor.h"
|
||||
#include "nsIDOMRange.h"
|
||||
|
@ -1811,7 +1812,7 @@ nsImageFrame::GetIntrinsicImageSize(nsSize& aSize)
|
|||
nsresult
|
||||
nsImageFrame::LoadIcon(const nsAString& aSpec,
|
||||
nsPresContext *aPresContext,
|
||||
imgIRequest** aRequest)
|
||||
imgRequestProxy** aRequest)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
NS_PRECONDITION(!aSpec.IsEmpty(), "What happened??");
|
||||
|
|
|
@ -30,6 +30,7 @@ class nsPresContext;
|
|||
class nsImageFrame;
|
||||
class nsTransform2D;
|
||||
class nsImageLoadingContent;
|
||||
class imgRequestProxy;
|
||||
|
||||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
@ -298,7 +299,7 @@ private:
|
|||
// loading / broken images
|
||||
nsresult LoadIcons(nsPresContext *aPresContext);
|
||||
nsresult LoadIcon(const nsAString& aSpec, nsPresContext *aPresContext,
|
||||
imgIRequest **aRequest);
|
||||
imgRequestProxy **aRequest);
|
||||
|
||||
class IconLoad MOZ_FINAL : public nsIObserver,
|
||||
public imgINotificationObserver {
|
||||
|
@ -333,8 +334,8 @@ private:
|
|||
|
||||
|
||||
public:
|
||||
nsCOMPtr<imgIRequest> mLoadingImage;
|
||||
nsCOMPtr<imgIRequest> mBrokenImage;
|
||||
nsRefPtr<imgRequestProxy> mLoadingImage;
|
||||
nsRefPtr<imgRequestProxy> mBrokenImage;
|
||||
bool mPrefForceInlineAltText;
|
||||
bool mPrefShowPlaceholders;
|
||||
};
|
||||
|
|
|
@ -121,13 +121,13 @@ ImageLoader::MaybeRegisterCSSImage(ImageLoader::Image* aImage)
|
|||
return;
|
||||
}
|
||||
|
||||
imgIRequest* canonicalRequest = aImage->mRequests.GetWeak(nullptr);
|
||||
imgRequestProxy* canonicalRequest = aImage->mRequests.GetWeak(nullptr);
|
||||
if (!canonicalRequest) {
|
||||
// The image was blocked or something.
|
||||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest> request;
|
||||
nsRefPtr<imgRequestProxy> request;
|
||||
|
||||
// Ignore errors here. If cloning fails for some reason we'll put a null
|
||||
// entry in the hash and we won't keep trying to clone.
|
||||
|
@ -261,7 +261,7 @@ ImageLoader::LoadImage(nsIURI* aURI, nsIPrincipal* aOriginPrincipal,
|
|||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest> request;
|
||||
nsRefPtr<imgRequestProxy> request;
|
||||
nsContentUtils::LoadImage(aURI, mDocument, aOriginPrincipal, aReferrer,
|
||||
nullptr, nsIRequest::LOAD_NORMAL,
|
||||
getter_AddRefs(request));
|
||||
|
@ -270,7 +270,7 @@ ImageLoader::LoadImage(nsIURI* aURI, nsIPrincipal* aOriginPrincipal,
|
|||
return;
|
||||
}
|
||||
|
||||
nsCOMPtr<imgIRequest> clonedRequest;
|
||||
nsRefPtr<imgRequestProxy> clonedRequest;
|
||||
mInClone = true;
|
||||
nsresult rv = request->Clone(this, getter_AddRefs(clonedRequest));
|
||||
mInClone = false;
|
||||
|
|
|
@ -244,7 +244,7 @@ double nsCSSValue::GetAngleValueInRadians() const
|
|||
}
|
||||
}
|
||||
|
||||
imgIRequest* nsCSSValue::GetImageValue(nsIDocument* aDocument) const
|
||||
imgRequestProxy* nsCSSValue::GetImageValue(nsIDocument* aDocument) const
|
||||
{
|
||||
NS_ABORT_IF_FALSE(mUnit == eCSSUnit_Image, "not an Image value");
|
||||
return mValue.mImage->mRequests.GetWeak(aDocument);
|
||||
|
@ -1725,7 +1725,7 @@ css::ImageValue::ImageValue(nsIURI* aURI, nsStringBuffer* aString,
|
|||
}
|
||||
|
||||
static PLDHashOperator
|
||||
ClearRequestHashtable(nsISupports* aKey, nsCOMPtr<imgIRequest>& aValue,
|
||||
ClearRequestHashtable(nsISupports* aKey, nsRefPtr<imgRequestProxy>& aValue,
|
||||
void* aClosure)
|
||||
{
|
||||
mozilla::css::ImageValue* image =
|
||||
|
|
|
@ -16,14 +16,14 @@
|
|||
#include "nsCSSProperty.h"
|
||||
#include "nsColor.h"
|
||||
#include "nsCoord.h"
|
||||
#include "nsInterfaceHashtable.h"
|
||||
#include "nsRefPtrHashtable.h"
|
||||
#include "nsString.h"
|
||||
#include "nsStringBuffer.h"
|
||||
#include "nsTArray.h"
|
||||
#include "nsStyleConsts.h"
|
||||
#include "mozilla/FloatingPoint.h"
|
||||
|
||||
class imgIRequest;
|
||||
class imgRequestProxy;
|
||||
class nsIDocument;
|
||||
class nsIPrincipal;
|
||||
class nsPresContext;
|
||||
|
@ -125,7 +125,7 @@ struct ImageValue : public URLValue {
|
|||
|
||||
// Inherit operator== from URLValue
|
||||
|
||||
nsInterfaceHashtable<nsISupportsHashKey, imgIRequest> mRequests;
|
||||
nsRefPtrHashtable<nsISupportsHashKey, imgRequestProxy> mRequests;
|
||||
|
||||
// Override AddRef and Release to not only log ourselves correctly, but
|
||||
// also so that we delete correctly without a virtual destructor
|
||||
|
@ -454,7 +454,7 @@ public:
|
|||
// Not making this inline because that would force us to include
|
||||
// imgIRequest.h, which leads to REQUIRES hell, since this header is included
|
||||
// all over.
|
||||
imgIRequest* GetImageValue(nsIDocument* aDocument) const;
|
||||
imgRequestProxy* GetImageValue(nsIDocument* aDocument) const;
|
||||
|
||||
nscoord GetFixedLength(nsPresContext* aPresContext) const;
|
||||
nscoord GetPixelLength() const;
|
||||
|
|
|
@ -65,7 +65,7 @@ using namespace mozilla::dom;
|
|||
if ((context_)->PresContext()->IsDynamic()) { \
|
||||
method_(request_); \
|
||||
} else { \
|
||||
nsCOMPtr<imgIRequest> req = nsContentUtils::GetStaticRequest(request_); \
|
||||
nsRefPtr<imgRequestProxy> req = nsContentUtils::GetStaticRequest(request_); \
|
||||
method_(req); \
|
||||
}
|
||||
|
||||
|
|
|
@ -30,11 +30,10 @@
|
|||
#include "nsCSSValue.h"
|
||||
#include "nsStyleTransformMatrix.h"
|
||||
#include "nsAlgorithm.h"
|
||||
#include "imgIRequest.h"
|
||||
#include "imgRequestProxy.h"
|
||||
#include "gfxRect.h"
|
||||
|
||||
class nsIFrame;
|
||||
class imgIRequest;
|
||||
class imgIContainer;
|
||||
struct nsCSSValueList;
|
||||
|
||||
|
@ -840,8 +839,8 @@ struct nsStyleBorder {
|
|||
}
|
||||
|
||||
// These are defined in nsStyleStructInlines.h
|
||||
inline void SetBorderImage(imgIRequest* aImage);
|
||||
inline imgIRequest* GetBorderImage() const;
|
||||
inline void SetBorderImage(imgRequestProxy* aImage);
|
||||
inline imgRequestProxy* GetBorderImage() const;
|
||||
|
||||
bool HasBorderImage() {return !!mBorderImageSource;}
|
||||
|
||||
|
@ -894,7 +893,7 @@ public:
|
|||
#endif
|
||||
|
||||
protected:
|
||||
nsCOMPtr<imgIRequest> mBorderImageSource; // [reset]
|
||||
nsRefPtr<imgRequestProxy> mBorderImageSource; // [reset]
|
||||
|
||||
public:
|
||||
nsStyleCorners mBorderRadius; // [reset] coord, percent
|
||||
|
@ -1049,8 +1048,8 @@ struct nsStyleList {
|
|||
return NS_STYLE_HINT_FRAMECHANGE;
|
||||
}
|
||||
|
||||
imgIRequest* GetListStyleImage() const { return mListStyleImage; }
|
||||
void SetListStyleImage(imgIRequest* aReq)
|
||||
imgRequestProxy* GetListStyleImage() const { return mListStyleImage; }
|
||||
void SetListStyleImage(imgRequestProxy* aReq)
|
||||
{
|
||||
if (mListStyleImage)
|
||||
mListStyleImage->UnlockImage();
|
||||
|
@ -1062,7 +1061,7 @@ struct nsStyleList {
|
|||
uint8_t mListStyleType; // [inherited] See nsStyleConsts.h
|
||||
uint8_t mListStylePosition; // [inherited]
|
||||
private:
|
||||
nsCOMPtr<imgIRequest> mListStyleImage; // [inherited]
|
||||
nsRefPtr<imgRequestProxy> mListStyleImage; // [inherited]
|
||||
nsStyleList& operator=(const nsStyleList& aOther) MOZ_DELETE;
|
||||
public:
|
||||
nsRect mImageRegion; // [inherited] the rect to use within an image
|
||||
|
@ -1779,7 +1778,7 @@ struct nsStyleContentData {
|
|||
nsStyleContentType mType;
|
||||
union {
|
||||
PRUnichar *mString;
|
||||
imgIRequest *mImage;
|
||||
imgRequestProxy *mImage;
|
||||
nsCSSValue::Array* mCounters;
|
||||
} mContent;
|
||||
#ifdef DEBUG
|
||||
|
@ -1804,7 +1803,7 @@ struct nsStyleContentData {
|
|||
void TrackImage(nsPresContext* aContext);
|
||||
void UntrackImage(nsPresContext* aContext);
|
||||
|
||||
void SetImage(imgIRequest* aRequest)
|
||||
void SetImage(imgRequestProxy* aRequest)
|
||||
{
|
||||
NS_ABORT_IF_FALSE(!mImageTracked,
|
||||
"Setting a new image without untracking the old one!");
|
||||
|
|
|
@ -17,13 +17,13 @@
|
|||
#include "imgIContainer.h"
|
||||
|
||||
inline void
|
||||
nsStyleBorder::SetBorderImage(imgIRequest* aImage)
|
||||
nsStyleBorder::SetBorderImage(imgRequestProxy* aImage)
|
||||
{
|
||||
mBorderImageSource = aImage;
|
||||
mSubImages.Clear();
|
||||
}
|
||||
|
||||
inline imgIRequest*
|
||||
inline imgRequestProxy*
|
||||
nsStyleBorder::GetBorderImage() const
|
||||
{
|
||||
NS_ABORT_IF_FALSE(!mBorderImageSource || mImageTracked,
|
||||
|
|
|
@ -250,7 +250,7 @@ nsImageBoxFrame::UpdateImage()
|
|||
if (!(appearance && nsBox::gTheme &&
|
||||
nsBox::gTheme->ThemeSupportsWidget(nullptr, this, appearance))) {
|
||||
// get the list-style-image
|
||||
imgIRequest *styleRequest = GetStyleList()->GetListStyleImage();
|
||||
imgRequestProxy *styleRequest = GetStyleList()->GetListStyleImage();
|
||||
if (styleRequest) {
|
||||
styleRequest->Clone(mListener, getter_AddRefs(mImageRequest));
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "imgIContainer.h"
|
||||
#include "imgINotificationObserver.h"
|
||||
|
||||
class imgRequestProxy;
|
||||
class nsImageBoxFrame;
|
||||
|
||||
class nsDisplayXULImage;
|
||||
|
@ -110,7 +111,7 @@ private:
|
|||
// registered with the refresh driver.
|
||||
bool mRequestRegistered;
|
||||
|
||||
nsCOMPtr<imgIRequest> mImageRequest;
|
||||
nsRefPtr<imgRequestProxy> mImageRequest;
|
||||
nsCOMPtr<imgINotificationObserver> mListener;
|
||||
|
||||
int32_t mLoadFlags;
|
||||
|
|
|
@ -2089,7 +2089,7 @@ nsTreeBodyFrame::GetImage(int32_t aRowIndex, nsTreeColumn* aCol, bool aUseContex
|
|||
|
||||
nsAutoString imageSrc;
|
||||
mView->GetImageSrc(aRowIndex, aCol, imageSrc);
|
||||
nsCOMPtr<imgIRequest> styleRequest;
|
||||
nsRefPtr<imgRequestProxy> styleRequest;
|
||||
if (!aUseContext && !imageSrc.IsEmpty()) {
|
||||
aAllowImageRegions = false;
|
||||
}
|
||||
|
@ -2147,7 +2147,7 @@ nsTreeBodyFrame::GetImage(int32_t aRowIndex, nsTreeColumn* aCol, bool aUseContex
|
|||
listener->AddCell(aRowIndex, aCol);
|
||||
nsCOMPtr<imgINotificationObserver> imgNotificationObserver = listener;
|
||||
|
||||
nsCOMPtr<imgIRequest> imageRequest;
|
||||
nsRefPtr<imgRequestProxy> imageRequest;
|
||||
if (styleRequest) {
|
||||
styleRequest->Clone(imgNotificationObserver, getter_AddRefs(imageRequest));
|
||||
} else {
|
||||
|
|
|
@ -200,9 +200,9 @@ nsAlertsIconListener::StartRequest(const nsAString & aImageUrl)
|
|||
if (!il)
|
||||
return ShowAlert(NULL);
|
||||
|
||||
return il->LoadImage(imageUri, nullptr, nullptr, nullptr, nullptr, this,
|
||||
nullptr, nsIRequest::LOAD_NORMAL, nullptr, nullptr,
|
||||
getter_AddRefs(mIconRequest));
|
||||
return il->LoadImageXPCOM(imageUri, nullptr, nullptr, nullptr, nullptr, this,
|
||||
nullptr, nsIRequest::LOAD_NORMAL, nullptr, nullptr,
|
||||
getter_AddRefs(mIconRequest));
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -11,11 +11,12 @@
|
|||
#define nsMenuItemIconX_h_
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsAutoPtr.h"
|
||||
#include "imgINotificationObserver.h"
|
||||
|
||||
class nsIURI;
|
||||
class nsIContent;
|
||||
class imgIRequest;
|
||||
class imgRequestProxy;
|
||||
class nsMenuObjectX;
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
@ -53,13 +54,13 @@ public:
|
|||
protected:
|
||||
nsresult OnStopFrame(imgIRequest* aRequest);
|
||||
|
||||
nsCOMPtr<nsIContent> mContent;
|
||||
nsCOMPtr<imgIRequest> mIconRequest;
|
||||
nsMenuObjectX* mMenuObject; // [weak]
|
||||
nsIntRect mImageRegionRect;
|
||||
bool mLoadedIcon;
|
||||
bool mSetIcon;
|
||||
NSMenuItem* mNativeMenuItem; // [weak]
|
||||
nsCOMPtr<nsIContent> mContent;
|
||||
nsRefPtr<imgRequestProxy> mIconRequest;
|
||||
nsMenuObjectX* mMenuObject; // [weak]
|
||||
nsIntRect mImageRegionRect;
|
||||
bool mLoadedIcon;
|
||||
bool mSetIcon;
|
||||
NSMenuItem* mNativeMenuItem; // [weak]
|
||||
};
|
||||
|
||||
#endif // nsMenuItemIconX_h_
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#include "nsToolkit.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "imgLoader.h"
|
||||
#include "imgIRequest.h"
|
||||
#include "imgRequestProxy.h"
|
||||
#include "nsMenuItemX.h"
|
||||
#include "gfxImageSurface.h"
|
||||
#include "imgIContainer.h"
|
||||
|
|
Загрузка…
Ссылка в новой задаче