mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-22 10:27:03 +00:00
Bug 592641 - Image document doesn't show dimensions of cached images.r=Neil,a=blocker
This commit is contained in:
parent
322a2ca6ef
commit
56fe0aff47
@ -90,7 +90,8 @@ public:
|
||||
ImageListener(nsImageDocument* aDocument);
|
||||
virtual ~ImageListener();
|
||||
|
||||
NS_DECL_NSIREQUESTOBSERVER
|
||||
/* nsIRequestObserver */
|
||||
NS_IMETHOD OnStartRequest(nsIRequest* request, nsISupports *ctxt);
|
||||
};
|
||||
|
||||
class nsImageDocument : public nsMediaDocument,
|
||||
@ -123,6 +124,7 @@ public:
|
||||
|
||||
// imgIDecoderObserver (override nsStubImageDecoderObserver)
|
||||
NS_IMETHOD OnStartContainer(imgIRequest* aRequest, imgIContainer* aImage);
|
||||
NS_IMETHOD OnStopDecode(imgIRequest *aRequest, nsresult aStatus, const PRUnichar *aStatusArg);
|
||||
|
||||
// nsIDOMEventListener
|
||||
NS_IMETHOD HandleEvent(nsIDOMEvent* aEvent);
|
||||
@ -237,43 +239,6 @@ ImageListener::OnStartRequest(nsIRequest* request, nsISupports *ctxt)
|
||||
return nsMediaDocumentStreamListener::OnStartRequest(request, ctxt);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
ImageListener::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
|
||||
nsresult status)
|
||||
{
|
||||
NS_ENSURE_TRUE(mDocument, NS_ERROR_FAILURE);
|
||||
nsImageDocument *imgDoc = (nsImageDocument*)mDocument.get();
|
||||
imgDoc->UpdateTitleAndCharset();
|
||||
|
||||
nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(imgDoc->mImageContent);
|
||||
if (imageLoader) {
|
||||
imgDoc->mObservingImageLoader = PR_FALSE;
|
||||
imageLoader->RemoveObserver(imgDoc);
|
||||
}
|
||||
|
||||
// |status| is NS_ERROR_PARSED_DATA_CACHED if the image was found in
|
||||
// the cache (bug 177747 comment 51, bug 475344).
|
||||
if (status == NS_ERROR_PARSED_DATA_CACHED) {
|
||||
status = NS_OK;
|
||||
}
|
||||
|
||||
// mImageContent can be null if the document is already destroyed
|
||||
if (NS_FAILED(status) && imgDoc->mStringBundle && imgDoc->mImageContent) {
|
||||
nsCAutoString src;
|
||||
imgDoc->mDocumentURI->GetSpec(src);
|
||||
NS_ConvertUTF8toUTF16 srcString(src);
|
||||
const PRUnichar* formatString[] = { srcString.get() };
|
||||
nsXPIDLString errorMsg;
|
||||
NS_NAMED_LITERAL_STRING(str, "InvalidImage");
|
||||
imgDoc->mStringBundle->FormatStringFromName(str.get(), formatString, 1,
|
||||
getter_Copies(errorMsg));
|
||||
|
||||
imgDoc->mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::alt, errorMsg, PR_FALSE);
|
||||
}
|
||||
|
||||
return nsMediaDocumentStreamListener::OnStopRequest(request, ctxt, status);
|
||||
}
|
||||
|
||||
|
||||
// NOTE! nsDocument::operator new() zeroes out all members, so don't
|
||||
// bother initializing members to 0.
|
||||
@ -580,6 +545,36 @@ nsImageDocument::OnStartContainer(imgIRequest* aRequest, imgIContainer* aImage)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::OnStopDecode(imgIRequest *aRequest,
|
||||
nsresult aStatus,
|
||||
const PRUnichar *aStatusArg)
|
||||
{
|
||||
UpdateTitleAndCharset();
|
||||
|
||||
nsCOMPtr<nsIImageLoadingContent> imageLoader = do_QueryInterface(mImageContent);
|
||||
if (imageLoader) {
|
||||
mObservingImageLoader = PR_FALSE;
|
||||
imageLoader->RemoveObserver(this);
|
||||
}
|
||||
|
||||
// mImageContent can be null if the document is already destroyed
|
||||
if (NS_FAILED(aStatus) && mStringBundle && mImageContent) {
|
||||
nsCAutoString src;
|
||||
mDocumentURI->GetSpec(src);
|
||||
NS_ConvertUTF8toUTF16 srcString(src);
|
||||
const PRUnichar* formatString[] = { srcString.get() };
|
||||
nsXPIDLString errorMsg;
|
||||
NS_NAMED_LITERAL_STRING(str, "InvalidImage");
|
||||
mStringBundle->FormatStringFromName(str.get(), formatString, 1,
|
||||
getter_Copies(errorMsg));
|
||||
|
||||
mImageContent->SetAttr(kNameSpaceID_None, nsGkAtoms::alt, errorMsg, PR_FALSE);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImageDocument::HandleEvent(nsIDOMEvent* aEvent)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user