Adjusted the ownership model slightly. URLs no longer `own' their container or their URL group

git-svn-id: svn://10.0.0.236/trunk@29326 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
scc%netscape.com
1999-04-27 01:29:23 +00:00
parent b715e7c879
commit d75801144d
2 changed files with 20 additions and 25 deletions

View File

@@ -55,26 +55,22 @@ nsHttpUrlImpl::nsHttpUrlImpl(nsISupports* aContainer, nsIURLGroup* aGroup)
mPort = -1;
mSpec = nsnull;
mSearch = nsnull;
mPostData = nsnull;
mContainer = nsnull;
mLoadAttribs = nsnull;
mURLGroup = aGroup;
NS_NewLoadAttribs(&mLoadAttribs);
NS_NewLoadAttribs( getter_AddRefs(mLoadAttribs) );
NS_IF_ADDREF(mURLGroup);
// NS_IF_ADDREF(mURLGroup); --- a url should not own its group, its group already owns it
mContainer = aContainer;
NS_IF_ADDREF(mContainer);
// NS_IF_ADDREF(mContainer); --- a url should not own its container, its container already owns it
// ParseURL(aSpec, aURL); // XXX whh
}
nsHttpUrlImpl::~nsHttpUrlImpl()
{
NS_IF_RELEASE(mContainer);
NS_IF_RELEASE(mLoadAttribs);
NS_IF_RELEASE(mURLGroup);
NS_IF_RELEASE(mPostData);
// NS_IF_RELEASE(mContainer);
// NS_IF_RELEASE(mURLGroup);
PR_FREEIF(mSpec);
PR_FREEIF(mProtocol);
@@ -818,7 +814,7 @@ nsresult nsHttpUrlImpl::GetContainer(nsISupports* *result) const
{
NS_LOCK_INSTANCE();
*result = mContainer;
NS_IF_ADDREF(mContainer);
NS_IF_ADDREF(mContainer); // getters must |AddRef| their result, even if they _didn't_ already own it
NS_UNLOCK_INSTANCE();
if (mContainer)
return NS_OK;
@@ -830,9 +826,9 @@ nsresult nsHttpUrlImpl::SetContainer(nsISupports* container)
{
NS_ASSERTION(m_URL_s == nsnull, "URL has already been opened");
NS_LOCK_INSTANCE();
NS_IF_RELEASE(mContainer);
// NS_IF_RELEASE(mContainer);
mContainer = container;
NS_IF_ADDREF(mContainer);
// NS_IF_ADDREF(mContainer);
NS_UNLOCK_INSTANCE();
return NS_OK;
}
@@ -841,7 +837,7 @@ nsresult nsHttpUrlImpl::GetLoadAttribs(nsILoadAttribs* *result) const
{
NS_LOCK_INSTANCE();
*result = mLoadAttribs;
NS_IF_ADDREF(mLoadAttribs);
NS_IF_ADDREF(*result);
NS_UNLOCK_INSTANCE();
return NS_OK;
}
@@ -850,9 +846,7 @@ nsresult nsHttpUrlImpl::SetLoadAttribs(nsILoadAttribs* aLoadAttribs)
{
NS_ASSERTION(m_URL_s == nsnull, "URL has already been opened");
NS_LOCK_INSTANCE();
NS_IF_RELEASE(mLoadAttribs);
mLoadAttribs = aLoadAttribs;
NS_IF_ADDREF(mLoadAttribs);
mLoadAttribs = dont_QueryInterface(aLoadAttribs);
NS_UNLOCK_INSTANCE();
return NS_OK;
}
@@ -861,7 +855,7 @@ nsresult nsHttpUrlImpl::GetURLGroup(nsIURLGroup* *result) const
{
NS_LOCK_INSTANCE();
*result = mURLGroup;
NS_IF_ADDREF(mURLGroup);
NS_IF_ADDREF(mURLGroup); // getters must |AddRef| their result, even if they didn'st already own it
NS_UNLOCK_INSTANCE();
return NS_OK;
}
@@ -870,9 +864,9 @@ nsresult nsHttpUrlImpl::SetURLGroup(nsIURLGroup* group)
{
NS_ASSERTION(m_URL_s == nsnull, "URL has already been opened");
NS_LOCK_INSTANCE();
NS_IF_RELEASE(mURLGroup);
// NS_IF_RELEASE(mURLGroup);
mURLGroup = group;
NS_IF_ADDREF(mURLGroup);
// NS_IF_ADDREF(mURLGroup);
NS_UNLOCK_INSTANCE();
return NS_OK;
}
@@ -889,8 +883,7 @@ nsresult nsHttpUrlImpl::SetPostHeader(const char* name, const char* value)
nsresult nsHttpUrlImpl::SetPostData(nsIInputStream* input)
{
NS_LOCK_INSTANCE();
mPostData = input;
input->AddRef();
mPostData = dont_QueryInterface(input);
NS_UNLOCK_INSTANCE();
return NS_OK;
}