diff options
Diffstat (limited to 'netwerk/base/nsIUnicharStreamLoader.idl')
-rw-r--r-- | netwerk/base/nsIUnicharStreamLoader.idl | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/netwerk/base/nsIUnicharStreamLoader.idl b/netwerk/base/nsIUnicharStreamLoader.idl new file mode 100644 index 000000000..d4cdc3fb3 --- /dev/null +++ b/netwerk/base/nsIUnicharStreamLoader.idl @@ -0,0 +1,88 @@ +/* -*- 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; +}; |