зеркало из https://github.com/mozilla/gecko-dev.git
Eliminate libpr0n's use of prescontexts as unique keys; use documents instead
and do not hold a ref to them. Bug 190475, r=pavlov, sr=jst
This commit is contained in:
Родитель
0d10e3f17b
Коммит
792d30905e
|
@ -656,22 +656,20 @@ nsHTMLImageElement::GetSrc(nsAString& aSrc)
|
|||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLImageElement::OnStartDecode(imgIRequest *request, nsISupports *cx)
|
||||
nsHTMLImageElement::OnStartDecode(imgIRequest *request)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLImageElement::OnStartContainer(imgIRequest *request, nsISupports *cx,
|
||||
nsHTMLImageElement::OnStartContainer(imgIRequest *request,
|
||||
imgIContainer *image)
|
||||
{
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
|
||||
NS_ASSERTION(pc, "not a prescontext!");
|
||||
|
||||
float t2p;
|
||||
pc->GetTwipsToPixels(&t2p);
|
||||
|
||||
// XXX Hack. This code only runs when Image() objects are created
|
||||
// via script; we set the attributes to allow scripts to access
|
||||
// .width/.height. Once image loading is moved to content so that
|
||||
// we have direct access to the imgIRequest and imgIContainer from
|
||||
// GetHeight and GetWidth, this code can all go away.
|
||||
nsSize size;
|
||||
image->GetWidth(&size.width);
|
||||
image->GetHeight(&size.height);
|
||||
|
@ -688,60 +686,84 @@ nsHTMLImageElement::OnStartContainer(imgIRequest *request, nsISupports *cx,
|
|||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLImageElement::OnStartFrame(imgIRequest *request, nsISupports *cx,
|
||||
nsHTMLImageElement::OnStartFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLImageElement::OnDataAvailable(imgIRequest *request, nsISupports *cx,
|
||||
gfxIImageFrame *frame, const nsRect * rect)
|
||||
nsHTMLImageElement::OnDataAvailable(imgIRequest *request,
|
||||
gfxIImageFrame *frame,
|
||||
const nsRect * rect)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLImageElement::OnStopFrame(imgIRequest *request, nsISupports *cx,
|
||||
nsHTMLImageElement::OnStopFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLImageElement::OnStopContainer(imgIRequest *request, nsISupports *cx,
|
||||
nsHTMLImageElement::OnStopContainer(imgIRequest *request,
|
||||
imgIContainer *image)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLImageElement::OnStopDecode(imgIRequest *request, nsISupports *cx,
|
||||
nsresult status, const PRUnichar *statusArg)
|
||||
nsHTMLImageElement::OnStopDecode(imgIRequest *request,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
|
||||
NS_ASSERTION(pc, "not a prescontext!");
|
||||
|
||||
// We set mRequest = nsnull to indicate that we're complete.
|
||||
mRequest = nsnull;
|
||||
|
||||
// Fire the onload event.
|
||||
nsEventStatus estatus = nsEventStatus_eIgnore;
|
||||
nsEvent event;
|
||||
event.eventStructType = NS_EVENT;
|
||||
// XXX This code only runs when Image() objects are created from
|
||||
// script. So we can get away with this GetShellAt(0) business.
|
||||
|
||||
if (NS_SUCCEEDED(status))
|
||||
event.message = NS_IMAGE_LOAD;
|
||||
else
|
||||
event.message = NS_IMAGE_ERROR;
|
||||
// XXX Why are we doing this rigmarole anyway instead of targeting
|
||||
// an honest-to-god "load" or "error" event at the image node using
|
||||
// the standard DOM apis?
|
||||
|
||||
HandleDOMEvent(pc, &event, nsnull, NS_EVENT_FLAG_INIT, &estatus);
|
||||
nsCOMPtr<nsIDocument> doc = mDocument;
|
||||
if (!doc) {
|
||||
mNodeInfo->GetDocument(*getter_AddRefs(doc));
|
||||
}
|
||||
|
||||
if (doc) {
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
doc->GetShellAt(0, getter_AddRefs(shell));
|
||||
if (shell) {
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
shell->GetPresContext(getter_AddRefs(context));
|
||||
|
||||
if (context) {
|
||||
|
||||
// Fire the onload event.
|
||||
nsEventStatus estatus = nsEventStatus_eIgnore;
|
||||
nsEvent event;
|
||||
event.eventStructType = NS_EVENT;
|
||||
|
||||
if (NS_SUCCEEDED(status))
|
||||
event.message = NS_IMAGE_LOAD;
|
||||
else
|
||||
event.message = NS_IMAGE_ERROR;
|
||||
|
||||
HandleDOMEvent(context, &event, nsnull, NS_EVENT_FLAG_INIT, &estatus);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsHTMLImageElement::FrameChanged(imgIContainer *container, nsISupports *cx, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsHTMLImageElement::FrameChanged(imgIContainer *container,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -758,77 +780,62 @@ nsHTMLImageElement::SetSrcInner(nsIURI* aBaseURL,
|
|||
nsCOMPtr<nsIDocument> doc;
|
||||
mNodeInfo->GetDocument(*getter_AddRefs(doc));
|
||||
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
|
||||
doc->GetShellAt(0, getter_AddRefs(shell));
|
||||
if (shell) {
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
|
||||
result = shell->GetPresContext(getter_AddRefs(context));
|
||||
if (context) {
|
||||
nsAutoString url;
|
||||
if (aBaseURL) {
|
||||
result = NS_MakeAbsoluteURI(url, aSrc, aBaseURL);
|
||||
if (NS_FAILED(result)) {
|
||||
url.Assign(aSrc);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (doc) {
|
||||
nsAutoString url;
|
||||
if (aBaseURL) {
|
||||
result = NS_MakeAbsoluteURI(url, aSrc, aBaseURL);
|
||||
if (NS_FAILED(result)) {
|
||||
url.Assign(aSrc);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
result = NS_NewURI(getter_AddRefs(uri), aSrc, nsnull, aBaseURL);
|
||||
if (NS_FAILED(result)) return result;
|
||||
|
||||
nsCOMPtr<nsIDocument> document;
|
||||
result = shell->GetDocument(getter_AddRefs(document));
|
||||
if (NS_FAILED(result)) return result;
|
||||
|
||||
nsCOMPtr<nsIScriptGlobalObject> globalObject;
|
||||
result = document->GetScriptGlobalObject(getter_AddRefs(globalObject));
|
||||
if (NS_FAILED(result)) return result;
|
||||
|
||||
nsCOMPtr<nsIDOMWindow> domWin(do_QueryInterface(globalObject));
|
||||
|
||||
PRBool shouldLoad = PR_TRUE;
|
||||
result =
|
||||
NS_CheckContentLoadPolicy(nsIContentPolicy::IMAGE,
|
||||
uri,
|
||||
NS_STATIC_CAST(nsIDOMHTMLImageElement *,
|
||||
this),
|
||||
domWin, &shouldLoad);
|
||||
if (NS_SUCCEEDED(result) && !shouldLoad) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// If we have a loader we're in the middle of loading a image,
|
||||
// we'll cancel that load and start a new one.
|
||||
|
||||
// if (mRequest) {
|
||||
// mRequest->Cancel() ?? cancel the load?
|
||||
// }
|
||||
|
||||
nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1"));
|
||||
if (!il) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDocument> doc;
|
||||
nsCOMPtr<nsILoadGroup> loadGroup;
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
shell->GetDocument(getter_AddRefs(doc));
|
||||
if (doc) {
|
||||
doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup));
|
||||
|
||||
// Get the documment URI for the referrer.
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
}
|
||||
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
il->LoadImage(uri, nsnull, documentURI, loadGroup, this, context, nsIRequest::LOAD_NORMAL,
|
||||
nsnull, nsnull, getter_AddRefs(mRequest));
|
||||
}
|
||||
else {
|
||||
url.Assign(aSrc);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
result = NS_NewURI(getter_AddRefs(uri), aSrc, nsnull, aBaseURL);
|
||||
if (NS_FAILED(result)) return result;
|
||||
|
||||
nsCOMPtr<nsIScriptGlobalObject> globalObject;
|
||||
result = doc->GetScriptGlobalObject(getter_AddRefs(globalObject));
|
||||
if (NS_FAILED(result)) return result;
|
||||
|
||||
nsCOMPtr<nsIDOMWindow> domWin(do_QueryInterface(globalObject));
|
||||
|
||||
PRBool shouldLoad = PR_TRUE;
|
||||
result =
|
||||
NS_CheckContentLoadPolicy(nsIContentPolicy::IMAGE,
|
||||
uri,
|
||||
NS_STATIC_CAST(nsIDOMHTMLImageElement *,
|
||||
this),
|
||||
domWin, &shouldLoad);
|
||||
if (NS_SUCCEEDED(result) && !shouldLoad) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// If we have a loader we're in the middle of loading a image,
|
||||
// we'll cancel that load and start a new one.
|
||||
|
||||
// if (mRequest) {
|
||||
// mRequest->Cancel() ?? cancel the load?
|
||||
// }
|
||||
|
||||
nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1"));
|
||||
if (!il) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsILoadGroup> loadGroup;
|
||||
nsCOMPtr<nsIURI> documentURI;
|
||||
doc->GetDocumentLoadGroup(getter_AddRefs(loadGroup));
|
||||
|
||||
// Get the documment URI for the referrer.
|
||||
doc->GetDocumentURL(getter_AddRefs(documentURI));
|
||||
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
il->LoadImage(uri, nsnull, documentURI, loadGroup, this, doc,
|
||||
nsIRequest::LOAD_NORMAL,
|
||||
nsnull, nsnull, getter_AddRefs(mRequest));
|
||||
}
|
||||
} else {
|
||||
nsIImageFrame* imageFrame;
|
||||
|
|
|
@ -163,15 +163,12 @@ ImageListener::OnStartRequest(nsIRequest* request, nsISupports *ctxt)
|
|||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsCOMPtr<nsIPresContext> context;
|
||||
mDocument->GetShellAt(0, getter_AddRefs(shell));
|
||||
if (shell) {
|
||||
shell->GetPresContext(getter_AddRefs(context));
|
||||
}
|
||||
|
||||
nsCOMPtr<imgILoader> il(do_GetService("@mozilla.org/image/loader;1"));
|
||||
il->LoadImageWithChannel(channel, mDocument, context, getter_AddRefs(mNextStream),
|
||||
nsCOMPtr<nsISupports> docSupports;
|
||||
CallQueryInterface(mDocument, NS_STATIC_CAST(nsISupports**,
|
||||
getter_AddRefs(docSupports)));
|
||||
il->LoadImageWithChannel(channel, mDocument, docSupports,
|
||||
getter_AddRefs(mNextStream),
|
||||
getter_AddRefs(mDocument->mImageRequest));
|
||||
|
||||
mDocument->StartLayout();
|
||||
|
@ -406,16 +403,13 @@ nsImageDocument::ToggleImageSize()
|
|||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnStartDecode(imgIRequest* aRequest,
|
||||
nsISupports* aCX)
|
||||
nsImageDocument::OnStartDecode(imgIRequest* aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnStartContainer(imgIRequest* aRequest,
|
||||
nsISupports* aCX,
|
||||
imgIContainer* aImage)
|
||||
nsImageDocument::OnStartContainer(imgIRequest* aRequest, imgIContainer* aImage)
|
||||
{
|
||||
aImage->GetWidth(&mImageWidth);
|
||||
aImage->GetHeight(&mImageHeight);
|
||||
|
@ -427,16 +421,13 @@ nsImageDocument::OnStartContainer(imgIRequest* aRequest,
|
|||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnStartFrame(imgIRequest* aRequest,
|
||||
nsISupports* aCX,
|
||||
gfxIImageFrame* aFrame)
|
||||
nsImageDocument::OnStartFrame(imgIRequest* aRequest, gfxIImageFrame* aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnDataAvailable(imgIRequest* aRequest,
|
||||
nsISupports *aCX,
|
||||
gfxIImageFrame* aFrame,
|
||||
const nsRect* aRect)
|
||||
{
|
||||
|
@ -445,7 +436,6 @@ nsImageDocument::OnDataAvailable(imgIRequest* aRequest,
|
|||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnStopFrame(imgIRequest* aRequest,
|
||||
nsISupports* aCX,
|
||||
gfxIImageFrame* aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
|
@ -453,7 +443,6 @@ nsImageDocument::OnStopFrame(imgIRequest* aRequest,
|
|||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnStopContainer(imgIRequest* aRequest,
|
||||
nsISupports* aCX,
|
||||
imgIContainer* aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
|
@ -461,7 +450,6 @@ nsImageDocument::OnStopContainer(imgIRequest* aRequest,
|
|||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnStopDecode(imgIRequest* aRequest,
|
||||
nsISupports* aCX,
|
||||
nsresult status,
|
||||
const PRUnichar* statusArg)
|
||||
{
|
||||
|
@ -470,7 +458,6 @@ nsImageDocument::OnStopDecode(imgIRequest* aRequest,
|
|||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::FrameChanged(imgIContainer* aContainer,
|
||||
nsISupports *aCX,
|
||||
gfxIImageFrame* aFrame,
|
||||
nsRect* aDirtyRect)
|
||||
{
|
||||
|
|
|
@ -68,9 +68,9 @@ NS_IMETHODIMP inBitmapDecoder::Close()
|
|||
{
|
||||
if (mObserver)
|
||||
{
|
||||
mObserver->OnStopFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStopContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
mObserver->OnStopFrame(nsnull, mFrame);
|
||||
mObserver->OnStopContainer(nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -96,7 +96,7 @@ NS_IMETHODIMP inBitmapDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count,
|
|||
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
mObserver->OnStartDecode(nsnull, nsnull);
|
||||
mObserver->OnStartDecode(nsnull);
|
||||
|
||||
PRUint32* wbuf = (PRUint32*) data;
|
||||
PRInt32 w, h;
|
||||
|
@ -107,12 +107,12 @@ NS_IMETHODIMP inBitmapDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count,
|
|||
|
||||
mImage->Init(w, h, mObserver);
|
||||
if (mObserver)
|
||||
mObserver->OnStartContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStartContainer(nsnull, mImage);
|
||||
|
||||
mFrame->Init(0, 0, w, h, gfxIFormats::RGB, 24);
|
||||
mImage->AppendFrame(mFrame);
|
||||
if (mObserver)
|
||||
mObserver->OnStartFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStartFrame(nsnull, mFrame);
|
||||
|
||||
PRUint32 bpr;
|
||||
nscoord width, height;
|
||||
|
@ -130,7 +130,7 @@ NS_IMETHODIMP inBitmapDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count,
|
|||
mFrame->SetImageData(line, realBpr, (rownum++)*bpr);
|
||||
|
||||
nsRect r(0, rownum, width, 1);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
++i;
|
||||
} while(rownum < height);
|
||||
|
||||
|
|
|
@ -121,18 +121,21 @@ nsImageLoader::Load(nsIURI *aURI)
|
|||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
return il->LoadImage(aURI, nsnull, documentURI, loadGroup, NS_STATIC_CAST(imgIDecoderObserver *, this),
|
||||
nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(mRequest));
|
||||
return il->LoadImage(aURI, nsnull, documentURI, loadGroup,
|
||||
this,
|
||||
doc, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull,
|
||||
getter_AddRefs(mRequest));
|
||||
}
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStartDecode(imgIRequest *aRequest, nsISupports *aContext)
|
||||
NS_IMETHODIMP nsImageLoader::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStartContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageLoader::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (aImage)
|
||||
{
|
||||
|
@ -149,12 +152,15 @@ NS_IMETHODIMP nsImageLoader::OnStartContainer(imgIRequest *aRequest, nsISupports
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStartFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageLoader::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnDataAvailable(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsImageLoader::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
// Background images are not displayed incrementally, they are displayed after the entire
|
||||
// image has been loaded.
|
||||
|
@ -162,7 +168,8 @@ NS_IMETHODIMP nsImageLoader::OnDataAvailable(imgIRequest *aRequest, nsISupports
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStopFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageLoader::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -184,17 +191,22 @@ NS_IMETHODIMP nsImageLoader::OnStopFrame(imgIRequest *aRequest, nsISupports *aCo
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStopContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageLoader::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStopDecode(imgIRequest *aRequest, nsISupports *aContext, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsImageLoader::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::FrameChanged(imgIContainer *aContainer, nsISupports *aContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsImageLoader::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
|
|
@ -121,18 +121,21 @@ nsImageLoader::Load(nsIURI *aURI)
|
|||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
return il->LoadImage(aURI, nsnull, documentURI, loadGroup, NS_STATIC_CAST(imgIDecoderObserver *, this),
|
||||
nsnull, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull, getter_AddRefs(mRequest));
|
||||
return il->LoadImage(aURI, nsnull, documentURI, loadGroup,
|
||||
this,
|
||||
doc, nsIRequest::LOAD_BACKGROUND, nsnull, nsnull,
|
||||
getter_AddRefs(mRequest));
|
||||
}
|
||||
|
||||
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStartDecode(imgIRequest *aRequest, nsISupports *aContext)
|
||||
NS_IMETHODIMP nsImageLoader::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStartContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageLoader::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (aImage)
|
||||
{
|
||||
|
@ -149,12 +152,15 @@ NS_IMETHODIMP nsImageLoader::OnStartContainer(imgIRequest *aRequest, nsISupports
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStartFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageLoader::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnDataAvailable(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsImageLoader::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
// Background images are not displayed incrementally, they are displayed after the entire
|
||||
// image has been loaded.
|
||||
|
@ -162,7 +168,8 @@ NS_IMETHODIMP nsImageLoader::OnDataAvailable(imgIRequest *aRequest, nsISupports
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStopFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageLoader::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
@ -184,17 +191,22 @@ NS_IMETHODIMP nsImageLoader::OnStopFrame(imgIRequest *aRequest, nsISupports *aCo
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStopContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageLoader::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::OnStopDecode(imgIRequest *aRequest, nsISupports *aContext, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsImageLoader::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageLoader::FrameChanged(imgIContainer *aContainer, nsISupports *aContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsImageLoader::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
|
|
@ -85,12 +85,14 @@ private:
|
|||
|
||||
|
||||
|
||||
nsBulletFrame::nsBulletFrame()
|
||||
nsBulletFrame::nsBulletFrame() :
|
||||
mPresContext(nsnull)
|
||||
{
|
||||
}
|
||||
|
||||
nsBulletFrame::~nsBulletFrame()
|
||||
{
|
||||
NS_PRECONDITION(!mPresContext, "Never got destroyed properly!");
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -105,6 +107,8 @@ nsBulletFrame::Destroy(nsIPresContext* aPresContext)
|
|||
if (mListener)
|
||||
NS_REINTERPRET_CAST(nsBulletListener*, mListener.get())->SetFrame(nsnull);
|
||||
|
||||
mPresContext = nsnull;
|
||||
|
||||
// Let base class do the rest
|
||||
return nsFrame::Destroy(aPresContext);
|
||||
}
|
||||
|
@ -116,6 +120,8 @@ nsBulletFrame::Init(nsIPresContext* aPresContext,
|
|||
nsStyleContext* aContext,
|
||||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
mPresContext = aPresContext;
|
||||
|
||||
nsresult rv = nsFrame::Init(aPresContext, aContent, aParent, aContext, aPrevInFlow);
|
||||
|
||||
const nsStyleList* myList = (const nsStyleList*)mStyleContext->GetStyleData(eStyleStruct_List);
|
||||
|
@ -1640,7 +1646,9 @@ nsBulletFrame::Reflow(nsIPresContext* aPresContext,
|
|||
|
||||
|
||||
// XXX: initialDocumentURI is NULL !
|
||||
il->LoadImage(newURI, nsnull, documentURI, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
il->LoadImage(newURI, nsnull, documentURI, loadGroup, mListener, doc,
|
||||
nsIRequest::LOAD_NORMAL, nsnull, nsnull,
|
||||
getter_AddRefs(mImageRequest));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1665,10 +1673,12 @@ nsBulletFrame::Reflow(nsIPresContext* aPresContext,
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresContext *aPresContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!aImage) return NS_ERROR_INVALID_ARG;
|
||||
if (!aRequest) return NS_ERROR_INVALID_ARG;
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
PRUint32 status;
|
||||
aRequest->GetImageStatus(&status);
|
||||
|
@ -1681,7 +1691,7 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
aImage->GetHeight(&h);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
nsSize newsize(NSIntPixelsToTwips(w, p2t), NSIntPixelsToTwips(h, p2t));
|
||||
|
||||
|
@ -1691,7 +1701,7 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
// Now that the size is available (or an error occurred), trigger
|
||||
// a reflow of the bullet frame.
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = aPresContext->GetShell(getter_AddRefs(shell));
|
||||
nsresult rv = mPresContext->GetShell(getter_AddRefs(shell));
|
||||
if (NS_SUCCEEDED(rv) && shell) {
|
||||
NS_ASSERTION(mParent, "No parent to pass the reflow request up to.");
|
||||
if (mParent) {
|
||||
|
@ -1700,7 +1710,7 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
// has no effect. The reflowing of the bullet frame is done
|
||||
// indirectly.
|
||||
nsIFrame* frame = nsnull;
|
||||
mParent->FirstChild(aPresContext, nsnull, &frame);
|
||||
mParent->FirstChild(mPresContext, nsnull, &frame);
|
||||
NS_ASSERTION(frame, "No frame to mark dirty for bullet frame.");
|
||||
if (frame) {
|
||||
nsFrameState state;
|
||||
|
@ -1716,9 +1726,13 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsBulletFrame::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
if (!aRect) return NS_ERROR_NULL_POINTER;
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
|
||||
// XXX Should we do anything here if an error occured in the decode?
|
||||
|
||||
|
@ -1734,25 +1748,29 @@ NS_IMETHODIMP nsBulletFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresConte
|
|||
r.y -= 1;
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
r.height = NSIntPixelsToTwips(r.height, p2t);
|
||||
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *aPresContext, nsresult aStatus, const PRUnichar *aStatusArg)
|
||||
NS_IMETHODIMP nsBulletFrame::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg)
|
||||
{
|
||||
// XXX should the bulletframe do anything if the image failed to load?
|
||||
// it didn't in the old code...
|
||||
|
||||
#if 0
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
|
||||
|
||||
if (NS_FAILED(aStatus)) {
|
||||
|
@ -1766,18 +1784,22 @@ NS_IMETHODIMP nsBulletFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::FrameChanged(imgIContainer *aContainer, nsIPresContext *aPresContext, gfxIImageFrame *aNewFrame, nsRect *aDirtyRect)
|
||||
NS_IMETHODIMP nsBulletFrame::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewFrame,
|
||||
nsRect *aDirtyRect)
|
||||
{
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
nsRect r(*aDirtyRect);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
r.height = NSIntPixelsToTwips(r.height, p2t);
|
||||
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -1846,70 +1868,64 @@ nsBulletListener::~nsBulletListener()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStartDecode(imgIRequest *aRequest, nsISupports *aContext)
|
||||
NS_IMETHODIMP nsBulletListener::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStartContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsBulletListener::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartContainer(aRequest, pc, aImage);
|
||||
return mFrame->OnStartContainer(aRequest, aImage);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStartFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsBulletListener::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnDataAvailable(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsBulletListener::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnDataAvailable(aRequest, pc, aFrame, aRect);
|
||||
return mFrame->OnDataAvailable(aRequest, aFrame, aRect);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStopFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsBulletListener::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStopContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsBulletListener::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStopDecode(imgIRequest *aRequest, nsISupports *aContext, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsBulletListener::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
return mFrame->OnStopDecode(aRequest, status, statusArg);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopDecode(aRequest, pc, status, statusArg);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::FrameChanged(imgIContainer *aContainer, nsISupports *aContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->FrameChanged(aContainer, pc, newframe, dirtyRect);
|
||||
return mFrame->FrameChanged(aContainer, newframe, dirtyRect);
|
||||
}
|
||||
|
|
|
@ -80,10 +80,16 @@ public:
|
|||
PRInt32 SetListItemOrdinal(PRInt32 aNextOrdinal, PRBool* aChanged);
|
||||
|
||||
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, nsIPresContext *aCX, imgIContainer *aImage);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame, const nsRect * rect);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest, nsIPresContext *aCX, nsresult aStatus, const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer, nsIPresContext *aCX, gfxIImageFrame *aNewframe, nsRect *aDirtyRect);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, imgIContainer *aImage);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect * rect);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewframe,
|
||||
nsRect *aDirtyRect);
|
||||
|
||||
protected:
|
||||
void GetDesiredSize(nsIPresContext* aPresContext,
|
||||
|
@ -104,6 +110,7 @@ protected:
|
|||
|
||||
nsSize mIntrinsicSize;
|
||||
nsSize mComputedSize;
|
||||
nsIPresContext* mPresContext; // weak ref
|
||||
};
|
||||
|
||||
#endif /* nsBulletFrame_h___ */
|
||||
|
|
|
@ -189,7 +189,8 @@ nsImageFrame::GetImageLoad(imgIRequest *aRequest)
|
|||
}
|
||||
|
||||
nsImageFrame::nsImageFrame() :
|
||||
mIntrinsicSize(0, 0)
|
||||
mIntrinsicSize(0, 0),
|
||||
mPresContext(nsnull)
|
||||
{
|
||||
// Size is constrained if we have a width and height.
|
||||
// - Set in reflow in case the attributes are changed
|
||||
|
@ -198,6 +199,7 @@ nsImageFrame::nsImageFrame() :
|
|||
|
||||
nsImageFrame::~nsImageFrame()
|
||||
{
|
||||
NS_PRECONDITION(!mPresContext, "Never got destroyed properly!");
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -276,20 +278,21 @@ nsImageFrame::Destroy(nsIPresContext* aPresContext)
|
|||
|
||||
mListener = nsnull;
|
||||
|
||||
// check / cleanup the IconLoads singleton
|
||||
if (mIconLoad) {
|
||||
// check / cleanup the IconLoads singleton
|
||||
if (mIconLoad) {
|
||||
#ifdef NOISY_ICON_LOADING
|
||||
printf( "Releasing IconLoad (%p)\n", this);
|
||||
printf( "Releasing IconLoad (%p)\n", this);
|
||||
#endif
|
||||
if (mIconLoad->Release()) {
|
||||
if (mIconLoad->Release()) {
|
||||
#ifdef NOISY_ICON_LOADING
|
||||
printf( "Deleting IconLoad (%p)\n", this);
|
||||
printf( "Deleting IconLoad (%p)\n", this);
|
||||
#endif
|
||||
delete mIconLoad;
|
||||
mIconLoad = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
delete mIconLoad;
|
||||
mIconLoad = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
mPresContext = nsnull;
|
||||
|
||||
return nsSplittableFrame::Destroy(aPresContext);
|
||||
}
|
||||
|
@ -303,8 +306,11 @@ nsImageFrame::Init(nsIPresContext* aPresContext,
|
|||
nsStyleContext* aContext,
|
||||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
mPresContext = aPresContext;
|
||||
|
||||
nsresult rv = nsSplittableFrame::Init(aPresContext, aContent, aParent,
|
||||
aContext, aPrevInFlow);
|
||||
|
||||
// See if we have a SRC attribute
|
||||
nsAutoString src;
|
||||
nsresult ca;
|
||||
|
@ -335,14 +341,16 @@ nsImageFrame::Init(nsIPresContext* aPresContext,
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStartDecode(imgIRequest *aRequest, nsIPresContext *aPresContext)
|
||||
NS_IMETHODIMP nsImageFrame::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresContext *aPresContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!aImage) return NS_ERROR_INVALID_ARG;
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // why are we bothering?
|
||||
|
||||
mState |= IMAGE_INITIALLOADCOMPLETED;
|
||||
|
||||
|
@ -363,7 +371,7 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
* one loop = 2
|
||||
*/
|
||||
PRUint16 animateMode = imgIContainer::kNormalAnimMode; //default value
|
||||
nsresult rv = aPresContext->GetImageAnimationMode(&animateMode);
|
||||
nsresult rv = mPresContext->GetImageAnimationMode(&animateMode);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
aImage->SetAnimationMode(animateMode);
|
||||
}
|
||||
|
@ -373,7 +381,7 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
aImage->GetHeight(&h);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
nsSize newsize(NSIntPixelsToTwips(w, p2t), NSIntPixelsToTwips(h, p2t));
|
||||
|
||||
|
@ -386,7 +394,7 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
|
||||
if (!(mState & IMAGE_SIZECONSTRAINED)) {
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
NS_ASSERTION(mParent, "No parent to pass the reflow request up to.");
|
||||
NS_ASSERTION(presShell, "No PresShell.");
|
||||
if (mParent && presShell && (mState & IMAGE_GOTINITIALREFLOW) && whichLoad == 0) { // don't reflow if we havn't gotten the inital reflow yet
|
||||
|
@ -399,12 +407,15 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStartFrame(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageFrame::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
// XXX do we need to make sure that the reflow from the OnStartContainer has been
|
||||
// processed before we start calling invalidate
|
||||
|
@ -412,10 +423,12 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContex
|
|||
if (!aRect)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // why are we bothering?
|
||||
|
||||
// handle iconLoads first...
|
||||
if (HandleIconLoads(aRequest, PR_FALSE)) {
|
||||
if (!aRect->IsEmpty()) {
|
||||
Invalidate(aPresContext, *aRect, PR_FALSE);
|
||||
Invalidate(mPresContext, *aRect, PR_FALSE);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -429,7 +442,7 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContex
|
|||
nsRect r(aRect->x, aRect->y, aRect->width, aRect->height);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
|
@ -441,17 +454,19 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContex
|
|||
r.y += mBorderPadding.top;
|
||||
|
||||
if (whichLoad == 0 && !r.IsEmpty())
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStopFrame(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageFrame::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStopContainer(imgIRequest *aRequest, nsIPresContext *aPresContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageFrame::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -595,10 +610,15 @@ nsImageFrame::FireDOMEvent(PRUint32 aMessage)
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *aPresContext, nsresult aStatus, const PRUnichar *aStatusArg)
|
||||
NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg)
|
||||
{
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // why are we bothering?
|
||||
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
NS_ASSERTION(presShell, "No PresShell.");
|
||||
|
||||
// check to see if an image error occurred
|
||||
PRBool imageFailedToLoad = PR_FALSE;
|
||||
|
@ -635,7 +655,7 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
|
||||
if (!(mState & IMAGE_SIZECONSTRAINED) && (mLoads[0].mIntrinsicSize != mIntrinsicSize)) {
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
NS_ASSERTION(mParent, "No parent to pass the reflow request up to.");
|
||||
NS_ASSERTION(presShell, "No PresShell.");
|
||||
if (mParent && presShell && (mState & IMAGE_GOTINITIALREFLOW)) { // don't reflow if we havn't gotten the inital reflow yet
|
||||
|
@ -647,7 +667,7 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
GetSize(s);
|
||||
nsRect r(0,0, s.width, s.height);
|
||||
if (!r.IsEmpty()) {
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -680,7 +700,7 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
|
||||
// check for quirks mode
|
||||
nsCompatibility mode;
|
||||
aPresContext->GetCompatibilityMode(&mode);
|
||||
mPresContext->GetCompatibilityMode(&mode);
|
||||
|
||||
// check for being in Composer: if we are, we always show the size-box
|
||||
PRBool forceIcon = PR_FALSE;
|
||||
|
@ -703,11 +723,11 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
|
||||
if (!useSizedBox) {
|
||||
// let the presShell handle converting this into the inline alt text frame
|
||||
presShell->CantRenderReplacedElement(aPresContext, this);
|
||||
presShell->CantRenderReplacedElement(mPresContext, this);
|
||||
} else {
|
||||
// we are handling it
|
||||
// invalidate the icon area (it may change states)
|
||||
InvalidateIcon(aPresContext);
|
||||
InvalidateIcon(mPresContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -731,7 +751,9 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer, nsIPresContext *aPresContext, gfxIImageFrame *aNewFrame, nsRect *aDirtyRect)
|
||||
NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewFrame,
|
||||
nsRect *aDirtyRect)
|
||||
{
|
||||
if (!mLoads[0].mRequest)
|
||||
return NS_OK; // if mLoads[0].mRequest is null, this isn't for the first one, so we don't care about it.
|
||||
|
@ -748,7 +770,7 @@ NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer, nsIPresConte
|
|||
nsRect r(*aDirtyRect);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
|
@ -758,7 +780,7 @@ NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer, nsIPresConte
|
|||
if (!r.IsEmpty()) {
|
||||
r.x += mBorderPadding.left;
|
||||
r.y += mBorderPadding.top;
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
|
@ -1827,7 +1849,7 @@ nsImageFrame::AttributeChanged(nsIPresContext* aPresContext,
|
|||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mState |= NS_FRAME_IS_DIRTY;
|
||||
mParent->ReflowDirtyChild(presShell, (nsIFrame*) this);
|
||||
mParent->ReflowDirtyChild(presShell, (nsIFrame*) this);
|
||||
// NOTE: mSizeFixed will be updated in Reflow...
|
||||
}
|
||||
|
||||
|
@ -2011,7 +2033,8 @@ nsImageFrame::RealLoadImage(const nsAString& aSpec, nsIPresContext *aPresContext
|
|||
}
|
||||
|
||||
nsCOMPtr<imgIRequest> tempRequest;
|
||||
return il->LoadImage(uri, baseURI, documentURI, loadGroup, mListener, aPresContext, loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));
|
||||
return il->LoadImage(uri, baseURI, documentURI, loadGroup, mListener, doc,
|
||||
loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));
|
||||
}
|
||||
|
||||
#define INTERNAL_GOPHER_LENGTH 16 /* "internal-gopher-" length */
|
||||
|
@ -2289,99 +2312,77 @@ nsImageListener::~nsImageListener()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStartDecode(imgIRequest *aRequest, nsISupports *aContext)
|
||||
NS_IMETHODIMP nsImageListener::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartDecode(aRequest, pc);
|
||||
return mFrame->OnStartDecode(aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStartContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageListener::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartContainer(aRequest, pc, aImage);
|
||||
return mFrame->OnStartContainer(aRequest, aImage);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStartFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageListener::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartFrame(aRequest, pc, aFrame);
|
||||
return mFrame->OnStartFrame(aRequest, aFrame);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnDataAvailable(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsImageListener::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnDataAvailable(aRequest, pc, aFrame, aRect);
|
||||
return mFrame->OnDataAvailable(aRequest, aFrame, aRect);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStopFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageListener::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopFrame(aRequest, pc, aFrame);
|
||||
return mFrame->OnStopFrame(aRequest, aFrame);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStopContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageListener::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopContainer(aRequest, pc, aImage);
|
||||
return mFrame->OnStopContainer(aRequest, aImage);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStopDecode(imgIRequest *aRequest, nsISupports *aContext, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsImageListener::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopDecode(aRequest, pc, status, statusArg);
|
||||
return mFrame->OnStopDecode(aRequest, status, statusArg);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::FrameChanged(imgIContainer *aContainer, nsISupports *aContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsImageListener::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->FrameChanged(aContainer, pc, newframe, dirtyRect);
|
||||
return mFrame->FrameChanged(aContainer, newframe, dirtyRect);
|
||||
}
|
||||
|
||||
|
|
|
@ -159,14 +159,20 @@ public:
|
|||
|
||||
NS_IMETHOD IsImageComplete(PRBool* aComplete);
|
||||
|
||||
NS_IMETHOD OnStartDecode(imgIRequest *aRequest, nsIPresContext *aCX);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, nsIPresContext *aCX, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStartFrame(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame, const nsRect * rect);
|
||||
NS_IMETHOD OnStopFrame(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnStopContainer(imgIRequest *aRequest, nsIPresContext *aCX, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest, nsIPresContext *aCX, nsresult aStatus, const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer, nsIPresContext *aCX, gfxIImageFrame *aNewframe, nsRect *aDirtyRect);
|
||||
NS_IMETHOD OnStartDecode(imgIRequest *aRequest);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStartFrame(imgIRequest *aRequest, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect * rect);
|
||||
NS_IMETHOD OnStopFrame(imgIRequest *aRequest, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnStopContainer(imgIRequest *aRequest, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewframe,
|
||||
nsRect *aDirtyRect);
|
||||
|
||||
protected:
|
||||
// nsISupports
|
||||
|
@ -247,8 +253,10 @@ private:
|
|||
nsSize mIntrinsicSize;
|
||||
|
||||
nsMargin mBorderPadding;
|
||||
PRUint32 mNaturalImageWidth,
|
||||
mNaturalImageHeight;
|
||||
PRUint32 mNaturalImageWidth;
|
||||
PRUint32 mNaturalImageHeight;
|
||||
|
||||
nsIPresContext* mPresContext; // weak ref
|
||||
|
||||
/* loading / broken image icon support */
|
||||
|
||||
|
|
|
@ -85,12 +85,14 @@ private:
|
|||
|
||||
|
||||
|
||||
nsBulletFrame::nsBulletFrame()
|
||||
nsBulletFrame::nsBulletFrame() :
|
||||
mPresContext(nsnull)
|
||||
{
|
||||
}
|
||||
|
||||
nsBulletFrame::~nsBulletFrame()
|
||||
{
|
||||
NS_PRECONDITION(!mPresContext, "Never got destroyed properly!");
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -105,6 +107,8 @@ nsBulletFrame::Destroy(nsIPresContext* aPresContext)
|
|||
if (mListener)
|
||||
NS_REINTERPRET_CAST(nsBulletListener*, mListener.get())->SetFrame(nsnull);
|
||||
|
||||
mPresContext = nsnull;
|
||||
|
||||
// Let base class do the rest
|
||||
return nsFrame::Destroy(aPresContext);
|
||||
}
|
||||
|
@ -116,6 +120,8 @@ nsBulletFrame::Init(nsIPresContext* aPresContext,
|
|||
nsStyleContext* aContext,
|
||||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
mPresContext = aPresContext;
|
||||
|
||||
nsresult rv = nsFrame::Init(aPresContext, aContent, aParent, aContext, aPrevInFlow);
|
||||
|
||||
const nsStyleList* myList = (const nsStyleList*)mStyleContext->GetStyleData(eStyleStruct_List);
|
||||
|
@ -1640,7 +1646,9 @@ nsBulletFrame::Reflow(nsIPresContext* aPresContext,
|
|||
|
||||
|
||||
// XXX: initialDocumentURI is NULL !
|
||||
il->LoadImage(newURI, nsnull, documentURI, loadGroup, mListener, aPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
il->LoadImage(newURI, nsnull, documentURI, loadGroup, mListener, doc,
|
||||
nsIRequest::LOAD_NORMAL, nsnull, nsnull,
|
||||
getter_AddRefs(mImageRequest));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1665,10 +1673,12 @@ nsBulletFrame::Reflow(nsIPresContext* aPresContext,
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresContext *aPresContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!aImage) return NS_ERROR_INVALID_ARG;
|
||||
if (!aRequest) return NS_ERROR_INVALID_ARG;
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
PRUint32 status;
|
||||
aRequest->GetImageStatus(&status);
|
||||
|
@ -1681,7 +1691,7 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
aImage->GetHeight(&h);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
nsSize newsize(NSIntPixelsToTwips(w, p2t), NSIntPixelsToTwips(h, p2t));
|
||||
|
||||
|
@ -1691,7 +1701,7 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
// Now that the size is available (or an error occurred), trigger
|
||||
// a reflow of the bullet frame.
|
||||
nsCOMPtr<nsIPresShell> shell;
|
||||
nsresult rv = aPresContext->GetShell(getter_AddRefs(shell));
|
||||
nsresult rv = mPresContext->GetShell(getter_AddRefs(shell));
|
||||
if (NS_SUCCEEDED(rv) && shell) {
|
||||
NS_ASSERTION(mParent, "No parent to pass the reflow request up to.");
|
||||
if (mParent) {
|
||||
|
@ -1700,7 +1710,7 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
// has no effect. The reflowing of the bullet frame is done
|
||||
// indirectly.
|
||||
nsIFrame* frame = nsnull;
|
||||
mParent->FirstChild(aPresContext, nsnull, &frame);
|
||||
mParent->FirstChild(mPresContext, nsnull, &frame);
|
||||
NS_ASSERTION(frame, "No frame to mark dirty for bullet frame.");
|
||||
if (frame) {
|
||||
nsFrameState state;
|
||||
|
@ -1716,9 +1726,13 @@ NS_IMETHODIMP nsBulletFrame::OnStartContainer(imgIRequest *aRequest, nsIPresCont
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsBulletFrame::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
if (!aRect) return NS_ERROR_NULL_POINTER;
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
|
||||
// XXX Should we do anything here if an error occured in the decode?
|
||||
|
||||
|
@ -1734,25 +1748,29 @@ NS_IMETHODIMP nsBulletFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresConte
|
|||
r.y -= 1;
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
r.height = NSIntPixelsToTwips(r.height, p2t);
|
||||
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *aPresContext, nsresult aStatus, const PRUnichar *aStatusArg)
|
||||
NS_IMETHODIMP nsBulletFrame::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg)
|
||||
{
|
||||
// XXX should the bulletframe do anything if the image failed to load?
|
||||
// it didn't in the old code...
|
||||
|
||||
#if 0
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
|
||||
|
||||
if (NS_FAILED(aStatus)) {
|
||||
|
@ -1766,18 +1784,22 @@ NS_IMETHODIMP nsBulletFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletFrame::FrameChanged(imgIContainer *aContainer, nsIPresContext *aPresContext, gfxIImageFrame *aNewFrame, nsRect *aDirtyRect)
|
||||
NS_IMETHODIMP nsBulletFrame::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewFrame,
|
||||
nsRect *aDirtyRect)
|
||||
{
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // Why are we bothering?
|
||||
|
||||
nsRect r(*aDirtyRect);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
r.height = NSIntPixelsToTwips(r.height, p2t);
|
||||
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -1846,70 +1868,64 @@ nsBulletListener::~nsBulletListener()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStartDecode(imgIRequest *aRequest, nsISupports *aContext)
|
||||
NS_IMETHODIMP nsBulletListener::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStartContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsBulletListener::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartContainer(aRequest, pc, aImage);
|
||||
return mFrame->OnStartContainer(aRequest, aImage);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStartFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsBulletListener::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnDataAvailable(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsBulletListener::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnDataAvailable(aRequest, pc, aFrame, aRect);
|
||||
return mFrame->OnDataAvailable(aRequest, aFrame, aRect);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStopFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsBulletListener::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStopContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsBulletListener::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::OnStopDecode(imgIRequest *aRequest, nsISupports *aContext, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsBulletListener::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
return mFrame->OnStopDecode(aRequest, status, statusArg);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopDecode(aRequest, pc, status, statusArg);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsBulletListener::FrameChanged(imgIContainer *aContainer, nsISupports *aContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->FrameChanged(aContainer, pc, newframe, dirtyRect);
|
||||
return mFrame->FrameChanged(aContainer, newframe, dirtyRect);
|
||||
}
|
||||
|
|
|
@ -80,10 +80,16 @@ public:
|
|||
PRInt32 SetListItemOrdinal(PRInt32 aNextOrdinal, PRBool* aChanged);
|
||||
|
||||
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, nsIPresContext *aCX, imgIContainer *aImage);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame, const nsRect * rect);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest, nsIPresContext *aCX, nsresult aStatus, const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer, nsIPresContext *aCX, gfxIImageFrame *aNewframe, nsRect *aDirtyRect);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, imgIContainer *aImage);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect * rect);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewframe,
|
||||
nsRect *aDirtyRect);
|
||||
|
||||
protected:
|
||||
void GetDesiredSize(nsIPresContext* aPresContext,
|
||||
|
@ -104,6 +110,7 @@ protected:
|
|||
|
||||
nsSize mIntrinsicSize;
|
||||
nsSize mComputedSize;
|
||||
nsIPresContext* mPresContext; // weak ref
|
||||
};
|
||||
|
||||
#endif /* nsBulletFrame_h___ */
|
||||
|
|
|
@ -189,7 +189,8 @@ nsImageFrame::GetImageLoad(imgIRequest *aRequest)
|
|||
}
|
||||
|
||||
nsImageFrame::nsImageFrame() :
|
||||
mIntrinsicSize(0, 0)
|
||||
mIntrinsicSize(0, 0),
|
||||
mPresContext(nsnull)
|
||||
{
|
||||
// Size is constrained if we have a width and height.
|
||||
// - Set in reflow in case the attributes are changed
|
||||
|
@ -198,6 +199,7 @@ nsImageFrame::nsImageFrame() :
|
|||
|
||||
nsImageFrame::~nsImageFrame()
|
||||
{
|
||||
NS_PRECONDITION(!mPresContext, "Never got destroyed properly!");
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -276,20 +278,21 @@ nsImageFrame::Destroy(nsIPresContext* aPresContext)
|
|||
|
||||
mListener = nsnull;
|
||||
|
||||
// check / cleanup the IconLoads singleton
|
||||
if (mIconLoad) {
|
||||
// check / cleanup the IconLoads singleton
|
||||
if (mIconLoad) {
|
||||
#ifdef NOISY_ICON_LOADING
|
||||
printf( "Releasing IconLoad (%p)\n", this);
|
||||
printf( "Releasing IconLoad (%p)\n", this);
|
||||
#endif
|
||||
if (mIconLoad->Release()) {
|
||||
if (mIconLoad->Release()) {
|
||||
#ifdef NOISY_ICON_LOADING
|
||||
printf( "Deleting IconLoad (%p)\n", this);
|
||||
printf( "Deleting IconLoad (%p)\n", this);
|
||||
#endif
|
||||
delete mIconLoad;
|
||||
mIconLoad = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
delete mIconLoad;
|
||||
mIconLoad = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
mPresContext = nsnull;
|
||||
|
||||
return nsSplittableFrame::Destroy(aPresContext);
|
||||
}
|
||||
|
@ -303,8 +306,11 @@ nsImageFrame::Init(nsIPresContext* aPresContext,
|
|||
nsStyleContext* aContext,
|
||||
nsIFrame* aPrevInFlow)
|
||||
{
|
||||
mPresContext = aPresContext;
|
||||
|
||||
nsresult rv = nsSplittableFrame::Init(aPresContext, aContent, aParent,
|
||||
aContext, aPrevInFlow);
|
||||
|
||||
// See if we have a SRC attribute
|
||||
nsAutoString src;
|
||||
nsresult ca;
|
||||
|
@ -335,14 +341,16 @@ nsImageFrame::Init(nsIPresContext* aPresContext,
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStartDecode(imgIRequest *aRequest, nsIPresContext *aPresContext)
|
||||
NS_IMETHODIMP nsImageFrame::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresContext *aPresContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!aImage) return NS_ERROR_INVALID_ARG;
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // why are we bothering?
|
||||
|
||||
mState |= IMAGE_INITIALLOADCOMPLETED;
|
||||
|
||||
|
@ -363,7 +371,7 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
* one loop = 2
|
||||
*/
|
||||
PRUint16 animateMode = imgIContainer::kNormalAnimMode; //default value
|
||||
nsresult rv = aPresContext->GetImageAnimationMode(&animateMode);
|
||||
nsresult rv = mPresContext->GetImageAnimationMode(&animateMode);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
aImage->SetAnimationMode(animateMode);
|
||||
}
|
||||
|
@ -373,7 +381,7 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
aImage->GetHeight(&h);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
nsSize newsize(NSIntPixelsToTwips(w, p2t), NSIntPixelsToTwips(h, p2t));
|
||||
|
||||
|
@ -386,7 +394,7 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
|
||||
if (!(mState & IMAGE_SIZECONSTRAINED)) {
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
NS_ASSERTION(mParent, "No parent to pass the reflow request up to.");
|
||||
NS_ASSERTION(presShell, "No PresShell.");
|
||||
if (mParent && presShell && (mState & IMAGE_GOTINITIALREFLOW) && whichLoad == 0) { // don't reflow if we havn't gotten the inital reflow yet
|
||||
|
@ -399,12 +407,15 @@ NS_IMETHODIMP nsImageFrame::OnStartContainer(imgIRequest *aRequest, nsIPresConte
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStartFrame(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageFrame::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
// XXX do we need to make sure that the reflow from the OnStartContainer has been
|
||||
// processed before we start calling invalidate
|
||||
|
@ -412,10 +423,12 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContex
|
|||
if (!aRect)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // why are we bothering?
|
||||
|
||||
// handle iconLoads first...
|
||||
if (HandleIconLoads(aRequest, PR_FALSE)) {
|
||||
if (!aRect->IsEmpty()) {
|
||||
Invalidate(aPresContext, *aRect, PR_FALSE);
|
||||
Invalidate(mPresContext, *aRect, PR_FALSE);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -429,7 +442,7 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContex
|
|||
nsRect r(aRect->x, aRect->y, aRect->width, aRect->height);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
|
@ -441,17 +454,19 @@ NS_IMETHODIMP nsImageFrame::OnDataAvailable(imgIRequest *aRequest, nsIPresContex
|
|||
r.y += mBorderPadding.top;
|
||||
|
||||
if (whichLoad == 0 && !r.IsEmpty())
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStopFrame(imgIRequest *aRequest, nsIPresContext *aPresContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageFrame::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStopContainer(imgIRequest *aRequest, nsIPresContext *aPresContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageFrame::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -595,10 +610,15 @@ nsImageFrame::FireDOMEvent(PRUint32 aMessage)
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *aPresContext, nsresult aStatus, const PRUnichar *aStatusArg)
|
||||
NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg)
|
||||
{
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED); // why are we bothering?
|
||||
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
NS_ASSERTION(presShell, "No PresShell.");
|
||||
|
||||
// check to see if an image error occurred
|
||||
PRBool imageFailedToLoad = PR_FALSE;
|
||||
|
@ -635,7 +655,7 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
|
||||
if (!(mState & IMAGE_SIZECONSTRAINED) && (mLoads[0].mIntrinsicSize != mIntrinsicSize)) {
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mPresContext->GetShell(getter_AddRefs(presShell));
|
||||
NS_ASSERTION(mParent, "No parent to pass the reflow request up to.");
|
||||
NS_ASSERTION(presShell, "No PresShell.");
|
||||
if (mParent && presShell && (mState & IMAGE_GOTINITIALREFLOW)) { // don't reflow if we havn't gotten the inital reflow yet
|
||||
|
@ -647,7 +667,7 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
GetSize(s);
|
||||
nsRect r(0,0, s.width, s.height);
|
||||
if (!r.IsEmpty()) {
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -680,7 +700,7 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
|
||||
// check for quirks mode
|
||||
nsCompatibility mode;
|
||||
aPresContext->GetCompatibilityMode(&mode);
|
||||
mPresContext->GetCompatibilityMode(&mode);
|
||||
|
||||
// check for being in Composer: if we are, we always show the size-box
|
||||
PRBool forceIcon = PR_FALSE;
|
||||
|
@ -703,11 +723,11 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
|
||||
if (!useSizedBox) {
|
||||
// let the presShell handle converting this into the inline alt text frame
|
||||
presShell->CantRenderReplacedElement(aPresContext, this);
|
||||
presShell->CantRenderReplacedElement(mPresContext, this);
|
||||
} else {
|
||||
// we are handling it
|
||||
// invalidate the icon area (it may change states)
|
||||
InvalidateIcon(aPresContext);
|
||||
InvalidateIcon(mPresContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -731,7 +751,9 @@ NS_IMETHODIMP nsImageFrame::OnStopDecode(imgIRequest *aRequest, nsIPresContext *
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer, nsIPresContext *aPresContext, gfxIImageFrame *aNewFrame, nsRect *aDirtyRect)
|
||||
NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewFrame,
|
||||
nsRect *aDirtyRect)
|
||||
{
|
||||
if (!mLoads[0].mRequest)
|
||||
return NS_OK; // if mLoads[0].mRequest is null, this isn't for the first one, so we don't care about it.
|
||||
|
@ -748,7 +770,7 @@ NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer, nsIPresConte
|
|||
nsRect r(*aDirtyRect);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
r.x = NSIntPixelsToTwips(r.x, p2t);
|
||||
r.y = NSIntPixelsToTwips(r.y, p2t);
|
||||
r.width = NSIntPixelsToTwips(r.width, p2t);
|
||||
|
@ -758,7 +780,7 @@ NS_IMETHODIMP nsImageFrame::FrameChanged(imgIContainer *aContainer, nsIPresConte
|
|||
if (!r.IsEmpty()) {
|
||||
r.x += mBorderPadding.left;
|
||||
r.y += mBorderPadding.top;
|
||||
Invalidate(aPresContext, r, PR_FALSE);
|
||||
Invalidate(mPresContext, r, PR_FALSE);
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
|
@ -1827,7 +1849,7 @@ nsImageFrame::AttributeChanged(nsIPresContext* aPresContext,
|
|||
nsCOMPtr<nsIPresShell> presShell;
|
||||
aPresContext->GetShell(getter_AddRefs(presShell));
|
||||
mState |= NS_FRAME_IS_DIRTY;
|
||||
mParent->ReflowDirtyChild(presShell, (nsIFrame*) this);
|
||||
mParent->ReflowDirtyChild(presShell, (nsIFrame*) this);
|
||||
// NOTE: mSizeFixed will be updated in Reflow...
|
||||
}
|
||||
|
||||
|
@ -2011,7 +2033,8 @@ nsImageFrame::RealLoadImage(const nsAString& aSpec, nsIPresContext *aPresContext
|
|||
}
|
||||
|
||||
nsCOMPtr<imgIRequest> tempRequest;
|
||||
return il->LoadImage(uri, baseURI, documentURI, loadGroup, mListener, aPresContext, loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));
|
||||
return il->LoadImage(uri, baseURI, documentURI, loadGroup, mListener, doc,
|
||||
loadFlags, nsnull, aRequest, getter_AddRefs(tempRequest));
|
||||
}
|
||||
|
||||
#define INTERNAL_GOPHER_LENGTH 16 /* "internal-gopher-" length */
|
||||
|
@ -2289,99 +2312,77 @@ nsImageListener::~nsImageListener()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStartDecode(imgIRequest *aRequest, nsISupports *aContext)
|
||||
NS_IMETHODIMP nsImageListener::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartDecode(aRequest, pc);
|
||||
return mFrame->OnStartDecode(aRequest);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStartContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageListener::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartContainer(aRequest, pc, aImage);
|
||||
return mFrame->OnStartContainer(aRequest, aImage);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStartFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageListener::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStartFrame(aRequest, pc, aFrame);
|
||||
return mFrame->OnStartFrame(aRequest, aFrame);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnDataAvailable(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsImageListener::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnDataAvailable(aRequest, pc, aFrame, aRect);
|
||||
return mFrame->OnDataAvailable(aRequest, aFrame, aRect);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStopFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsImageListener::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopFrame(aRequest, pc, aFrame);
|
||||
return mFrame->OnStopFrame(aRequest, aFrame);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStopContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsImageListener::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopContainer(aRequest, pc, aImage);
|
||||
return mFrame->OnStopContainer(aRequest, aImage);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::OnStopDecode(imgIRequest *aRequest, nsISupports *aContext, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsImageListener::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->OnStopDecode(aRequest, pc, status, statusArg);
|
||||
return mFrame->OnStopDecode(aRequest, status, statusArg);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageListener::FrameChanged(imgIContainer *aContainer, nsISupports *aContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsImageListener::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(aContext));
|
||||
|
||||
NS_ASSERTION(pc, "not a pres context!");
|
||||
|
||||
return mFrame->FrameChanged(aContainer, pc, newframe, dirtyRect);
|
||||
return mFrame->FrameChanged(aContainer, newframe, dirtyRect);
|
||||
}
|
||||
|
||||
|
|
|
@ -159,14 +159,20 @@ public:
|
|||
|
||||
NS_IMETHOD IsImageComplete(PRBool* aComplete);
|
||||
|
||||
NS_IMETHOD OnStartDecode(imgIRequest *aRequest, nsIPresContext *aCX);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, nsIPresContext *aCX, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStartFrame(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame, const nsRect * rect);
|
||||
NS_IMETHOD OnStopFrame(imgIRequest *aRequest, nsIPresContext *aCX, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnStopContainer(imgIRequest *aRequest, nsIPresContext *aCX, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest, nsIPresContext *aCX, nsresult aStatus, const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer, nsIPresContext *aCX, gfxIImageFrame *aNewframe, nsRect *aDirtyRect);
|
||||
NS_IMETHOD OnStartDecode(imgIRequest *aRequest);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *aRequest, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStartFrame(imgIRequest *aRequest, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect * rect);
|
||||
NS_IMETHOD OnStopFrame(imgIRequest *aRequest, gfxIImageFrame *aFrame);
|
||||
NS_IMETHOD OnStopContainer(imgIRequest *aRequest, imgIContainer *aImage);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *aNewframe,
|
||||
nsRect *aDirtyRect);
|
||||
|
||||
protected:
|
||||
// nsISupports
|
||||
|
@ -247,8 +253,10 @@ private:
|
|||
nsSize mIntrinsicSize;
|
||||
|
||||
nsMargin mBorderPadding;
|
||||
PRUint32 mNaturalImageWidth,
|
||||
mNaturalImageHeight;
|
||||
PRUint32 mNaturalImageWidth;
|
||||
PRUint32 mNaturalImageHeight;
|
||||
|
||||
nsIPresContext* mPresContext; // weak ref
|
||||
|
||||
/* loading / broken image icon support */
|
||||
|
||||
|
|
|
@ -282,17 +282,22 @@ nsImageBoxFrame::AttributeChanged(nsIPresContext* aPresContext,
|
|||
return rv;
|
||||
}
|
||||
|
||||
nsImageBoxFrame::nsImageBoxFrame(nsIPresShell* aShell):nsLeafBoxFrame(aShell), mIntrinsicSize(0,0),
|
||||
mLoadFlags(nsIRequest::LOAD_NORMAL), mSuppressStyleCheck(PR_FALSE)
|
||||
nsImageBoxFrame::nsImageBoxFrame(nsIPresShell* aShell) :
|
||||
nsLeafBoxFrame(aShell),
|
||||
mUseSrcAttr(PR_FALSE),
|
||||
mSizeFrozen(PR_FALSE),
|
||||
mHasImage(PR_FALSE),
|
||||
mSuppressStyleCheck(PR_FALSE),
|
||||
mIntrinsicSize(0,0),
|
||||
mLoadFlags(nsIRequest::LOAD_NORMAL),
|
||||
mPresContext(nsnull)
|
||||
{
|
||||
mSizeFrozen = PR_FALSE;
|
||||
mHasImage = PR_FALSE;
|
||||
mUseSrcAttr = PR_FALSE;
|
||||
NeedsRecalc();
|
||||
}
|
||||
|
||||
nsImageBoxFrame::~nsImageBoxFrame()
|
||||
{
|
||||
NS_PRECONDITION(!mPresContext, "Never got destroyed properly!");
|
||||
}
|
||||
|
||||
|
||||
|
@ -313,6 +318,9 @@ nsImageBoxFrame::Destroy(nsIPresContext* aPresContext)
|
|||
if (mListener)
|
||||
NS_REINTERPRET_CAST(nsImageBoxListener*, mListener.get())->SetFrame(nsnull); // set the frame to null so we don't send messages to a dead object.
|
||||
|
||||
// Clear out weak ptr to prescontext
|
||||
mPresContext = nsnull;
|
||||
|
||||
return nsLeafBoxFrame::Destroy(aPresContext);
|
||||
}
|
||||
|
||||
|
@ -333,6 +341,8 @@ nsImageBoxFrame::Init(nsIPresContext* aPresContext,
|
|||
NS_RELEASE(listener);
|
||||
}
|
||||
|
||||
mPresContext = aPresContext;
|
||||
|
||||
mSuppressStyleCheck = PR_TRUE;
|
||||
nsresult rv = nsLeafBoxFrame::Init(aPresContext, aContent, aParent, aContext, aPrevInFlow);
|
||||
mSuppressStyleCheck = PR_FALSE;
|
||||
|
@ -464,7 +474,8 @@ nsImageBoxFrame::UpdateImage(nsIPresContext* aPresContext, PRBool& aResize)
|
|||
}
|
||||
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
il->LoadImage(srcURI, nsnull, documentURI, loadGroup, mListener, aPresContext, mLoadFlags, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
il->LoadImage(srcURI, nsnull, documentURI, loadGroup, mListener, doc,
|
||||
mLoadFlags, nsnull, nsnull, getter_AddRefs(mImageRequest));
|
||||
|
||||
aResize = PR_TRUE;
|
||||
}
|
||||
|
@ -733,18 +744,18 @@ nsImageBoxFrame::GetLoadGroup(nsIPresContext *aPresContext, nsILoadGroup **aLoad
|
|||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStartDecode(imgIRequest *request, nsIPresContext *aPresContext)
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStartDecode(imgIRequest *request)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStartContainer(imgIRequest *request, nsIPresContext *aPresContext, imgIContainer *image)
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStartContainer(imgIRequest *request,
|
||||
imgIContainer *image)
|
||||
{
|
||||
#ifdef DEBUG_pavlov
|
||||
NS_ENSURE_ARG(image);
|
||||
#else
|
||||
if (!image) return NS_ERROR_INVALID_ARG;
|
||||
#endif
|
||||
NS_ENSURE_ARG_POINTER(image);
|
||||
|
||||
// If we have no prescontext, what's going on?
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED);
|
||||
|
||||
mHasImage = PR_TRUE;
|
||||
mSizeFrozen = PR_FALSE;
|
||||
|
@ -754,41 +765,51 @@ NS_IMETHODIMP nsImageBoxFrame::OnStartContainer(imgIRequest *request, nsIPresCon
|
|||
image->GetHeight(&h);
|
||||
|
||||
float p2t;
|
||||
aPresContext->GetPixelsToTwips(&p2t);
|
||||
mPresContext->GetPixelsToTwips(&p2t);
|
||||
|
||||
mIntrinsicSize.SizeTo(NSIntPixelsToTwips(w, p2t), NSIntPixelsToTwips(h, p2t));
|
||||
|
||||
nsBoxLayoutState state(aPresContext);
|
||||
nsBoxLayoutState state(mPresContext);
|
||||
|
||||
this->MarkDirty(state);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStartFrame(imgIRequest *request, nsIPresContext *aPresContext, gfxIImageFrame *frame)
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStartFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnDataAvailable(imgIRequest *request, nsIPresContext *aPresContext, gfxIImageFrame *frame, const nsRect * rect)
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnDataAvailable(imgIRequest *request,
|
||||
gfxIImageFrame *frame,
|
||||
const nsRect * rect)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStopFrame(imgIRequest *request, nsIPresContext *aPresContext, gfxIImageFrame *frame)
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStopFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStopContainer(imgIRequest *request, nsIPresContext *aPresContext, imgIContainer *image)
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStopContainer(imgIRequest *request,
|
||||
imgIContainer *image)
|
||||
{
|
||||
nsBoxLayoutState state(aPresContext);
|
||||
// If we have no prescontext, what's going on?
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED);
|
||||
|
||||
nsBoxLayoutState state(mPresContext);
|
||||
this->Redraw(state);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStopDecode(imgIRequest *request, nsIPresContext *aPresContext, nsresult aStatus, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsImageBoxFrame::OnStopDecode(imgIRequest *request,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
if (NS_SUCCEEDED(aStatus))
|
||||
// Fire an onerror DOM event.
|
||||
|
@ -799,9 +820,14 @@ NS_IMETHODIMP nsImageBoxFrame::OnStopDecode(imgIRequest *request, nsIPresContext
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxFrame::FrameChanged(imgIContainer *container, nsIPresContext *aPresContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsImageBoxFrame::FrameChanged(imgIContainer *container,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
nsBoxLayoutState state(aPresContext);
|
||||
// If we have no prescontext, what's going on?
|
||||
NS_ENSURE_TRUE(mPresContext, NS_ERROR_UNEXPECTED);
|
||||
|
||||
nsBoxLayoutState state(mPresContext);
|
||||
this->Redraw(state);
|
||||
|
||||
return NS_OK;
|
||||
|
@ -817,77 +843,77 @@ nsImageBoxListener::~nsImageBoxListener()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStartDecode(imgIRequest *request, nsISupports *cx)
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStartDecode(imgIRequest *request)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
return mFrame->OnStartDecode(request, pc);
|
||||
return mFrame->OnStartDecode(request);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStartContainer(imgIRequest *request, nsISupports *cx, imgIContainer *image)
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStartContainer(imgIRequest *request,
|
||||
imgIContainer *image)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
return mFrame->OnStartContainer(request, pc, image);
|
||||
return mFrame->OnStartContainer(request, image);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStartFrame(imgIRequest *request, nsISupports *cx, gfxIImageFrame *frame)
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStartFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
return mFrame->OnStartFrame(request, pc, frame);
|
||||
return mFrame->OnStartFrame(request, frame);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::OnDataAvailable(imgIRequest *request, nsISupports *cx, gfxIImageFrame *frame, const nsRect * rect)
|
||||
NS_IMETHODIMP nsImageBoxListener::OnDataAvailable(imgIRequest *request,
|
||||
gfxIImageFrame *frame,
|
||||
const nsRect * rect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
return mFrame->OnDataAvailable(request, pc, frame, rect);
|
||||
return mFrame->OnDataAvailable(request, frame, rect);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStopFrame(imgIRequest *request, nsISupports *cx, gfxIImageFrame *frame)
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStopFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
return mFrame->OnStopFrame(request, pc, frame);
|
||||
return mFrame->OnStopFrame(request, frame);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStopContainer(imgIRequest *request, nsISupports *cx, imgIContainer *image)
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStopContainer(imgIRequest *request,
|
||||
imgIContainer *image)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
return mFrame->OnStopContainer(request, pc, image);
|
||||
return mFrame->OnStopContainer(request, image);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStopDecode(imgIRequest *request, nsISupports *cx, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsImageBoxListener::OnStopDecode(imgIRequest *request,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
nsresult rv = mFrame->OnStopDecode(request, pc, status, statusArg);
|
||||
|
||||
return rv;
|
||||
return mFrame->OnStopDecode(request, status, statusArg);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsImageBoxListener::FrameChanged(imgIContainer *container, nsISupports *cx, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsImageBoxListener::FrameChanged(imgIContainer *container,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
if (!mFrame)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsIPresContext> pc(do_QueryInterface(cx));
|
||||
return mFrame->FrameChanged(container, pc, newframe, dirtyRect);
|
||||
return mFrame->FrameChanged(container, newframe, dirtyRect);
|
||||
}
|
||||
|
||||
|
|
|
@ -108,14 +108,20 @@ public:
|
|||
nsFramePaintLayer aWhichLayer,
|
||||
PRUint32 aFlags = 0);
|
||||
|
||||
NS_IMETHOD OnStartDecode(imgIRequest *request, nsIPresContext *cx);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *request, nsIPresContext *cx, imgIContainer *image);
|
||||
NS_IMETHOD OnStartFrame(imgIRequest *request, nsIPresContext *cx, gfxIImageFrame *frame);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *request, nsIPresContext *cx, gfxIImageFrame *frame, const nsRect * rect);
|
||||
NS_IMETHOD OnStopFrame(imgIRequest *request, nsIPresContext *cx, gfxIImageFrame *frame);
|
||||
NS_IMETHOD OnStopContainer(imgIRequest *request, nsIPresContext *cx, imgIContainer *image);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *request, nsIPresContext *cx, nsresult status, const PRUnichar *statusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *container, nsIPresContext *cx, gfxIImageFrame *newframe, nsRect * dirtyRect);
|
||||
NS_IMETHOD OnStartDecode(imgIRequest *request);
|
||||
NS_IMETHOD OnStartContainer(imgIRequest *request, imgIContainer *image);
|
||||
NS_IMETHOD OnStartFrame(imgIRequest *request, gfxIImageFrame *frame);
|
||||
NS_IMETHOD OnDataAvailable(imgIRequest *request,
|
||||
gfxIImageFrame *frame,
|
||||
const nsRect * rect);
|
||||
NS_IMETHOD OnStopFrame(imgIRequest *request, gfxIImageFrame *frame);
|
||||
NS_IMETHOD OnStopContainer(imgIRequest *request, imgIContainer *image);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *request,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg);
|
||||
NS_IMETHOD FrameChanged(imgIContainer *container,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect);
|
||||
|
||||
virtual ~nsImageBoxFrame();
|
||||
protected:
|
||||
|
@ -148,6 +154,7 @@ private:
|
|||
PRPackedBool mUseSrcAttr; // Whether or not the image src comes from an attribute.
|
||||
PRPackedBool mSizeFrozen;
|
||||
PRPackedBool mHasImage;
|
||||
PRPackedBool mSuppressStyleCheck;
|
||||
|
||||
nsRect mSubRect; // If set, indicates that only the portion of the image specified by the rect should be used.
|
||||
|
||||
|
@ -155,7 +162,8 @@ private:
|
|||
PRInt32 mLoadFlags;
|
||||
|
||||
nsSize mImageSize;
|
||||
PRBool mSuppressStyleCheck;
|
||||
|
||||
nsIPresContext* mPresContext; // weak ptr
|
||||
}; // class nsImageBoxFrame
|
||||
|
||||
#endif /* nsImageBoxFrame_h___ */
|
||||
|
|
|
@ -1879,7 +1879,9 @@ nsTreeBodyFrame::GetImage(PRInt32 aRowIndex, const PRUnichar* aColID, PRBool aUs
|
|||
|
||||
mImageGuard = PR_TRUE;
|
||||
// XXX: initialDocumentURI is NULL!
|
||||
rv = il->LoadImage(srcURI, nsnull, documentURI, nsnull, listener, mPresContext, nsIRequest::LOAD_NORMAL, nsnull, nsnull, getter_AddRefs(imageRequest));
|
||||
rv = il->LoadImage(srcURI, nsnull, documentURI, nsnull, listener, doc,
|
||||
nsIRequest::LOAD_NORMAL, nsnull, nsnull,
|
||||
getter_AddRefs(imageRequest));
|
||||
mImageGuard = PR_FALSE;
|
||||
|
||||
if (!imageRequest)
|
||||
|
@ -3784,43 +3786,53 @@ nsTreeImageListener::~nsTreeImageListener()
|
|||
{
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStartDecode(imgIRequest *aRequest, nsISupports *aContext)
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStartDecode(imgIRequest *aRequest)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStartContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStartContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStartFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStartFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::OnDataAvailable(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame, const nsRect *aRect)
|
||||
NS_IMETHODIMP nsTreeImageListener::OnDataAvailable(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame,
|
||||
const nsRect *aRect)
|
||||
{
|
||||
Invalidate();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStopFrame(imgIRequest *aRequest, nsISupports *aContext, gfxIImageFrame *aFrame)
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStopFrame(imgIRequest *aRequest,
|
||||
gfxIImageFrame *aFrame)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStopContainer(imgIRequest *aRequest, nsISupports *aContext, imgIContainer *aImage)
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStopContainer(imgIRequest *aRequest,
|
||||
imgIContainer *aImage)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStopDecode(imgIRequest *aRequest, nsISupports *aContext, nsresult status, const PRUnichar *statusArg)
|
||||
NS_IMETHODIMP nsTreeImageListener::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult status,
|
||||
const PRUnichar *statusArg)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsTreeImageListener::FrameChanged(imgIContainer *aContainer, nsISupports *aContext, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
NS_IMETHODIMP nsTreeImageListener::FrameChanged(imgIContainer *aContainer,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
Invalidate();
|
||||
return NS_OK;
|
||||
|
|
|
@ -115,8 +115,8 @@ NS_IMETHODIMP nsBMPDecoder::Close()
|
|||
mStateData = 0;
|
||||
|
||||
if (mObserver) {
|
||||
mObserver->OnStopContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
mObserver->OnStopContainer(nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
mObserver = nsnull;
|
||||
}
|
||||
mImage = nsnull;
|
||||
|
@ -162,7 +162,7 @@ nsresult nsBMPDecoder::SetData()
|
|||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsRect r(0, line, mBIH.width, 1);
|
||||
rv = mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
rv = mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
|
@ -202,7 +202,7 @@ nsresult nsBMPDecoder::WriteRLERows(PRUint32 rows)
|
|||
|
||||
line = (mBIH.height < 0) ? (-mBIH.height - mCurLine - rows) : mCurLine;
|
||||
nsRect r(0, line, mBIH.width, rows);
|
||||
return mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
return mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
}
|
||||
|
||||
static void calcBitmask(PRUint32 aMask, PRUint8& aBegin, PRUint8& aLength)
|
||||
|
@ -257,7 +257,7 @@ NS_METHOD nsBMPDecoder::ProcessData(const char* aBuffer, PRUint32 aCount)
|
|||
aBuffer += toCopy;
|
||||
}
|
||||
if (mPos == 18) {
|
||||
rv = mObserver->OnStartDecode(nsnull, nsnull);
|
||||
rv = mObserver->OnStartDecode(nsnull);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
ProcessFileHeader();
|
||||
if (mBFH.signature[0] != 'B' || mBFH.signature[1] != 'M')
|
||||
|
@ -314,7 +314,7 @@ NS_METHOD nsBMPDecoder::ProcessData(const char* aBuffer, PRUint32 aCount)
|
|||
PRUint32 real_height = (mBIH.height > 0) ? mBIH.height : -mBIH.height;
|
||||
rv = mImage->Init(mBIH.width, real_height, mObserver);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mObserver->OnStartContainer(nsnull, nsnull, mImage);
|
||||
rv = mObserver->OnStartContainer(nsnull, mImage);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mCurLine = real_height;
|
||||
|
||||
|
@ -333,7 +333,7 @@ NS_METHOD nsBMPDecoder::ProcessData(const char* aBuffer, PRUint32 aCount)
|
|||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mImage->AppendFrame(mFrame);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mObserver->OnStartFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStartFrame(nsnull, mFrame);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
PRUint8 bpc; // bytes per color
|
||||
|
@ -469,7 +469,7 @@ NS_METHOD nsBMPDecoder::ProcessData(const char* aBuffer, PRUint32 aCount)
|
|||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (mCurLine == 0) { // Finished last line
|
||||
return mObserver->OnStopFrame(nsnull, nsnull, mFrame);
|
||||
return mObserver->OnStopFrame(nsnull, mFrame);
|
||||
}
|
||||
mRowBytes = 0;
|
||||
|
||||
|
@ -649,7 +649,7 @@ NS_METHOD nsBMPDecoder::ProcessData(const char* aBuffer, PRUint32 aCount)
|
|||
// Because of the use of the continue statement
|
||||
// we only get here for eol, eof or y delta
|
||||
if (mCurLine == 0) { // Finished last line
|
||||
return mObserver->OnStopFrame(nsnull, nsnull, mFrame);
|
||||
return mObserver->OnStopFrame(nsnull, mFrame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ nsresult nsICODecoder::SetImageData()
|
|||
nsRect r(0, 0, 0, 0);
|
||||
mFrame->GetWidth(&r.width);
|
||||
mFrame->GetHeight(&r.height);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -150,8 +150,8 @@ NS_IMETHODIMP nsICODecoder::Init(imgILoad *aLoad)
|
|||
|
||||
NS_IMETHODIMP nsICODecoder::Close()
|
||||
{
|
||||
mObserver->OnStopContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
mObserver->OnStopContainer(nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
mObserver = nsnull;
|
||||
|
||||
mImage = nsnull;
|
||||
|
@ -185,7 +185,7 @@ NS_IMETHODIMP nsICODecoder::Flush()
|
|||
if (mDecodingAndMask) {
|
||||
SetAlphaData();
|
||||
SetImageData();
|
||||
mObserver->OnStopFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStopFrame(nsnull, mFrame);
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ nsresult nsICODecoder::ProcessData(const char* aBuffer, PRUint32 aCount) {
|
|||
|
||||
nsresult rv = mImage->Init(mDirEntry.mWidth, mDirEntry.mHeight, mObserver);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mObserver->OnStartContainer(nsnull, nsnull, mImage);
|
||||
rv = mObserver->OnStartContainer(nsnull, mImage);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
mCurLine = mDirEntry.mHeight;
|
||||
|
@ -307,7 +307,7 @@ nsresult nsICODecoder::ProcessData(const char* aBuffer, PRUint32 aCount) {
|
|||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = mImage->AppendFrame(mFrame);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
mObserver->OnStartFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStartFrame(nsnull, mFrame);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
|
|
|
@ -307,7 +307,7 @@ NS_IMETHODIMP imgContainerGIF::ResetAnimation()
|
|||
if (observer) {
|
||||
nsCOMPtr<gfxIImageFrame> firstFrame;
|
||||
inlinedGetFrameAt(0, getter_AddRefs(firstFrame));
|
||||
observer->FrameChanged(this, nsnull, firstFrame, &mFirstFrameRefreshArea);
|
||||
observer->FrameChanged(this, firstFrame, &mFirstFrameRefreshArea);
|
||||
}
|
||||
|
||||
if (oldAnimating)
|
||||
|
@ -442,7 +442,7 @@ NS_IMETHODIMP imgContainerGIF::Notify(nsITimer *timer)
|
|||
// Set mCurrentAnimationFrameIndex at the last possible moment
|
||||
mCurrentAnimationFrameIndex = nextFrameIndex;
|
||||
// Refreshes the screen
|
||||
observer->FrameChanged(this, nsnull, frameToUse, &dirtyRect);
|
||||
observer->FrameChanged(this, frameToUse, &dirtyRect);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
|
@ -158,23 +158,23 @@ nsGIFDecoder2::FlushImageData()
|
|||
if (remainingRows) {
|
||||
nsRect r(0, frameRect.y + mLastFlushedRow + 1,
|
||||
imgWidth, remainingRows);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mImageFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mImageFrame, &r);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 1: { // one pass on - need to handle bottom & top rects
|
||||
nsRect r(0, frameRect.y, imgWidth, mCurrentRow + 1);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mImageFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mImageFrame, &r);
|
||||
nsRect r2(0, frameRect.y + mLastFlushedRow + 1,
|
||||
imgWidth, frameRect.height - mLastFlushedRow - 1);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mImageFrame, &r2);
|
||||
mObserver->OnDataAvailable(nsnull, mImageFrame, &r2);
|
||||
}
|
||||
break;
|
||||
|
||||
default: { // more than one pass on - push the whole frame
|
||||
nsRect r(0, frameRect.y, imgWidth, frameRect.height);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mImageFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mImageFrame, &r);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -236,12 +236,12 @@ int nsGIFDecoder2::BeginGIF(
|
|||
decoder->mBackgroundRGBIndex = aBackgroundRGBIndex;
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartDecode(nsnull, nsnull);
|
||||
decoder->mObserver->OnStartDecode(nsnull);
|
||||
|
||||
decoder->mImageContainer->Init(aLogicalScreenWidth, aLogicalScreenHeight, decoder->mObserver);
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartContainer(nsnull, nsnull, decoder->mImageContainer);
|
||||
decoder->mObserver->OnStartContainer(nsnull, decoder->mImageContainer);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -253,8 +253,8 @@ int nsGIFDecoder2::EndGIF(
|
|||
{
|
||||
nsGIFDecoder2 *decoder = NS_STATIC_CAST(nsGIFDecoder2*, aClientData);
|
||||
if (decoder->mObserver) {
|
||||
decoder->mObserver->OnStopContainer(nsnull, nsnull, decoder->mImageContainer);
|
||||
decoder->mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
decoder->mObserver->OnStopContainer(nsnull, decoder->mImageContainer);
|
||||
decoder->mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
}
|
||||
|
||||
decoder->mImageContainer->SetLoopCount(aAnimationLoopCount);
|
||||
|
@ -287,7 +287,7 @@ int nsGIFDecoder2::BeginImageFrame(
|
|||
decoder->mImageContainer->GetWidth(&imgWidth);
|
||||
if (aFrameYOffset > 0) {
|
||||
nsRect r(0, 0, imgWidth, aFrameYOffset);
|
||||
decoder->mObserver->OnDataAvailable(nsnull, nsnull, decoder->mImageFrame, &r);
|
||||
decoder->mObserver->OnDataAvailable(nsnull, decoder->mImageFrame, &r);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -335,14 +335,14 @@ int nsGIFDecoder2::EndImageFrame(
|
|||
decoder->mImageContainer->GetWidth(&imgWidth);
|
||||
|
||||
nsRect r(0, realFrameHeight, imgWidth, imgHeight - realFrameHeight);
|
||||
decoder->mObserver->OnDataAvailable(nsnull, nsnull, decoder->mImageFrame, &r);
|
||||
decoder->mObserver->OnDataAvailable(nsnull, decoder->mImageFrame, &r);
|
||||
}
|
||||
}
|
||||
|
||||
decoder->mCurrentRow = decoder->mLastFlushedRow = -1;
|
||||
decoder->mCurrentPass = decoder->mLastFlushedPass = 0;
|
||||
|
||||
decoder->mObserver->OnStopFrame(nsnull, nsnull, decoder->mImageFrame);
|
||||
decoder->mObserver->OnStopFrame(nsnull, decoder->mImageFrame);
|
||||
}
|
||||
|
||||
decoder->mImageFrame = nsnull;
|
||||
|
@ -391,7 +391,7 @@ int nsGIFDecoder2::HaveDecodedRow(
|
|||
decoder->mImageContainer->AppendFrame(decoder->mImageFrame);
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartFrame(nsnull, nsnull, decoder->mImageFrame);
|
||||
decoder->mObserver->OnStartFrame(nsnull, decoder->mImageFrame);
|
||||
|
||||
decoder->mImageFrame->GetImageBytesPerRow(&bpr);
|
||||
decoder->mImageFrame->GetAlphaBytesPerRow(&abpr);
|
||||
|
|
|
@ -67,9 +67,9 @@ NS_IMETHODIMP nsIconDecoder::Close()
|
|||
{
|
||||
if (mObserver)
|
||||
{
|
||||
mObserver->OnStopFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStopContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
mObserver->OnStopFrame(nsnull, mFrame);
|
||||
mObserver->OnStopContainer(nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -97,7 +97,7 @@ NS_IMETHODIMP nsIconDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PR
|
|||
|
||||
// since WriteFrom is only called once, go ahead and fire the on start notifications..
|
||||
|
||||
mObserver->OnStartDecode(nsnull, nsnull);
|
||||
mObserver->OnStartDecode(nsnull);
|
||||
PRUint32 i = 0;
|
||||
// Read size
|
||||
PRInt32 w, h;
|
||||
|
@ -110,7 +110,7 @@ NS_IMETHODIMP nsIconDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PR
|
|||
|
||||
mImage->Init(w, h, mObserver);
|
||||
if (mObserver)
|
||||
mObserver->OnStartContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStartContainer(nsnull, mImage);
|
||||
|
||||
rv = mFrame->Init(0, 0, w, h, gfxIFormats::RGB_A1, 24);
|
||||
if (NS_FAILED(rv))
|
||||
|
@ -118,7 +118,7 @@ NS_IMETHODIMP nsIconDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PR
|
|||
|
||||
mImage->AppendFrame(mFrame);
|
||||
if (mObserver)
|
||||
mObserver->OnStartFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStartFrame(nsnull, mFrame);
|
||||
|
||||
PRUint32 bpr, abpr;
|
||||
nscoord width, height;
|
||||
|
@ -138,7 +138,7 @@ NS_IMETHODIMP nsIconDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PR
|
|||
mFrame->SetImageData(line, bpr, (rownum++)*bpr);
|
||||
|
||||
nsRect r(0, rownum, width, 1);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
|
||||
wroteLen += bpr ;
|
||||
i++;
|
||||
|
|
|
@ -247,7 +247,7 @@ NS_IMETHODIMP nsJPEGDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PR
|
|||
/* Used to set up image size so arrays can be allocated */
|
||||
jpeg_calc_output_dimensions(&mInfo);
|
||||
|
||||
mObserver->OnStartDecode(nsnull, nsnull);
|
||||
mObserver->OnStartDecode(nsnull);
|
||||
|
||||
/* we only support jpegs with 1 or 3 components currently. */
|
||||
if (mInfo.output_components != 1 &&
|
||||
|
@ -281,7 +281,7 @@ NS_IMETHODIMP nsJPEGDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PR
|
|||
mImage->Init(mInfo.image_width, mInfo.image_height, mObserver);
|
||||
}
|
||||
|
||||
mObserver->OnStartContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStartContainer(nsnull, mImage);
|
||||
|
||||
mImage->GetFrameAt(0, getter_AddRefs(mFrame));
|
||||
|
||||
|
@ -320,7 +320,7 @@ NS_IMETHODIMP nsJPEGDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PR
|
|||
mImage->AppendFrame(mFrame);
|
||||
}
|
||||
|
||||
mObserver->OnStartFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStartFrame(nsnull, mFrame);
|
||||
|
||||
/*
|
||||
* Make a one-row-high sample array that will go away
|
||||
|
@ -577,7 +577,7 @@ nsJPEGDecoder::OutputScanlines()
|
|||
|
||||
if (top != mInfo.output_scanline) {
|
||||
nsRect r(0, top, mInfo.output_width, mInfo.output_scanline-top);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
}
|
||||
|
||||
return rv;
|
||||
|
@ -822,9 +822,9 @@ term_source (j_decompress_ptr jd)
|
|||
decoder_source_mgr *src = (decoder_source_mgr *)jd->src;
|
||||
|
||||
if (src->decoder->mObserver) {
|
||||
src->decoder->mObserver->OnStopFrame(nsnull, nsnull, src->decoder->mFrame);
|
||||
src->decoder->mObserver->OnStopContainer(nsnull, nsnull, src->decoder->mImage);
|
||||
src->decoder->mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
src->decoder->mObserver->OnStopFrame(nsnull, src->decoder->mFrame);
|
||||
src->decoder->mObserver->OnStopContainer(nsnull, src->decoder->mImage);
|
||||
src->decoder->mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
}
|
||||
|
||||
PRBool isMutable = PR_FALSE;
|
||||
|
|
|
@ -326,7 +326,7 @@ il_mng_processheader(mng_handle handle, mng_uint32 width, mng_uint32 height)
|
|||
nsMNGDecoder* decoder = container->mDecoder;
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartDecode(nsnull, nsnull);
|
||||
decoder->mObserver->OnStartDecode(nsnull);
|
||||
|
||||
if(decoder->mImageContainer)
|
||||
decoder->mImageContainer->Init(width,
|
||||
|
@ -335,7 +335,6 @@ il_mng_processheader(mng_handle handle, mng_uint32 width, mng_uint32 height)
|
|||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartContainer(nsnull,
|
||||
nsnull,
|
||||
decoder->mImageContainer);
|
||||
|
||||
// initalize the frame and append it to the container
|
||||
|
@ -349,7 +348,7 @@ il_mng_processheader(mng_handle handle, mng_uint32 width, mng_uint32 height)
|
|||
decoder->mImageContainer->AppendFrame(decoder->mImageFrame);
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartFrame(nsnull, nsnull, decoder->mImageFrame);
|
||||
decoder->mObserver->OnStartFrame(nsnull, decoder->mImageFrame);
|
||||
|
||||
container->mFrame->GetImageBytesPerRow(&container->mByteWidth);
|
||||
container->mFrame->GetAlphaBytesPerRow(&container->mByteWidthAlpha);
|
||||
|
@ -444,7 +443,7 @@ il_mng_refresh(mng_handle handle,
|
|||
nsCOMPtr<imgIDecoderObserver>
|
||||
ob(do_QueryReferent(container->mObserver));
|
||||
if (ob)
|
||||
ob->OnDataAvailable(nsnull, nsnull, container->mFrame, &r);
|
||||
ob->OnDataAvailable(nsnull, container->mFrame, &r);
|
||||
|
||||
nsCOMPtr<imgIContainerObserver>
|
||||
observer(do_QueryReferent(container->mObserver));
|
||||
|
@ -454,7 +453,7 @@ il_mng_refresh(mng_handle handle,
|
|||
container->mFrame->GetRect(dirtyRect);
|
||||
|
||||
// do notification to FE to draw this frame
|
||||
observer->FrameChanged(container, nsnull, container->mFrame, &dirtyRect);
|
||||
observer->FrameChanged(container, container->mFrame, &dirtyRect);
|
||||
}
|
||||
|
||||
return MNG_TRUE;
|
||||
|
|
|
@ -253,7 +253,7 @@ info_callback(png_structp png_ptr, png_infop info_ptr)
|
|||
nsPNGDecoder *decoder = NS_STATIC_CAST(nsPNGDecoder*, png_get_progressive_ptr(png_ptr));
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartDecode(nsnull, nsnull);
|
||||
decoder->mObserver->OnStartDecode(nsnull);
|
||||
|
||||
decoder->mImage = do_CreateInstance("@mozilla.org/image/container;1");
|
||||
if (!decoder->mImage)
|
||||
|
@ -265,7 +265,7 @@ info_callback(png_structp png_ptr, png_infop info_ptr)
|
|||
decoder->mImage->Init(width, height, decoder->mObserver);
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartContainer(nsnull, nsnull, decoder->mImage);
|
||||
decoder->mObserver->OnStartContainer(nsnull, decoder->mImage);
|
||||
|
||||
decoder->mFrame = do_CreateInstance("@mozilla.org/gfx/image/frame;2");
|
||||
if (!decoder->mFrame)
|
||||
|
@ -296,7 +296,7 @@ info_callback(png_structp png_ptr, png_infop info_ptr)
|
|||
decoder->mImage->AppendFrame(decoder->mFrame);
|
||||
|
||||
if (decoder->mObserver)
|
||||
decoder->mObserver->OnStartFrame(nsnull, nsnull, decoder->mFrame);
|
||||
decoder->mObserver->OnStartFrame(nsnull, decoder->mFrame);
|
||||
|
||||
PRUint32 bpr, abpr;
|
||||
decoder->mFrame->GetImageBytesPerRow(&bpr);
|
||||
|
@ -467,7 +467,7 @@ row_callback(png_structp png_ptr, png_bytep new_row,
|
|||
}
|
||||
|
||||
nsRect r(0, row_num, width, 1);
|
||||
decoder->mObserver->OnDataAvailable(nsnull, nsnull, decoder->mFrame, &r);
|
||||
decoder->mObserver->OnDataAvailable(nsnull, decoder->mFrame, &r);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -491,9 +491,9 @@ end_callback(png_structp png_ptr, png_infop info_ptr)
|
|||
nsPNGDecoder *decoder = NS_STATIC_CAST(nsPNGDecoder*, png_get_progressive_ptr(png_ptr));
|
||||
|
||||
if (decoder->mObserver) {
|
||||
decoder->mObserver->OnStopFrame(nsnull, nsnull, decoder->mFrame);
|
||||
decoder->mObserver->OnStopContainer(nsnull, nsnull, decoder->mImage);
|
||||
decoder->mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
decoder->mObserver->OnStopFrame(nsnull, decoder->mFrame);
|
||||
decoder->mObserver->OnStopContainer(nsnull, decoder->mImage);
|
||||
decoder->mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
}
|
||||
|
||||
// We are never going to change the data of this frame again. Let the OS
|
||||
|
|
|
@ -131,9 +131,9 @@ NS_IMETHODIMP nsPPMDecoder::Init(imgILoad *aLoad)
|
|||
NS_IMETHODIMP nsPPMDecoder::Close()
|
||||
{
|
||||
if (mObserver) {
|
||||
mObserver->OnStopFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStopContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
mObserver->OnStopFrame(nsnull, mFrame);
|
||||
mObserver->OnStopContainer(nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
|
@ -167,7 +167,7 @@ NS_IMETHODIMP nsPPMDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PRU
|
|||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
if (mState == F_P && mObserver)
|
||||
mObserver->OnStartDecode(nsnull, nsnull);
|
||||
mObserver->OnStartDecode(nsnull);
|
||||
|
||||
char *p = mBuffer;
|
||||
char *bufferEnd = mBuffer+readLen;
|
||||
|
@ -256,11 +256,11 @@ NS_IMETHODIMP nsPPMDecoder::WriteFrom(nsIInputStream *inStr, PRUint32 count, PRU
|
|||
case F_INITIALIZE:
|
||||
mImage->Init(mWidth, mHeight, mObserver);
|
||||
if (mObserver)
|
||||
mObserver->OnStartContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStartContainer(nsnull, mImage);
|
||||
mFrame->Init(0, 0, mWidth, mHeight, gfxIFormats::RGB, 24);
|
||||
mImage->AppendFrame(mFrame);
|
||||
if (mObserver)
|
||||
mObserver->OnStartFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStartFrame(nsnull, mFrame);
|
||||
mRow = 0;
|
||||
mBytesPerRow = 3*mWidth;
|
||||
mFrame->GetImageBytesPerRow(&mFrameBytesPerRow);
|
||||
|
@ -380,7 +380,7 @@ NS_METHOD nsPPMDecoder::checkSendRow()
|
|||
if (NS_FAILED(rv)) return rv;
|
||||
nsRect r(0, mRow, mWidth, 1);
|
||||
if (mObserver)
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
mRow++;
|
||||
mRowDataFill = 0;
|
||||
}
|
||||
|
|
|
@ -97,8 +97,8 @@ NS_IMETHODIMP nsXBMDecoder::Init(imgILoad *aLoad)
|
|||
|
||||
NS_IMETHODIMP nsXBMDecoder::Close()
|
||||
{
|
||||
mObserver->OnStopContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, nsnull, NS_OK, nsnull);
|
||||
mObserver->OnStopContainer(nsnull, mImage);
|
||||
mObserver->OnStopDecode(nsnull, NS_OK, nsnull);
|
||||
mObserver = nsnull;
|
||||
mImage = nsnull;
|
||||
mFrame = nsnull;
|
||||
|
@ -159,14 +159,14 @@ nsresult nsXBMDecoder::ProcessData(const char* aData, PRUint32 aCount) {
|
|||
return NS_OK;
|
||||
|
||||
mImage->Init(mWidth, mHeight, mObserver);
|
||||
mObserver->OnStartContainer(nsnull, nsnull, mImage);
|
||||
mObserver->OnStartContainer(nsnull, mImage);
|
||||
|
||||
nsresult rv = mFrame->Init(0, 0, mWidth, mHeight, GFXFORMAT, 24);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
mImage->AppendFrame(mFrame);
|
||||
mObserver->OnStartFrame(nsnull, nsnull, mFrame);
|
||||
mObserver->OnStartFrame(nsnull, mFrame);
|
||||
|
||||
PRUint32 bpr;
|
||||
mFrame->GetImageBytesPerRow(&bpr);
|
||||
|
@ -226,11 +226,11 @@ nsresult nsXBMDecoder::ProcessData(const char* aData, PRUint32 aCount) {
|
|||
mFrame->SetAlphaData(mAlphaRow, abpr, mCurRow * abpr);
|
||||
mFrame->SetImageData(mRow, bpr, mCurRow * bpr);
|
||||
nsRect r(0, (mCurRow + 1), mWidth, 1);
|
||||
mObserver->OnDataAvailable(nsnull, nsnull, mFrame, &r);
|
||||
mObserver->OnDataAvailable(nsnull, mFrame, &r);
|
||||
|
||||
if ((mCurRow + 1) == mHeight) {
|
||||
mState = RECV_DONE;
|
||||
return mObserver->OnStopFrame(nsnull, nsnull, mFrame);
|
||||
return mObserver->OnStopFrame(nsnull, mFrame);
|
||||
}
|
||||
mCurRow++;
|
||||
mCurCol = 0;
|
||||
|
|
|
@ -41,6 +41,7 @@ interface gfxIImageFrame;
|
|||
[uuid(153f1518-1dd2-11b2-b9cd-b16eb63e0471)]
|
||||
interface imgIContainerObserver : nsISupports
|
||||
{
|
||||
[noscript] void frameChanged(in imgIContainer aContainer, in nsISupports aCX,
|
||||
in gfxIImageFrame aFrame, in nsRect aDirtyRect);
|
||||
[noscript] void frameChanged(in imgIContainer aContainer,
|
||||
in gfxIImageFrame aFrame,
|
||||
in nsRect aDirtyRect);
|
||||
};
|
||||
|
|
|
@ -44,37 +44,37 @@ interface imgIDecoderObserver : imgIContainerObserver
|
|||
/**
|
||||
* called as soon as the image begins getting decoded
|
||||
*/
|
||||
void onStartDecode(in imgIRequest aRequest, in nsISupports cx);
|
||||
void onStartDecode(in imgIRequest aRequest);
|
||||
|
||||
/**
|
||||
* called once the image has been inited and therefore has a width and height
|
||||
*/
|
||||
void onStartContainer(in imgIRequest aRequest, in nsISupports cx, in imgIContainer aContainer);
|
||||
void onStartContainer(in imgIRequest aRequest, in imgIContainer aContainer);
|
||||
|
||||
/**
|
||||
* called when each frame is created
|
||||
*/
|
||||
void onStartFrame(in imgIRequest aRequest, in nsISupports cx, in gfxIImageFrame aFrame);
|
||||
void onStartFrame(in imgIRequest aRequest, in gfxIImageFrame aFrame);
|
||||
|
||||
/**
|
||||
* called when some part of the frame has new data in it
|
||||
*/
|
||||
[noscript] void onDataAvailable(in imgIRequest aRequest, in nsISupports cx, in gfxIImageFrame aFrame, [const] in nsRect aRect);
|
||||
[noscript] void onDataAvailable(in imgIRequest aRequest, in gfxIImageFrame aFrame, [const] in nsRect aRect);
|
||||
|
||||
/**
|
||||
* called when a frame is finished decoding
|
||||
*/
|
||||
void onStopFrame(in imgIRequest aRequest, in nsISupports cx, in gfxIImageFrame aFrame);
|
||||
void onStopFrame(in imgIRequest aRequest, in gfxIImageFrame aFrame);
|
||||
|
||||
/**
|
||||
* probably not needed. called right before onStopDecode
|
||||
*/
|
||||
void onStopContainer(in imgIRequest aRequest, in nsISupports cx, in imgIContainer aContainer);
|
||||
void onStopContainer(in imgIRequest aRequest, in imgIContainer aContainer);
|
||||
|
||||
/**
|
||||
* called when the decoder is dying off
|
||||
*/
|
||||
void onStopDecode(in imgIRequest aRequest, in nsISupports cx,
|
||||
in nsresult status, in wstring statusArg);
|
||||
void onStopDecode(in imgIRequest aRequest, in nsresult status,
|
||||
in wstring statusArg);
|
||||
|
||||
};
|
||||
|
|
|
@ -376,7 +376,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
|||
// gets a 304 or figures out that this needs to be a new request
|
||||
|
||||
if (request->mValidator) {
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver, aCX,
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver,
|
||||
requestFlags, aRequest, _retval);
|
||||
|
||||
if (*_retval)
|
||||
|
@ -408,7 +408,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
|||
newChannel->SetLoadFlags(loadFlags | nsICachingChannel::LOAD_ONLY_IF_MODIFIED);
|
||||
|
||||
}
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver, aCX,
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver,
|
||||
requestFlags, aRequest, _retval);
|
||||
|
||||
imgCacheValidator *hvc = new imgCacheValidator(request, aCX);
|
||||
|
@ -484,7 +484,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
|||
LOG_MSG(gImgLog, "imgLoader::LoadImage", "async open failed.");
|
||||
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver,
|
||||
aCX, requestFlags, aRequest, _retval);
|
||||
requestFlags, aRequest, _retval);
|
||||
request->NotifyProxyListener(NS_STATIC_CAST(imgRequestProxy*, *_retval));
|
||||
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
|
@ -509,7 +509,7 @@ NS_IMETHODIMP imgLoader::LoadImage(nsIURI *aURI,
|
|||
|
||||
LOG_MSG(gImgLog, "imgLoader::LoadImage", "creating proxy request.");
|
||||
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver, aCX,
|
||||
rv = CreateNewProxyForRequest(request, aLoadGroup, aObserver,
|
||||
requestFlags, aRequest, _retval);
|
||||
|
||||
if (!bValidateRequest) // if we have to validate the request, then we will send the notifications later.
|
||||
|
@ -618,7 +618,7 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
|
|||
requestFlags &= 0xFFFF;
|
||||
|
||||
rv = CreateNewProxyForRequest(request, loadGroup, aObserver,
|
||||
aCX, requestFlags, nsnull, _retval);
|
||||
requestFlags, nsnull, _retval);
|
||||
request->NotifyProxyListener(NS_STATIC_CAST(imgRequestProxy*, *_retval));
|
||||
|
||||
NS_RELEASE(request);
|
||||
|
@ -629,7 +629,7 @@ NS_IMETHODIMP imgLoader::LoadImageWithChannel(nsIChannel *channel, imgIDecoderOb
|
|||
|
||||
nsresult
|
||||
imgLoader::CreateNewProxyForRequest(imgRequest *aRequest, nsILoadGroup *aLoadGroup,
|
||||
imgIDecoderObserver *aObserver, nsISupports *cx,
|
||||
imgIDecoderObserver *aObserver,
|
||||
nsLoadFlags aLoadFlags, imgIRequest *aProxyRequest,
|
||||
imgIRequest **_retval)
|
||||
{
|
||||
|
@ -655,7 +655,7 @@ imgLoader::CreateNewProxyForRequest(imgRequest *aRequest, nsILoadGroup *aLoadGro
|
|||
proxyRequest->SetLoadFlags(aLoadFlags);
|
||||
|
||||
// init adds itself to imgRequest's list of observers
|
||||
nsresult rv = proxyRequest->Init(aRequest, aLoadGroup, aObserver, cx);
|
||||
nsresult rv = proxyRequest->Init(aRequest, aLoadGroup, aObserver);
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_RELEASE(proxyRequest);
|
||||
return rv;
|
||||
|
|
|
@ -54,7 +54,7 @@ public:
|
|||
|
||||
private:
|
||||
nsresult CreateNewProxyForRequest(imgRequest *aRequest, nsILoadGroup *aLoadGroup,
|
||||
imgIDecoderObserver *aObserver, nsISupports *cx,
|
||||
imgIDecoderObserver *aObserver,
|
||||
nsLoadFlags aLoadFlags, imgIRequest *aRequestProxy,
|
||||
imgIRequest **_retval);
|
||||
};
|
||||
|
|
|
@ -322,8 +322,10 @@ NS_IMETHODIMP imgRequest::GetIsMultiPartChannel(PRBool *aIsMultiPartChannel)
|
|||
|
||||
/** imgIContainerObserver methods **/
|
||||
|
||||
/* [noscript] void frameChanged (in imgIContainer container, in nsISupports cx, in gfxIImageFrame newframe, in nsRect dirtyRect); */
|
||||
NS_IMETHODIMP imgRequest::FrameChanged(imgIContainer *container, nsISupports *cx, gfxIImageFrame *newframe, nsRect * dirtyRect)
|
||||
/* [noscript] void frameChanged (in imgIContainer container, in gfxIImageFrame newframe, in nsRect dirtyRect); */
|
||||
NS_IMETHODIMP imgRequest::FrameChanged(imgIContainer *container,
|
||||
gfxIImageFrame *newframe,
|
||||
nsRect * dirtyRect)
|
||||
{
|
||||
LOG_SCOPE(gImgLog, "imgRequest::FrameChanged");
|
||||
|
||||
|
@ -343,8 +345,8 @@ NS_IMETHODIMP imgRequest::FrameChanged(imgIContainer *container, nsISupports *cx
|
|||
|
||||
/** imgIDecoderObserver methods **/
|
||||
|
||||
/* void onStartDecode (in imgIRequest request, in nsISupports cx); */
|
||||
NS_IMETHODIMP imgRequest::OnStartDecode(imgIRequest *request, nsISupports *cx)
|
||||
/* void onStartDecode (in imgIRequest request); */
|
||||
NS_IMETHODIMP imgRequest::OnStartDecode(imgIRequest *request)
|
||||
{
|
||||
LOG_SCOPE(gImgLog, "imgRequest::OnStartDecode");
|
||||
|
||||
|
@ -372,8 +374,8 @@ NS_IMETHODIMP imgRequest::OnStartDecode(imgIRequest *request, nsISupports *cx)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onStartContainer (in imgIRequest request, in nsISupports cx, in imgIContainer image); */
|
||||
NS_IMETHODIMP imgRequest::OnStartContainer(imgIRequest *request, nsISupports *cx, imgIContainer *image)
|
||||
/* void onStartContainer (in imgIRequest request, in imgIContainer image); */
|
||||
NS_IMETHODIMP imgRequest::OnStartContainer(imgIRequest *request, imgIContainer *image)
|
||||
{
|
||||
LOG_SCOPE(gImgLog, "imgRequest::OnStartContainer");
|
||||
|
||||
|
@ -399,8 +401,9 @@ NS_IMETHODIMP imgRequest::OnStartContainer(imgIRequest *request, nsISupports *cx
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onStartFrame (in imgIRequest request, in nsISupports cx, in gfxIImageFrame frame); */
|
||||
NS_IMETHODIMP imgRequest::OnStartFrame(imgIRequest *request, nsISupports *cx, gfxIImageFrame *frame)
|
||||
/* void onStartFrame (in imgIRequest request, in gfxIImageFrame frame); */
|
||||
NS_IMETHODIMP imgRequest::OnStartFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
LOG_SCOPE(gImgLog, "imgRequest::OnStartFrame");
|
||||
|
||||
|
@ -418,8 +421,10 @@ NS_IMETHODIMP imgRequest::OnStartFrame(imgIRequest *request, nsISupports *cx, gf
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* [noscript] void onDataAvailable (in imgIRequest request, in nsISupports cx, in gfxIImageFrame frame, [const] in nsRect rect); */
|
||||
NS_IMETHODIMP imgRequest::OnDataAvailable(imgIRequest *request, nsISupports *cx, gfxIImageFrame *frame, const nsRect * rect)
|
||||
/* [noscript] void onDataAvailable (in imgIRequest request, in gfxIImageFrame frame, [const] in nsRect rect); */
|
||||
NS_IMETHODIMP imgRequest::OnDataAvailable(imgIRequest *request,
|
||||
gfxIImageFrame *frame,
|
||||
const nsRect * rect)
|
||||
{
|
||||
LOG_SCOPE(gImgLog, "imgRequest::OnDataAvailable");
|
||||
|
||||
|
@ -437,8 +442,9 @@ NS_IMETHODIMP imgRequest::OnDataAvailable(imgIRequest *request, nsISupports *cx,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onStopFrame (in imgIRequest request, in nsISupports cx, in gfxIImageFrame frame); */
|
||||
NS_IMETHODIMP imgRequest::OnStopFrame(imgIRequest *request, nsISupports *cx, gfxIImageFrame *frame)
|
||||
/* void onStopFrame (in imgIRequest request, in gfxIImageFrame frame); */
|
||||
NS_IMETHODIMP imgRequest::OnStopFrame(imgIRequest *request,
|
||||
gfxIImageFrame *frame)
|
||||
{
|
||||
NS_ASSERTION(frame, "imgRequest::OnStopFrame called with NULL frame");
|
||||
if (!frame) return NS_ERROR_UNEXPECTED;
|
||||
|
@ -475,8 +481,9 @@ NS_IMETHODIMP imgRequest::OnStopFrame(imgIRequest *request, nsISupports *cx, gfx
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onStopContainer (in imgIRequest request, in nsISupports cx, in imgIContainer image); */
|
||||
NS_IMETHODIMP imgRequest::OnStopContainer(imgIRequest *request, nsISupports *cx, imgIContainer *image)
|
||||
/* void onStopContainer (in imgIRequest request, in imgIContainer image); */
|
||||
NS_IMETHODIMP imgRequest::OnStopContainer(imgIRequest *request,
|
||||
imgIContainer *image)
|
||||
{
|
||||
LOG_SCOPE(gImgLog, "imgRequest::OnStopContainer");
|
||||
|
||||
|
@ -496,8 +503,10 @@ NS_IMETHODIMP imgRequest::OnStopContainer(imgIRequest *request, nsISupports *cx,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
/* void onStopDecode (in imgIRequest request, in nsISupports cx, in nsresult status, in wstring statusArg); */
|
||||
NS_IMETHODIMP imgRequest::OnStopDecode(imgIRequest *aRequest, nsISupports *aCX, nsresult aStatus, const PRUnichar *aStatusArg)
|
||||
/* void onStopDecode (in imgIRequest request, in nsresult status, in wstring statusArg); */
|
||||
NS_IMETHODIMP imgRequest::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg)
|
||||
{
|
||||
LOG_SCOPE(gImgLog, "imgRequest::OnStopDecode");
|
||||
|
||||
|
@ -671,7 +680,7 @@ NS_IMETHODIMP imgRequest::OnStopRequest(nsIRequest *aRequest, nsISupports *ctxt,
|
|||
// if there was an error loading the image, (mState & onStopDecode) won't be true.
|
||||
// Send an onStopDecode message
|
||||
if (!(mState & onStopDecode)) {
|
||||
this->OnStopDecode(nsnull, nsnull, status, nsnull);
|
||||
this->OnStopDecode(nsnull, status, nsnull);
|
||||
}
|
||||
|
||||
/* notify the kids */
|
||||
|
|
|
@ -85,7 +85,7 @@ imgRequestProxy::~imgRequestProxy()
|
|||
|
||||
|
||||
|
||||
nsresult imgRequestProxy::Init(imgRequest *request, nsILoadGroup *aLoadGroup, imgIDecoderObserver *aObserver, nsISupports *cx)
|
||||
nsresult imgRequestProxy::Init(imgRequest *request, nsILoadGroup *aLoadGroup, imgIDecoderObserver *aObserver)
|
||||
{
|
||||
NS_PRECONDITION(request, "no request");
|
||||
if (!request)
|
||||
|
@ -99,7 +99,6 @@ nsresult imgRequestProxy::Init(imgRequest *request, nsILoadGroup *aLoadGroup, im
|
|||
NS_ADDREF(mOwner);
|
||||
|
||||
mListener = aObserver;
|
||||
mContext = cx;
|
||||
|
||||
if (aLoadGroup) {
|
||||
//
|
||||
|
@ -110,7 +109,7 @@ nsresult imgRequestProxy::Init(imgRequest *request, nsILoadGroup *aLoadGroup, im
|
|||
PRUint32 imageStatus = mOwner->GetImageStatus();
|
||||
if (!(imageStatus & imgIRequest::STATUS_LOAD_COMPLETE) &&
|
||||
!(imageStatus & imgIRequest::STATUS_ERROR)) {
|
||||
aLoadGroup->AddRequest(this, cx);
|
||||
aLoadGroup->AddRequest(this, nsnull);
|
||||
mLoadGroup = aLoadGroup;
|
||||
mIsInLoadGroup = PR_TRUE;
|
||||
}
|
||||
|
@ -296,7 +295,7 @@ void imgRequestProxy::FrameChanged(imgIContainer *container, gfxIImageFrame *new
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::FrameChanged");
|
||||
|
||||
if (mListener)
|
||||
mListener->FrameChanged(container, mContext, newframe, dirtyRect);
|
||||
mListener->FrameChanged(container, newframe, dirtyRect);
|
||||
}
|
||||
|
||||
/** imgIDecoderObserver methods **/
|
||||
|
@ -306,7 +305,7 @@ void imgRequestProxy::OnStartDecode()
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::OnStartDecode");
|
||||
|
||||
if (mListener)
|
||||
mListener->OnStartDecode(this, mContext);
|
||||
mListener->OnStartDecode(this);
|
||||
}
|
||||
|
||||
void imgRequestProxy::OnStartContainer(imgIContainer *image)
|
||||
|
@ -314,7 +313,7 @@ void imgRequestProxy::OnStartContainer(imgIContainer *image)
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::OnStartContainer");
|
||||
|
||||
if (mListener)
|
||||
mListener->OnStartContainer(this, mContext, image);
|
||||
mListener->OnStartContainer(this, image);
|
||||
}
|
||||
|
||||
void imgRequestProxy::OnStartFrame(gfxIImageFrame *frame)
|
||||
|
@ -322,7 +321,7 @@ void imgRequestProxy::OnStartFrame(gfxIImageFrame *frame)
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::OnStartFrame");
|
||||
|
||||
if (mListener)
|
||||
mListener->OnStartFrame(this, mContext, frame);
|
||||
mListener->OnStartFrame(this, frame);
|
||||
}
|
||||
|
||||
void imgRequestProxy::OnDataAvailable(gfxIImageFrame *frame, const nsRect * rect)
|
||||
|
@ -330,7 +329,7 @@ void imgRequestProxy::OnDataAvailable(gfxIImageFrame *frame, const nsRect * rect
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::OnDataAvailable");
|
||||
|
||||
if (mListener)
|
||||
mListener->OnDataAvailable(this, mContext, frame, rect);
|
||||
mListener->OnDataAvailable(this, frame, rect);
|
||||
}
|
||||
|
||||
void imgRequestProxy::OnStopFrame(gfxIImageFrame *frame)
|
||||
|
@ -338,7 +337,7 @@ void imgRequestProxy::OnStopFrame(gfxIImageFrame *frame)
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::OnStopFrame");
|
||||
|
||||
if (mListener)
|
||||
mListener->OnStopFrame(this, mContext, frame);
|
||||
mListener->OnStopFrame(this, frame);
|
||||
}
|
||||
|
||||
void imgRequestProxy::OnStopContainer(imgIContainer *image)
|
||||
|
@ -346,7 +345,7 @@ void imgRequestProxy::OnStopContainer(imgIContainer *image)
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::OnStopContainer");
|
||||
|
||||
if (mListener)
|
||||
mListener->OnStopContainer(this, mContext, image);
|
||||
mListener->OnStopContainer(this, image);
|
||||
}
|
||||
|
||||
void imgRequestProxy::OnStopDecode(nsresult status, const PRUnichar *statusArg)
|
||||
|
@ -354,7 +353,7 @@ void imgRequestProxy::OnStopDecode(nsresult status, const PRUnichar *statusArg)
|
|||
LOG_FUNC(gImgLog, "imgRequestProxy::OnStopDecode");
|
||||
|
||||
if (mListener)
|
||||
mListener->OnStopDecode(this, mContext, status, statusArg);
|
||||
mListener->OnStopDecode(this, status, statusArg);
|
||||
}
|
||||
|
||||
|
||||
|
@ -368,7 +367,7 @@ void imgRequestProxy::OnStartRequest(nsIRequest *request, nsISupports *ctxt)
|
|||
#endif
|
||||
|
||||
if (!mIsInLoadGroup && mLoadGroup) {
|
||||
mLoadGroup->AddRequest(this, mContext);
|
||||
mLoadGroup->AddRequest(this, nsnull);
|
||||
mIsInLoadGroup = PR_TRUE;
|
||||
}
|
||||
|
||||
|
@ -393,7 +392,7 @@ void imgRequestProxy::OnStopRequest(nsIRequest *request, nsISupports *ctxt, nsre
|
|||
*/
|
||||
nsCOMPtr<imgIRequest> kungFuDeathGrip(this);
|
||||
|
||||
mLoadGroup->RemoveRequest(this, mContext, statusCode);
|
||||
mLoadGroup->RemoveRequest(this, nsnull, statusCode);
|
||||
mIsInLoadGroup = PR_FALSE;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ public:
|
|||
virtual ~imgRequestProxy();
|
||||
|
||||
/* additional members */
|
||||
nsresult Init(imgRequest *request, nsILoadGroup *aLoadGroup, imgIDecoderObserver *aObserver, nsISupports *cx);
|
||||
nsresult Init(imgRequest *request, nsILoadGroup *aLoadGroup, imgIDecoderObserver *aObserver);
|
||||
nsresult ChangeOwner(imgRequest *aNewOwner); // this will change mOwner. Do not call this if the previous
|
||||
// owner has already sent notifications out!
|
||||
|
||||
|
@ -83,7 +83,6 @@ private:
|
|||
imgRequest *mOwner;
|
||||
|
||||
nsCOMPtr<imgIDecoderObserver> mListener;
|
||||
nsCOMPtr<nsISupports> mContext;
|
||||
nsCOMPtr<nsILoadGroup> mLoadGroup;
|
||||
|
||||
nsLoadFlags mLoadFlags;
|
||||
|
|
Загрузка…
Ссылка в новой задаче