Turn nsDOMWalker into an XPCOM object. b=155066 r=ccarlen sr=kin
git-svn-id: svn://10.0.0.236/trunk@124529 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
f6935d6b59
commit
de008e9c95
@ -327,7 +327,7 @@
|
||||
<!-- Settings for "FTP Panel" panel -->
|
||||
<SETTING><NAME>MWFTP_Post_hostName</NAME><VALUE></VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_username</NAME><VALUE></VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_password</NAME><VALUE>25jqsan5jqae2îIÀåR¨</VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_password</NAME><VALUE>2635rsan635rae2p'!ˆK¿ÿÙ0</VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_remoteDir</NAME><VALUE></VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_ftp_PathVersion</NAME><VALUE>0</VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_ftp_PathType</NAME><VALUE>0</VALUE></SETTING>
|
||||
@ -856,6 +856,20 @@
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsCDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsIDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
</FILELIST>
|
||||
<LINKORDER>
|
||||
<FILEREF>
|
||||
@ -948,6 +962,16 @@
|
||||
<PATH>nsIProgressDialog.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsCDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsIDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
</LINKORDER>
|
||||
</TARGET>
|
||||
<TARGET>
|
||||
@ -1224,7 +1248,7 @@
|
||||
<!-- Settings for "FTP Panel" panel -->
|
||||
<SETTING><NAME>MWFTP_Post_hostName</NAME><VALUE></VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_username</NAME><VALUE></VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_password</NAME><VALUE>25jqsan5jqae2îIÀåR¨</VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_password</NAME><VALUE>2655qsan655qae2p'!ˆK¿ÿÙ0</VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_remoteDir</NAME><VALUE></VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_ftp_PathVersion</NAME><VALUE>0</VALUE></SETTING>
|
||||
<SETTING><NAME>MWFTP_Post_ftp_PathType</NAME><VALUE>0</VALUE></SETTING>
|
||||
@ -1753,6 +1777,20 @@
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsCDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
<FILE>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsIDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
<FILEKIND>Text</FILEKIND>
|
||||
<FILEFLAGS></FILEFLAGS>
|
||||
</FILE>
|
||||
</FILELIST>
|
||||
<LINKORDER>
|
||||
<FILEREF>
|
||||
@ -1845,6 +1883,16 @@
|
||||
<PATH>nsIProgressDialog.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsCDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsIDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
</LINKORDER>
|
||||
</TARGET>
|
||||
</TARGETLIST>
|
||||
@ -1963,6 +2011,18 @@
|
||||
<PATH>nsIAuthPromptWrapper.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<TARGETNAME>headers</TARGETNAME>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsCDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
<FILEREF>
|
||||
<TARGETNAME>headers</TARGETNAME>
|
||||
<PATHTYPE>Name</PATHTYPE>
|
||||
<PATH>nsIDOMWalker.idl</PATH>
|
||||
<PATHFORMAT>MacOS</PATHFORMAT>
|
||||
</FILEREF>
|
||||
</GROUPLIST>
|
||||
|
||||
</PROJECT>
|
||||
|
||||
@ -45,6 +45,7 @@
|
||||
#include "nsFind.h"
|
||||
#include "nsWebBrowserFind.h"
|
||||
#include "nsWebBrowserPersist.h"
|
||||
#include "nsDOMWalker.h"
|
||||
#include "nsCommandManager.h"
|
||||
#include "nsControllerCommandManager.h"
|
||||
#include "nsCommandParams.h"
|
||||
@ -59,6 +60,7 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsJSConsoleService)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsFind)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsWebBrowserFind)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsWebBrowserPersist)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsDOMWalker)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsControllerCommandManager)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsCommandManager)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsCommandParams, Init)
|
||||
@ -75,6 +77,7 @@ static const nsModuleComponentInfo gComponents[] = {
|
||||
{ "WebBrowserFind", NS_WEB_BROWSER_FIND_CID, NS_WEB_BROWSER_FIND_CONTRACTID, nsWebBrowserFindConstructor },
|
||||
{ NS_APPSTARTUPNOTIFIER_CLASSNAME, NS_APPSTARTUPNOTIFIER_CID, NS_APPSTARTUPNOTIFIER_CONTRACTID, nsAppStartupNotifierConstructor },
|
||||
{ "WebBrowserPersist Component", NS_WEBBROWSERPERSIST_CID, NS_WEBBROWSERPERSIST_CONTRACTID, nsWebBrowserPersistConstructor },
|
||||
{ "DOM Walker", NS_DOMWALKER_CID, NS_DOMWALKER_CONTRACTID, nsDOMWalkerConstructor },
|
||||
{ "Controller Command Manager", NS_CONTROLLERCOMMANDMANAGER_CID, NS_CONTROLLERCOMMANDMANAGER_CONTRACTID, nsControllerCommandManagerConstructor },
|
||||
{ "Command Manager", NS_COMMAND_MANAGER_CID, NS_COMMAND_MANAGER_CONTRACTID, nsCommandManagerConstructor },
|
||||
{ "Command Params", NS_COMMAND_PARAMS_CID, NS_COMMAND_PARAMS_CONTRACTID, nsCommandParamsConstructor },
|
||||
|
||||
@ -1,2 +1,4 @@
|
||||
nsCWebBrowserPersist.idl
|
||||
nsIWebBrowserPersist.idl
|
||||
nsCDOMWalker.idl
|
||||
nsIDOMWalker.idl
|
||||
|
||||
@ -31,6 +31,8 @@ XPIDL_MODULE = webbrowserpersist
|
||||
|
||||
XPIDLSRCS = nsIWebBrowserPersist.idl \
|
||||
nsCWebBrowserPersist.idl \
|
||||
nsIDOMWalker.idl \
|
||||
nsCDOMWalker.idl \
|
||||
$(NULL)
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@ -25,6 +25,8 @@ MODULE=webbrowserpersist
|
||||
XPIDLSRCS = \
|
||||
.\nsIWebBrowserPersist.idl \
|
||||
.\nsCWebBrowserPersist.idl \
|
||||
.\nsIDOMWalker.idl \
|
||||
.\nsCDOMWalker.idl \
|
||||
$(NULL)
|
||||
|
||||
include <$(DEPTH)\config\rules.mak>
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications, Inc. Portions created by Netscape are
|
||||
* Copyright (C) 1999, Mozilla. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Adam Lock <adamlock@netscape.com>
|
||||
*/
|
||||
|
||||
#include "nsIDOMWalker.idl"
|
||||
|
||||
%{ C++
|
||||
// {2abe95e1-59fb-4b24-84c9-db164d5eb540}
|
||||
#define NS_DOMWALKER_CID \
|
||||
{ 0x2abe95e1, 0x59fb, 0x4b24, {0x84, 0xc9, 0xdb, 0x16, 0x4d, 0x5e, 0xb5, 0x40} }
|
||||
#define NS_DOMWALKER_CONTRACTID \
|
||||
"@mozilla.org/embedding/browser/nsDOMWalker;1"
|
||||
%}
|
||||
@ -0,0 +1,57 @@
|
||||
/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is the Mozilla browser.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications, Inc. Portions created by Netscape are
|
||||
* Copyright (C) 1999, Mozilla. All Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Adam Lock <adamlock@netscape.com>
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIDOMNode;
|
||||
|
||||
/**
|
||||
* @status UNDER_REVIEW
|
||||
*/
|
||||
|
||||
/**
|
||||
* Interface for callback
|
||||
*/
|
||||
[scriptable, uuid(2d247cde-bae6-4c1e-8c17-102934b8694b)]
|
||||
interface nsIDOMWalkerCallback : nsISupports
|
||||
{
|
||||
/**
|
||||
* Called for each DOM node to be traversed. Set the aAbort parameter
|
||||
* to PR_TRUE to stop further traversal.
|
||||
*/
|
||||
void onWalkDOMNode(in nsIDOMNode aNode, inout boolean aAbort);
|
||||
};
|
||||
|
||||
/**
|
||||
* Interface for walking through a DOM tree.
|
||||
*/
|
||||
[scriptable, uuid(d489d5a0-375d-41ab-b647-fe6a489544a5)]
|
||||
interface nsIDOMWalker : nsISupports
|
||||
{
|
||||
/**
|
||||
* Traverse the specified DOM recursively starting with the supplied root
|
||||
* node and walking through each child node in turn. The supplied callback
|
||||
* interface will be called on each DOM node until traversal is completed
|
||||
* or the operation is cancelled.
|
||||
*/
|
||||
void walkDOM(in nsIDOMNode aRootNode, in nsIDOMWalkerCallback aCallback);
|
||||
};
|
||||
@ -30,7 +30,25 @@ struct DOMTreePos
|
||||
nsCOMPtr<nsIDOMNode> current;
|
||||
};
|
||||
|
||||
nsresult nsDOMWalker::WalkDOM(nsIDOMNode *aRootNode, nsDOMWalkerCallback *aCallback)
|
||||
nsDOMWalker::nsDOMWalker()
|
||||
{
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
nsDOMWalker::~nsDOMWalker()
|
||||
{
|
||||
}
|
||||
|
||||
//*****************************************************************************
|
||||
// nsDOMWalker::nsISupports
|
||||
//*****************************************************************************
|
||||
|
||||
NS_IMPL_ISUPPORTS1(nsDOMWalker, nsIDOMWalker);
|
||||
|
||||
//*****************************************************************************
|
||||
// nsIDOMWalker
|
||||
|
||||
nsresult nsDOMWalker::WalkDOM(nsIDOMNode *aRootNode, nsIDOMWalkerCallback *aCallback)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aRootNode);
|
||||
NS_ENSURE_ARG_POINTER(aCallback);
|
||||
|
||||
@ -24,17 +24,19 @@
|
||||
#define NSDOMWALKER_H
|
||||
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsCDOMWalker.h"
|
||||
|
||||
class nsDOMWalkerCallback
|
||||
class nsDOMWalker :
|
||||
public nsIDOMWalker
|
||||
{
|
||||
// Public members
|
||||
public:
|
||||
virtual nsresult OnWalkDOMNode(nsIDOMNode *aNode, PRBool *aAbort) = 0;
|
||||
};
|
||||
|
||||
class nsDOMWalker
|
||||
{
|
||||
public:
|
||||
nsresult WalkDOM(nsIDOMNode *aRootNode, nsDOMWalkerCallback *aCallback = nsnull);
|
||||
nsDOMWalker();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIDOMWALKER
|
||||
protected:
|
||||
virtual ~nsDOMWalker();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@ -203,6 +203,7 @@ NS_INTERFACE_MAP_BEGIN(nsWebBrowserPersist)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIStreamListener)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIRequestObserver)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIProgressEventSink)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMWalkerCallback)
|
||||
NS_INTERFACE_MAP_END
|
||||
|
||||
|
||||
@ -1370,8 +1371,10 @@ nsresult nsWebBrowserPersist::SaveDocumentInternal(
|
||||
mDocList.AppendElement(docData);
|
||||
|
||||
// Walk the DOM gathering a list of externally referenced URIs in the uri map
|
||||
nsDOMWalker walker;
|
||||
walker.WalkDOM(docAsNode, this);
|
||||
nsCOMPtr<nsIDOMWalker> walker =
|
||||
do_CreateInstance(NS_DOMWALKER_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
|
||||
walker->WalkDOM(docAsNode, this);
|
||||
|
||||
// If there are things to persist, create a directory to hold them
|
||||
if (mCurrentThingsToPersist > 0)
|
||||
|
||||
@ -53,7 +53,7 @@ struct URIData;
|
||||
class nsWebBrowserPersist : public nsIInterfaceRequestor,
|
||||
public nsIWebBrowserPersist,
|
||||
public nsIStreamListener,
|
||||
public nsDOMWalkerCallback,
|
||||
public nsIDOMWalkerCallback,
|
||||
public nsIProgressEventSink,
|
||||
public nsSupportsWeakReference
|
||||
{
|
||||
@ -69,7 +69,8 @@ public:
|
||||
NS_DECL_NSIREQUESTOBSERVER
|
||||
NS_DECL_NSISTREAMLISTENER
|
||||
NS_DECL_NSIPROGRESSEVENTSINK
|
||||
|
||||
NS_DECL_NSIDOMWALKERCALLBACK
|
||||
|
||||
// Protected members
|
||||
protected:
|
||||
virtual ~nsWebBrowserPersist();
|
||||
@ -134,9 +135,6 @@ private:
|
||||
PRBool SerializeNextFile();
|
||||
void CalcTotalProgress();
|
||||
|
||||
// nsDOMWalkerCallback method
|
||||
nsresult OnWalkDOMNode(nsIDOMNode *aNode, PRBool *aAbort);
|
||||
|
||||
// Hash table enumerators
|
||||
static PRBool PR_CALLBACK EnumPersistURIs(
|
||||
nsHashKey *aKey, void *aData, void* closure);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user