diff options
Diffstat (limited to 'netwerk/streamconv/nsIStreamConverterService.idl')
-rw-r--r-- | netwerk/streamconv/nsIStreamConverterService.idl | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/netwerk/streamconv/nsIStreamConverterService.idl b/netwerk/streamconv/nsIStreamConverterService.idl new file mode 100644 index 0000000000..f3bc0931ac --- /dev/null +++ b/netwerk/streamconv/nsIStreamConverterService.idl @@ -0,0 +1,89 @@ +/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* 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 "nsISupports.idl" + +interface nsIChannel; +interface nsIInputStream; +interface nsIStreamListener; + +%{C++ +#define NS_ISTREAMCONVERTER_KEY "@mozilla.org/streamconv;1" +%} + +/** + * The nsIStreamConverterService is a higher level stream converter factory + * responsible for locating and creating stream converters + * (nsIStreamConverter). + * + * This service retrieves an interface that can convert data from a particular + * MIME type, to a particular MIME type. It is responsible for any intermediary + * conversion required in order to get from X to Z, assuming direct conversion + * is not possible. + * + * @author Jud Valeski + * @see nsIStreamConverter + */ +[scriptable, uuid(f2b1ab53-f0bd-4adb-9365-e59b1701a258)] +interface nsIStreamConverterService : nsISupports { + /** + * Tests whether conversion between the two specified types is possible. + * This is cheaper than calling convert()/asyncConvertData(); it is not + * necessary to call this function before calling one of those, though. + */ + boolean canConvert(in string aFromType, in string aToType); + + /** + * Returns the content type that will be returned from a converter + * created with aFromType and * /*. + * Can fail if no converters support this conversion, or if the + * output type isn't known in advance. + */ + ACString convertedType(in ACString aFromType, in nsIChannel aChannel); + + /** + * <b>SYNCHRONOUS VERSION</b> + * Converts a stream of one type, to a stream of another type. + * + * Use this method when you have a stream you want to convert. + * + * @param aFromStream The stream representing the original/raw data. + * @param aFromType The MIME type of aFromStream. + * @param aToType The MIME type of the returned stream. + * @param aContext Either an opaque context, or a converter specific + * context (implementation specific). + * @return The converted stream. NOTE: The returned stream + * may not already be converted. An efficient stream + * converter implementation will convert data on + * demand rather than buffering the converted data + * until it is used. + */ + nsIInputStream convert(in nsIInputStream aFromStream, + in string aFromType, + in string aToType, + in nsISupports aContext); + + /** + * <b>ASYNCHRONOUS VERSION</b> + * Retrieves a nsIStreamListener that receives the original/raw data via its + * nsIStreamListener::OnDataAvailable() callback, then converts and pushes + * the data to aListener. + * + * Use this method when you want to proxy (and convert) nsIStreamListener + * callbacks asynchronously. + * + * @param aFromType The MIME type of the original/raw data. + * @param aToType The MIME type of the converted data. + * @param aListener The listener that receives the converted data. + * @param aCtxt Either an opaque context, or a converter specific + * context (implementation specific). + * @return A nsIStreamListener that receives data via its + * OnDataAvailable() method. + */ + nsIStreamListener asyncConvertData(in string aFromType, + in string aToType, + in nsIStreamListener aListener, + in nsISupports aContext); +}; |