Make insertRule() calls on a media rule which initially had no children

not fail.  Bug 98931, r=sicking, sr=jst
This commit is contained in:
bzbarsky%mit.edu 2001-09-15 01:27:49 +00:00
Родитель ff33b303ce
Коммит 39e131f2a5
2 изменённых файлов: 28 добавлений и 16 удалений

Просмотреть файл

@ -721,7 +721,7 @@ public:
protected:
nsCOMPtr<nsIMediaList> mMedia;
nsISupportsArray* mRules;
nsCOMPtr<nsISupportsArray> mRules;
CSSGroupRuleRuleListImpl* mRuleCollection;
};
@ -758,7 +758,7 @@ CSSMediaRuleImpl::CSSMediaRuleImpl(const CSSMediaRuleImpl& aCopy)
}
if (aCopy.mRules) {
NS_NewISupportsArray(&mRules);
NS_NewISupportsArray(getter_AddRefs(mRules));
if (mRules) {
aCopy.mRules->EnumerateForwards(CloneRuleInto, mRules);
}
@ -767,7 +767,6 @@ CSSMediaRuleImpl::CSSMediaRuleImpl(const CSSMediaRuleImpl& aCopy)
CSSMediaRuleImpl::~CSSMediaRuleImpl(void)
{
NS_IF_RELEASE(mRules);
if (mMedia) {
mMedia->DropReference();
}
@ -958,10 +957,10 @@ NS_IMETHODIMP
CSSMediaRuleImpl::AppendStyleRule(nsICSSRule* aRule)
{
nsresult result = NS_OK;
if (nsnull == mRules) {
result = NS_NewISupportsArray(&mRules);
if (!mRules) {
result = NS_NewISupportsArray(getter_AddRefs(mRules));
}
if (NS_SUCCEEDED(result) && (nsnull != mRules)) {
if (NS_SUCCEEDED(result) && mRules) {
mRules->AppendElement(aRule);
aRule->SetStyleSheet(mSheet);
if (mSheet) {
@ -1164,8 +1163,13 @@ NS_IMETHODIMP
CSSMediaRuleImpl::InsertRule(nsAReadableString & aRule, PRUint32 aIndex, PRUint32* _retval)
{
NS_ENSURE_TRUE(mSheet, NS_ERROR_FAILURE);
NS_ENSURE_TRUE(mRules, NS_ERROR_FAILURE);
if (!mRules) {
nsresult rv = NS_NewISupportsArray(getter_AddRefs(mRules));
if (NS_FAILED(rv))
return rv;
}
PRUint32 count;
mRules->Count(&count);
if (aIndex > count)
@ -1178,7 +1182,9 @@ NS_IMETHODIMP
CSSMediaRuleImpl::DeleteRule(PRUint32 aIndex)
{
NS_ENSURE_TRUE(mSheet, NS_ERROR_FAILURE);
NS_ENSURE_TRUE(mRules, NS_ERROR_FAILURE);
if (!mRules) {
return NS_ERROR_DOM_INDEX_SIZE_ERR;
}
PRUint32 count;
mRules->Count(&count);

Просмотреть файл

@ -721,7 +721,7 @@ public:
protected:
nsCOMPtr<nsIMediaList> mMedia;
nsISupportsArray* mRules;
nsCOMPtr<nsISupportsArray> mRules;
CSSGroupRuleRuleListImpl* mRuleCollection;
};
@ -758,7 +758,7 @@ CSSMediaRuleImpl::CSSMediaRuleImpl(const CSSMediaRuleImpl& aCopy)
}
if (aCopy.mRules) {
NS_NewISupportsArray(&mRules);
NS_NewISupportsArray(getter_AddRefs(mRules));
if (mRules) {
aCopy.mRules->EnumerateForwards(CloneRuleInto, mRules);
}
@ -767,7 +767,6 @@ CSSMediaRuleImpl::CSSMediaRuleImpl(const CSSMediaRuleImpl& aCopy)
CSSMediaRuleImpl::~CSSMediaRuleImpl(void)
{
NS_IF_RELEASE(mRules);
if (mMedia) {
mMedia->DropReference();
}
@ -958,10 +957,10 @@ NS_IMETHODIMP
CSSMediaRuleImpl::AppendStyleRule(nsICSSRule* aRule)
{
nsresult result = NS_OK;
if (nsnull == mRules) {
result = NS_NewISupportsArray(&mRules);
if (!mRules) {
result = NS_NewISupportsArray(getter_AddRefs(mRules));
}
if (NS_SUCCEEDED(result) && (nsnull != mRules)) {
if (NS_SUCCEEDED(result) && mRules) {
mRules->AppendElement(aRule);
aRule->SetStyleSheet(mSheet);
if (mSheet) {
@ -1164,8 +1163,13 @@ NS_IMETHODIMP
CSSMediaRuleImpl::InsertRule(nsAReadableString & aRule, PRUint32 aIndex, PRUint32* _retval)
{
NS_ENSURE_TRUE(mSheet, NS_ERROR_FAILURE);
NS_ENSURE_TRUE(mRules, NS_ERROR_FAILURE);
if (!mRules) {
nsresult rv = NS_NewISupportsArray(getter_AddRefs(mRules));
if (NS_FAILED(rv))
return rv;
}
PRUint32 count;
mRules->Count(&count);
if (aIndex > count)
@ -1178,7 +1182,9 @@ NS_IMETHODIMP
CSSMediaRuleImpl::DeleteRule(PRUint32 aIndex)
{
NS_ENSURE_TRUE(mSheet, NS_ERROR_FAILURE);
NS_ENSURE_TRUE(mRules, NS_ERROR_FAILURE);
if (!mRules) {
return NS_ERROR_DOM_INDEX_SIZE_ERR;
}
PRUint32 count;
mRules->Count(&count);