diff --git a/mozilla/xpfe/components/history/public/nsISHContainer.idl b/mozilla/xpfe/components/history/public/nsISHContainer.idl index c63a6b900dd..6664b3922f9 100644 --- a/mozilla/xpfe/components/history/public/nsISHContainer.idl +++ b/mozilla/xpfe/components/history/public/nsISHContainer.idl @@ -1,59 +1,59 @@ -/* -*- 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): - * Radha Kulkarni - */ - -#include "nsISupports.idl" -#include "nsIEnumerator.idl" -#include "nsISHEntry.idl" - - -/** - * The nsISHEntryContainer. The interface to access child entries - * of an nsISHEntry. - * - */ - -[scriptable, uuid(65281BA2-988A-11d3-BDC7-0050040A9B44)] -interface nsISHContainer : nsISupports -{ - /** - * The current number of nsISHEntries which are immediate children of the - * current SHEntry - */ - readonly attribute long childCount; - - /** - * Add a new child SHEntry. Adds to the end of the list. - */ - void AddChild(in nsISHEntry child); - - /** - * Removes a child SHEntry - */ - void RemoveChild(in nsISHEntry child); - - /** - * Enumerator to walk child list. - */ - readonly attribute nsIEnumerator childEnumerator; - -}; - +/* -*- 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): + * Radha Kulkarni + */ + +#include "nsISupports.idl" +#include "nsIEnumerator.idl" +#include "nsISHEntry.idl" + + +/** + * The nsISHEntryContainer. The interface to access child entries + * of an nsISHEntry. + * + */ + +[scriptable, uuid(65281BA2-988A-11d3-BDC7-0050040A9B44)] +interface nsISHContainer : nsISupports +{ + /** + * The current number of nsISHEntries which are immediate children of the + * current SHEntry + */ + readonly attribute long childCount; + + /** + * Add a new child SHEntry. Adds to the end of the list. + */ + void AddChild(in nsISHEntry child); + + /** + * Removes a child SHEntry + */ + void RemoveChild(in nsISHEntry child); + + /** + * Enumerator to walk child list. + */ + readonly attribute nsIEnumerator childEnumerator; + +}; + diff --git a/mozilla/xpfe/components/history/public/nsISHEntry.idl b/mozilla/xpfe/components/history/public/nsISHEntry.idl index 1df7c9fcd6e..e04bad8813e 100644 --- a/mozilla/xpfe/components/history/public/nsISHEntry.idl +++ b/mozilla/xpfe/components/history/public/nsISHEntry.idl @@ -1,62 +1,62 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * The contents of this file are subject to the Netscape 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/NPL/ - * - * 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 mozilla.org code. - * - * The Initial Developer of the Original Code is Netscape - * Communications Corporation. Portions created by Netscape are - * Copyright (C) 1998 Netscape Communications Corporation. All - * Rights Reserved. - * - * Contributor(s): - * Radha Kulkarni - */ - -/** - * The interface to nsISHentry. Each document or subframe in - * Session History will have a nsISHEntry associated with it which will - * hold all information required to recreate the document from history - * - */ -#include "nsISupports.idl" -#include "nsIURI.idl" -#include "domstubs.idl" -#include "nsIInputStream.idl" - -[scriptable, uuid(65281BA1-988A-11d3-BDC7-0050040A9B44)] -interface nsISHEntry : nsISupports -{ - -/** URI for the document */ -attribute nsIURI uri; - -/** DOM Document */ -attribute nsIDOMDocument document; - -/** Title for the document */ -attribute wstring title; - -/** Post Data for the document */ -attribute nsIInputStream postData; - -/** LayoutHistoryState for scroll position and form values */ -attribute nsISupports layoutHistoryState; - -/** Parent of the current entry */ -attribute nsISHEntry parent; - -/** Additional ways to create an entry */ -void create(in nsIURI aURI, in wstring aTitle, in nsIDOMDocument aDocument, - in nsIInputStream aInputStream, in nsISupports aHistoryLayoutState); - -}; - +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 mozilla.org code. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + * Radha Kulkarni + */ + +/** + * The interface to nsISHentry. Each document or subframe in + * Session History will have a nsISHEntry associated with it which will + * hold all information required to recreate the document from history + * + */ +#include "nsISupports.idl" +#include "nsIURI.idl" +#include "domstubs.idl" +#include "nsIInputStream.idl" + +[scriptable, uuid(65281BA1-988A-11d3-BDC7-0050040A9B44)] +interface nsISHEntry : nsISupports +{ + +/** URI for the document */ +attribute nsIURI uri; + +/** DOM Document */ +attribute nsIDOMDocument document; + +/** Title for the document */ +attribute wstring title; + +/** Post Data for the document */ +attribute nsIInputStream postData; + +/** LayoutHistoryState for scroll position and form values */ +attribute nsISupports layoutHistoryState; + +/** Parent of the current entry */ +attribute nsISHEntry parent; + +/** Additional ways to create an entry */ +void create(in nsIURI aURI, in wstring aTitle, in nsIDOMDocument aDocument, + in nsIInputStream aInputStream, in nsISupports aHistoryLayoutState); + +}; + diff --git a/mozilla/xpfe/components/history/public/nsISHTransaction.idl b/mozilla/xpfe/components/history/public/nsISHTransaction.idl index c027b9ab135..037a5618eea 100644 --- a/mozilla/xpfe/components/history/public/nsISHTransaction.idl +++ b/mozilla/xpfe/components/history/public/nsISHTransaction.idl @@ -1,61 +1,61 @@ -/* -*- 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): - * Radha Kulkarni - */ - -#include "nsISupports.idl" -#include "nsISHEntry.idl" -#include "nsIEnumerator.idl" - - -/** - * The nsISHTransaction. - */ - - -[scriptable, uuid(2F0C3A72-988B-11d3-BDC7-0050040A9B44)] -interface nsISHTransaction : nsISupports -{ - /** - * The nsISHEntry for the current transaction - */ - readonly attribute nsISHEntry currentSHistoryEntry; - - /** - * The parent of this transaction - */ - readonly attribute nsISHTransaction parent; - - /** - * The legitimate child of this transaction - */ - readonly attribute nsISHTransaction child; - - /** - * The *other* children of this transaction. - */ - readonly attribute nsISHTransaction lrvList; - - /** - * Create a transaction with parent and History Entry - */ - void create(in nsISHEntry aSHEntry, in nsISHTransaction aParent); -}; - +/* -*- 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): + * Radha Kulkarni + */ + +#include "nsISupports.idl" +#include "nsISHEntry.idl" +#include "nsIEnumerator.idl" + + +/** + * The nsISHTransaction. + */ + + +[scriptable, uuid(2F0C3A72-988B-11d3-BDC7-0050040A9B44)] +interface nsISHTransaction : nsISupports +{ + /** + * The nsISHEntry for the current transaction + */ + readonly attribute nsISHEntry currentSHistoryEntry; + + /** + * The parent of this transaction + */ + readonly attribute nsISHTransaction parent; + + /** + * The legitimate child of this transaction + */ + readonly attribute nsISHTransaction child; + + /** + * The *other* children of this transaction. + */ + readonly attribute nsISHTransaction lrvList; + + /** + * Create a transaction with parent and History Entry + */ + void create(in nsISHEntry aSHEntry, in nsISHTransaction aParent); +}; + diff --git a/mozilla/xpfe/components/history/src/nsSHEntry.cpp b/mozilla/xpfe/components/history/src/nsSHEntry.cpp index ec7eb028cd2..763b1186556 100644 --- a/mozilla/xpfe/components/history/src/nsSHEntry.cpp +++ b/mozilla/xpfe/components/history/src/nsSHEntry.cpp @@ -1,405 +1,405 @@ -/* -*- 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): - * Radha Kulkarni - */ -#include "nsISupportsUtils.h" -//#include "nsCOMPtr.h" -#include "nsIDOMDocument.h" -#include "nsSHEntry.h" - -#ifdef XXX_NS_DEBUG // XXX: we'll need a logging facility for debugging -#define WEB_TRACE(_bit,_args) \ - PR_BEGIN_MACRO \ - if (WEB_LOG_TEST(gLogModule,_bit)) { \ - PR_LogPrint _args; \ - } \ - PR_END_MACRO -#else -#define WEB_TRACE(_bit,_args) -#endif - -//***************************************************************************** -//*** nsSHEnumerator: Object Management -//***************************************************************************** -class nsSHEnumerator : public nsIEnumerator -{ -public: - - NS_DECL_ISUPPORTS - - NS_DECL_NSIENUMERATOR - NS_IMETHOD CurrentItem(nsISHEntry ** aItem); - -private: - friend class nsSHEntry; - - nsSHEnumerator(nsSHEntry * aEntry); - virtual ~nsSHEnumerator(); - - PRInt32 mIndex; - nsSHEntry * mSHEntry; -}; - - - -//***************************************************************************** -//*** nsSHEntry: Object Management -//***************************************************************************** - -nsSHEntry::nsSHEntry() -{ - -NS_INIT_REFCNT(); -mURI = (nsnull); -mPostData = (nsnull); -mDocument= (nsnull); -mLayoutHistoryState= (nsnull); - -} - - -NS_IMETHODIMP -nsSHEntry::Create(nsIURI * aURI, const PRUnichar * aTitle, nsIDOMDocument * aDOMDocument, - nsIInputStream * aInputStream, nsISupports * aHistoryLayoutState) -{ - SetUri(aURI); - SetTitle(aTitle); - SetDocument(aDOMDocument); - SetPostData(aInputStream); - SetLayoutHistoryState(aHistoryLayoutState); - return NS_OK; - -} - - -nsSHEntry::~nsSHEntry() -{ - NS_IF_RELEASE(mURI); - NS_IF_RELEASE(mPostData); - NS_IF_RELEASE(mDocument); - NS_IF_RELEASE(mLayoutHistoryState); - if (mTitle) - delete mTitle; - - DestroyChildren(); -} - -void -nsSHEntry::DestroyChildren() { - - PRInt32 i, n; - - n = GetChildCount(&n); - for (i = 0; i < n; i++) { - nsISHEntry* child = (nsISHEntry *) mChildren.ElementAt(i); - child->SetParent(nsnull); // Weak reference to parent - delete child; - } - mChildren.Clear(); - - -} - -// nsSHEntry::nsISupports - -NS_IMPL_ISUPPORTS2(nsSHEntry, nsISHEntry, nsISHContainer) - -NS_IMETHODIMP -nsSHEntry::GetUri(nsIURI **aUri) -{ - NS_ENSURE_ARG_POINTER(aUri); - - *aUri = mURI; - NS_IF_ADDREF(mURI); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::SetUri(nsIURI * aUri) -{ - - NS_IF_RELEASE(mURI); - mURI = aUri; - NS_IF_ADDREF(mURI); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::SetDocument(nsIDOMDocument * aDocument) -{ - NS_IF_RELEASE(mDocument); - mDocument = aDocument; - NS_IF_ADDREF(mDocument); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::GetDocument(nsIDOMDocument ** aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mDocument; - NS_IF_ADDREF(mDocument); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::GetTitle(PRUnichar** aTitle) -{ - NS_ENSURE_ARG_POINTER(aTitle); - if (mTitle) - *aTitle = mTitle->ToNewUnicode(); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::SetTitle(const PRUnichar* aTitle) -{ - - if (mTitle) - delete mTitle; - if (aTitle) - mTitle = new nsString(aTitle); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::GetPostData(nsIInputStream ** aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mPostData; - NS_IF_ADDREF(mPostData); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::SetPostData(nsIInputStream * aPostData) -{ - NS_IF_RELEASE(mPostData); - mPostData = aPostData; - NS_IF_ADDREF(aPostData); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::GetLayoutHistoryState(nsISupports ** aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mLayoutHistoryState; - NS_IF_ADDREF(mLayoutHistoryState); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::SetLayoutHistoryState(nsISupports * aState) -{ - NS_IF_RELEASE(mLayoutHistoryState); - mLayoutHistoryState = aState; - NS_IF_ADDREF(aState); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::GetParent(nsISHEntry ** aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mParent; - NS_IF_ADDREF(*aResult); - return NS_OK; -} - - -NS_IMETHODIMP -nsSHEntry::SetParent(nsISHEntry * aParent) -{ - /* parent not Addrefed on purpose to avoid cyclic reference - * Null parent is OK - */ - mParent = aParent; - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::GetChildCount(PRInt32 * aCount) -{ - NS_ENSURE_ARG_POINTER(aCount); - *aCount = mChildren.Count(); - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::AddChild(nsISHEntry * aChild) -{ - NS_ENSURE_ARG_POINTER(aChild); - - NS_ENSURE_SUCCESS(aChild->SetParent(this), NS_ERROR_FAILURE); - mChildren.AppendElement((void *)aChild); - NS_ADDREF(aChild); - - return NS_OK; -} - -NS_IMETHODIMP -nsSHEntry::RemoveChild(nsISHEntry * aChild) -{ - NS_ENSURE_ARG_POINTER(aChild); - PRBool childRemoved = mChildren.RemoveElement((void *)aChild); - if (childRemoved) { - aChild->SetParent(nsnull); - NS_RELEASE(aChild); - } - return NS_OK; -} - - -NS_IMETHODIMP -nsSHEntry::GetChildEnumerator(nsIEnumerator** aChildEnumerator) -{ - nsresult status = NS_OK; - - NS_ENSURE_ARG_POINTER(aChildEnumerator); - nsSHEnumerator * iterator = new nsSHEnumerator(this); - if (iterator && !!NS_SUCCEEDED(status = CallQueryInterface(iterator, aChildEnumerator))) - delete iterator; - return status; -} - - -//***************************************************************************** -//*** nsSHEnumerator: Object Management -//***************************************************************************** - -nsSHEnumerator::nsSHEnumerator(nsSHEntry * aEntry):mIndex(0) -{ - NS_INIT_REFCNT(); - mSHEntry = aEntry; -} - -nsSHEnumerator::~nsSHEnumerator() -{ -} - - -NS_IMETHODIMP -nsSHEnumerator::Next() -{ - mIndex++; - PRUint32 cnt=0; - cnt = mSHEntry->mChildren.Count(); - if (mIndex < (PRInt32)cnt) - return NS_OK; - return NS_ERROR_FAILURE; -} - - -#if 0 -NS_IMETHODIMP -nsSHEnumerator::Prev() -{ - mIndex--; - if (mIndex >= 0 ) - return NS_OK; - return NS_ERROR_FAILURE; -} - -NS_IMETHODIMP -nsSHEnumerator::Last() -{ - PRUint32 cnt; - nsresult rv = mSHEntry->mChildren.Count(&cnt); - if (NS_FAILED(rv)) return rv; - mIndex = (PRInt32)cnt-1; - return NS_OK; -} -#endif /* 0 */ - -NS_IMETHODIMP -nsSHEnumerator::First() -{ - mIndex = 0; - return NS_OK; -} - - -NS_IMETHODIMP -nsSHEnumerator::CurrentItem(nsISupports **aItem) -{ - if (!aItem) - return NS_ERROR_NULL_POINTER; - PRUint32 cnt= mSHEntry->mChildren.Count(); - if (mIndex >=0 && mIndex < (PRInt32)cnt){ - *aItem = (nsISupports *)mSHEntry->mChildren.ElementAt(mIndex); - NS_IF_ADDREF(*aItem); - return NS_OK; - } - return NS_ERROR_FAILURE; -} - -NS_IMPL_ISUPPORTS1(nsSHEnumerator, nsIEnumerator) - - -NS_IMETHODIMP -nsSHEnumerator::CurrentItem(nsISHEntry **aItem) -{ - if (!aItem) - return NS_ERROR_NULL_POINTER; - PRUint32 cnt = mSHEntry->mChildren.Count(); - if (mIndex >=0 && mIndex < (PRInt32)cnt){ - nsCOMPtr indexIsupports = (nsISHEntry *) mSHEntry->mChildren.ElementAt(mIndex); - return indexIsupports->QueryInterface(nsISHEntry::GetIID(),(void **)aItem); - } - return NS_ERROR_FAILURE; -} - - - -NS_IMETHODIMP -nsSHEnumerator::IsDone() -{ - PRUint32 cnt; - cnt = mSHEntry->mChildren.Count(); - if (mIndex >= 0 && mIndex < (PRInt32)cnt ) { - return NS_ENUMERATOR_FALSE; - } - return NS_OK; -} - - -#if 0 -NS_IMETHODIMP -nsRangeListIterator::QueryInterface(REFNSIID aIID, void** aInstancePtr) -{ - if (nsnull == aInstancePtr) { - return NS_ERROR_NULL_POINTER; - } - if (aIID.Equals(nsIEnumerator::GetIID())) { - *aInstancePtr = NS_STATIC_CAST(nsIEnumerator*, this); - NS_ADDREF_THIS(); - return NS_OK; - } - if (aIID.Equals(nsIBidirectionalEnumerator::GetIID())) { - *aInstancePtr = NS_STATIC_CAST(nsIBidirectionalEnumerator*, this); - NS_ADDREF_THIS(); - return NS_OK; - } - return mDomSelection->QueryInterface(aIID, aInstancePtr); -} -#endif - -////////////END nsSHEnumerator methods +/* -*- 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): + * Radha Kulkarni + */ +#include "nsISupportsUtils.h" +//#include "nsCOMPtr.h" +#include "nsIDOMDocument.h" +#include "nsSHEntry.h" + +#ifdef XXX_NS_DEBUG // XXX: we'll need a logging facility for debugging +#define WEB_TRACE(_bit,_args) \ + PR_BEGIN_MACRO \ + if (WEB_LOG_TEST(gLogModule,_bit)) { \ + PR_LogPrint _args; \ + } \ + PR_END_MACRO +#else +#define WEB_TRACE(_bit,_args) +#endif + +//***************************************************************************** +//*** nsSHEnumerator: Object Management +//***************************************************************************** +class nsSHEnumerator : public nsIEnumerator +{ +public: + + NS_DECL_ISUPPORTS + + NS_DECL_NSIENUMERATOR + NS_IMETHOD CurrentItem(nsISHEntry ** aItem); + +private: + friend class nsSHEntry; + + nsSHEnumerator(nsSHEntry * aEntry); + virtual ~nsSHEnumerator(); + + PRInt32 mIndex; + nsSHEntry * mSHEntry; +}; + + + +//***************************************************************************** +//*** nsSHEntry: Object Management +//***************************************************************************** + +nsSHEntry::nsSHEntry() +{ + +NS_INIT_REFCNT(); +mURI = (nsnull); +mPostData = (nsnull); +mDocument= (nsnull); +mLayoutHistoryState= (nsnull); + +} + + +NS_IMETHODIMP +nsSHEntry::Create(nsIURI * aURI, const PRUnichar * aTitle, nsIDOMDocument * aDOMDocument, + nsIInputStream * aInputStream, nsISupports * aHistoryLayoutState) +{ + SetUri(aURI); + SetTitle(aTitle); + SetDocument(aDOMDocument); + SetPostData(aInputStream); + SetLayoutHistoryState(aHistoryLayoutState); + return NS_OK; + +} + + +nsSHEntry::~nsSHEntry() +{ + NS_IF_RELEASE(mURI); + NS_IF_RELEASE(mPostData); + NS_IF_RELEASE(mDocument); + NS_IF_RELEASE(mLayoutHistoryState); + if (mTitle) + delete mTitle; + + DestroyChildren(); +} + +void +nsSHEntry::DestroyChildren() { + + PRInt32 i, n; + + n = GetChildCount(&n); + for (i = 0; i < n; i++) { + nsISHEntry* child = (nsISHEntry *) mChildren.ElementAt(i); + child->SetParent(nsnull); // Weak reference to parent + delete child; + } + mChildren.Clear(); + + +} + +// nsSHEntry::nsISupports + +NS_IMPL_ISUPPORTS2(nsSHEntry, nsISHEntry, nsISHContainer) + +NS_IMETHODIMP +nsSHEntry::GetUri(nsIURI **aUri) +{ + NS_ENSURE_ARG_POINTER(aUri); + + *aUri = mURI; + NS_IF_ADDREF(mURI); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::SetUri(nsIURI * aUri) +{ + + NS_IF_RELEASE(mURI); + mURI = aUri; + NS_IF_ADDREF(mURI); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::SetDocument(nsIDOMDocument * aDocument) +{ + NS_IF_RELEASE(mDocument); + mDocument = aDocument; + NS_IF_ADDREF(mDocument); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::GetDocument(nsIDOMDocument ** aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mDocument; + NS_IF_ADDREF(mDocument); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::GetTitle(PRUnichar** aTitle) +{ + NS_ENSURE_ARG_POINTER(aTitle); + if (mTitle) + *aTitle = mTitle->ToNewUnicode(); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::SetTitle(const PRUnichar* aTitle) +{ + + if (mTitle) + delete mTitle; + if (aTitle) + mTitle = new nsString(aTitle); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::GetPostData(nsIInputStream ** aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mPostData; + NS_IF_ADDREF(mPostData); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::SetPostData(nsIInputStream * aPostData) +{ + NS_IF_RELEASE(mPostData); + mPostData = aPostData; + NS_IF_ADDREF(aPostData); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::GetLayoutHistoryState(nsISupports ** aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mLayoutHistoryState; + NS_IF_ADDREF(mLayoutHistoryState); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::SetLayoutHistoryState(nsISupports * aState) +{ + NS_IF_RELEASE(mLayoutHistoryState); + mLayoutHistoryState = aState; + NS_IF_ADDREF(aState); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::GetParent(nsISHEntry ** aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mParent; + NS_IF_ADDREF(*aResult); + return NS_OK; +} + + +NS_IMETHODIMP +nsSHEntry::SetParent(nsISHEntry * aParent) +{ + /* parent not Addrefed on purpose to avoid cyclic reference + * Null parent is OK + */ + mParent = aParent; + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::GetChildCount(PRInt32 * aCount) +{ + NS_ENSURE_ARG_POINTER(aCount); + *aCount = mChildren.Count(); + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::AddChild(nsISHEntry * aChild) +{ + NS_ENSURE_ARG_POINTER(aChild); + + NS_ENSURE_SUCCESS(aChild->SetParent(this), NS_ERROR_FAILURE); + mChildren.AppendElement((void *)aChild); + NS_ADDREF(aChild); + + return NS_OK; +} + +NS_IMETHODIMP +nsSHEntry::RemoveChild(nsISHEntry * aChild) +{ + NS_ENSURE_ARG_POINTER(aChild); + PRBool childRemoved = mChildren.RemoveElement((void *)aChild); + if (childRemoved) { + aChild->SetParent(nsnull); + NS_RELEASE(aChild); + } + return NS_OK; +} + + +NS_IMETHODIMP +nsSHEntry::GetChildEnumerator(nsIEnumerator** aChildEnumerator) +{ + nsresult status = NS_OK; + + NS_ENSURE_ARG_POINTER(aChildEnumerator); + nsSHEnumerator * iterator = new nsSHEnumerator(this); + if (iterator && !!NS_SUCCEEDED(status = CallQueryInterface(iterator, aChildEnumerator))) + delete iterator; + return status; +} + + +//***************************************************************************** +//*** nsSHEnumerator: Object Management +//***************************************************************************** + +nsSHEnumerator::nsSHEnumerator(nsSHEntry * aEntry):mIndex(0) +{ + NS_INIT_REFCNT(); + mSHEntry = aEntry; +} + +nsSHEnumerator::~nsSHEnumerator() +{ +} + + +NS_IMETHODIMP +nsSHEnumerator::Next() +{ + mIndex++; + PRUint32 cnt=0; + cnt = mSHEntry->mChildren.Count(); + if (mIndex < (PRInt32)cnt) + return NS_OK; + return NS_ERROR_FAILURE; +} + + +#if 0 +NS_IMETHODIMP +nsSHEnumerator::Prev() +{ + mIndex--; + if (mIndex >= 0 ) + return NS_OK; + return NS_ERROR_FAILURE; +} + +NS_IMETHODIMP +nsSHEnumerator::Last() +{ + PRUint32 cnt; + nsresult rv = mSHEntry->mChildren.Count(&cnt); + if (NS_FAILED(rv)) return rv; + mIndex = (PRInt32)cnt-1; + return NS_OK; +} +#endif /* 0 */ + +NS_IMETHODIMP +nsSHEnumerator::First() +{ + mIndex = 0; + return NS_OK; +} + + +NS_IMETHODIMP +nsSHEnumerator::CurrentItem(nsISupports **aItem) +{ + if (!aItem) + return NS_ERROR_NULL_POINTER; + PRUint32 cnt= mSHEntry->mChildren.Count(); + if (mIndex >=0 && mIndex < (PRInt32)cnt){ + *aItem = (nsISupports *)mSHEntry->mChildren.ElementAt(mIndex); + NS_IF_ADDREF(*aItem); + return NS_OK; + } + return NS_ERROR_FAILURE; +} + +NS_IMPL_ISUPPORTS1(nsSHEnumerator, nsIEnumerator) + + +NS_IMETHODIMP +nsSHEnumerator::CurrentItem(nsISHEntry **aItem) +{ + if (!aItem) + return NS_ERROR_NULL_POINTER; + PRUint32 cnt = mSHEntry->mChildren.Count(); + if (mIndex >=0 && mIndex < (PRInt32)cnt){ + nsCOMPtr indexIsupports = (nsISHEntry *) mSHEntry->mChildren.ElementAt(mIndex); + return indexIsupports->QueryInterface(nsISHEntry::GetIID(),(void **)aItem); + } + return NS_ERROR_FAILURE; +} + + + +NS_IMETHODIMP +nsSHEnumerator::IsDone() +{ + PRUint32 cnt; + cnt = mSHEntry->mChildren.Count(); + if (mIndex >= 0 && mIndex < (PRInt32)cnt ) { + return NS_ENUMERATOR_FALSE; + } + return NS_OK; +} + + +#if 0 +NS_IMETHODIMP +nsRangeListIterator::QueryInterface(REFNSIID aIID, void** aInstancePtr) +{ + if (nsnull == aInstancePtr) { + return NS_ERROR_NULL_POINTER; + } + if (aIID.Equals(nsIEnumerator::GetIID())) { + *aInstancePtr = NS_STATIC_CAST(nsIEnumerator*, this); + NS_ADDREF_THIS(); + return NS_OK; + } + if (aIID.Equals(nsIBidirectionalEnumerator::GetIID())) { + *aInstancePtr = NS_STATIC_CAST(nsIBidirectionalEnumerator*, this); + NS_ADDREF_THIS(); + return NS_OK; + } + return mDomSelection->QueryInterface(aIID, aInstancePtr); +} +#endif + +////////////END nsSHEnumerator methods diff --git a/mozilla/xpfe/components/history/src/nsSHEntry.h b/mozilla/xpfe/components/history/src/nsSHEntry.h index 81cb920af75..196dddfb570 100644 --- a/mozilla/xpfe/components/history/src/nsSHEntry.h +++ b/mozilla/xpfe/components/history/src/nsSHEntry.h @@ -1,59 +1,59 @@ -/* -*- 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): - * Radha Kulkarni - */ - -#ifndef nsSHEntry_h -#define nsSHEntry_h - -#include "nsCOMPtr.h" -#include "nsISHEntry.h" -#include "nsISHContainer.h" -#include "nsVoidArray.h" -#include "nsString.h" - -class nsSHEnumerator; -class nsSHEntry : public nsISHEntry, - public nsISHContainer -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSISHENTRY - NS_DECL_NSISHCONTAINER - -protected: - nsSHEntry(); - virtual ~nsSHEntry(); - void DestroyChildren(); - -private: - friend class nsSHEnumerator; - - nsIURI * mURI; - nsIDOMDocument * mDocument; - nsString * mTitle; - nsIInputStream * mPostData; - nsISupports * mLayoutHistoryState; - nsVoidArray mChildren; - nsISHEntry * mParent; // weak reference to parent - -}; - -#endif /* nsSHEntry_h */ +/* -*- 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): + * Radha Kulkarni + */ + +#ifndef nsSHEntry_h +#define nsSHEntry_h + +#include "nsCOMPtr.h" +#include "nsISHEntry.h" +#include "nsISHContainer.h" +#include "nsVoidArray.h" +#include "nsString.h" + +class nsSHEnumerator; +class nsSHEntry : public nsISHEntry, + public nsISHContainer +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSISHENTRY + NS_DECL_NSISHCONTAINER + +protected: + nsSHEntry(); + virtual ~nsSHEntry(); + void DestroyChildren(); + +private: + friend class nsSHEnumerator; + + nsIURI * mURI; + nsIDOMDocument * mDocument; + nsString * mTitle; + nsIInputStream * mPostData; + nsISupports * mLayoutHistoryState; + nsVoidArray mChildren; + nsISHEntry * mParent; // weak reference to parent + +}; + +#endif /* nsSHEntry_h */ diff --git a/mozilla/xpfe/components/history/src/nsSHTransaction.cpp b/mozilla/xpfe/components/history/src/nsSHTransaction.cpp index 07d7844dffc..f04dc0e3980 100644 --- a/mozilla/xpfe/components/history/src/nsSHTransaction.cpp +++ b/mozilla/xpfe/components/history/src/nsSHTransaction.cpp @@ -1,151 +1,151 @@ -/* -*- 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): - * Radha Kulkarni - */ - -#include "nsISupportsUtils.h" -#include "nsCOMPtr.h" -#include "nsIDOMDocument.h" -#include "nsSHTransaction.h" - - -#ifdef XXX_NS_DEBUG // XXX: we'll need a logging facility for debugging -#define WEB_TRACE(_bit,_args) \ - PR_BEGIN_MACRO \ - if (WEB_LOG_TEST(gLogModule,_bit)) { \ - PR_LogPrint _args; \ - } \ - PR_END_MACRO -#else -#define WEB_TRACE(_bit,_args) -#endif - -NS_IMPL_ISUPPORTS1(nsSHTransaction, nsISHTransaction) - -nsSHTransaction::nsSHTransaction() : mSHEntry(nsnull), mParent(nsnull), - mChild(nsnull), mLRVList(nsnull) -{ -NS_INIT_REFCNT(); -} - - -nsSHTransaction::~nsSHTransaction() -{ - - NS_IF_RELEASE(mSHEntry); - mParent = nsnull; //Weak reference to parent transaction - NS_IF_RELEASE(mChild); - NS_IF_RELEASE(mLRVList); - -} - -NS_IMETHODIMP -nsSHTransaction::Create(nsISHEntry * aSHEntry, nsISHTransaction * aParent) -{ - SetCurrentSHistoryEntry(aSHEntry); - if (aParent) { - // This will correctly set the parent child pointers - - ((nsSHTransaction *)aParent)->SetChild(this); - } - else - SetParent(aParent); - return NS_OK; -} - -NS_IMETHODIMP -nsSHTransaction::GetCurrentSHistoryEntry(nsISHEntry ** aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mSHEntry; - NS_IF_ADDREF(mSHEntry); - return NS_OK; -} - - -nsresult -nsSHTransaction::SetCurrentSHistoryEntry(nsISHEntry * aSHEntry) -{ - NS_IF_RELEASE(mSHEntry); - mSHEntry = aSHEntry; - NS_IF_ADDREF(mSHEntry); - return NS_OK; -} - - -NS_IMETHODIMP -nsSHTransaction::GetChild(nsISHTransaction * * aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mChild; - NS_IF_ADDREF(mChild); - return NS_OK; -} - - -nsresult -nsSHTransaction::SetChild(nsISHTransaction * aChild) -{ - if (mChild) { - // There is already a child. Move the child to the LRV list - if (mLRVList) { - //Delete any old LRV item that was there. - - } - // Make the child the LRV item - - } - NS_ENSURE_SUCCESS(((nsSHTransaction *)aChild)->SetParent(this), NS_ERROR_FAILURE); - mChild = aChild; - NS_IF_ADDREF(aChild); - return NS_OK; -} - - -nsresult -nsSHTransaction::SetParent(nsISHTransaction * aParent) -{ - /* This is weak reference to parent. Do not Addref it */ - mParent = aParent; - return NS_OK; -} - - -nsresult -nsSHTransaction::GetParent(nsISHTransaction ** aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mParent; - NS_IF_ADDREF(*aResult); - return NS_OK; -} - - -NS_IMETHODIMP -nsSHTransaction::GetLrvList(nsISHTransaction ** aResult) -{ - NS_ENSURE_ARG_POINTER(aResult); - *aResult = mLRVList; - NS_IF_ADDREF(mLRVList); - return NS_OK; -} - - - +/* -*- 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): + * Radha Kulkarni + */ + +#include "nsISupportsUtils.h" +#include "nsCOMPtr.h" +#include "nsIDOMDocument.h" +#include "nsSHTransaction.h" + + +#ifdef XXX_NS_DEBUG // XXX: we'll need a logging facility for debugging +#define WEB_TRACE(_bit,_args) \ + PR_BEGIN_MACRO \ + if (WEB_LOG_TEST(gLogModule,_bit)) { \ + PR_LogPrint _args; \ + } \ + PR_END_MACRO +#else +#define WEB_TRACE(_bit,_args) +#endif + +NS_IMPL_ISUPPORTS1(nsSHTransaction, nsISHTransaction) + +nsSHTransaction::nsSHTransaction() : mSHEntry(nsnull), mParent(nsnull), + mChild(nsnull), mLRVList(nsnull) +{ +NS_INIT_REFCNT(); +} + + +nsSHTransaction::~nsSHTransaction() +{ + + NS_IF_RELEASE(mSHEntry); + mParent = nsnull; //Weak reference to parent transaction + NS_IF_RELEASE(mChild); + NS_IF_RELEASE(mLRVList); + +} + +NS_IMETHODIMP +nsSHTransaction::Create(nsISHEntry * aSHEntry, nsISHTransaction * aParent) +{ + SetCurrentSHistoryEntry(aSHEntry); + if (aParent) { + // This will correctly set the parent child pointers + + ((nsSHTransaction *)aParent)->SetChild(this); + } + else + SetParent(aParent); + return NS_OK; +} + +NS_IMETHODIMP +nsSHTransaction::GetCurrentSHistoryEntry(nsISHEntry ** aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mSHEntry; + NS_IF_ADDREF(mSHEntry); + return NS_OK; +} + + +nsresult +nsSHTransaction::SetCurrentSHistoryEntry(nsISHEntry * aSHEntry) +{ + NS_IF_RELEASE(mSHEntry); + mSHEntry = aSHEntry; + NS_IF_ADDREF(mSHEntry); + return NS_OK; +} + + +NS_IMETHODIMP +nsSHTransaction::GetChild(nsISHTransaction * * aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mChild; + NS_IF_ADDREF(mChild); + return NS_OK; +} + + +nsresult +nsSHTransaction::SetChild(nsISHTransaction * aChild) +{ + if (mChild) { + // There is already a child. Move the child to the LRV list + if (mLRVList) { + //Delete any old LRV item that was there. + + } + // Make the child the LRV item + + } + NS_ENSURE_SUCCESS(((nsSHTransaction *)aChild)->SetParent(this), NS_ERROR_FAILURE); + mChild = aChild; + NS_IF_ADDREF(aChild); + return NS_OK; +} + + +nsresult +nsSHTransaction::SetParent(nsISHTransaction * aParent) +{ + /* This is weak reference to parent. Do not Addref it */ + mParent = aParent; + return NS_OK; +} + + +nsresult +nsSHTransaction::GetParent(nsISHTransaction ** aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mParent; + NS_IF_ADDREF(*aResult); + return NS_OK; +} + + +NS_IMETHODIMP +nsSHTransaction::GetLrvList(nsISHTransaction ** aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mLRVList; + NS_IF_ADDREF(mLRVList); + return NS_OK; +} + + + diff --git a/mozilla/xpfe/components/history/src/nsSHTransaction.h b/mozilla/xpfe/components/history/src/nsSHTransaction.h index 058026b7920..462a7fa1c1f 100644 --- a/mozilla/xpfe/components/history/src/nsSHTransaction.h +++ b/mozilla/xpfe/components/history/src/nsSHTransaction.h @@ -1,55 +1,55 @@ -/* -*- 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): - * Radha Kulkarni - */ - -#ifndef nsSHTransaction_h -#define nsSHTransaction_h - -#include "nsISHTransaction.h" -#include "nsISHEntry.h" - -class nsSHTransaction: public nsISHTransaction -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSISHTRANSACTION - - nsSHTransaction(); - -protected: - virtual ~nsSHTransaction(); - - -private: - - nsresult SetChild(nsISHTransaction * aChild); - nsresult SetParent(nsISHTransaction * aParent); - nsresult SetCurrentSHistoryEntry(nsISHEntry * aSHEntry); - - nsISHEntry * mSHEntry; - /* Weak reference to parent */ - nsISHTransaction * mParent; - nsISHTransaction * mChild; - nsISHTransaction * mLRVList; -}; - - -#endif /* nsSHTransaction_h */ \ No newline at end of file +/* -*- 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): + * Radha Kulkarni + */ + +#ifndef nsSHTransaction_h +#define nsSHTransaction_h + +#include "nsISHTransaction.h" +#include "nsISHEntry.h" + +class nsSHTransaction: public nsISHTransaction +{ +public: + NS_DECL_ISUPPORTS + NS_DECL_NSISHTRANSACTION + + nsSHTransaction(); + +protected: + virtual ~nsSHTransaction(); + + +private: + + nsresult SetChild(nsISHTransaction * aChild); + nsresult SetParent(nsISHTransaction * aParent); + nsresult SetCurrentSHistoryEntry(nsISHEntry * aSHEntry); + + nsISHEntry * mSHEntry; + /* Weak reference to parent */ + nsISHTransaction * mParent; + nsISHTransaction * mChild; + nsISHTransaction * mLRVList; +}; + + +#endif /* nsSHTransaction_h */