of a URL_LOAD event. I'm still working on getting the request body via
the nsIUploadChannel interface. Next step will be to get that working.
I'm currently running into problems where the END_URL event for a POST
doesn't have a status. I think this is because I'm using the
Navigation.post() method rather than simulating a user post by pressing
a form submit button.
A classes_spec/org/mozilla/webclient/impl/wrapper_native/NativeInputStream.java
A src_moz/NativeInputStreamImpl.cpp
- Class to enable reading the post body from the request.
M build.xml
- add NativeInputStream to JNI generation
M classes_spec/org/mozilla/webclient/PageInfoListener.java
* <p>This {@link DocumentLoadListener} subclass adds the ability to get
* detailed information on each event. </p>
*
* <p>The <code>eventData</code> property of the
* <code>DocumentLoadEvent</code> instance will be a
* <code>java.util.Map</code>. The following entries may be present in
* this map for the following <code>*_EVENT_MASK</code> types in
* <code>DocumentLoadEvent</code>.</p>
*
* <dl>
*
* <dt>For all <code>*_EVENT_MASK</code> types</dt>
*
* <dd><p>the map will contain an entry under the key "<code>URI</code>"
* without the quotes. This will be the fully qualified URI for the
* event. </p></dd>
*
* <dt>For <code>START_URL_LOAD</code> type</dt>
*
* <dd><p>The map will contain an entry under the key
* "<code>method</code>" without the quotes. This will be the request
* method for this event. The map will also contain an entry under the
* key "<code>headers</code>". This entry will be a
* <code>java.util.Map</code> of all the request headers.</p></dd>
*
* <dt>For <code>END_URL_LOAD</code> type</dt>
*
* <dd><p>The map will contain an entry under the key
* "<code>method</code>" without the quotes. This will be the request
* method for this event. The map will contain an entry under the key
* "<code>status</code>" without the quotes. This will be the response
* status string from the server, such as "<code>200 OK</code>". The
* map will also contain an entry under the key "<code>headers</code>".
* This entry will be a <code>java.util.Map</code> of all the response
* headers.</p></dd>
*
* </dl>
M src_moz/EmbedProgress.cpp
- leverage nsIHttpChannel methods to get request method, response
status, and post body.
M src_moz/Makefile.in
- add NativeInputStream
M src_share/jni_util.cpp
M src_share/jni_util.h
- new constants
- add variant of ThrowExceptionToJava that takes the exception class name.
M test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java
- new test content. Post related content commented out.
git-svn-id: svn://10.0.0.236/trunk@169991 18797224-902f-48f8-a5cc-f745e15eee43
108 lines
3.4 KiB
C++
108 lines
3.4 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is RaptorCanvas.
|
|
*
|
|
* The Initial Developer of the Original Code is Kirk Baker and
|
|
* Ian Wilkinson. Portions created by Kirk Baker and Ian Wilkinson are
|
|
* Copyright (C) 1999 Kirk Baker and Ian Wilkinson. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s): Kirk Baker <kbaker@eb.com>
|
|
* Ian Wilkinson <iw@ennoble.com>
|
|
* Mark Lin <mark.lin@eng.sun.com>
|
|
* Mark Goddard
|
|
* Ed Burns <edburns@acm.org>
|
|
* Ashutosh Kulkarni <ashuk@eng.sun.com>
|
|
* Kyle Yuan <kyle.yuan@sun.com>
|
|
*/
|
|
|
|
/*
|
|
* NativeInputStreamImpl.cpp
|
|
*/
|
|
|
|
#include "org_mozilla_webclient_impl_wrapper_0005fnative_NativeInputStream.h"
|
|
|
|
#include <nsIInputStream.h>
|
|
#include "ns_util.h"
|
|
|
|
JNIEXPORT jint JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_NativeInputStream_nativeRead
|
|
(JNIEnv *env, jobject obj, jint nativeInputStream, jbyteArray buf, jint off,
|
|
jint len)
|
|
{
|
|
nsIInputStream *stream = (nsIInputStream *) nativeInputStream;
|
|
nsresult rv = NS_OK;
|
|
PRUint32 ret;
|
|
|
|
char *cbuf = new char[len];
|
|
jbyte *jbytes = new jbyte[len];
|
|
int i = 0;
|
|
// initialize the array
|
|
for (i = 0; i < len; i++) {
|
|
cbuf[i] = 0;
|
|
jbytes[i] = 0;
|
|
}
|
|
// call the mozilla method
|
|
if (NS_SUCCEEDED(rv = stream->Read(cbuf, len, &ret))) {
|
|
// copy the chars to jbytes
|
|
for (i = 0; i < ret; i++) {
|
|
jbytes[i] = (jbyte) cbuf[i];
|
|
}
|
|
// copy the jbytes to the return back to java
|
|
env->SetByteArrayRegion(buf, off, ret, jbytes);
|
|
}
|
|
else {
|
|
::util_ThrowExceptionToJava(env, "java/io/IOException",
|
|
"can't Read from native Stream");
|
|
}
|
|
|
|
return (jint) ret;
|
|
}
|
|
|
|
/*
|
|
* Class: org_mozilla_webclient_impl_wrapper_0005fnative_NativeInputStream
|
|
* Method: nativeAvailable
|
|
* Signature: (I)I
|
|
*/
|
|
JNIEXPORT jint JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_NativeInputStream_nativeAvailable
|
|
(JNIEnv *env, jobject obj, jint nativeInputStream)
|
|
{
|
|
nsIInputStream *stream = (nsIInputStream *) nativeInputStream;
|
|
nsresult rv = NS_OK;
|
|
PRUint32 result = -1;
|
|
|
|
if (NS_FAILED(rv = stream->Available(&result))) {
|
|
::util_ThrowExceptionToJava(env, "java/io/IOException",
|
|
"can't get Available from native Stream");
|
|
}
|
|
|
|
return (jint) result;
|
|
}
|
|
|
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_NativeInputStream_nativeClose
|
|
(JNIEnv *env, jobject obj, jint nativeInputStream)
|
|
{
|
|
nsIInputStream *stream = (nsIInputStream *) nativeInputStream;
|
|
nsresult rv = NS_OK;
|
|
PRUint32 result = -1;
|
|
|
|
if (NS_SUCCEEDED(rv = stream->Close())) {
|
|
stream->Release();
|
|
}
|
|
else {
|
|
::util_ThrowExceptionToJava(env, "java/io/IOException",
|
|
"can't get Available from native Stream");
|
|
}
|
|
|
|
return;
|
|
}
|