Complete the conversion from nsIDocumentLoaderObserver.

This commit is contained in:
edburns%acm.org 2001-05-08 22:32:19 +00:00
parent 53b13081a6
commit d79b2b7b77
2 changed files with 65 additions and 83 deletions

View File

@ -209,52 +209,37 @@ PRBool nsJavaDOMImpl::Cleanup(JNIEnv* env)
return PR_FALSE; return PR_FALSE;
} }
nsIDOMDocument* nsJavaDOMImpl::GetDocument(nsIDocumentLoader* loader) nsresult nsJavaDOMImpl::GetDocument(nsIWebProgress* aWebProgress,
nsIDOMDocument **aResult)
{ {
nsIDocShell* docshell = nsnull; nsCOMPtr<nsIDOMWindow> domWin;
nsISupports* container = nsnull; nsCOMPtr<nsIDOMDocument> domDoc;
nsIContentViewer* contentv = nsnull; nsresult rv;
nsIDocumentViewer* docv = nsnull;
nsIDocument* document = nsnull;
nsIDOMDocument* domDoc = nsnull;
nsresult rv = loader->GetContainer(&container); NS_PRECONDITION(nsnull != aResult, "null ptr");
if (NS_SUCCEEDED(rv) && container) { if (nsnull == aResult) {
rv = container->QueryInterface(kIDocShellIID, (void**) &docshell); return NS_ERROR_NULL_POINTER;
container->Release(); }
if (NS_SUCCEEDED(rv) && docshell) {
rv = docshell->GetContentViewer(&contentv); if (nsnull != aWebProgress) {
docshell->Release(); if (NS_SUCCEEDED(aWebProgress->GetDOMWindow(getter_AddRefs(domWin)))
if (NS_SUCCEEDED(rv) && contentv) { && domWin) {
rv = contentv->QueryInterface(kIDocumentViewerIID, (void**) &docv); if (NS_SUCCEEDED(rv = domWin->GetDocument(getter_AddRefs(domDoc)))) {
contentv->Release(); *aResult = domDoc.get();
if (NS_SUCCEEDED(rv) && docv) { return rv;
rv = docv->GetDocument(document);
docv->Release();
if (NS_SUCCEEDED(rv) && document) {
rv = document->QueryInterface(kIDOMDocumentIID, (void**) &domDoc);
if (NS_SUCCEEDED(rv) && docv) {
return domDoc;
}
}
}
} }
} }
} }
fprintf(stderr, fprintf(stderr,
"nsJavaDOMImpl::GetDocument: failed: " "nsJavaDOMImpl::GetDocument: failed: "
"container=%x, webshell=%x, contentViewer=%x, " "webProgress=%x, domWin=%x, domDoc=%x, "
"documentViewer=%x, document=%x, " "error=%x\n",
"domDocument=%x, error=%x\n", aWebProgress,
(unsigned) (void*) container, domWin.get(),
(unsigned) (void*) docshell, domDoc.get(),
(unsigned) (void*) contentv,
(unsigned) (void*) docv,
(unsigned) (void*) document,
(unsigned) (void*) domDoc,
rv); rv);
return NULL; return rv;
} }
// //
@ -268,17 +253,23 @@ NS_IMETHODIMP nsJavaDOMImpl::OnStateChange(nsIWebProgress *aWebProgress,
{ {
nsXPIDLString name; nsXPIDLString name;
nsresult rv; nsresult rv;
if (NS_FAILED(rv = aRequest->GetName(getter_Copies(name)))) {
return rv;
}
if ((aStateFlags & STATE_START) && (aStateFlags & STATE_IS_DOCUMENT)) { if ((aStateFlags & STATE_START) && (aStateFlags & STATE_IS_DOCUMENT)) {
if (NS_FAILED(rv = aRequest->GetName(getter_Copies(name)))) {
return rv;
}
doStartDocumentLoad(name.get()); doStartDocumentLoad(name.get());
} }
if ((aStateFlags & STATE_STOP) && (aStateFlags & STATE_IS_DOCUMENT)) { if ((aStateFlags & STATE_STOP) && (aStateFlags & STATE_IS_DOCUMENT)) {
doEndDocumentLoad(aWebProgress, aRequest, aStatus); doEndDocumentLoad(aWebProgress, aRequest, aStatus);
} }
if ((aStateFlags & STATE_START) && (aStateFlags & STATE_IS_REQUEST)) {
doStartURLLoad(aWebProgress, aRequest);
}
if ((aStateFlags & STATE_STOP) && (aStateFlags & STATE_IS_REQUEST)) {
doEndURLLoad(aWebProgress, aRequest, aStatus);
}
return NS_OK; return NS_OK;
} }
@ -298,17 +289,11 @@ NS_IMETHODIMP nsJavaDOMImpl::OnProgressChange(nsIWebProgress *aWebProgress,
PRInt32 curTotalProgress, PRInt32 curTotalProgress,
PRInt32 maxTotalProgress) PRInt32 maxTotalProgress)
{ {
nsCOMPtr<nsIDOMWindow> domWin;
nsCOMPtr<nsIDOMDocument> domDoc; nsCOMPtr<nsIDOMDocument> domDoc;
nsresult rv; nsresult rv;
if (nsnull != aWebProgress) { if (NS_FAILED(rv = GetDocument(aWebProgress, getter_AddRefs(domDoc)))) {
if (NS_SUCCEEDED(aWebProgress->GetDOMWindow(getter_AddRefs(domWin))) return rv;
&& domWin) {
if (NS_FAILED(rv = domWin->GetDocument(getter_AddRefs(domDoc)))) {
return rv;
}
}
} }
JNIEnv* env = NULL; JNIEnv* env = NULL;
@ -339,17 +324,11 @@ NS_IMETHODIMP nsJavaDOMImpl::OnStatusChange(nsIWebProgress *aWebProgress,
nsresult aStatus, nsresult aStatus,
const PRUnichar *cMsg) const PRUnichar *cMsg)
{ {
nsCOMPtr<nsIDOMWindow> domWin;
nsCOMPtr<nsIDOMDocument> domDoc; nsCOMPtr<nsIDOMDocument> domDoc;
nsresult rv; nsresult rv;
if (nsnull != aWebProgress) { if (NS_FAILED(rv = GetDocument(aWebProgress, getter_AddRefs(domDoc)))) {
if (NS_SUCCEEDED(aWebProgress->GetDOMWindow(getter_AddRefs(domWin))) return rv;
&& domWin) {
if (NS_FAILED(rv = domWin->GetDocument(getter_AddRefs(domDoc)))) {
return rv;
}
}
} }
JNIEnv* env = NULL; JNIEnv* env = NULL;
@ -407,26 +386,15 @@ NS_IMETHODIMP nsJavaDOMImpl::doStartDocumentLoad(const PRUnichar *documentName)
return NS_OK; return NS_OK;
} }
NS_IMETHODIMP nsJavaDOMImpl::doStartUrlLoad(const PRUnichar *documentName)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsJavaDOMImpl::doEndDocumentLoad(nsIWebProgress *aWebProgress, NS_IMETHODIMP nsJavaDOMImpl::doEndDocumentLoad(nsIWebProgress *aWebProgress,
nsIRequest *request, nsIRequest *request,
PRUint32 aStatus) PRUint32 aStatus)
{ {
nsCOMPtr<nsIDOMWindow> domWin;
nsCOMPtr<nsIDOMDocument> domDoc; nsCOMPtr<nsIDOMDocument> domDoc;
nsresult rv; nsresult rv;
if (nsnull != aWebProgress) { if (NS_FAILED(rv = GetDocument(aWebProgress, getter_AddRefs(domDoc)))) {
if (NS_SUCCEEDED(aWebProgress->GetDOMWindow(getter_AddRefs(domWin))) return rv;
&& domWin) {
if (NS_FAILED(rv = domWin->GetDocument(getter_AddRefs(domDoc)))) {
return rv;
}
}
} }
JNIEnv* env = NULL; JNIEnv* env = NULL;
@ -449,10 +417,16 @@ NS_IMETHODIMP nsJavaDOMImpl::doEndDocumentLoad(nsIWebProgress *aWebProgress,
return NS_OK; return NS_OK;
} }
#if 0 NS_IMETHODIMP nsJavaDOMImpl::doStartURLLoad(nsIWebProgress *aWebProgress,
NS_IMETHODIMP nsJavaDOMImpl::OnStartURLLoad(nsIDocumentLoader* loader, nsIRequest *request)
nsIRequest* request)
{ {
nsCOMPtr<nsIDOMDocument> domDoc;
nsresult rv;
if (NS_FAILED(rv = GetDocument(aWebProgress, getter_AddRefs(domDoc)))) {
return rv;
}
JNIEnv* env = NULL; JNIEnv* env = NULL;
if (Init(&env) == PR_FALSE) return NS_ERROR_FAILURE; if (Init(&env) == PR_FALSE) return NS_ERROR_FAILURE;
@ -472,20 +446,26 @@ NS_IMETHODIMP nsJavaDOMImpl::OnStartURLLoad(nsIDocumentLoader* loader,
jstring jContentType = env->NewStringUTF(contentType); jstring jContentType = env->NewStringUTF(contentType);
if (!jContentType) return NS_ERROR_FAILURE; if (!jContentType) return NS_ERROR_FAILURE;
nsIDOMDocument* domDoc = GetDocument(loader);
env->CallStaticVoidMethod(domAccessorClass, env->CallStaticVoidMethod(domAccessorClass,
startURLLoadMID, startURLLoadMID,
jURL, jURL,
jContentType, jContentType,
(jlong)domDoc); (jlong)domDoc.get());
if (Cleanup(env) == PR_TRUE) return NS_ERROR_FAILURE; if (Cleanup(env) == PR_TRUE) return NS_ERROR_FAILURE;
return NS_OK; return NS_OK;
} }
NS_IMETHODIMP nsJavaDOMImpl::OnEndURLLoad(nsIDocumentLoader* loader, NS_IMETHODIMP nsJavaDOMImpl::doEndURLLoad(nsIWebProgress *aWebProgress,
nsIRequest* request, nsIRequest *request,
nsresult aStatus) PRUint32 aStatus)
{ {
nsCOMPtr<nsIDOMDocument> domDoc;
nsresult rv;
if (NS_FAILED(rv = GetDocument(aWebProgress, getter_AddRefs(domDoc)))) {
return rv;
}
JNIEnv* env = NULL; JNIEnv* env = NULL;
if (Init(&env) == PR_FALSE) return NS_ERROR_FAILURE; if (Init(&env) == PR_FALSE) return NS_ERROR_FAILURE;
@ -497,7 +477,6 @@ NS_IMETHODIMP nsJavaDOMImpl::OnEndURLLoad(nsIDocumentLoader* loader,
jstring jURL = env->NewStringUTF(urlSpec); jstring jURL = env->NewStringUTF(urlSpec);
if (!jURL) return NS_ERROR_FAILURE; if (!jURL) return NS_ERROR_FAILURE;
nsIDOMDocument* domDoc = GetDocument(loader);
#if defined(DEBUG) #if defined(DEBUG)
dump_document(domDoc, urlSpec); dump_document(domDoc, urlSpec);
#endif #endif
@ -505,11 +484,10 @@ NS_IMETHODIMP nsJavaDOMImpl::OnEndURLLoad(nsIDocumentLoader* loader,
endURLLoadMID, endURLLoadMID,
jURL, jURL,
(jint) aStatus, (jint) aStatus,
(jlong)domDoc); (jlong)domDoc.get());
if (Cleanup(env) == PR_TRUE) return NS_ERROR_FAILURE; if (Cleanup(env) == PR_TRUE) return NS_ERROR_FAILURE;
return NS_OK; return NS_OK;
} }
#endif
NS_IMETHODIMP nsJavaDOMImpl::HandleUnknownContentType(nsIDocumentLoader* loader, NS_IMETHODIMP nsJavaDOMImpl::HandleUnknownContentType(nsIDocumentLoader* loader,
nsIChannel* channel, nsIChannel* channel,

View File

@ -35,9 +35,12 @@ class nsJavaDOMImpl : public nsIJavaDOM {
*/ */
NS_IMETHOD doStartDocumentLoad(const PRUnichar *documentName); NS_IMETHOD doStartDocumentLoad(const PRUnichar *documentName);
NS_IMETHOD doStartUrlLoad(const PRUnichar *documentName);
NS_IMETHOD doEndDocumentLoad(nsIWebProgress *aWebProgress, NS_IMETHOD doEndDocumentLoad(nsIWebProgress *aWebProgress,
nsIRequest *aRequest, PRUint32 aStatus); nsIRequest *aRequest, PRUint32 aStatus);
NS_IMETHOD doStartURLLoad(nsIWebProgress *aWebProgress,
nsIRequest *aRequest);
NS_IMETHOD doEndURLLoad(nsIWebProgress *aWebProgress,
nsIRequest *aRequest, PRUint32 aStatus);
private: private:
#ifdef JAVA_DOM_OJI_ENABLE #ifdef JAVA_DOM_OJI_ENABLE
@ -61,7 +64,8 @@ class nsJavaDOMImpl : public nsIJavaDOM {
static PRBool Init(JNIEnv**); static PRBool Init(JNIEnv**);
// cleanup after a JNI method invocation // cleanup after a JNI method invocation
static PRBool Cleanup(JNIEnv* env); static PRBool Cleanup(JNIEnv* env);
nsIDOMDocument* GetDocument(nsIDocumentLoader* loader); nsresult GetDocument(nsIWebProgress* aWebProgress,
nsIDOMDocument **aResult);
}; };
#endif /* __nsJavaDOMImpl_h__ */ #endif /* __nsJavaDOMImpl_h__ */