Annotation of chimera/GeckoUtils.h, revision 1.2
1.1 hyatt 1: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2: /* ***** BEGIN LICENSE BLOCK *****
3: * Version: NPL 1.1/GPL 2.0/LGPL 2.1
4: *
5: * The contents of this file are subject to the Netscape Public License
6: * Version 1.1 (the "License"); you may not use this file except in
7: * compliance with the License. You may obtain a copy of the License at
8: * http://www.mozilla.org/NPL/
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
18: * Netscape Communications Corporation.
19: * Portions created by the Initial Developer are Copyright (C) 2002
20: * the Initial Developer. All Rights Reserved.
21: *
22: * Contributor(s):
23: *
24: * Alternatively, the contents of this file may be used under the terms of
25: * either the GNU General Public License Version 2 or later (the "GPL"), or
26: * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
27: * in which case the provisions of the GPL or the LGPL are applicable instead
28: * of those above. If you wish to allow use of your version of this file only
29: * under the terms of either the GPL or the LGPL, and not to allow others to
30: * use your version of this file under the terms of the NPL, indicate your
31: * decision by deleting the provisions above and replace them with the notice
32: * and other provisions required by the GPL or the LGPL. If you do not delete
33: * the provisions above, a recipient may use your version of this file under
34: * the terms of any one of the NPL, the GPL or the LGPL.
35: *
36: * ***** END LICENSE BLOCK ***** */
37:
38: #ifndef __GeckoUtils_h__
39: #define __GeckoUtils_h__
40:
41: class GeckoUtils
42: {
43: public:
44: static void GatherTextUnder(nsIDOMNode* aNode, nsString& aResult) {
1.2 ! hyatt 45: nsAutoString text;
! 46: nsCOMPtr<nsIDOMNode> node;
! 47: aNode->GetFirstChild(getter_AddRefs(node));
! 48: PRUint32 depth = 1;
! 49: while (node && depth) {
! 50: nsCOMPtr<nsIDOMCharacterData> charData(do_QueryInterface(node));
! 51: PRUint16 nodeType;
! 52: node->GetNodeType(&nodeType);
! 53: if (charData && nodeType == nsIDOMNode::TEXT_NODE) {
! 54: // Add this text to our collection.
! 55: text += NS_LITERAL_STRING(" ");
! 56: nsAutoString data;
! 57: charData->GetData(data);
! 58: text += data;
! 59: }
! 60: else {
! 61: nsCOMPtr<nsIDOMHTMLImageElement> img(do_QueryInterface(node));
! 62: if (img) {
! 63: nsAutoString altText;
! 64: img->GetAlt(altText);
! 65: if (!altText.IsEmpty()) {
! 66: text = altText;
! 67: break;
! 68: }
! 69: }
! 70: }
! 71:
! 72:
! 73: }
! 74:
! 75: aResult = text;
1.1 hyatt 76: };
77: };
78:
79:
80: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>