зеркало из 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()
|
nsHTMLDocument::nsHTMLDocument()
|
||||||
: nsMarkupDocument(),
|
: nsMarkupDocument(),
|
||||||
mAttrStyleSheet(nsnull),
|
mAttrStyleSheet(nsnull),
|
||||||
mStyleAttrStyleSheet(nsnull)
|
mStyleAttrStyleSheet(nsnull),
|
||||||
|
mBaseURL(nsnull),
|
||||||
|
mBaseTarget(nsnull)
|
||||||
{
|
{
|
||||||
mImages = nsnull;
|
mImages = nsnull;
|
||||||
mApplets = nsnull;
|
mApplets = nsnull;
|
||||||
|
@ -140,6 +142,11 @@ nsHTMLDocument::~nsHTMLDocument()
|
||||||
mStyleAttrStyleSheet->SetOwningDocument(nsnull);
|
mStyleAttrStyleSheet->SetOwningDocument(nsnull);
|
||||||
NS_RELEASE(mStyleAttrStyleSheet);
|
NS_RELEASE(mStyleAttrStyleSheet);
|
||||||
}
|
}
|
||||||
|
NS_IF_RELEASE(mBaseURL);
|
||||||
|
if (nsnull != mBaseTarget) {
|
||||||
|
delete mBaseTarget;
|
||||||
|
mBaseTarget = nsnull;
|
||||||
|
}
|
||||||
NS_IF_RELEASE(mParser);
|
NS_IF_RELEASE(mParser);
|
||||||
for (i = 0; i < mImageMaps.Count(); i++) {
|
for (i = 0; i < mImageMaps.Count(); i++) {
|
||||||
nsIDOMHTMLMapElement* map = (nsIDOMHTMLMapElement*)mImageMaps.ElementAt(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
|
NS_IMETHODIMP
|
||||||
nsHTMLDocument::GetDTDMode(nsDTDMode& aMode)
|
nsHTMLDocument::GetDTDMode(nsDTDMode& aMode)
|
||||||
{
|
{
|
||||||
|
|
|
@ -64,6 +64,11 @@ public:
|
||||||
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aStyleSheet);
|
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aStyleSheet);
|
||||||
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** 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 GetDTDMode(nsDTDMode& aMode);
|
||||||
NS_IMETHOD SetDTDMode(nsDTDMode aMode);
|
NS_IMETHOD SetDTDMode(nsDTDMode aMode);
|
||||||
|
|
||||||
|
@ -184,6 +189,8 @@ protected:
|
||||||
|
|
||||||
nsIHTMLStyleSheet* mAttrStyleSheet;
|
nsIHTMLStyleSheet* mAttrStyleSheet;
|
||||||
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
|
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
|
||||||
|
nsIURL* mBaseURL;
|
||||||
|
nsString* mBaseTarget;
|
||||||
nsDTDMode mDTDMode;
|
nsDTDMode mDTDMode;
|
||||||
nsVoidArray mImageMaps;
|
nsVoidArray mImageMaps;
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,11 @@ public:
|
||||||
|
|
||||||
NS_IMETHOD GetForms(nsIDOMHTMLCollection** aForms) = 0;
|
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
|
* Access DTD compatibility mode for this document
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -92,7 +92,9 @@ NS_NewHTMLDocument(nsIDocument** aInstancePtrResult)
|
||||||
nsHTMLDocument::nsHTMLDocument()
|
nsHTMLDocument::nsHTMLDocument()
|
||||||
: nsMarkupDocument(),
|
: nsMarkupDocument(),
|
||||||
mAttrStyleSheet(nsnull),
|
mAttrStyleSheet(nsnull),
|
||||||
mStyleAttrStyleSheet(nsnull)
|
mStyleAttrStyleSheet(nsnull),
|
||||||
|
mBaseURL(nsnull),
|
||||||
|
mBaseTarget(nsnull)
|
||||||
{
|
{
|
||||||
mImages = nsnull;
|
mImages = nsnull;
|
||||||
mApplets = nsnull;
|
mApplets = nsnull;
|
||||||
|
@ -140,6 +142,11 @@ nsHTMLDocument::~nsHTMLDocument()
|
||||||
mStyleAttrStyleSheet->SetOwningDocument(nsnull);
|
mStyleAttrStyleSheet->SetOwningDocument(nsnull);
|
||||||
NS_RELEASE(mStyleAttrStyleSheet);
|
NS_RELEASE(mStyleAttrStyleSheet);
|
||||||
}
|
}
|
||||||
|
NS_IF_RELEASE(mBaseURL);
|
||||||
|
if (nsnull != mBaseTarget) {
|
||||||
|
delete mBaseTarget;
|
||||||
|
mBaseTarget = nsnull;
|
||||||
|
}
|
||||||
NS_IF_RELEASE(mParser);
|
NS_IF_RELEASE(mParser);
|
||||||
for (i = 0; i < mImageMaps.Count(); i++) {
|
for (i = 0; i < mImageMaps.Count(); i++) {
|
||||||
nsIDOMHTMLMapElement* map = (nsIDOMHTMLMapElement*)mImageMaps.ElementAt(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
|
NS_IMETHODIMP
|
||||||
nsHTMLDocument::GetDTDMode(nsDTDMode& aMode)
|
nsHTMLDocument::GetDTDMode(nsDTDMode& aMode)
|
||||||
{
|
{
|
||||||
|
|
|
@ -64,6 +64,11 @@ public:
|
||||||
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aStyleSheet);
|
NS_IMETHOD GetAttributeStyleSheet(nsIHTMLStyleSheet** aStyleSheet);
|
||||||
NS_IMETHOD GetInlineStyleSheet(nsIHTMLCSSStyleSheet** 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 GetDTDMode(nsDTDMode& aMode);
|
||||||
NS_IMETHOD SetDTDMode(nsDTDMode aMode);
|
NS_IMETHOD SetDTDMode(nsDTDMode aMode);
|
||||||
|
|
||||||
|
@ -184,6 +189,8 @@ protected:
|
||||||
|
|
||||||
nsIHTMLStyleSheet* mAttrStyleSheet;
|
nsIHTMLStyleSheet* mAttrStyleSheet;
|
||||||
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
|
nsIHTMLCSSStyleSheet* mStyleAttrStyleSheet;
|
||||||
|
nsIURL* mBaseURL;
|
||||||
|
nsString* mBaseTarget;
|
||||||
nsDTDMode mDTDMode;
|
nsDTDMode mDTDMode;
|
||||||
nsVoidArray mImageMaps;
|
nsVoidArray mImageMaps;
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,11 @@ public:
|
||||||
|
|
||||||
NS_IMETHOD GetForms(nsIDOMHTMLCollection** aForms) = 0;
|
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
|
* Access DTD compatibility mode for this document
|
||||||
*/
|
*/
|
||||||
|
|
Загрузка…
Ссылка в новой задаче