summaryrefslogtreecommitdiffstats
path: root/netwerk/base/nsIUnicharStreamLoader.idl
diff options
context:
space:
mode:
Diffstat (limited to 'netwerk/base/nsIUnicharStreamLoader.idl')
-rw-r--r--netwerk/base/nsIUnicharStreamLoader.idl88
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;
+};