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