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:
bzbarsky%mit.edu 2003-02-26 05:51:32 +00:00
Родитель 0d10e3f17b
Коммит 792d30905e
33 изменённых файлов: 756 добавлений и 621 удалений

Просмотреть файл

@ -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;