Back to index

lightning-sunbird  0.9+nobinonly
GeckoProtocolHandler.h
Go to the documentation of this file.
00001 /* ***** BEGIN LICENSE BLOCK *****
00002  * Version: Mozilla-sample-code 1.0
00003  *
00004  * Copyright (c) 2002 Netscape Communications Corporation and
00005  * other contributors
00006  *
00007  * Permission is hereby granted, free of charge, to any person obtaining a
00008  * copy of this Mozilla sample software and associated documentation files
00009  * (the "Software"), to deal in the Software without restriction, including
00010  * without limitation the rights to use, copy, modify, merge, publish,
00011  * distribute, sublicense, and/or sell copies of the Software, and to permit
00012  * persons to whom the Software is furnished to do so, subject to the
00013  * following conditions:
00014  *
00015  * The above copyright notice and this permission notice shall be included
00016  * in all copies or substantial portions of the Software.
00017  *
00018  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
00019  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00020  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
00021  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00022  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00023  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
00024  * DEALINGS IN THE SOFTWARE.
00025  *
00026  * Contributor(s):
00027  *   Adam Lock <adamlock@netscape.com>
00028  *
00029  * ***** END LICENSE BLOCK ***** */
00030 
00031 #ifndef GECKOPROTOCOLHANDLER_H
00032 #define GECKOPROTOCOLHANDLER_H
00033 
00034 #include "nsIProtocolHandler.h"
00035 #include "nsIChannel.h"
00036 #include "nsIURI.h"
00037 
00038 class GeckoChannelCallback
00039 {
00040 public:
00041     // Return an nsMemory allocated memory block containing the data requested
00042     // Ownership transfers to the caller so it will be freed automatically
00043     virtual nsresult GetData(
00044         nsIURI *aURI,
00045         nsIChannel *aChannel,
00046         nsACString &aContentType,
00047         void **aData,
00048         PRUint32 *aSize) = 0;
00049 };
00050 
00051 class GeckoProtocolHandler
00052 {
00053 public:
00054     static nsresult RegisterHandler(const char *aScheme, const char *aDescription, GeckoChannelCallback *aCallback);
00055 };
00056 
00057 #endif