зеркало из https://github.com/mozilla/gecko-dev.git
Part of making news a stand alone dll. Updates to nntp url to inherit from nsIMsgMailNewsUrl.Add url listener code as well.
This commit is contained in:
Родитель
5f87931f1e
Коммит
1321dd9d85
|
@ -37,6 +37,7 @@
|
||||||
// that doesn't allow you to call ::nsISupports::GetIID() inside of a class
|
// that doesn't allow you to call ::nsISupports::GetIID() inside of a class
|
||||||
// that multiply inherits from nsISupports
|
// that multiply inherits from nsISupports
|
||||||
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
|
static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
|
||||||
|
static NS_DEFINE_CID(kUrlListenerManagerCID, NS_URLLISTENERMANAGER_CID);
|
||||||
|
|
||||||
nsNntpUrl::nsNntpUrl(nsISupports* aContainer, nsIURLGroup* aGroup)
|
nsNntpUrl::nsNntpUrl(nsISupports* aContainer, nsIURLGroup* aGroup)
|
||||||
{
|
{
|
||||||
|
@ -65,11 +66,16 @@ nsNntpUrl::nsNntpUrl(nsISupports* aContainer, nsIURLGroup* aGroup)
|
||||||
|
|
||||||
m_container = aContainer;
|
m_container = aContainer;
|
||||||
NS_IF_ADDREF(m_container);
|
NS_IF_ADDREF(m_container);
|
||||||
// ParseURL(aSpec, aURL); // XXX whh
|
|
||||||
|
m_runningUrl = PR_FALSE;
|
||||||
|
m_urlListeners = nsnull;
|
||||||
|
nsComponentManager::CreateInstance(kUrlListenerManagerCID, nsnull, nsIUrlListenerManager::GetIID(),
|
||||||
|
(void **) &m_urlListeners);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsNntpUrl::~nsNntpUrl()
|
nsNntpUrl::~nsNntpUrl()
|
||||||
{
|
{
|
||||||
|
NS_IF_RELEASE(m_urlListeners);
|
||||||
NS_IF_RELEASE(m_container);
|
NS_IF_RELEASE(m_container);
|
||||||
NS_IF_RELEASE(m_newsHost);
|
NS_IF_RELEASE(m_newsHost);
|
||||||
NS_IF_RELEASE(m_articleList);
|
NS_IF_RELEASE(m_articleList);
|
||||||
|
@ -258,6 +264,53 @@ nsresult nsNntpUrl::GetNewsgroupList (nsINNTPNewsgroupList ** newsgroupList) con
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// url listener registration details...
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsNntpUrl::RegisterListener (nsIUrlListener * aUrlListener)
|
||||||
|
{
|
||||||
|
NS_LOCK_INSTANCE();
|
||||||
|
nsresult rv = NS_OK;
|
||||||
|
if (m_urlListeners)
|
||||||
|
rv = m_urlListeners->RegisterListener(aUrlListener);
|
||||||
|
NS_UNLOCK_INSTANCE();
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsNntpUrl::UnRegisterListener (nsIUrlListener * aUrlListener)
|
||||||
|
{
|
||||||
|
NS_LOCK_INSTANCE();
|
||||||
|
nsresult rv = NS_OK;
|
||||||
|
if (m_urlListeners)
|
||||||
|
rv = m_urlListeners->UnRegisterListener(aUrlListener);
|
||||||
|
NS_UNLOCK_INSTANCE();
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsNntpUrl::GetUrlState(PRBool * aRunningUrl)
|
||||||
|
{
|
||||||
|
NS_LOCK_INSTANCE();
|
||||||
|
if (aRunningUrl)
|
||||||
|
*aRunningUrl = m_runningUrl;
|
||||||
|
|
||||||
|
NS_UNLOCK_INSTANCE();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP nsNntpUrl::SetUrlState(PRBool aRunningUrl, nsresult aExitCode)
|
||||||
|
{
|
||||||
|
NS_LOCK_INSTANCE();
|
||||||
|
m_runningUrl = aRunningUrl;
|
||||||
|
if (m_urlListeners)
|
||||||
|
{
|
||||||
|
if (m_runningUrl)
|
||||||
|
m_urlListeners->OnStartRunningUrl(this);
|
||||||
|
else
|
||||||
|
m_urlListeners->OnStopRunningUrl(this, aExitCode);
|
||||||
|
}
|
||||||
|
NS_UNLOCK_INSTANCE();
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
nsresult nsNntpUrl::SetErrorMessage (char * errorMessage)
|
nsresult nsNntpUrl::SetErrorMessage (char * errorMessage)
|
||||||
{
|
{
|
||||||
NS_LOCK_INSTANCE();
|
NS_LOCK_INSTANCE();
|
||||||
|
|
|
@ -20,16 +20,23 @@
|
||||||
#define nsNntpUrl_h__
|
#define nsNntpUrl_h__
|
||||||
|
|
||||||
#include "nsINntpUrl.h"
|
#include "nsINntpUrl.h"
|
||||||
|
#include "nsIUrlListenerManager.h"
|
||||||
#include "nsINetlibURL.h" /* this should be temporary until Network N2 project lands */
|
#include "nsINetlibURL.h" /* this should be temporary until Network N2 project lands */
|
||||||
#include "nsINNTPNewsgroupPost.h"
|
#include "nsINNTPNewsgroupPost.h"
|
||||||
|
|
||||||
class nsNntpUrl : public nsINntpUrl, public nsINetlibURL
|
class nsNntpUrl : public nsINntpUrl, public nsINetlibURL
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// from nsIURL:
|
// nsIMsgMailNewsUrl interface
|
||||||
|
NS_IMETHOD SetUrlState(PRBool aRunningUrl, nsresult aExitCode);
|
||||||
|
NS_IMETHOD GetUrlState(PRBool * aRunningUrl);
|
||||||
|
|
||||||
// mscott: some of these we won't need to implement..as part of the netlib re-write we'll be removing them
|
NS_IMETHOD SetErrorMessage (char * errorMessage);
|
||||||
// from nsIURL and then we can remove them from here as well....
|
NS_IMETHOD GetErrorMessage (char ** errorMessage) const; // caller must free using PR_Free
|
||||||
|
NS_IMETHOD RegisterListener (nsIUrlListener * aUrlListener);
|
||||||
|
NS_IMETHOD UnRegisterListener (nsIUrlListener * aUrlListener);
|
||||||
|
|
||||||
|
// nsIURL
|
||||||
NS_IMETHOD_(PRBool) Equals(const nsIURL *aURL) const;
|
NS_IMETHOD_(PRBool) Equals(const nsIURL *aURL) const;
|
||||||
NS_IMETHOD GetSpec(const char* *result) const;
|
NS_IMETHOD GetSpec(const char* *result) const;
|
||||||
NS_IMETHOD SetSpec(const char* spec);
|
NS_IMETHOD SetSpec(const char* spec);
|
||||||
|
@ -78,14 +85,10 @@ public:
|
||||||
NS_IMETHOD SetNewsgroupList (nsINNTPNewsgroupList * newsgroupList);
|
NS_IMETHOD SetNewsgroupList (nsINNTPNewsgroupList * newsgroupList);
|
||||||
NS_IMETHOD GetNewsgroupList (nsINNTPNewsgroupList ** newsgroupList) const;
|
NS_IMETHOD GetNewsgroupList (nsINNTPNewsgroupList ** newsgroupList) const;
|
||||||
|
|
||||||
NS_IMETHOD SetErrorMessage (char * errorMessage);
|
|
||||||
// caller must free using PR_FREE
|
|
||||||
NS_IMETHOD GetErrorMessage (char ** errorMessage) const;
|
|
||||||
|
|
||||||
NS_IMETHOD SetMessageToPost(nsINNTPNewsgroupPost *post);
|
NS_IMETHOD SetMessageToPost(nsINNTPNewsgroupPost *post);
|
||||||
NS_IMETHOD GetMessageToPost(nsINNTPNewsgroupPost **post);
|
NS_IMETHOD GetMessageToPost(nsINNTPNewsgroupPost **post);
|
||||||
// nsNntpUrl
|
|
||||||
|
|
||||||
|
// nsNntpUrl
|
||||||
nsNntpUrl(nsISupports* aContainer, nsIURLGroup* aGroup);
|
nsNntpUrl(nsISupports* aContainer, nsIURLGroup* aGroup);
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
|
@ -106,8 +109,13 @@ protected:
|
||||||
char *m_ref;
|
char *m_ref;
|
||||||
char *m_search;
|
char *m_search;
|
||||||
char *m_errorMessage;
|
char *m_errorMessage;
|
||||||
|
|
||||||
|
PRBool m_runningUrl;
|
||||||
|
|
||||||
nsINNTPNewsgroupPost *m_newsgroupPost;
|
nsINNTPNewsgroupPost *m_newsgroupPost;
|
||||||
|
|
||||||
|
// manager of all of current url listeners....
|
||||||
|
nsIUrlListenerManager * m_urlListeners;
|
||||||
|
|
||||||
PRInt32 m_port;
|
PRInt32 m_port;
|
||||||
nsISupports* m_container;
|
nsISupports* m_container;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче