add S/GetLineBreaker to nsIDocument.h. Reviewed by kipp and waterson

This commit is contained in:
ftang%netscape.com 1999-02-23 03:31:26 +00:00
parent a8d0ce0e89
commit 02b8de88ba
10 changed files with 207 additions and 1 deletions

View File

@ -50,6 +50,7 @@ class nsXIFConverter;
class nsINameSpaceManager;
class nsIDOMSelection;
class nsIDOMDocumentFragment;
class nsILineBreaker;
// IID for the nsIDocument interface
#define NS_IDOCUMENT_IID \
@ -111,6 +112,12 @@ public:
virtual nsString* GetDocumentCharacterSet() const = 0;
virtual void SetDocumentCharacterSet(nsString* aCharSetID) = 0;
/**
* Return the Line Breaker for the document
*/
NS_IMETHOD GetLineBreaker(nsILineBreaker** aResult) = 0;
NS_IMETHOD SetLineBreaker(nsILineBreaker* aLineBreaker) = 0;
/**
* Access HTTP header data (this may also get set from other sources, like
* HTML META tags).

View File

@ -95,6 +95,12 @@ static NS_DEFINE_IID(kIEnumeratorIID, NS_IENUMERATOR_IID);
static NS_DEFINE_IID(kIDOMScriptObjectFactoryIID, NS_IDOM_SCRIPT_OBJECT_FACTORY_IID);
static NS_DEFINE_IID(kDOMScriptObjectFactoryCID, NS_DOM_SCRIPT_OBJECT_FACTORY_CID);
#include "nsILineBreakerFactory.h"
#include "nsLWBrkCIID.h"
static NS_DEFINE_IID(kLWBrkCID, NS_LWBRK_CID);
static NS_DEFINE_IID(kILineBreakerFactoryIID, NS_ILINEBREAKERFACTORY_IID);
class nsDOMStyleSheetCollection : public nsIDOMStyleSheetCollection,
public nsIScriptObjectOwner,
public nsIDocumentObserver
@ -561,6 +567,7 @@ nsDocument::nsDocument()
mDOMStyleSheets = nsnull;
mNameSpaceManager = nsnull;
mHeaderData = nsnull;
mLineBreaker = nsnull;
Init();/* XXX */
}
@ -614,6 +621,7 @@ nsDocument::~nsDocument()
delete mHeaderData;
mHeaderData = nsnull;
}
NS_IF_RELEASE(mLineBreaker);
}
nsresult nsDocument::QueryInterface(REFNSIID aIID, void** aInstancePtr)
@ -803,6 +811,37 @@ void nsDocument::SetDocumentCharacterSet(nsString* aCharSetID)
mCharacterSet = aCharSetID;
}
NS_IMETHODIMP nsDocument::GetLineBreaker(nsILineBreaker** aResult)
{
if(nsnull == mLineBreaker ) {
// no line breaker, find a default one
nsILineBreakerFactory *lf;
nsresult result;
result = nsServiceManager::GetService(kLWBrkCID,
kILineBreakerFactoryIID,
(nsISupports **)&lf);
if (NS_SUCCEEDED(result)) {
nsILineBreaker *lb = nsnull ;
nsAutoString lbarg("");
result = lf->GetBreaker(lbarg, &lb);
if(NS_SUCCEEDED(result)) {
mLineBreaker = lb;
}
result = nsServiceManager::ReleaseService(kLWBrkCID, lf);
}
}
*aResult = mLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK; // XXX we should do error handling here
}
NS_IMETHODIMP nsDocument::SetLineBreaker(nsILineBreaker* aLineBreaker)
{
NS_IF_RELEASE(mLineBreaker);
mLineBreaker = aLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK;
}
NS_IMETHODIMP
nsDocument::GetHeaderData(nsIAtom* aHeaderField, nsString& aData) const
{

View File

@ -121,6 +121,12 @@ public:
virtual nsString* GetDocumentCharacterSet() const;
virtual void SetDocumentCharacterSet(nsString* aCharSetID);
/**
* Return the Line Breaker for the document
*/
NS_IMETHOD GetLineBreaker(nsILineBreaker** aResult) ;
NS_IMETHOD SetLineBreaker(nsILineBreaker* aLineBreaker) ;
/**
* Access HTTP header data (this may also get set from other sources, like
* HTML META tags).
@ -362,6 +368,7 @@ protected:
nsDOMStyleSheetCollection *mDOMStyleSheets;
nsINameSpaceManager* mNameSpaceManager;
nsDocHeaderData* mHeaderData;
nsILineBreaker* mLineBreaker;
};
#endif /* nsDocument_h___ */

View File

@ -83,6 +83,9 @@
#include "plstr.h"
#include "rdfutil.h"
#include "nsILineBreakerFactory.h"
#include "nsLWBrkCIID.h"
////////////////////////////////////////////////////////////////////////
static NS_DEFINE_IID(kICSSParserIID, NS_ICSS_PARSER_IID); // XXX grr..
@ -128,6 +131,9 @@ static NS_DEFINE_CID(kWellFormedDTDCID, NS_WELLFORMEDDTD_CID);
static NS_DEFINE_CID(kXULContentSinkCID, NS_XULCONTENTSINK_CID);
static NS_DEFINE_CID(kXULDataSourceCID, NS_XULDATASOURCE_CID);
static NS_DEFINE_IID(kLWBrkCID, NS_LWBRK_CID);
static NS_DEFINE_IID(kILineBreakerFactoryIID, NS_ILINEBREAKERFACTORY_IID);
////////////////////////////////////////////////////////////////////////
enum nsContentType {
@ -334,6 +340,9 @@ public:
virtual void SetDocumentCharacterSet(nsString* aCharSetID);
NS_IMETHOD GetLineBreaker(nsILineBreaker** aResult) ;
NS_IMETHOD SetLineBreaker(nsILineBreaker* aLineBreaker) ;
NS_IMETHOD GetHeaderData(nsIAtom* aHeaderField, nsString& aData) const;
NS_IMETHOD SetHeaderData(nsIAtom* aheaderField, const nsString& aData);
@ -591,6 +600,7 @@ protected:
nsIRDFDataSource* mLocalDataSource;
nsIRDFDataSource* mDocumentDataSource;
nsIParser* mParser;
nsILineBreaker* mLineBreaker;
};
@ -614,10 +624,12 @@ XULDocumentImpl::XULDocumentImpl(void)
mXULBuilder(nsnull),
mLocalDataSource(nsnull),
mDocumentDataSource(nsnull),
mLineBreaker(nsnull),
mParser(nsnull)
{
NS_INIT_REFCNT();
nsresult rv;
// construct a selection object
@ -650,6 +662,7 @@ XULDocumentImpl::~XULDocumentImpl()
NS_IF_RELEASE(mArena);
NS_IF_RELEASE(mNameSpaceManager);
NS_IF_RELEASE(mParser);
NS_IF_RELEASE(mLineBreaker);
}
@ -960,6 +973,42 @@ XULDocumentImpl::SetDocumentCharacterSet(nsString* aCharSetID)
mCharSetID = aCharSetID;
}
NS_IMETHODIMP
XULDocumentImpl::GetLineBreaker(nsILineBreaker** aResult)
{
if(nsnull == mLineBreaker ) {
// no line breaker, find a default one
nsILineBreakerFactory *lf;
nsresult result;
result = nsServiceManager::GetService(kLWBrkCID,
kILineBreakerFactoryIID,
(nsISupports **)&lf);
if (NS_SUCCEEDED(result)) {
nsILineBreaker *lb = nsnull ;
nsAutoString lbarg("");
result = lf->GetBreaker(lbarg, &lb);
if(NS_SUCCEEDED(result)) {
mLineBreaker = lb;
}
result = nsServiceManager::ReleaseService(kLWBrkCID, lf);
}
}
*aResult = mLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK; // XXX we should do error handling here
}
NS_IMETHODIMP
XULDocumentImpl::SetLineBreaker(nsILineBreaker* aLineBreaker)
{
NS_IF_RELEASE(mLineBreaker);
mLineBreaker = aLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK;
}
NS_IMETHODIMP
XULDocumentImpl::GetHeaderData(nsIAtom* aHeaderField, nsString& aData) const
{

View File

@ -50,6 +50,7 @@ class nsXIFConverter;
class nsINameSpaceManager;
class nsIDOMSelection;
class nsIDOMDocumentFragment;
class nsILineBreaker;
// IID for the nsIDocument interface
#define NS_IDOCUMENT_IID \
@ -111,6 +112,12 @@ public:
virtual nsString* GetDocumentCharacterSet() const = 0;
virtual void SetDocumentCharacterSet(nsString* aCharSetID) = 0;
/**
* Return the Line Breaker for the document
*/
NS_IMETHOD GetLineBreaker(nsILineBreaker** aResult) = 0;
NS_IMETHOD SetLineBreaker(nsILineBreaker* aLineBreaker) = 0;
/**
* Access HTTP header data (this may also get set from other sources, like
* HTML META tags).

View File

@ -95,7 +95,8 @@ CPP_OBJS= \
LINCS=-I$(PUBLIC)\xpcom -I$(PUBLIC)\raptor \
-I$(PUBLIC)\dom -I$(PUBLIC)\js -I$(PUBLIC)\netlib \
-I$(PUBLIC)\pref -I..\..\html\base\src -I..\..\html\style\src
-I$(PUBLIC)\pref -I..\..\html\base\src -I..\..\html\style\src \
-I$(PUBLIC)\lwbrk
LCFLAGS = \
$(LCFLAGS) \

View File

@ -95,6 +95,12 @@ static NS_DEFINE_IID(kIEnumeratorIID, NS_IENUMERATOR_IID);
static NS_DEFINE_IID(kIDOMScriptObjectFactoryIID, NS_IDOM_SCRIPT_OBJECT_FACTORY_IID);
static NS_DEFINE_IID(kDOMScriptObjectFactoryCID, NS_DOM_SCRIPT_OBJECT_FACTORY_CID);
#include "nsILineBreakerFactory.h"
#include "nsLWBrkCIID.h"
static NS_DEFINE_IID(kLWBrkCID, NS_LWBRK_CID);
static NS_DEFINE_IID(kILineBreakerFactoryIID, NS_ILINEBREAKERFACTORY_IID);
class nsDOMStyleSheetCollection : public nsIDOMStyleSheetCollection,
public nsIScriptObjectOwner,
public nsIDocumentObserver
@ -561,6 +567,7 @@ nsDocument::nsDocument()
mDOMStyleSheets = nsnull;
mNameSpaceManager = nsnull;
mHeaderData = nsnull;
mLineBreaker = nsnull;
Init();/* XXX */
}
@ -614,6 +621,7 @@ nsDocument::~nsDocument()
delete mHeaderData;
mHeaderData = nsnull;
}
NS_IF_RELEASE(mLineBreaker);
}
nsresult nsDocument::QueryInterface(REFNSIID aIID, void** aInstancePtr)
@ -803,6 +811,37 @@ void nsDocument::SetDocumentCharacterSet(nsString* aCharSetID)
mCharacterSet = aCharSetID;
}
NS_IMETHODIMP nsDocument::GetLineBreaker(nsILineBreaker** aResult)
{
if(nsnull == mLineBreaker ) {
// no line breaker, find a default one
nsILineBreakerFactory *lf;
nsresult result;
result = nsServiceManager::GetService(kLWBrkCID,
kILineBreakerFactoryIID,
(nsISupports **)&lf);
if (NS_SUCCEEDED(result)) {
nsILineBreaker *lb = nsnull ;
nsAutoString lbarg("");
result = lf->GetBreaker(lbarg, &lb);
if(NS_SUCCEEDED(result)) {
mLineBreaker = lb;
}
result = nsServiceManager::ReleaseService(kLWBrkCID, lf);
}
}
*aResult = mLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK; // XXX we should do error handling here
}
NS_IMETHODIMP nsDocument::SetLineBreaker(nsILineBreaker* aLineBreaker)
{
NS_IF_RELEASE(mLineBreaker);
mLineBreaker = aLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK;
}
NS_IMETHODIMP
nsDocument::GetHeaderData(nsIAtom* aHeaderField, nsString& aData) const
{

View File

@ -121,6 +121,12 @@ public:
virtual nsString* GetDocumentCharacterSet() const;
virtual void SetDocumentCharacterSet(nsString* aCharSetID);
/**
* Return the Line Breaker for the document
*/
NS_IMETHOD GetLineBreaker(nsILineBreaker** aResult) ;
NS_IMETHOD SetLineBreaker(nsILineBreaker* aLineBreaker) ;
/**
* Access HTTP header data (this may also get set from other sources, like
* HTML META tags).
@ -362,6 +368,7 @@ protected:
nsDOMStyleSheetCollection *mDOMStyleSheets;
nsINameSpaceManager* mNameSpaceManager;
nsDocHeaderData* mHeaderData;
nsILineBreaker* mLineBreaker;
};
#endif /* nsDocument_h___ */

View File

@ -48,6 +48,7 @@ LINCS= -I$(PUBLIC)\rdf \
-I$(PUBLIC)\xpcom \
-I$(PUBLIC)\netlib \
-I$(PUBLIC)\raptor \
-I$(PUBLIC)\lwbrk \
-I$(PUBLIC)\js \
-I$(PUBLIC)\dom \
-I$(DEPTH)\rdf\base\src \

View File

@ -83,6 +83,9 @@
#include "plstr.h"
#include "rdfutil.h"
#include "nsILineBreakerFactory.h"
#include "nsLWBrkCIID.h"
////////////////////////////////////////////////////////////////////////
static NS_DEFINE_IID(kICSSParserIID, NS_ICSS_PARSER_IID); // XXX grr..
@ -128,6 +131,9 @@ static NS_DEFINE_CID(kWellFormedDTDCID, NS_WELLFORMEDDTD_CID);
static NS_DEFINE_CID(kXULContentSinkCID, NS_XULCONTENTSINK_CID);
static NS_DEFINE_CID(kXULDataSourceCID, NS_XULDATASOURCE_CID);
static NS_DEFINE_IID(kLWBrkCID, NS_LWBRK_CID);
static NS_DEFINE_IID(kILineBreakerFactoryIID, NS_ILINEBREAKERFACTORY_IID);
////////////////////////////////////////////////////////////////////////
enum nsContentType {
@ -334,6 +340,9 @@ public:
virtual void SetDocumentCharacterSet(nsString* aCharSetID);
NS_IMETHOD GetLineBreaker(nsILineBreaker** aResult) ;
NS_IMETHOD SetLineBreaker(nsILineBreaker* aLineBreaker) ;
NS_IMETHOD GetHeaderData(nsIAtom* aHeaderField, nsString& aData) const;
NS_IMETHOD SetHeaderData(nsIAtom* aheaderField, const nsString& aData);
@ -591,6 +600,7 @@ protected:
nsIRDFDataSource* mLocalDataSource;
nsIRDFDataSource* mDocumentDataSource;
nsIParser* mParser;
nsILineBreaker* mLineBreaker;
};
@ -614,10 +624,12 @@ XULDocumentImpl::XULDocumentImpl(void)
mXULBuilder(nsnull),
mLocalDataSource(nsnull),
mDocumentDataSource(nsnull),
mLineBreaker(nsnull),
mParser(nsnull)
{
NS_INIT_REFCNT();
nsresult rv;
// construct a selection object
@ -650,6 +662,7 @@ XULDocumentImpl::~XULDocumentImpl()
NS_IF_RELEASE(mArena);
NS_IF_RELEASE(mNameSpaceManager);
NS_IF_RELEASE(mParser);
NS_IF_RELEASE(mLineBreaker);
}
@ -960,6 +973,42 @@ XULDocumentImpl::SetDocumentCharacterSet(nsString* aCharSetID)
mCharSetID = aCharSetID;
}
NS_IMETHODIMP
XULDocumentImpl::GetLineBreaker(nsILineBreaker** aResult)
{
if(nsnull == mLineBreaker ) {
// no line breaker, find a default one
nsILineBreakerFactory *lf;
nsresult result;
result = nsServiceManager::GetService(kLWBrkCID,
kILineBreakerFactoryIID,
(nsISupports **)&lf);
if (NS_SUCCEEDED(result)) {
nsILineBreaker *lb = nsnull ;
nsAutoString lbarg("");
result = lf->GetBreaker(lbarg, &lb);
if(NS_SUCCEEDED(result)) {
mLineBreaker = lb;
}
result = nsServiceManager::ReleaseService(kLWBrkCID, lf);
}
}
*aResult = mLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK; // XXX we should do error handling here
}
NS_IMETHODIMP
XULDocumentImpl::SetLineBreaker(nsILineBreaker* aLineBreaker)
{
NS_IF_RELEASE(mLineBreaker);
mLineBreaker = aLineBreaker;
NS_IF_ADDREF(mLineBreaker);
return NS_OK;
}
NS_IMETHODIMP
XULDocumentImpl::GetHeaderData(nsIAtom* aHeaderField, nsString& aData) const
{