imgIContainerObserver
Last changed in Gecko 1.7 We make the distinction here between "load" and "decode" notifications. Load notifications are fired as the image is loaded from the network or filesystem. Decode notifications are fired as the image is decoded. If an image is decoded on load and not visibly discarded, decode notifications are nested logically inside load notifications as one might expect. However, with decode-on-draw, the set of decode notifications can come completely after the load notifications, and can come multiple times if the image is discardable. Moreover, they can be interleaved in various ways. In general, any presumed ordering between load and decode notifications should not be relied upon.
Decode notifications may or may not be synchronous, depending on the situation. If imgIDecoder::FLAG_SYNC_DECODE
is passed to a function that triggers a decode, all notifications that can be generated from the currently loaded data fire before the call returns. If FLAG_SYNC_DECODE
is not passed, all, some, or none of the notifications may fire before the call returns.
void onDataAvailable(in imgIRequest aRequest, in boolean aCurrentFrame, [const] in nsIntRect aRect); Native code only! |
void onDiscard(in imgIRequest aRequest); |
void onImageIsAnimated(in imgIRequest aRequest); |
void onStartContainer(in imgIRequest aRequest, in imgIContainer aContainer); |
void onStartDecode(in imgIRequest aRequest); |
void onStartFrame(in imgIRequest aRequest, in unsigned long aFrame); |
void onStartRequest(in imgIRequest aRequest); |
void onStopContainer(in imgIRequest aRequest, in imgIContainer aContainer); |
void onStopDecode(in imgIRequest aRequest, in nsresult status, in wstring statusArg); |
void onStopFrame(in imgIRequest aRequest, in unsigned long aFrame); |
void onStopRequest(in imgIRequest aRequest, in boolean aIsLastPart); |
Decode notification. Called when there is more to paint.
void onDataAvailable( in imgIRequest aRequest, in boolean aCurrentFrame, [const] in nsIntRect aRect );
aRequest
null
if being called for an imgIDecoder
object.aCurrentFrame
aRect
Called when the decoded image data is discarded. This means that the frames no longer exist in decoded form, and any attempt to access or draw the image will initiate a new series of progressive decode notifications.
void onDiscard( in imgIRequest aRequest );
aRequest
null
if being called for an imgIDecoder
object.Notification for when an image is known to be animated. This should be fired at the earliest possible time.
void onImageIsAnimated( in imgIRequest aRequest );
aRequest
null
if being called for an imgIDecoder
object.This load notification is called once enough data has been loaded from the network that we were able to parse the width and height from the image. By the time this callback is been called, the size has been set on the container and STATUS_SIZE_AVAILABLE
has been set on the associated imgRequest
.
void onStartContainer( in imgIRequest aRequest, in imgIContainer aContainer );
aRequest
null
if being called for an imgIDecoder
object.aContainer
This decode notification is called as soon as the image begins getting decoded. This does not include "header-only" decodes used by decode-on-draw to parse the width/height out of the image. Thus, it is a decode notification only.
void onStartDecode( in imgIRequest aRequest );
aRequest
null
if being called for an imgIDecoder
object.This is a decode notification which is called when each frame is created.
void onStartFrame( in imgIRequest aRequest, in unsigned long aFrame );
aRequest
null
if being called for an imgIDecoder
object.aFrame
A load notification which is called at the same time that nsIRequestObserver.onStartRequest()
would be (used only for observers of imgIRequest
objects, which are nsIRequests
, not imgIDecoder
objects).
void onStartRequest( in imgIRequest aRequest );
aRequest
null
if being called for an imgIDecoder
object.void onStopContainer( in imgIRequest aRequest, in imgIContainer aContainer );
aRequest
null
if being called for an imgIDecoder
object.aContainer
In theory a decode notification, but currently a load notification.
Ideally this would be called when the decode is complete. Unfortunately, this is currently the only way to signal decoding errors to consumers, and the only decoding errors that consumers care about (indeed, the only ones that they're prepared to hear about) are failures to instantiate the decoder (<img src="foo.html">
for example). Thus, currently this is just a companion to onStopRequest
to signal success or failure. You probably want onStopContainer
instead. This will be revisited in bugĀ 505385. If you're thinking of doing something new with this, please talk to bholley first.
void onStopDecode( in imgIRequest aRequest, in nsresult status, in wstring statusArg );
aRequest
null
if being called for an imgIDecoder
object.status
statusArg
A decode notification that is called when a frame is finished decoding.
void onStopFrame( in imgIRequest aRequest, in unsigned long aFrame );
aRequest
null
if being called for an imgIDecoder
object.aFrame
A load notification that is called at the same time that nsIRequestObserver.onStopRequest()
would be (used only for observers of imgIRequest
objects, which are nsIRequests
, not imgIDecoder
objects).
void onStopRequest( in imgIRequest aRequest, in boolean aIsLastPart );
aRequest
null
if being called for an imgIDecoder
object.aIsLastPart