1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* ***** BEGIN LICENSE BLOCK *****
3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
4 *
5 * The contents of this file are subject to the Mozilla Public License Version
6 * 1.1 (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 * http://www.mozilla.org/MPL/
9 *
10 * Software distributed under the License is distributed on an "AS IS" basis,
11 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 * for the specific language governing rights and limitations under the
13 * License.
14 *
15 * The Original Code is mozilla.org code.
16 *
17 * The Initial Developer of the Original Code is Robert Sayre.
18 * Portions created by the Initial Developer are Copyright (C) 2006
19 * the Initial Developer. All Rights Reserved.
20 *
21 * Contributor(s):
22 *
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
34 *
35 * ***** END LICENSE BLOCK ***** */
36
37 #include "nsISupports.idl"
38 interface nsIFeedResult;
39 interface nsIFeedEntry;
40
41 /**
42 * nsIFeedResultListener defines a callback used when feed processing
43 * completes.
44 */
45 [scriptable, uuid(4d2ebe88-36eb-4e20-bcd1-997b3c1f24ce)]
46 interface nsIFeedResultListener : nsISupports
47 {
48 /**
49 * Always called, even after an error. There could be new feed-level
50 * data available at this point, if it followed or was interspersed
51 * with the items. Fire-and-Forget implementations only need this.
52 *
53 * @param result
54 * An object implementing nsIFeedResult representing the feed
55 * and its metadata.
56 */
57 void handleResult(in nsIFeedResult result);
58 };
59
60
61 /**
62 * nsIFeedProgressListener defines callbacks used during feed
63 * processing.
64 */
65 [scriptable, uuid(ebfd5de5-713c-40c0-ad7c-f095117fa580)]
66 interface nsIFeedProgressListener : nsIFeedResultListener {
67
68 /**
69 * ReportError will be called in the event of fatal
70 * XML errors, or if the document is not a feed. The bozo
71 * bit will be set if the error was due to a fatal error.
72 *
73 * @param errorText
74 * A short description of the error.
75 * @param lineNumber
76 * The line on which the error occured.
77 */
78 void reportError(in AString errorText, in long lineNumber,
79 in boolean bozo);
80
81 /**
82 * StartFeed will be called as soon as a reasonable start to
83 * a feed is detected.
84 *
85 * @param result
86 * An object implementing nsIFeedResult representing the feed
87 * and its metadata. At this point, the result has version
88 * information.
89 */
90 void handleStartFeed(in nsIFeedResult result);
91
92 /**
93 * Called when the first entry/item is encountered. In Atom, all
94 * feed data is required to preceed the entries. In RSS, the data
95 * usually does. If the type is one of the entry/item-only types,
96 * this event will not be called.
97 *
98 * @param result
99 * An object implementing nsIFeedResult representing the feed
100 * and its metadata. At this point, the result will likely have
101 * most of its feed-level metadata.
102 */
103 void handleFeedAtFirstEntry(in nsIFeedResult result);
104
105 /**
106 * Called after each entry/item. If the document is a standalone
107 * item or entry, this HandleFeedAtFirstEntry will not have been
108 * called. Also, this entry's parent field will be null.
109 *
110 * @param entry
111 * An object implementing nsIFeedEntry that represents the latest
112 * entry encountered.
113 * @param result
114 * An object implementing nsIFeedResult representing the feed
115 * and its metadata.
116 */
117 void handleEntry(in nsIFeedEntry entry, in nsIFeedResult result);
118 };