зеркало из https://github.com/mozilla/pjs.git
This Change-bundle verifies that loadURL works as expected. Next will
be to verify that loadFromStream works as expected. M build-tests.xml - win32 gtk stuff. I can't figure out why this file in particular gets messed up when I move from Unix to Windows and back. Can anyone tell me why? M classes_spec/org/mozilla/webclient/Navigation2.java M classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java - added method loadURLBlocking(). M classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java M src_moz/CurrentPageImpl.cpp - activated selectAll() and getSelection() M src_moz/EmbedWindow.cpp M src_moz/EmbedWindow.h - imbued this class with selection related methods selectAll and getSelection() M src_moz/Makefile.in - activated CurrentPageImpl.cpp M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java - new test content.
This commit is contained in:
Родитель
a7cd76fc77
Коммит
46bfb37763
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -50,5 +50,7 @@ public void post(String absoluteUrl,
|
||||||
String postData,
|
String postData,
|
||||||
String postHeaders);
|
String postHeaders);
|
||||||
|
|
||||||
|
public void loadURLBlocking(String absoluteURL);
|
||||||
|
|
||||||
}
|
}
|
||||||
// end of interface Navigation2
|
// end of interface Navigation2
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
/*
|
||||||
*
|
|
||||||
* The contents of this file are subject to the Mozilla Public
|
* The contents of this file are subject to the Mozilla Public
|
||||||
* License Version 1.1 (the "License"); you may not use this file
|
* License Version 1.1 (the "License"); you may not use this file
|
||||||
* except in compliance with the License. You may obtain a copy of
|
* except in compliance with the License. You may obtain a copy of
|
||||||
|
@ -101,14 +100,17 @@ public void copyCurrentSelectionToSystemClipboard()
|
||||||
}
|
}
|
||||||
|
|
||||||
public Selection getSelection() {
|
public Selection getSelection() {
|
||||||
Selection selection = new SelectionImpl();
|
|
||||||
|
|
||||||
getWrapperFactory().verifyInitialized();
|
getWrapperFactory().verifyInitialized();
|
||||||
Assert.assert_it(-1 != getNativeBrowserControl());
|
final Selection selection = new SelectionImpl();
|
||||||
synchronized(getBrowserControl()) {
|
|
||||||
nativeGetSelection(getNativeBrowserControl(), selection);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() {
|
||||||
|
public Object run() {
|
||||||
|
nativeGetSelection(CurrentPageImpl.this.getNativeBrowserControl(),
|
||||||
|
selection);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return selection;
|
return selection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,13 +260,15 @@ public void resetFind()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectAll()
|
public void selectAll() {
|
||||||
{
|
|
||||||
getWrapperFactory().verifyInitialized();
|
getWrapperFactory().verifyInitialized();
|
||||||
|
|
||||||
synchronized(getBrowserControl()) {
|
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() {
|
||||||
nativeSelectAll(getNativeBrowserControl());
|
public Object run() {
|
||||||
}
|
nativeSelectAll(CurrentPageImpl.this.getNativeBrowserControl());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void print()
|
public void print()
|
||||||
|
@ -332,7 +336,7 @@ public static void main(String [] args)
|
||||||
Assert.setEnabled(true);
|
Assert.setEnabled(true);
|
||||||
Log.setApplicationName("CurrentPageImpl");
|
Log.setApplicationName("CurrentPageImpl");
|
||||||
Log.setApplicationVersion("0.0");
|
Log.setApplicationVersion("0.0");
|
||||||
Log.setApplicationVersionDate("$Id: CurrentPageImpl.java,v 1.3 2004-04-10 21:50:38 edburns%acm.org Exp $");
|
Log.setApplicationVersionDate("$Id: CurrentPageImpl.java,v 1.4 2004-04-28 14:39:54 edburns%acm.org Exp $");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,28 +92,77 @@ public void loadURL(String absoluteURL)
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadFromStream(InputStream stream, String uri,
|
public void loadURLBlocking(String absoluteURL) {
|
||||||
String contentType, int contentLength,
|
ParameterCheck.nonNull(absoluteURL);
|
||||||
Properties loadInfo)
|
getWrapperFactory().verifyInitialized();
|
||||||
{
|
final int bc = getNativeBrowserControl();
|
||||||
ParameterCheck.nonNull(stream);
|
final String url = new String(absoluteURL);
|
||||||
ParameterCheck.nonNull(uri);
|
Assert.assert_it(-1 != bc);
|
||||||
ParameterCheck.nonNull(contentType);
|
|
||||||
if (contentLength < -1 || contentLength == 0) {
|
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() {
|
||||||
throw new RangeException("contentLength value " + contentLength +
|
public Object run() {
|
||||||
" is out of range. It is should be either -1 or greater than 0.");
|
NavigationImpl.this.nativeLoadURL(bc, url);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getWrapperFactory().verifyInitialized();
|
|
||||||
Assert.assert_it(-1 != getNativeBrowserControl());
|
public void loadFromStream(InputStream stream, String uri,
|
||||||
|
String contentType, int contentLength,
|
||||||
|
Properties loadInfo) {
|
||||||
|
ParameterCheck.nonNull(stream);
|
||||||
|
ParameterCheck.nonNull(uri);
|
||||||
|
ParameterCheck.nonNull(contentType);
|
||||||
|
if (contentLength < -1 || contentLength == 0) {
|
||||||
|
throw new RangeException("contentLength value " + contentLength +
|
||||||
|
" is out of range. It is should be either -1 or greater than 0.");
|
||||||
|
}
|
||||||
|
|
||||||
|
final InputStream finalStream = stream;
|
||||||
|
final String finalUri = uri;
|
||||||
|
final String finalContentType = contentType;
|
||||||
|
final int finalContentLength = contentLength;
|
||||||
|
final Properties finalLoadInfo = loadInfo;
|
||||||
|
|
||||||
|
NativeEventThread.instance.pushRunnable(new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
nativeLoadFromStream(NavigationImpl.this.getNativeBrowserControl(),
|
||||||
|
finalStream, finalUri,
|
||||||
|
finalContentType,
|
||||||
|
finalContentLength, finalLoadInfo);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void loadFromStreamBlocking(InputStream stream, String uri,
|
||||||
|
String contentType, int contentLength,
|
||||||
|
Properties loadInfo) {
|
||||||
|
ParameterCheck.nonNull(stream);
|
||||||
|
ParameterCheck.nonNull(uri);
|
||||||
|
ParameterCheck.nonNull(contentType);
|
||||||
|
if (contentLength < -1 || contentLength == 0) {
|
||||||
|
throw new RangeException("contentLength value " + contentLength +
|
||||||
|
" is out of range. It is should be either -1 or greater than 0.");
|
||||||
|
}
|
||||||
|
|
||||||
|
final InputStream finalStream = stream;
|
||||||
|
final String finalUri = uri;
|
||||||
|
final String finalContentType = contentType;
|
||||||
|
final int finalContentLength = contentLength;
|
||||||
|
final Properties finalLoadInfo = loadInfo;
|
||||||
|
|
||||||
|
NativeEventThread.instance.pushBlockingWCRunnable(new WCRunnable() {
|
||||||
|
public Object run() {
|
||||||
|
nativeLoadFromStream(NavigationImpl.this.getNativeBrowserControl(),
|
||||||
|
finalStream, finalUri,
|
||||||
|
finalContentType,
|
||||||
|
finalContentLength, finalLoadInfo);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
synchronized(getBrowserControl()) {
|
|
||||||
nativeLoadFromStream(getNativeBrowserControl(), stream,
|
|
||||||
uri, contentType, contentLength,
|
|
||||||
loadInfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void refresh(long loadFlags)
|
public void refresh(long loadFlags)
|
||||||
{
|
{
|
||||||
ParameterCheck.noLessThan(loadFlags, 0);
|
ParameterCheck.noLessThan(loadFlags, 0);
|
||||||
|
@ -226,7 +275,7 @@ public static void main(String [] args)
|
||||||
|
|
||||||
Log.setApplicationName("NavigationImpl");
|
Log.setApplicationName("NavigationImpl");
|
||||||
Log.setApplicationVersion("0.0");
|
Log.setApplicationVersion("0.0");
|
||||||
Log.setApplicationVersionDate("$Id: NavigationImpl.java,v 1.5 2004-04-17 21:25:11 edburns%acm.org Exp $");
|
Log.setApplicationVersionDate("$Id: NavigationImpl.java,v 1.6 2004-04-28 14:39:54 edburns%acm.org Exp $");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
org.mozilla.webclient.BrowserControlFactory.setAppData(args[0]);
|
org.mozilla.webclient.BrowserControlFactory.setAppData(args[0]);
|
||||||
|
|
|
@ -32,84 +32,90 @@
|
||||||
|
|
||||||
#include "org_mozilla_webclient_impl_wrapper_0005fnative_CurrentPageImpl.h"
|
#include "org_mozilla_webclient_impl_wrapper_0005fnative_CurrentPageImpl.h"
|
||||||
|
|
||||||
#include "CurrentPageActionEvents.h"
|
|
||||||
|
|
||||||
#include "ns_util.h"
|
#include "ns_util.h"
|
||||||
#include "rdf_util.h"
|
#include "rdf_util.h"
|
||||||
|
#include "NativeBrowserControl.h"
|
||||||
|
#include "EmbedWindow.h"
|
||||||
|
|
||||||
#include "nsCRT.h"
|
#include "nsCRT.h"
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeCopyCurrentSelectionToSystemClipboard
|
#if 0 // convenience
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr)
|
|
||||||
{
|
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
|
||||||
|
|
||||||
if (initContext->initComplete) {
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeCopyCurrentSelectionToSystemClipboard
|
||||||
wsCopySelectionEvent * actionEvent = new wsCopySelectionEvent(initContext);
|
(JNIEnv *env, jobject obj, jint nativeBCPtr)
|
||||||
|
{
|
||||||
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
|
if (nativeBrowserControl->initComplete) {
|
||||||
|
wsCopySelectionEvent * actionEvent = new wsCopySelectionEvent(nativeBrowserControl);
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
::util_PostEvent(initContext, event);
|
::util_PostEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // if 0
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetSelection
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetSelection
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr, jobject selection)
|
(JNIEnv *env, jobject obj, jint nativeBCPtr, jobject selection)
|
||||||
{
|
{
|
||||||
NativeBrowserControl *initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl *nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
if (initContext == nsnull) {
|
if (nativeBrowserControl == nsnull) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed nativeGetSelection");
|
::util_ThrowExceptionToJava(env, "Exception: null nativeBCPtr passed nativeGetSelection");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PR_ASSERT(initContext->initComplete);
|
|
||||||
|
|
||||||
if (selection == nsnull) {
|
if (selection == nsnull) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: null Selection object passed to raptorWebShellGetSelection");
|
::util_ThrowExceptionToJava(env, "Exception: null Selection object passed to nativeGetSelection");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
nsresult rv = nativeBrowserControl->mWindow->GetSelection(env,
|
||||||
|
selection);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
::util_ThrowExceptionToJava(env, "Exception: Can't get Selection from browser");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wsGetSelectionEvent *actionEvent = new wsGetSelectionEvent(env, initContext, selection);
|
|
||||||
|
|
||||||
PLEvent *event = (PLEvent *) *actionEvent;
|
|
||||||
::util_PostSynchronousEvent(initContext, event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0 // convenience
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeHighlightSelection
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeHighlightSelection
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr, jobject startContainer, jobject endContainer, jint startOffset, jint endOffset)
|
(JNIEnv *env, jobject obj, jint nativeBCPtr, jobject startContainer, jobject endContainer, jint startOffset, jint endOffset)
|
||||||
{
|
{
|
||||||
NativeBrowserControl *initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl *nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
if (initContext == nsnull) {
|
if (nativeBrowserControl == nsnull) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeHighlightSelection");
|
::util_ThrowExceptionToJava(env, "Exception: null nativeBCPtr passed to nativeHighlightSelection");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PR_ASSERT(initContext->initComplete);
|
PR_ASSERT(nativeBrowserControl->initComplete);
|
||||||
|
|
||||||
wsHighlightSelectionEvent *actionEvent = new wsHighlightSelectionEvent(env, initContext, startContainer, endContainer, (PRInt32) startOffset, (PRInt32) endOffset);
|
wsHighlightSelectionEvent *actionEvent = new wsHighlightSelectionEvent(env, nativeBrowserControl, startContainer, endContainer, (PRInt32) startOffset, (PRInt32) endOffset);
|
||||||
PLEvent *event = (PLEvent *) *actionEvent;
|
PLEvent *event = (PLEvent *) *actionEvent;
|
||||||
::util_PostSynchronousEvent(initContext, event);
|
::util_PostSynchronousEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeClearAllSelections
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeClearAllSelections
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr)
|
(JNIEnv *env, jobject obj, jint nativeBCPtr)
|
||||||
{
|
{
|
||||||
NativeBrowserControl *initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl *nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
if (initContext == nsnull) {
|
if (nativeBrowserControl == nsnull) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeClearAllSelections");
|
::util_ThrowExceptionToJava(env, "Exception: null nativeBCPtr passed to nativeClearAllSelections");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PR_ASSERT(initContext->initComplete);
|
PR_ASSERT(nativeBrowserControl->initComplete);
|
||||||
|
|
||||||
wsClearAllSelectionEvent *actionEvent = new wsClearAllSelectionEvent(initContext);
|
wsClearAllSelectionEvent *actionEvent = new wsClearAllSelectionEvent(nativeBrowserControl);
|
||||||
|
|
||||||
PLEvent *event = (PLEvent *) *actionEvent;
|
PLEvent *event = (PLEvent *) *actionEvent;
|
||||||
::util_PostSynchronousEvent(initContext, event);
|
::util_PostSynchronousEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -118,24 +124,24 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPa
|
||||||
* Signature: (Ljava/lang/String;ZZ)V
|
* Signature: (Ljava/lang/String;ZZ)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeFindInPage
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeFindInPage
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr, jstring searchString, jboolean forward, jboolean matchCase)
|
(JNIEnv *env, jobject obj, jint nativeBCPtr, jstring searchString, jboolean forward, jboolean matchCase)
|
||||||
{
|
{
|
||||||
|
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
|
|
||||||
jstring searchStringGlobalRef = (jstring) ::util_NewGlobalRef(env, searchString);
|
jstring searchStringGlobalRef = (jstring) ::util_NewGlobalRef(env, searchString);
|
||||||
if (!searchStringGlobalRef) {
|
if (!searchStringGlobalRef) {
|
||||||
initContext->initFailCode = kFindComponentError;
|
nativeBrowserControl->initFailCode = kFindComponentError;
|
||||||
::util_ThrowExceptionToJava(env, "Exception: Can't create global ref for search string");
|
::util_ThrowExceptionToJava(env, "Exception: Can't create global ref for search string");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (initContext->initComplete) {
|
if (nativeBrowserControl->initComplete) {
|
||||||
wsFindEvent * actionEvent = new wsFindEvent(initContext, searchStringGlobalRef,
|
wsFindEvent * actionEvent = new wsFindEvent(nativeBrowserControl, searchStringGlobalRef,
|
||||||
forward, matchCase);
|
forward, matchCase);
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
::util_PostEvent(initContext, event);
|
::util_PostEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -149,18 +155,18 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPa
|
||||||
* Signature: (Z)V
|
* Signature: (Z)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeFindNextInPage
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeFindNextInPage
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr)
|
(JNIEnv *env, jobject obj, jint nativeBCPtr)
|
||||||
{
|
{
|
||||||
|
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
//First get the FindComponent object
|
//First get the FindComponent object
|
||||||
|
|
||||||
PRBool found = PR_TRUE;
|
PRBool found = PR_TRUE;
|
||||||
|
|
||||||
if (initContext->initComplete) {
|
if (nativeBrowserControl->initComplete) {
|
||||||
wsFindEvent * actionEvent = new wsFindEvent(initContext);
|
wsFindEvent * actionEvent = new wsFindEvent(nativeBrowserControl);
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
::util_PostEvent(initContext, event);
|
::util_PostEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -171,25 +177,25 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPa
|
||||||
* Signature: ()Ljava/lang/String;
|
* Signature: ()Ljava/lang/String;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetCurrentURL
|
JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetCurrentURL
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr)
|
(JNIEnv *env, jobject obj, jint nativeBCPtr)
|
||||||
{
|
{
|
||||||
JNIEnv * pEnv = env;
|
JNIEnv * pEnv = env;
|
||||||
jobject jobj = obj;
|
jobject jobj = obj;
|
||||||
char * charResult = nsnull;
|
char * charResult = nsnull;
|
||||||
jstring urlString = nsnull;
|
jstring urlString = nsnull;
|
||||||
|
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
if (initContext == nsnull) {
|
if (nativeBrowserControl == nsnull) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to raptorWebShellGetURL");
|
::util_ThrowExceptionToJava(env, "Exception: null nativeBCPtr passed to raptorWebShellGetURL");
|
||||||
return nsnull;
|
return nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (initContext->initComplete) {
|
if (nativeBrowserControl->initComplete) {
|
||||||
wsGetURLEvent * actionEvent = new wsGetURLEvent(initContext);
|
wsGetURLEvent * actionEvent = new wsGetURLEvent(nativeBrowserControl);
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
|
|
||||||
charResult = (char *) ::util_PostSynchronousEvent(initContext, event);
|
charResult = (char *) ::util_PostSynchronousEvent(nativeBrowserControl, event);
|
||||||
|
|
||||||
if (charResult != nsnull) {
|
if (charResult != nsnull) {
|
||||||
urlString = ::util_NewStringUTF(env, (const char *) charResult);
|
urlString = ::util_NewStringUTF(env, (const char *) charResult);
|
||||||
|
@ -206,20 +212,20 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Curren
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jobject JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetDOM
|
JNIEXPORT jobject JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetDOM
|
||||||
(JNIEnv *env, jobject obj, jint webShellPtr)
|
(JNIEnv *env, jobject obj, jint nativeBCPtr)
|
||||||
{
|
{
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
jobject result = nsnull;
|
jobject result = nsnull;
|
||||||
jlong documentLong = nsnull;
|
jlong documentLong = nsnull;
|
||||||
jclass clazz = nsnull;
|
jclass clazz = nsnull;
|
||||||
jmethodID mid = nsnull;
|
jmethodID mid = nsnull;
|
||||||
|
|
||||||
if (initContext == nsnull) {
|
if (nativeBrowserControl == nsnull) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to raptorWebShellGetDOM");
|
::util_ThrowExceptionToJava(env, "Exception: null nativeBCPtr passed to raptorWebShellGetDOM");
|
||||||
return nsnull;
|
return nsnull;
|
||||||
}
|
}
|
||||||
if (nsnull == initContext->currentDocument ||
|
if (nsnull == nativeBrowserControl->currentDocument ||
|
||||||
nsnull == (documentLong = (jlong) initContext->currentDocument.get())){
|
nsnull == (documentLong = (jlong) nativeBrowserControl->currentDocument.get())){
|
||||||
return nsnull;
|
return nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,7 +242,7 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Curren
|
||||||
|
|
||||||
wsGetDOMEvent * actionEvent = new wsGetDOMEvent(env, clazz, mid, documentLong);
|
wsGetDOMEvent * actionEvent = new wsGetDOMEvent(env, clazz, mid, documentLong);
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
result = (jobject) ::util_PostSynchronousEvent(initContext, event);
|
result = (jobject) ::util_PostSynchronousEvent(nativeBrowserControl, event);
|
||||||
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -268,18 +274,18 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Curren
|
||||||
|
|
||||||
/* PENDING(ashuk): remove this from here and in the motif directory
|
/* PENDING(ashuk): remove this from here and in the motif directory
|
||||||
JNIEXPORT jbyteArray JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetSourceBytes
|
JNIEXPORT jbyteArray JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeGetSourceBytes
|
||||||
(JNIEnv * env, jobject jobj, jint webShellPtr, jboolean viewMode)
|
(JNIEnv * env, jobject jobj, jint nativeBCPtr, jboolean viewMode)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
if (initContext->initComplete) {
|
if (nativeBrowserControl->initComplete) {
|
||||||
wsViewSourceEvent * actionEvent =
|
wsViewSourceEvent * actionEvent =
|
||||||
new wsViewSourceEvent(initContext->docShell, ((JNI_TRUE == viewMode)? PR_TRUE : PR_FALSE));
|
new wsViewSourceEvent(nativeBrowserControl->docShell, ((JNI_TRUE == viewMode)? PR_TRUE : PR_FALSE));
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
|
|
||||||
::util_PostEvent(initContext, event);
|
::util_PostEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
jbyteArray result = nsnull;
|
jbyteArray result = nsnull;
|
||||||
|
@ -294,13 +300,14 @@ JNIEXPORT jbyteArray JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Cur
|
||||||
* Signature: ()V
|
* Signature: ()V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeResetFind
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeResetFind
|
||||||
(JNIEnv * env, jobject obj, jint webShellPtr)
|
(JNIEnv * env, jobject obj, jint nativeBCPtr)
|
||||||
{
|
{
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#endif // if 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_mozilla_webclient_impl_wrapper_0005fnative_CurrentPageImpl
|
* Class: org_mozilla_webclient_impl_wrapper_0005fnative_CurrentPageImpl
|
||||||
|
@ -308,29 +315,36 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPa
|
||||||
* Signature: ()V
|
* Signature: ()V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeSelectAll
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativeSelectAll
|
||||||
(JNIEnv * env, jobject obj, jint webShellPtr)
|
(JNIEnv * env, jobject obj, jint nativeBCPtr)
|
||||||
{
|
{
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
if (initContext->initComplete) {
|
|
||||||
wsSelectAllEvent * actionEvent = new wsSelectAllEvent(initContext);
|
if (nativeBrowserControl == nsnull) {
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
::util_ThrowExceptionToJava(env, "Exception: null passed to nativeSelectAll");
|
||||||
::util_PostEvent(initContext, event);
|
return;
|
||||||
|
}
|
||||||
|
nsresult rv = nativeBrowserControl->mWindow->SelectAll();
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
::util_ThrowExceptionToJava(env, "Exception: Can't selectAll");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0 // convenience
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_mozilla_webclient_impl_wrapper_0005fnative_CurrentPageImpl
|
* Class: org_mozilla_webclient_impl_wrapper_0005fnative_CurrentPageImpl
|
||||||
* Method: nativePrint
|
* Method: nativePrint
|
||||||
* Signature: (I)V
|
* Signature: (I)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativePrint
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativePrint
|
||||||
(JNIEnv * env, jobject obj, jint webShellPtr)
|
(JNIEnv * env, jobject obj, jint nativeBCPtr)
|
||||||
{
|
{
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
if (initContext->initComplete) {
|
if (nativeBrowserControl->initComplete) {
|
||||||
wsPrintEvent * actionEvent = new wsPrintEvent(initContext);
|
wsPrintEvent * actionEvent = new wsPrintEvent(nativeBrowserControl);
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
::util_PostEvent(initContext, event);
|
::util_PostEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,13 +354,14 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPa
|
||||||
* Signature: (IZ)V
|
* Signature: (IZ)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativePrintPreview
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_CurrentPageImpl_nativePrintPreview
|
||||||
(JNIEnv * env, jobject obj, jint webShellPtr, jboolean preview)
|
(JNIEnv * env, jobject obj, jint nativeBCPtr, jboolean preview)
|
||||||
{
|
{
|
||||||
NativeBrowserControl* initContext = (NativeBrowserControl *) webShellPtr;
|
NativeBrowserControl* nativeBrowserControl = (NativeBrowserControl *) nativeBCPtr;
|
||||||
if (initContext->initComplete) {
|
if (nativeBrowserControl->initComplete) {
|
||||||
wsPrintPreviewEvent * actionEvent = new wsPrintPreviewEvent(initContext, preview);
|
wsPrintPreviewEvent * actionEvent = new wsPrintPreviewEvent(nativeBrowserControl, preview);
|
||||||
PLEvent * event = (PLEvent*) *actionEvent;
|
PLEvent * event = (PLEvent*) *actionEvent;
|
||||||
::util_PostEvent(initContext, event);
|
::util_PostEvent(nativeBrowserControl, event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# endif // if 0
|
||||||
|
|
|
@ -29,12 +29,26 @@
|
||||||
#include <nsCWebBrowser.h>
|
#include <nsCWebBrowser.h>
|
||||||
#include <nsIComponentManager.h>
|
#include <nsIComponentManager.h>
|
||||||
#include <nsIDocShellTreeItem.h>
|
#include <nsIDocShellTreeItem.h>
|
||||||
|
#include "nsIDOMWindowInternal.h"
|
||||||
|
#include "nsIDOMWindow.h"
|
||||||
|
#include "nsISelection.h"
|
||||||
|
#include "nsIDOMRange.h"
|
||||||
|
#include "nsIDOMNode.h"
|
||||||
#include "nsIWidget.h"
|
#include "nsIWidget.h"
|
||||||
#include "nsReadableUtils.h"
|
#include "nsReadableUtils.h"
|
||||||
|
#include "nsIContentViewer.h"
|
||||||
|
#include "nsIContentViewerEdit.h"
|
||||||
|
#include "nsIDocShell.h"
|
||||||
|
#include "nsIInterfaceRequestorUtils.h"
|
||||||
|
|
||||||
|
|
||||||
#include "NativeBrowserControl.h"
|
#include "NativeBrowserControl.h"
|
||||||
#include "EmbedWindow.h"
|
#include "EmbedWindow.h"
|
||||||
|
|
||||||
|
#include "jni_util.h"
|
||||||
|
|
||||||
|
#include "nsCRT.h"
|
||||||
|
|
||||||
EmbedWindow::EmbedWindow(void)
|
EmbedWindow::EmbedWindow(void)
|
||||||
{
|
{
|
||||||
mOwner = nsnull;
|
mOwner = nsnull;
|
||||||
|
@ -109,6 +123,150 @@ EmbedWindow::ReleaseChildren(void)
|
||||||
mWebBrowser = 0;
|
mWebBrowser = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
EmbedWindow::SelectAll()
|
||||||
|
{
|
||||||
|
nsCOMPtr<nsIDocShell> docShell = do_GetInterface(mWebBrowser);
|
||||||
|
if (!docShell) {
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
nsCOMPtr<nsIContentViewer> contentViewer;
|
||||||
|
nsresult rv = docShell->GetContentViewer(getter_AddRefs(contentViewer));
|
||||||
|
if (!contentViewer) {
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
nsCOMPtr<nsIContentViewerEdit> contentViewerEdit(do_QueryInterface(contentViewer));
|
||||||
|
if (!contentViewerEdit) {
|
||||||
|
return NS_ERROR_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
rv = contentViewerEdit->SelectAll();
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
EmbedWindow::GetSelection(JNIEnv *env, jobject mSelection)
|
||||||
|
{
|
||||||
|
nsresult rv = NS_ERROR_FAILURE;
|
||||||
|
|
||||||
|
// Get the DOM window
|
||||||
|
nsCOMPtr<nsIDOMWindow> domWindow;
|
||||||
|
rv = mWebBrowser->GetContentDOMWindow(getter_AddRefs(domWindow));
|
||||||
|
if (NS_FAILED(rv) || !domWindow) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the selection object of the DOM window
|
||||||
|
nsCOMPtr<nsISelection> selection;
|
||||||
|
rv = domWindow->GetSelection(getter_AddRefs(selection));
|
||||||
|
if (NS_FAILED(rv) || !selection) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the range count
|
||||||
|
PRInt32 rangeCount;
|
||||||
|
rv = selection->GetRangeCount(&rangeCount);
|
||||||
|
if (NS_FAILED(rv) || rangeCount == 0) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the actual selection string
|
||||||
|
PRUnichar *selectionStr;
|
||||||
|
rv = selection->ToString(&selectionStr);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
jstring string =
|
||||||
|
env->NewString((jchar*)selectionStr, nsCRT::strlen(selectionStr));
|
||||||
|
// string is now GC'd by Java
|
||||||
|
nsMemory::Free((void *) selectionStr);
|
||||||
|
|
||||||
|
// Get the first range object of the selection object
|
||||||
|
nsCOMPtr<nsIDOMRange> range;
|
||||||
|
rv = selection->GetRangeAt(0, getter_AddRefs(range));
|
||||||
|
if (NS_FAILED(rv) || !range) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the properties of the range object (startContainer,
|
||||||
|
// startOffset, endContainer, endOffset)
|
||||||
|
PRInt32 startOffset;
|
||||||
|
PRInt32 endOffset;
|
||||||
|
nsCOMPtr<nsIDOMNode> startContainer;
|
||||||
|
nsCOMPtr<nsIDOMNode> endContainer;
|
||||||
|
|
||||||
|
// start container
|
||||||
|
rv = range->GetStartContainer(getter_AddRefs(startContainer));
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// end container
|
||||||
|
rv = range->GetEndContainer(getter_AddRefs(endContainer));
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// start offset
|
||||||
|
rv = range->GetStartOffset(&startOffset);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// end offset
|
||||||
|
rv = range->GetEndOffset(&endOffset);
|
||||||
|
if (NS_FAILED(rv)) {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get a handle on to acutal (java) Node representing the start
|
||||||
|
// and end containers
|
||||||
|
jlong node1Long = nsnull;
|
||||||
|
jlong node2Long = nsnull;
|
||||||
|
|
||||||
|
nsCOMPtr<nsIDOMNode> node1Ptr(do_QueryInterface(startContainer));
|
||||||
|
nsCOMPtr<nsIDOMNode> node2Ptr(do_QueryInterface(endContainer));
|
||||||
|
|
||||||
|
if (nsnull == (node1Long = (jlong)node1Ptr.get())) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
if (nsnull == (node2Long = (jlong)node2Ptr.get())) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
jclass clazz = nsnull;
|
||||||
|
jmethodID mid = nsnull;
|
||||||
|
|
||||||
|
if (nsnull == (clazz = ::util_FindClass(env,
|
||||||
|
"org/mozilla/dom/DOMAccessor"))) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
if (nsnull == (mid = env->GetStaticMethodID(clazz, "getNodeByHandle",
|
||||||
|
"(J)Lorg/w3c/dom/Node;"))) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
jobject node1 = (jobject) ((void *)::util_CallStaticObjectMethodlongArg(env, clazz, mid, node1Long));
|
||||||
|
jobject node2 = (jobject) ((void *)::util_CallStaticObjectMethodlongArg(env, clazz, mid, node2Long));
|
||||||
|
|
||||||
|
// prepare the (java) Selection object that is to be returned.
|
||||||
|
if (nsnull == (clazz = ::util_FindClass(env, "org/mozilla/webclient/Selection"))) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nsnull == (mid = env->GetMethodID(clazz, "init",
|
||||||
|
"(Ljava/lang/String;Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;II)V"))) {
|
||||||
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
}
|
||||||
|
|
||||||
|
env->CallVoidMethod(mSelection, mid,
|
||||||
|
string, node1, node2,
|
||||||
|
(jint)startOffset, (jint)endOffset);
|
||||||
|
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
// nsISupports
|
// nsISupports
|
||||||
|
|
||||||
NS_IMPL_ADDREF(EmbedWindow)
|
NS_IMPL_ADDREF(EmbedWindow)
|
||||||
|
|
|
@ -43,6 +43,8 @@
|
||||||
|
|
||||||
class NativeBrowserControl;
|
class NativeBrowserControl;
|
||||||
|
|
||||||
|
#include "ns_util.h"
|
||||||
|
|
||||||
class EmbedWindow : public nsIWebBrowserChrome,
|
class EmbedWindow : public nsIWebBrowserChrome,
|
||||||
public nsIWebBrowserChromeFocus,
|
public nsIWebBrowserChromeFocus,
|
||||||
public nsIEmbeddingSiteWindow,
|
public nsIEmbeddingSiteWindow,
|
||||||
|
@ -58,6 +60,9 @@ public:
|
||||||
nsresult Init (NativeBrowserControl *aOwner);
|
nsresult Init (NativeBrowserControl *aOwner);
|
||||||
nsresult CreateWindow_ (PRUint32 width, PRUint32 height);
|
nsresult CreateWindow_ (PRUint32 width, PRUint32 height);
|
||||||
void ReleaseChildren (void);
|
void ReleaseChildren (void);
|
||||||
|
|
||||||
|
nsresult SelectAll ();
|
||||||
|
nsresult GetSelection (JNIEnv *env, jobject selection);
|
||||||
|
|
||||||
NS_DECL_ISUPPORTS
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
|
|
|
@ -89,18 +89,18 @@ REQUIRES = xpcom \
|
||||||
# nsActions.cpp \
|
# nsActions.cpp \
|
||||||
# CBrowserContainer.cpp \
|
# CBrowserContainer.cpp \
|
||||||
# PromptActionEvents.cpp \
|
# PromptActionEvents.cpp \
|
||||||
# CurrentPageImpl.cpp \
|
|
||||||
# CurrentPageActionEvents.cpp \
|
# CurrentPageActionEvents.cpp \
|
||||||
# HistoryImpl.cpp \
|
# HistoryImpl.cpp \
|
||||||
# HistoryActionEvents.cpp \
|
# HistoryActionEvents.cpp \
|
||||||
# ISupportsPeer.cpp \
|
# ISupportsPeer.cpp \
|
||||||
# NativeEventThreadActionEvents.cpp \
|
# NativeEventThreadActionEvents.cpp \
|
||||||
# NavigationActionEvents.cpp \
|
# NavigationActionEvents.cpp \
|
||||||
# InputStreamShim.cpp \
|
|
||||||
# WindowControlActionEvents.cpp \
|
# WindowControlActionEvents.cpp \
|
||||||
# WindowCreator.cpp \
|
# WindowCreator.cpp \
|
||||||
|
|
||||||
CPPSRCS = \
|
CPPSRCS = \
|
||||||
|
InputStreamShim.cpp \
|
||||||
|
CurrentPageImpl.cpp \
|
||||||
NativeBrowserControl.cpp \
|
NativeBrowserControl.cpp \
|
||||||
NativeWrapperFactory.cpp \
|
NativeWrapperFactory.cpp \
|
||||||
EmbedWindow.cpp \
|
EmbedWindow.cpp \
|
||||||
|
|
|
@ -99,7 +99,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Navigatio
|
||||||
nsString *uriNsString = nsnull;
|
nsString *uriNsString = nsnull;
|
||||||
wsLoadFromStreamEvent *actionEvent = nsnull;
|
wsLoadFromStreamEvent *actionEvent = nsnull;
|
||||||
|
|
||||||
if (nativeBrowserControl == nsnull || !nativeBrowserControl->initComplete) {
|
if (nativeBrowserControl == nsnull) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: null nativeBCPtr passed to nativeLoadFromStream");
|
::util_ThrowExceptionToJava(env, "Exception: null nativeBCPtr passed to nativeLoadFromStream");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -110,19 +110,19 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Navigatio
|
||||||
::util_ThrowExceptionToJava(env, "Exception: nativeLoadFromStream: unable to convert java string to native format");
|
::util_ThrowExceptionToJava(env, "Exception: nativeLoadFromStream: unable to convert java string to native format");
|
||||||
goto NLFS_CLEANUP;
|
goto NLFS_CLEANUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(uriNsString =
|
if (!(uriNsString =
|
||||||
new nsString(uriStringUniChars, uriStringUniCharsLength))) {
|
new nsString(uriStringUniChars, uriStringUniCharsLength))) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: nativeLoadFromStream: unable to convert native string to nsString");
|
::util_ThrowExceptionToJava(env, "Exception: nativeLoadFromStream: unable to convert native string to nsString");
|
||||||
goto NLFS_CLEANUP;
|
goto NLFS_CLEANUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
// the deleteGlobalRef is done in the wsLoadFromStream destructor
|
// the deleteGlobalRef is done in the wsLoadFromStream destructor
|
||||||
if (!(globalStream = ::util_NewGlobalRef(env, stream))) {
|
if (!(globalStream = ::util_NewGlobalRef(env, stream))) {
|
||||||
::util_ThrowExceptionToJava(env, "Exception: nativeLoadFromStream: unable to create gloabal ref to stream");
|
::util_ThrowExceptionToJava(env, "Exception: nativeLoadFromStream: unable to create gloabal ref to stream");
|
||||||
goto NLFS_CLEANUP;
|
goto NLFS_CLEANUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (loadProperties) {
|
if (loadProperties) {
|
||||||
// the deleteGlobalRef is done in the wsLoadFromStream destructor
|
// the deleteGlobalRef is done in the wsLoadFromStream destructor
|
||||||
if (!(globalLoadProperties =
|
if (!(globalLoadProperties =
|
||||||
|
@ -131,7 +131,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Navigatio
|
||||||
goto NLFS_CLEANUP;
|
goto NLFS_CLEANUP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(actionEvent = new wsLoadFromStreamEvent(nativeBrowserControl,
|
if (!(actionEvent = new wsLoadFromStreamEvent(nativeBrowserControl,
|
||||||
(void *) globalStream,
|
(void *) globalStream,
|
||||||
*uriNsString,
|
*uriNsString,
|
||||||
|
@ -153,6 +153,8 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_Navigatio
|
||||||
// wsLoadFromStreamEvent destructor.
|
// wsLoadFromStreamEvent destructor.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_NavigationImpl_nativePost
|
JNIEXPORT void JNICALL Java_org_mozilla_webclient_impl_wrapper_1native_NavigationImpl_nativePost
|
||||||
(JNIEnv *env, jobject obj, jint nativeBCPtr, jstring absoluteURL, jstring target, jint postDataLength,
|
(JNIEnv *env, jobject obj, jint nativeBCPtr, jstring absoluteURL, jstring target, jint postDataLength,
|
||||||
jstring postData, jint postHeadersLength, jstring postHeaders)
|
jstring postData, jint postHeadersLength, jstring postHeaders)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* $Id: NavigationTest.java,v 1.3 2004-04-22 06:41:02 edburns%acm.org Exp $
|
* $Id: NavigationTest.java,v 1.4 2004-04-28 14:39:54 edburns%acm.org Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||||
|
@ -71,14 +71,29 @@ public class NavigationTest extends WebclientTestCase {
|
||||||
frame.setVisible(true);
|
frame.setVisible(true);
|
||||||
canvas.setVisible(true);
|
canvas.setVisible(true);
|
||||||
|
|
||||||
Navigation nav = (Navigation)
|
Navigation2 nav = (Navigation2)
|
||||||
firstBrowserControl.queryInterface(BrowserControl.NAVIGATION_NAME);
|
firstBrowserControl.queryInterface(BrowserControl.NAVIGATION_NAME);
|
||||||
assertNotNull(nav);
|
assertNotNull(nav);
|
||||||
File testPage = new File(getBrowserBinDir(),
|
File testPage = new File(getBrowserBinDir(),
|
||||||
"../../java/webclient/test/automated/src/test/NavigationTest.txt");
|
"../../java/webclient/test/automated/src/test/NavigationTest.txt");
|
||||||
|
|
||||||
System.out.println("Loading url: " + testPage.toURL().toString());
|
System.out.println("Loading url: " + testPage.toURL().toString());
|
||||||
nav.loadURL(testPage.toURL().toString());
|
nav.loadURLBlocking(testPage.toURL().toString());
|
||||||
|
|
||||||
|
CurrentPage2 currentPage = (CurrentPage2)
|
||||||
|
firstBrowserControl.queryInterface(BrowserControl.CURRENT_PAGE_NAME);
|
||||||
|
|
||||||
|
assertNotNull(currentPage);
|
||||||
|
currentPage.selectAll();
|
||||||
|
Selection selection = currentPage.getSelection();
|
||||||
|
assertTrue(-1 != selection.toString().indexOf("This test file is for the NavigationTest."));
|
||||||
|
System.out.println("Selection is: " + selection.toString());
|
||||||
|
|
||||||
|
/*********
|
||||||
|
RandomHTMLInputStream rhis = new RandomHTMLInputStream(3);
|
||||||
|
nav.loadFromStream(rhis, "http://randomstream.com/",
|
||||||
|
"text/html", -1, null);
|
||||||
|
************/
|
||||||
frame.setVisible(false);
|
frame.setVisible(false);
|
||||||
BrowserControlFactory.deleteBrowserControl(firstBrowserControl);
|
BrowserControlFactory.deleteBrowserControl(firstBrowserControl);
|
||||||
BrowserControlFactory.appTerminate();
|
BrowserControlFactory.appTerminate();
|
||||||
|
|
|
@ -0,0 +1,268 @@
|
||||||
|
/* -*- 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): Ed Burns <edburns@acm.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.mozilla.webclient;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RandomHTMLInputStream.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.mozilla.util.Assert;
|
||||||
|
import org.mozilla.util.ParameterCheck;
|
||||||
|
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* This class simulates a nasty, misbehavin' InputStream.
|
||||||
|
|
||||||
|
* It randomly throws IOExceptions, blocks on read, and is bursty.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class RandomHTMLInputStream extends InputStream
|
||||||
|
{
|
||||||
|
|
||||||
|
//
|
||||||
|
// Class variables
|
||||||
|
//
|
||||||
|
|
||||||
|
private static final int MAX_AVAILABLE = 4096;
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* This makes it so only when we get a random between 0 and 100 number
|
||||||
|
* that evenly divides by three do we throw an IOException
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static final int EXCEPTION_DIVISOR = 179;
|
||||||
|
|
||||||
|
private static final byte [] CHARSET;
|
||||||
|
|
||||||
|
//
|
||||||
|
// relationship ivars
|
||||||
|
//
|
||||||
|
|
||||||
|
private Random random;
|
||||||
|
|
||||||
|
//
|
||||||
|
// attribute ivars
|
||||||
|
//
|
||||||
|
|
||||||
|
private boolean isClosed;
|
||||||
|
|
||||||
|
private boolean firstRead;
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* the number of times that read(bytearray) can be called and still get
|
||||||
|
* data.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
private int numReads;
|
||||||
|
|
||||||
|
private int available;
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* @param yourNumReads must be at least 2
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
static {
|
||||||
|
String charSet = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890[]{}";
|
||||||
|
CHARSET = charSet.getBytes();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RandomHTMLInputStream(int yourNumReads)
|
||||||
|
{
|
||||||
|
ParameterCheck.greaterThan(yourNumReads, 1);
|
||||||
|
|
||||||
|
random = new Random();
|
||||||
|
Assert.assert_it(null != random);
|
||||||
|
|
||||||
|
isClosed = false;
|
||||||
|
firstRead = true;
|
||||||
|
numReads = yourNumReads;
|
||||||
|
available = random.nextInt(MAX_AVAILABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int available() throws IOException
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
if (shouldThrowException()) {
|
||||||
|
throw new IOException("It's time for an IOException!");
|
||||||
|
}
|
||||||
|
if (isClosed) {
|
||||||
|
result = -1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result = available;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int read() throws IOException
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
if (shouldThrowException()) {
|
||||||
|
throw new IOException("It's time for an IOException!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 < available) {
|
||||||
|
result = (int) 'a';
|
||||||
|
available--;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result = -1;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int read(byte[] b, int off, int len) throws IOException
|
||||||
|
{
|
||||||
|
if (shouldThrowException()) {
|
||||||
|
throw new IOException("It's time for an IOException!");
|
||||||
|
}
|
||||||
|
|
||||||
|
byte [] bytes;
|
||||||
|
int i = 0;
|
||||||
|
int max = 0;
|
||||||
|
int numRead = -1;
|
||||||
|
|
||||||
|
// write case 0, no more reads left
|
||||||
|
if (0 == numReads || isClosed) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (len <= available) {
|
||||||
|
max = len;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
max = available;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (firstRead) {
|
||||||
|
String htmlHead = "<HTML><BODY><PRE>START Random Data";
|
||||||
|
numRead = htmlHead.length();
|
||||||
|
|
||||||
|
// write case 1, yes enough length to write htmlHead
|
||||||
|
if (numRead < len && len <= available) {
|
||||||
|
bytes = htmlHead.getBytes();
|
||||||
|
for (i = 0; i < numRead; i++) {
|
||||||
|
b[off+i] = bytes[i];
|
||||||
|
}
|
||||||
|
available -= numRead;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// write case 2, not enough length to write htmlHead
|
||||||
|
for (i = 0; i < max; i++) {
|
||||||
|
b[off+i] = (byte) random.nextInt(8);
|
||||||
|
}
|
||||||
|
numRead = max;
|
||||||
|
available -= max;
|
||||||
|
}
|
||||||
|
firstRead = false;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// if this is the last read
|
||||||
|
if (1 == numReads) {
|
||||||
|
String htmlTail = "\nEND Random Data</PRE></BODY></HTML>";
|
||||||
|
numRead = htmlTail.length();
|
||||||
|
// write case 3, yes enough length to write htmlTail
|
||||||
|
if (numRead < len && len <= available) {
|
||||||
|
bytes = htmlTail.getBytes();
|
||||||
|
for (i = 0; i < numRead; i++) {
|
||||||
|
b[off+i] = bytes[i];
|
||||||
|
}
|
||||||
|
available -= numRead;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// write case 4, not enough length to write htmlTail
|
||||||
|
for (i = 0; i < max; i++) {
|
||||||
|
b[off+i] = (byte) random.nextInt(8);
|
||||||
|
}
|
||||||
|
numRead = max;
|
||||||
|
available -= max;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
// if it's time to block
|
||||||
|
if (random.nextBoolean()) {
|
||||||
|
try {
|
||||||
|
System.out.println("RandomHTMLInputStream:: sleeping");
|
||||||
|
Thread.sleep(3000);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
throw new IOException(e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// write case 5, write some random bytes to fit length
|
||||||
|
|
||||||
|
// this is not the first or the last read, just cough up
|
||||||
|
// some random bytes.
|
||||||
|
|
||||||
|
bytes = new byte[max];
|
||||||
|
for (i = 0; i < max; i++) {
|
||||||
|
if (0 == (i % 78)) {
|
||||||
|
b[off+i] = (byte) '\n';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
b[off+i] = CHARSET[random.nextInt(CHARSET.length)];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
numRead = max;
|
||||||
|
available -= max;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
available = random.nextInt(MAX_AVAILABLE);
|
||||||
|
numReads--;
|
||||||
|
return numRead;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void close() throws IOException
|
||||||
|
{
|
||||||
|
if (shouldThrowException()) {
|
||||||
|
throw new IOException("It's time for an IOException!");
|
||||||
|
}
|
||||||
|
isClosed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldThrowException()
|
||||||
|
{
|
||||||
|
int nextInt = random.nextInt(10000);
|
||||||
|
|
||||||
|
boolean result = false;
|
||||||
|
|
||||||
|
if (nextInt > EXCEPTION_DIVISOR) {
|
||||||
|
result = (0 == (nextInt % EXCEPTION_DIVISOR));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Загрузка…
Ссылка в новой задаче