Back to index

lightning-sunbird  0.9+nobinonly
nsParserDataListener.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is mozilla.org code.
00016  *
00017  * The Initial Developer of the Original Code is mozilla.org.
00018  * Portions created by the Initial Developer are Copyright (C) 2004
00019  * the Initial Developer. All Rights Reserved.
00020  *
00021  * Contributor(s):
00022  *   Johnny Stenback <jst@mozilla.org>
00023  *
00024  * Alternatively, the contents of this file may be used under the terms of
00025  * either the GNU General Public License Version 2 or later (the "GPL"), or
00026  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00027  * in which case the provisions of the GPL or the LGPL are applicable instead
00028  * of those above. If you wish to allow use of your version of this file only
00029  * under the terms of either the GPL or the LGPL, and not to allow others to
00030  * use your version of this file under the terms of the MPL, indicate your
00031  * decision by deleting the provisions above and replace them with the notice
00032  * and other provisions required by the GPL or the LGPL. If you do not delete
00033  * the provisions above, a recipient may use your version of this file under
00034  * the terms of any one of the MPL, the GPL or the LGPL.
00035  *
00036  * ***** END LICENSE BLOCK ***** */
00037 
00038 #ifndef __nsParserDataListener_h__
00039 #define __nsParserDataListener_h__
00040 
00041 /*
00042  * Include this header if you're implementing a parser data
00043  * listener. To make a component a parser data listener you'll need to
00044  * make your component implement the interface
00045  * nsIUnicharStreamListener. That interface has three methods (one +
00046  * two inherited ones, not counting what's defined in
00047  * nsISupports). The methods are:
00048  *
00049  *  void onStartRequest(in nsIRequest aRequest,
00050  *                      in nsISupports aContext);
00051  *  void onUnicharDataAvailable(in nsIRequest aRequest,
00052  *                              in nsISupports aContext, in AString aData);
00053  *  void onStopRequest(in nsIRequest aRequest,
00054  *                     in nsISupports aContext,
00055  *                     in nsresult aStatusCode);
00056  *
00057  * All those methods are called for every network request that ends up
00058  * feeding data to the parser. The method are called in the order
00059  * shown above, first one call to onStartRequest(), then one call to
00060  * onUnicharDataAvailable() per chunk of data received and converted
00061  * to UTF-16, and finally one call to onStopRequest().
00062  *
00063  * The nsIRequest passed into these methods will be the same object
00064  * for all these calls for a given network request. If the request
00065  * pointer is used to uniquely identify an ongoing request, the
00066  * pointer should be QueryInterface()'d to nsISupports to ensure that
00067  * the pointer used is the identity pointer to the object.
00068  *
00069  * The context argument passed to these methods will be the document
00070  * (nsIDOMDocument) parsed from the stream, or null when not
00071  * available.
00072  *
00073  * Any errors returned from any of these calls will end up canceling
00074  * the stream, and the data that is passed to the call in question
00075  * will *not* be seen by the parser. So unless you intend to interrupt
00076  * a request, *make sure* that you return NS_OK from these methods!
00077  */
00078 
00079 #include "nsIUnicharStreamListener.h"
00080 
00081 /*
00082  * To register a component to be a parser data listener the
00083  * component's contract id should be registered with the category
00084  * manager (nsICategoryManager), with the category
00085  * PARSER_DATA_LISTENER_CATEGORY, defined here.
00086  *
00087  * @status FROZEN
00088  */
00089 #define PARSER_DATA_LISTENER_CATEGORY "Parser data listener"
00090 
00091 #endif // __nsParserDataListener_h__