1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #include "nsIStreamListener.idl"
- interface nsIUnicharInputStream;
- interface nsIUnicharStreamLoader;
- interface nsIChannel;
- [scriptable, uuid(c2982b39-2e48-429e-92b7-99348a1633c5)]
- interface nsIUnicharStreamLoaderObserver : nsISupports
- {
- /**
- * Called as soon as at least 512 octets of data have arrived.
- * If the stream receives fewer than 512 octets of data in total,
- * called upon stream completion but before calling OnStreamComplete.
- * Will not be called if the stream receives no data at all.
- *
- * @param aLoader the unichar stream loader
- * @param aContext the context parameter of the underlying channel
- * @param aSegment up to 512 octets of raw data from the stream
- *
- * @return the name of the character set to be used to decode this stream
- */
- ACString onDetermineCharset(in nsIUnicharStreamLoader aLoader,
- in nsISupports aContext,
- in ACString aSegment);
- /**
- * Called when the entire stream has been loaded and decoded.
- *
- * @param aLoader the unichar stream loader
- * @param aContext the context parameter of the underlying channel
- * @param aStatus the status of the underlying channel
- * @param aBuffer the contents of the stream, decoded to UTF-16.
- *
- * This method will always be called asynchronously by the
- * nsUnicharIStreamLoader involved, on the thread that called the
- * loader's init() method. If onDetermineCharset fails,
- * onStreamComplete will still be called, but aStatus will be an
- * error code.
- */
- void onStreamComplete(in nsIUnicharStreamLoader aLoader,
- in nsISupports aContext,
- in nsresult aStatus,
- in AString aBuffer);
- };
- /**
- * Asynchronously load a channel, converting the data to UTF-16.
- *
- * To use this interface, first call init() with a
- * nsIUnicharStreamLoaderObserver that will be notified when the data has been
- * loaded. Then call asyncOpen() on the channel with the nsIUnicharStreamLoader
- * as the listener. The context argument in the asyncOpen() call will be
- * passed to the onStreamComplete() callback.
- */
- [scriptable, uuid(afb62060-37c7-4713-8a84-4a0c1199ba5c)]
- interface nsIUnicharStreamLoader : nsIStreamListener
- {
- /**
- * Initializes the unichar stream loader
- *
- * @param aObserver the observer to notify when a charset is needed and when
- * the load is complete
- */
- void init(in nsIUnicharStreamLoaderObserver aObserver);
- /**
- * The channel attribute is only valid inside the onDetermineCharset
- * and onStreamComplete callbacks. Otherwise it will be null.
- */
- readonly attribute nsIChannel channel;
- /**
- * The charset that onDetermineCharset returned, if that's been
- * called.
- */
- readonly attribute ACString charset;
- /**
- * Get the raw bytes as seen on the wire prior to character converstion.
- * Used by Subresource Integrity checker to generate the correct hash.
- */
- readonly attribute ACString rawBuffer;
- };
|