diff --git a/mozilla/htmlparser/robot/nsDebugRobot.cpp b/mozilla/htmlparser/robot/nsDebugRobot.cpp new file mode 100644 index 00000000000..21cdc1e1c3e --- /dev/null +++ b/mozilla/htmlparser/robot/nsDebugRobot.cpp @@ -0,0 +1,102 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#include "nsIRobotSink.h" +#include "nsIRobotSinkObserver.h" +#include "nsIParser.h" +#include "nsVoidArray.h" +#include "nsString.h" +#include "nsIURL.h" + +static NS_DEFINE_IID(kIRobotSinkObserverIID, NS_IROBOTSINKOBSERVER_IID); + +class RobotSinkObserver : public nsIRobotSinkObserver { +public: + RobotSinkObserver() { + NS_INIT_REFCNT(); + } + + ~RobotSinkObserver() { + } + + NS_DECL_ISUPPORTS + + NS_IMETHOD ProcessLink(const nsString& aURLSpec); +}; + +NS_IMPL_ISUPPORTS(RobotSinkObserver, kIRobotSinkObserverIID); + +NS_IMETHODIMP RobotSinkObserver::ProcessLink(const nsString& aURLSpec) +{ + fputs(aURLSpec, stdout); + printf("\n"); + return NS_OK; +} + +//---------------------------------------------------------------------- + +extern "C" NS_EXPORT int DebugRobot(nsVoidArray * workList) +{ + RobotSinkObserver* myObserver = new RobotSinkObserver(); + NS_ADDREF(myObserver); + + for (;;) { + PRInt32 n = workList->Count(); + if (0 == n) { + break; + } + nsString* urlName = (nsString*) workList->ElementAt(n - 1); + workList->RemoveElementAt(n - 1); + + // Create url + nsIURL* url; + nsresult rv = NS_NewURL(&url, *urlName); + if (NS_OK != rv) { + printf("invalid URL: '"); + fputs(*urlName, stdout); + printf("'\n"); + return -1; + } + delete urlName; + + nsIParser* parser; + rv = NS_NewHTMLParser(&parser); + if (NS_OK != rv) { + printf("can't make parser\n"); + return -1; + } + + nsIRobotSink* sink; + rv = NS_NewRobotSink(&sink); + if (NS_OK != rv) { + printf("can't make parser\n"); + return -1; + } + sink->Init(url); + sink->AddObserver(myObserver); + + parser->SetContentSink(sink); + parser->Parse(url); + NS_RELEASE(sink); + NS_RELEASE(parser); + NS_RELEASE(url); + } + + NS_RELEASE(myObserver); + + return 0; +} diff --git a/mozilla/parser/htmlparser/robot/nsDebugRobot.cpp b/mozilla/parser/htmlparser/robot/nsDebugRobot.cpp new file mode 100644 index 00000000000..21cdc1e1c3e --- /dev/null +++ b/mozilla/parser/htmlparser/robot/nsDebugRobot.cpp @@ -0,0 +1,102 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ +#include "nsIRobotSink.h" +#include "nsIRobotSinkObserver.h" +#include "nsIParser.h" +#include "nsVoidArray.h" +#include "nsString.h" +#include "nsIURL.h" + +static NS_DEFINE_IID(kIRobotSinkObserverIID, NS_IROBOTSINKOBSERVER_IID); + +class RobotSinkObserver : public nsIRobotSinkObserver { +public: + RobotSinkObserver() { + NS_INIT_REFCNT(); + } + + ~RobotSinkObserver() { + } + + NS_DECL_ISUPPORTS + + NS_IMETHOD ProcessLink(const nsString& aURLSpec); +}; + +NS_IMPL_ISUPPORTS(RobotSinkObserver, kIRobotSinkObserverIID); + +NS_IMETHODIMP RobotSinkObserver::ProcessLink(const nsString& aURLSpec) +{ + fputs(aURLSpec, stdout); + printf("\n"); + return NS_OK; +} + +//---------------------------------------------------------------------- + +extern "C" NS_EXPORT int DebugRobot(nsVoidArray * workList) +{ + RobotSinkObserver* myObserver = new RobotSinkObserver(); + NS_ADDREF(myObserver); + + for (;;) { + PRInt32 n = workList->Count(); + if (0 == n) { + break; + } + nsString* urlName = (nsString*) workList->ElementAt(n - 1); + workList->RemoveElementAt(n - 1); + + // Create url + nsIURL* url; + nsresult rv = NS_NewURL(&url, *urlName); + if (NS_OK != rv) { + printf("invalid URL: '"); + fputs(*urlName, stdout); + printf("'\n"); + return -1; + } + delete urlName; + + nsIParser* parser; + rv = NS_NewHTMLParser(&parser); + if (NS_OK != rv) { + printf("can't make parser\n"); + return -1; + } + + nsIRobotSink* sink; + rv = NS_NewRobotSink(&sink); + if (NS_OK != rv) { + printf("can't make parser\n"); + return -1; + } + sink->Init(url); + sink->AddObserver(myObserver); + + parser->SetContentSink(sink); + parser->Parse(url); + NS_RELEASE(sink); + NS_RELEASE(parser); + NS_RELEASE(url); + } + + NS_RELEASE(myObserver); + + return 0; +}