зеркало из https://github.com/mozilla/gecko-dev.git
better base url and target support
Checkin during red tree approved by sar
This commit is contained in:
Родитель
bd2008b38c
Коммит
1ccd2192a7
|
@ -92,7 +92,9 @@ NS_NewHTMLDocument(nsIDocument** aInstancePtrResult)
|
|||
nsHTMLDocument::nsHTMLDocument()
|
||||
: nsMarkupDocument(),
|
||||
mAttrStyleSheet(nsnull),
|
||||
mStyleAttrStyleSheet(nsnull)
|
||||
mStyleAttrStyleSheet(nsnull),
|
||||
mBaseURL(nsnull),
|
||||
mBaseTarget(nsnull)
|
||||
{
|
||||
mImages = nsnull;
|
||||
mApplets = nsnull;
|
||||
|
@ -140,6 +142,11 @@ nsHTMLDocument::~nsHTMLDocument()
|
|||
mStyleAttrStyleSheet->SetOwningDocument(nsnull);
|
||||
NS_RELEASE(mStyleAttrStyleSheet);
|
||||
}
|
||||
NS_IF_RELEASE(mBaseURL);
|
||||
if (nsnull != mBaseTarget) {
|
||||
delete mBaseTarget;
|
||||
mBaseTarget = nsnull;
|
||||
}
|
||||
NS_IF_RELEASE(mParser);
|
||||
for (i = 0; i < mImageMaps.Count(); i++) {
|
||||
nsIDOMHTMLMapElement* map = (nsIDOMHTMLMapElement*)mImageMaps.ElementAt(i);
|
||||
|
@ -430,6 +437,73 @@ void nsHTMLDocument::AddStyleSheetToSet(nsIStyleSheet* aSheet, nsIStyleSet* aSet
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument::GetBaseURL(nsIURL*& aURL) const
|
||||
{
|
||||
if (nsnull != mBaseURL) {
|
||||
NS_ADDREF(mBaseURL);
|
||||
aURL = mBaseURL;
|
||||
}
|
||||
else {
|
||||
aURL = GetDocumentURL();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument:: SetBaseURL(const nsString& aURLSpec)
|
||||
{
|
||||
nsresult result = NS_OK;
|
||||
|
||||
NS_IF_RELEASE(mBaseURL);
|
||||
if (0 < aURLSpec.Length()) {
|
||||
nsIURLGroup* urlGroup = nsnull;
|
||||
(void)mDocumentURL->GetURLGroup(&urlGroup);
|
||||
if (urlGroup) {
|
||||
result = urlGroup->CreateURL(&mBaseURL, mDocumentURL, aURLSpec, nsnull);
|
||||
NS_RELEASE(urlGroup);
|
||||
}
|
||||
else {
|
||||
result = NS_NewURL(&mBaseURL, aURLSpec, mDocumentURL);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument:: GetBaseTarget(nsString& aTarget) const
|
||||
{
|
||||
if (nsnull != mBaseTarget) {
|
||||
aTarget = *mBaseTarget;
|
||||
}
|
||||
else {
|
||||
aTarget.Truncate();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument:: SetBaseTarget(const nsString& aTarget)
|
||||
{
|
||||
if (0 < aTarget.Length()) {
|
||||
if (nsnull != mBaseTarget) {
|
||||
*mBaseTarget = aTarget;
|
||||
}
|
||||
else {
|
||||
mBaseTarget = aTarget.ToNewString();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (nsnull != mBaseTarget) {
|
||||
delete mBaseTarget;
|
||||
mBaseTarget = nsnull;
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument::GetDTDMode(nsDTDMode& aMode)
|
||||
{
|
||||
|
|
|
@ -64,6 +64,11 @@ public:
|
|||
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aStyleSheet);
|
||||
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aStyleSheet);
|
||||
|
||||
NS_IMETHOD GetBaseURL(nsIURL*& aURL) const;
|
||||
NS_IMETHOD SetBaseURL(const nsString& aURLSpec);
|
||||
NS_IMETHOD GetBaseTarget(nsString& aTarget) const;
|
||||
NS_IMETHOD SetBaseTarget(const nsString& aTarget);
|
||||
|
||||
NS_IMETHOD GetDTDMode(nsDTDMode& aMode);
|
||||
NS_IMETHOD SetDTDMode(nsDTDMode aMode);
|
||||
|
||||
|
@ -184,6 +189,8 @@ protected:
|
|||
|
||||
nsIHTMLStyleSheet* mAttrStyleSheet;
|
||||
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
|
||||
nsIURL* mBaseURL;
|
||||
nsString* mBaseTarget;
|
||||
nsDTDMode mDTDMode;
|
||||
nsVoidArray mImageMaps;
|
||||
|
||||
|
|
|
@ -52,6 +52,11 @@ public:
|
|||
|
||||
NS_IMETHOD GetForms(nsIDOMHTMLCollection** aForms) = 0;
|
||||
|
||||
NS_IMETHOD SetBaseURL(const nsString& aURLSpec) = 0;
|
||||
|
||||
NS_IMETHOD GetBaseTarget(nsString& aTarget) const = 0;
|
||||
NS_IMETHOD SetBaseTarget(const nsString& aTarget) = 0;
|
||||
|
||||
/**
|
||||
* Access DTD compatibility mode for this document
|
||||
*/
|
||||
|
|
|
@ -92,7 +92,9 @@ NS_NewHTMLDocument(nsIDocument** aInstancePtrResult)
|
|||
nsHTMLDocument::nsHTMLDocument()
|
||||
: nsMarkupDocument(),
|
||||
mAttrStyleSheet(nsnull),
|
||||
mStyleAttrStyleSheet(nsnull)
|
||||
mStyleAttrStyleSheet(nsnull),
|
||||
mBaseURL(nsnull),
|
||||
mBaseTarget(nsnull)
|
||||
{
|
||||
mImages = nsnull;
|
||||
mApplets = nsnull;
|
||||
|
@ -140,6 +142,11 @@ nsHTMLDocument::~nsHTMLDocument()
|
|||
mStyleAttrStyleSheet->SetOwningDocument(nsnull);
|
||||
NS_RELEASE(mStyleAttrStyleSheet);
|
||||
}
|
||||
NS_IF_RELEASE(mBaseURL);
|
||||
if (nsnull != mBaseTarget) {
|
||||
delete mBaseTarget;
|
||||
mBaseTarget = nsnull;
|
||||
}
|
||||
NS_IF_RELEASE(mParser);
|
||||
for (i = 0; i < mImageMaps.Count(); i++) {
|
||||
nsIDOMHTMLMapElement* map = (nsIDOMHTMLMapElement*)mImageMaps.ElementAt(i);
|
||||
|
@ -430,6 +437,73 @@ void nsHTMLDocument::AddStyleSheetToSet(nsIStyleSheet* aSheet, nsIStyleSet* aSet
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument::GetBaseURL(nsIURL*& aURL) const
|
||||
{
|
||||
if (nsnull != mBaseURL) {
|
||||
NS_ADDREF(mBaseURL);
|
||||
aURL = mBaseURL;
|
||||
}
|
||||
else {
|
||||
aURL = GetDocumentURL();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument:: SetBaseURL(const nsString& aURLSpec)
|
||||
{
|
||||
nsresult result = NS_OK;
|
||||
|
||||
NS_IF_RELEASE(mBaseURL);
|
||||
if (0 < aURLSpec.Length()) {
|
||||
nsIURLGroup* urlGroup = nsnull;
|
||||
(void)mDocumentURL->GetURLGroup(&urlGroup);
|
||||
if (urlGroup) {
|
||||
result = urlGroup->CreateURL(&mBaseURL, mDocumentURL, aURLSpec, nsnull);
|
||||
NS_RELEASE(urlGroup);
|
||||
}
|
||||
else {
|
||||
result = NS_NewURL(&mBaseURL, aURLSpec, mDocumentURL);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument:: GetBaseTarget(nsString& aTarget) const
|
||||
{
|
||||
if (nsnull != mBaseTarget) {
|
||||
aTarget = *mBaseTarget;
|
||||
}
|
||||
else {
|
||||
aTarget.Truncate();
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument:: SetBaseTarget(const nsString& aTarget)
|
||||
{
|
||||
if (0 < aTarget.Length()) {
|
||||
if (nsnull != mBaseTarget) {
|
||||
*mBaseTarget = aTarget;
|
||||
}
|
||||
else {
|
||||
mBaseTarget = aTarget.ToNewString();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (nsnull != mBaseTarget) {
|
||||
delete mBaseTarget;
|
||||
mBaseTarget = nsnull;
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsHTMLDocument::GetDTDMode(nsDTDMode& aMode)
|
||||
{
|
||||
|
|
|
@ -64,6 +64,11 @@ public:
|
|||
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aStyleSheet);
|
||||
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** aStyleSheet);
|
||||
|
||||
NS_IMETHOD GetBaseURL(nsIURL*& aURL) const;
|
||||
NS_IMETHOD SetBaseURL(const nsString& aURLSpec);
|
||||
NS_IMETHOD GetBaseTarget(nsString& aTarget) const;
|
||||
NS_IMETHOD SetBaseTarget(const nsString& aTarget);
|
||||
|
||||
NS_IMETHOD GetDTDMode(nsDTDMode& aMode);
|
||||
NS_IMETHOD SetDTDMode(nsDTDMode aMode);
|
||||
|
||||
|
@ -184,6 +189,8 @@ protected:
|
|||
|
||||
nsIHTMLStyleSheet* mAttrStyleSheet;
|
||||
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
|
||||
nsIURL* mBaseURL;
|
||||
nsString* mBaseTarget;
|
||||
nsDTDMode mDTDMode;
|
||||
nsVoidArray mImageMaps;
|
||||
|
||||
|
|
|
@ -52,6 +52,11 @@ public:
|
|||
|
||||
NS_IMETHOD GetForms(nsIDOMHTMLCollection** aForms) = 0;
|
||||
|
||||
NS_IMETHOD SetBaseURL(const nsString& aURLSpec) = 0;
|
||||
|
||||
NS_IMETHOD GetBaseTarget(nsString& aTarget) const = 0;
|
||||
NS_IMETHOD SetBaseTarget(const nsString& aTarget) = 0;
|
||||
|
||||
/**
|
||||
* Access DTD compatibility mode for this document
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче