diff --git a/java/webclient/build.xml b/java/webclient/build.xml
index 8947707b873..096e2b5a130 100644
--- a/java/webclient/build.xml
+++ b/java/webclient/build.xml
@@ -61,7 +61,7 @@
+ depends="compile.classes_spec,compile.src_share,compile.src_moz,compile.src_ie,create.webclient.scripts"/>
@@ -196,6 +196,16 @@
+
+
+
+
+
+
+
+
@@ -257,6 +267,10 @@ ${myenv.MOZ_JDKHOME}/bin/java ${debug.options} org.mozilla.webclient.test.Embedd
failonerror="yes">
+
+
+
diff --git a/java/webclient/src_ie/Makefile.in b/java/webclient/src_ie/Makefile.in
new file mode 100644
index 00000000000..ba10c3cd1e2
--- /dev/null
+++ b/java/webclient/src_ie/Makefile.in
@@ -0,0 +1,86 @@
+# 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 mozilla.org code.
+#
+# The Initial Developer of the Original Code is Sun Microsystems,
+# Inc. Portions created by Sun are
+# Copyright (C) 1999 Sun Microsystems, Inc. All
+# Rights Reserved.
+#
+# Contributor(s): Ron Capelli
+
+DEPTH = ../../..
+topsrcdir = $(DEPTH)
+srcdir = $(topsrcdir)/java/webclient/src_ie
+VPATH = $(topsrcdir)/java/webclient/src_ie
+
+
+include $(DEPTH)/config/autoconf.mk
+
+#DIST = $(topsrcdir)/dist
+
+
+ifneq ($(BAL_INTERFACE),)
+LIBRARY_NAME = webclient_bal
+else
+LIBRARY_NAME = webclient
+endif
+
+DLLNAME = webclient.dll
+
+PDBFILE = webclient.pdb
+
+CPPSRCS = \
+ ie_util.cpp \
+ ie_util_export.cpp \
+ BookmarksImpl.cpp \
+ CMyDialog.cpp \
+ HistoryImpl.cpp \
+ CurrentPageImpl.cpp \
+ ISupportsPeer.cpp \
+ NativeEventThread.cpp \
+ NavigationImpl.cpp \
+ WindowControlImpl.cpp \
+ WrapperFactoryImpl.cpp \
+ $(NULL)
+
+CPPSRCS += \
+ ../src_moz/win32/Win32BrowserControlCanvas.cpp \
+ $(NULL)
+
+_OBJS = $(CPPSRCS:.cpp=.obj)
+OBJS = $(strip $(_OBJS))
+
+EXTRA_LIBS = $(DIST)/lib/wc_share.lib
+
+
+# include $(topsrcdir)/config/rules.mk
+
+INCLUDES := -I$(MOZ_JDKHOME)/include -I$(MOZ_JDKHOME)/include/win32 \
+ $(INCLUDES) \
+ -I../src_share -I.
+
+CPP_FLAGS = /nologo /MDd /Zi /W3 /TP /Gy /c $(INCLUDES) /Fd$(PDBFILE)
+
+#MKSHLIB = link /NOLOGO /DLL /OUT:$@ /PDB:$(PDBFILE) /SUBSYSTEM:WINDOWS
+LDFLAGS = /DEBUG /DEBUGTYPE:CV
+
+%.obj: %.cpp
+ cl /Fo$@ $(CPP_FLAGS) $<
+
+all: webclient.dll
+
+$(DLLNAME): $(OBJS) Makefile Makefile.in
+ rm -f $@
+ $(MKSHLIB) $(OBJS) $(LDFLAGS) $(OS_LIBS) $(EXTRA_LIBS)
+
+
+clobber_all:: clobber
diff --git a/java/webclient/src_ie/NativeEventThread.cpp b/java/webclient/src_ie/NativeEventThread.cpp
index 24a1d6b1634..2d46be6d1d0 100644
--- a/java/webclient/src_ie/NativeEventThread.cpp
+++ b/java/webclient/src_ie/NativeEventThread.cpp
@@ -1,5 +1,5 @@
/* -*- 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
@@ -18,11 +18,12 @@
* Rights Reserved.
*
* Contributor(s): Glenn Barney
+ * Ron Capelli
*/
#define IDD_MYDIALOG 128
#define _WIN32_WINNT 0x0400
-#define _WIN32_IE 0x0400
+#define _WIN32_IE 0x0400
#include "NativeEventThread.h"
@@ -33,8 +34,8 @@
#include //for CComPtr
- CAppModule _Module;
-
+CComModule _Module;
+
#include // for AtlWin
#include
@@ -44,16 +45,13 @@
#include
//#include //WTL
-#include //WTL
+//#include //WTL
//#include //WTL
//#include //WTL
//#include
#include
-
-#ifdef XP_PC
#include
-#endif
#include
@@ -92,33 +90,29 @@ char * errorMessages[] = {
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeInitialize
(JNIEnv *env, jobject obj, jint webShellPtr)
{
-
- WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
- if (NULL == initContext) {
- ::util_ThrowExceptionToJava (env,
- "NULL webShellPtr passed to nativeInitialize.");
- return;
- }
+ WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
+ if (NULL == initContext) {
+ ::util_ThrowExceptionToJava (env,
+ "NULL webShellPtr passed to nativeInitialize.");
+ return;
+ }
+ InitIEStuff (initContext);
+}
- InitIEStuff (initContext);
-
-}
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeProcessEvents
(JNIEnv *env, jobject obj, jint webShellPtr)
{
-
WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
-
+
if (nsnull == initContext) {
- ::util_ThrowExceptionToJava(env,
+ ::util_ThrowExceptionToJava(env,
"NULL webShellPtr passed to nativeProcessEvents.");
return;
}
+
processEventLoop(initContext);
-
-
}
/**
@@ -143,35 +137,35 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThr
*/
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeAddListener
-(JNIEnv *env, jobject obj, jint webShellPtr, jobject typedListener,
+(JNIEnv *env, jobject obj, jint webShellPtr, jobject typedListener,
jstring listenerString)
{
WebShellInitContext *initContext = (WebShellInitContext *)webShellPtr;
-
+
if (initContext == nsnull) {
- ::util_ThrowExceptionToJava(env, "Exception: null initContext passed tonativeAddListener");
- return;
+ ::util_ThrowExceptionToJava(env, "Exception: null initContext passed tonativeAddListener");
+ return;
}
-
+
if (nsnull == initContext->nativeEventThread) {
// store the java EventRegistrationImpl class in the initContext
- initContext->nativeEventThread =
+ initContext->nativeEventThread =
::util_NewGlobalRef(env, obj); // VERY IMPORTANT!!
-
- // This enables the listener to call back into java
+
+ // This enables the listener to call back into java
}
-
+
jclass clazz = nsnull;
int listenerType = 0;
- const char *listenerStringChars = ::util_GetStringUTFChars(env,
+ const char *listenerStringChars = ::util_GetStringUTFChars(env,
listenerString);
if (listenerStringChars == nsnull) {
::util_ThrowExceptionToJava(env, "Exception: nativeAddListener: Can't get className for listener.");
return;
}
-
+
while (nsnull != gSupportedListenerInterfaces[listenerType]) {
- if (0 == strcmp(gSupportedListenerInterfaces[listenerType],
+ if (0 == strcmp(gSupportedListenerInterfaces[listenerType],
listenerStringChars)) {
// We've got a winner!
break;
@@ -180,32 +174,31 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThr
}
::util_ReleaseStringUTFChars(env, listenerString, listenerStringChars);
listenerStringChars = nsnull;
-
+
if (LISTENER_NOT_FOUND == (LISTENER_CLASSES) listenerType) {
::util_ThrowExceptionToJava(env, "Exception: NativeEventThread.nativeAddListener(): can't find listener \n\tclass for argument");
return;
}
-
+
jobject globalRef = nsnull;
-
+
// PENDING(edburns): make sure do DeleteGlobalRef on the removeListener
if (nsnull == (globalRef = ::util_NewGlobalRef(env, typedListener))) {
::util_ThrowExceptionToJava(env, "Exception: NativeEventThread.nativeAddListener(): can't create NewGlobalRef\n\tfor argument");
return;
}
util_Assert(initContext->browserObject);
-
+
switch(listenerType) {
case DOCUMENT_LOAD_LISTENER:
- initContext->browserObject->AddDocumentLoadListener(globalRef);
+ initContext->browserObject->AddDocumentLoadListener(globalRef);
break;
}
return;
-
}
-JNIEXPORT void JNICALL
+JNIEXPORT void JNICALL
Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeRemoveListener
(JNIEnv *env, jobject obj, jint webShellPtr, jobject typedListener,
jstring listenerString)
@@ -216,60 +209,57 @@ Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeRemoveListene
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NativeEventThread_nativeCleanUp
(JNIEnv *env, jobject obj, jint webShellPtr)
{
+ WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
- WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
-
- //AtlAdviseSinkMap(&browserHome, false)
-
- //_Module.RemoveMessageLoop();
+ //AtlAdviseSinkMap(&browserHome, false)
+
+ //_Module.RemoveMessageLoop();
initContext->browserObject->DispEventUnadvise(initContext->browserObject->spUnk);
- _Module.Term();
+ _Module.Term();
::CoUninitialize();
-
}
int processEventLoop(WebShellInitContext * initContext)
{
-
- HRESULT hr;
+ HRESULT hr;
MSG msg;
-
if (::PeekMessage(&msg, nsnull, 0, 0, PM_NOREMOVE)) {
- if (::GetMessage(&msg, nsnull, 0, 0)) {
-
- switch (msg.message)
- {
- case WM_REFRESH:
- hr = (initContext->browserObject->m_pWB)->Refresh();
- break;
- case WM_NAVIGATE:
- hr = (initContext->browserObject->m_pWB)->Navigate(CComBSTR(initContext->wcharURL), NULL, NULL, NULL, NULL);
- free((void *) initContext->wcharURL);
- initContext->wcharURL = NULL;
- break;
- case WM_BACK:
- hr = (initContext->browserObject->m_pWB)->GoBack();
- break;
- case WM_FORWARD:
- hr = (initContext->browserObject->m_pWB)->GoForward();
- break;
- case WM_STOP:
- hr = (initContext->browserObject->m_pWB)->Stop();
- break;
- case WM_RESIZE :
- hr = MoveWindow(initContext->browserHost, initContext->x, initContext->y, initContext->w, initContext->h, TRUE);
- break;
- case WM_BIGTEST:
- hr = ::MessageBox(initContext->browserHost, "command state changed", "youknow", MB_OK);
- break;
-
- }
- ::TranslateMessage(&msg);
+ if (::GetMessage(&msg, nsnull, 0, 0)) {
+
+ switch (msg.message)
+ {
+ case WM_REFRESH:
+ hr = (initContext->browserObject->m_pWB)->Refresh();
+ break;
+ case WM_NAVIGATE:
+ hr = (initContext->browserObject->m_pWB)->Navigate(CComBSTR(initContext->wcharURL), NULL, NULL, NULL, NULL);
+ free((void *) initContext->wcharURL);
+ initContext->wcharURL = NULL;
+ break;
+ case WM_BACK:
+ hr = (initContext->browserObject->m_pWB)->GoBack();
+ break;
+ case WM_FORWARD:
+ hr = (initContext->browserObject->m_pWB)->GoForward();
+ break;
+ case WM_STOP:
+ hr = (initContext->browserObject->m_pWB)->Stop();
+ break;
+ case WM_RESIZE :
+ hr = MoveWindow(initContext->browserHost, initContext->x, initContext->y, initContext->w, initContext->h, TRUE);
+ break;
+ case WM_BIGTEST:
+ hr = ::MessageBox(initContext->browserHost, "command state changed", "youknow", MB_OK);
+ break;
+ }
+
+ ::TranslateMessage(&msg);
::DispatchMessage(&msg);
- }
+ }
}
+
initContext->canForward = initContext->browserObject->GetForwardState();
initContext->canBack = initContext->browserObject->GetBackState();
return 1;
@@ -277,17 +267,16 @@ int processEventLoop(WebShellInitContext * initContext)
HRESULT InitIEStuff (WebShellInitContext * initContext)
{
-
- HRESULT hr;
+ HRESULT hr;
HWND m_hWndClient;
RECT rect;
- HWND localParent = initContext->parentHWnd;
- HWND localChild = initContext->browserHost;
+ HWND localParent = initContext->parentHWnd;
+ HWND localChild = initContext->browserHost;
+
+ HRESULT hRes = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
+ ATLASSERT(SUCCEEDED(hRes));
- HRESULT hRes = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
- ATLASSERT(SUCCEEDED(hRes));
-
/*if (_WIN32_IE >= 0x0300)
INITCOMMONCONTROLSEX iccx;
@@ -298,60 +287,55 @@ HRESULT InitIEStuff (WebShellInitContext * initContext)
ATLASSERT(bRet);
#else
*/
- ::InitCommonControls();
+// ::InitCommonControls();
//#endif
GetClientRect(initContext->parentHWnd, &rect);
-
- HINSTANCE newInst = GetModuleHandleA(NULL);
- hRes = _Module.Init(NULL, newInst);
- ATLASSERT(SUCCEEDED(hRes));
-
+ HINSTANCE newInst = GetModuleHandleA(NULL);
+ hRes = _Module.Init(NULL, newInst);
+ ATLASSERT(SUCCEEDED(hRes));
+
+
AtlAxWinInit();
- m_hWndClient = initContext->browserObject->Create(
- initContext->parentHWnd,
- rect,
- _T("about:blank"),
- WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
- WS_VSCROLL | WS_HSCROLL,
- WS_EX_CLIENTEDGE,
- ID_WEBBROWSER);
+ m_hWndClient = initContext->browserObject->Create(
+ initContext->parentHWnd,
+ rect,
+ _T("about:blank"),
+ WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
+ WS_VSCROLL | WS_HSCROLL,
+ WS_EX_CLIENTEDGE,
+ ID_WEBBROWSER);
- hr = initContext->browserObject->QueryControl(&(initContext->browserObject->m_pWB));
-
+ hr = initContext->browserObject->QueryControl(&(initContext->browserObject->m_pWB));
- if FAILED(hr)
- {
- ATLTRACE(_T("Couldn't retrieve webbrowser"));
- return (-1);
- }
+ if FAILED(hr)
+ {
+ ATLTRACE(_T("Couldn't retrieve webbrowser"));
+ return (-1);
+ }
- if SUCCEEDED(hr)
- {
-
- ATLTRACE(_T("Browser succesfully retrieved"));
-
- }
+ if SUCCEEDED(hr)
+ {
+ ATLTRACE(_T("Browser succesfully retrieved"));
+ }
(initContext->browserHost) = m_hWndClient;
- if (!initContext->browserObject->spUnk) {
+ if (!initContext->browserObject->spUnk) {
hr = initContext->browserObject->QueryControl(&(initContext->browserObject->spUnk));
hr = initContext->browserObject->DispEventAdvise(initContext->browserObject->spUnk);
- }
+ }
- if FAILED(hr)
- {
- ATLTRACE(_T("Couldn't establish connection points"));
- return -1;
- }
+ if FAILED(hr)
+ {
+ ATLTRACE(_T("Couldn't establish connection points"));
+ return -1;
+ }
processEventLoop(initContext);
-
-
- return 0;
+ return 0;
}
diff --git a/java/webclient/src_ie/NavigationImpl.cpp b/java/webclient/src_ie/NavigationImpl.cpp
index 05584920aba..1dac41cc028 100644
--- a/java/webclient/src_ie/NavigationImpl.cpp
+++ b/java/webclient/src_ie/NavigationImpl.cpp
@@ -1,5 +1,5 @@
/* -*- 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
@@ -18,9 +18,10 @@
* Rights Reserved.
*
* Contributor(s): Glenn Barney
+ * Ron Capelli
*/
-
+
#include "ie_globals.h"
#include "NavigationImpl.h"
@@ -29,27 +30,24 @@
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NavigationImpl_nativeLoadURL
(JNIEnv *env, jobject obj, jint webShellPtr, jstring urlString)
{
- jobject jobj = obj;
+ jobject jobj = obj;
- WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
+ WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
-
if (initContext == NULL) {
- ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeLoadURL");
+ ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeLoadURL");
}
-
+
const wchar_t * urlStringChars = ::util_GetStringChars(env, urlString);
-
- if (::util_ExceptionOccurred(env)) {
- ::util_ThrowExceptionToJava(env, "nativeLoadURL Exception: unable to extract Java string");
- if (urlStringChars != NULL)
- ::util_ReleaseStringChars(env, urlString, urlStringChars);
- return;
+ if (::util_ExceptionOccurred(env)) {
+ ::util_ThrowExceptionToJava(env, "nativeLoadURL Exception: unable to extract Java string");
+ if (urlStringChars != NULL)
+ ::util_ReleaseStringChars(env, urlString, urlStringChars);
+ return;
}
- initContext->wcharURL = _wcsdup((const wchar_t *) urlStringChars);
-
+ initContext->wcharURL = _wcsdup((const wchar_t *) urlStringChars);
HRESULT hr = PostMessage(initContext->browserHost, WM_NAVIGATE, 0, 0);
::util_ReleaseStringChars(env, urlString, urlStringChars);
@@ -58,31 +56,54 @@ JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NavigationImpl
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NavigationImpl_nativeRefresh
(JNIEnv *env, jobject obj, jint webShellPtr, jlong loadFlags)
{
+ WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
- WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
-
- if (initContext == NULL) {
- ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeRefresh");
- return;
- }
-
- HRESULT hr = PostMessage(initContext->browserHost, WM_REFRESH,0, 0);
-
+ if (initContext == NULL) {
+ ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeRefresh");
return;
-
+ }
+
+ HRESULT hr = PostMessage(initContext->browserHost, WM_REFRESH,0, 0);
+
+ return;
}
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_NavigationImpl_nativeStop
(JNIEnv *env, jobject obj, jint webShellPtr)
-
{
- WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
-
- if (initContext == NULL) {
- ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeStop");
- return;
- }
+ WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
+
+ if (initContext == NULL) {
+ ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeStop");
+ return;
+ }
HRESULT hr = PostMessage(initContext->browserHost, WM_STOP, 0, 0);
-
}
+
+JNIEXPORT void JNICALL
+Java_org_mozilla_webclient_wrapper_1native_NavigationImpl_nativeSetPrompt
+(JNIEnv *env, jobject obj, jint webShellPtr, jobject userPrompt)
+{
+ JNIEnv * pEnv = env;
+ jobject jobj = obj;
+
+ WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
+
+ if (initContext == nsnull) {
+ ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeSetPrompt");
+ return;
+ }
+
+ if (userPrompt == nsnull) {
+ ::util_ThrowExceptionToJava(env, "Exception: null properties passed to nativeSetPrompt");
+ return;
+ }
+
+ if (!initContext->initComplete) {
+ return;
+ }
+
+ // hr = PostMessage(initContext->browserHost, ?SETPROMPT?, 0, 0);
+}
+
diff --git a/java/webclient/src_ie/WindowControlImpl.cpp b/java/webclient/src_ie/WindowControlImpl.cpp
index 0ffff43cbac..347f21e7be0 100644
--- a/java/webclient/src_ie/WindowControlImpl.cpp
+++ b/java/webclient/src_ie/WindowControlImpl.cpp
@@ -1,5 +1,5 @@
/* -*- 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
@@ -18,8 +18,9 @@
* Rights Reserved.
*
* Contributor(s): Glenn Barney
+ * Ron Capelli
*/
-
+
#include "WindowControlImpl.h"
#include
#include
@@ -28,52 +29,49 @@
#include "CMyDialog.h"
-JNIEXPORT void JNICALL
+
+JNIEXPORT void JNICALL
Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeSetBounds
(JNIEnv *env, jobject obj, jint webShellPtr, jint x, jint y, jint w, jint h)
{
WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
-
+
if (initContext == NULL) {
::util_ThrowExceptionToJava(env, "Exception: null Ptr passed to nativeSetBounds");
return;
}
-
initContext->x = x;
initContext->y = y;
initContext->w = w;
initContext->h = h;
-
HRESULT hr = PostMessage(initContext->browserHost, WM_RESIZE, 0, 0);
-
}
+
JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeCreateInitContext
-(JNIEnv *env, jobject obj, jint windowPtr, jint x, jint y,
+(JNIEnv *env, jobject obj, jint windowPtr, jint x, jint y,
jint width, jint height, jobject aBrowserControlImpl)
{
-#ifdef XP_MAC
- //MAC STUFF GOES HERE
-#elif defined(XP_PC)
HWND parentHWnd = (HWND)windowPtr;
-#elif defined(XP_UNIX)
- //unix stuff here
-#endif
if (parentHWnd == NULL) {
::util_ThrowExceptionToJava(env, "Exception: null window handle passed to raptorWebShellCreate");
return (jint) 0;
}
+ // save vm reference, declared in ../src_share/jni_util.h
+ if (nsnull == gVm)
+ ::util_GetJavaVM(env, &gVm);
+
WebShellInitContext* initContext = new WebShellInitContext;
initContext->initComplete = FALSE;
initContext->initFailCode = 0;
initContext->parentHWnd = parentHWnd;
- initContext->wcharURL=NULL;
+ initContext->wcharURL=NULL;
initContext->env = env;
initContext->nativeEventThread = NULL;
@@ -87,78 +85,77 @@ JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlI
return (jint) initContext;
}
-JNIEXPORT void JNICALL
+
+JNIEXPORT void JNICALL
Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeDestroyInitContext
(JNIEnv *env, jobject obj, jint webShellPtr)
{
-
- WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
-
-
- if (initContext == NULL) {
- ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeDestroyInitContext");
- return;
- }
+ WebShellInitContext* initContext = (WebShellInitContext *) webShellPtr;
- initContext->parentHWnd = NULL;
+ if (initContext == NULL) {
+ ::util_ThrowExceptionToJava(env, "Exception: null webShellPtr passed to nativeDestroyInitContext");
+ return;
+ }
- initContext->env = NULL;
- initContext->wcharURL = NULL;
+ initContext->parentHWnd = NULL;
- if (NULL != initContext->nativeEventThread) {
- ::util_DeleteGlobalRef(env, initContext->nativeEventThread);
+ initContext->env = NULL;
+ initContext->wcharURL = NULL;
+
+ if (NULL != initContext->nativeEventThread) {
+ ::util_DeleteGlobalRef(env, initContext->nativeEventThread);
initContext->nativeEventThread = NULL;
}
+
initContext->initComplete = FALSE;
initContext->initFailCode = 0;
initContext->x = -1;
initContext->y = -1;
initContext->w = -1;
- initContext->h = -1;
+ initContext->h = -1;
delete initContext->browserObject;
initContext->browserObject = NULL;
delete initContext;
-
}
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeMoveWindowTo
(JNIEnv *env, jobject obj, jint webShellPtr, jint x, jint y)
{
- WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
- if (initContext == NULL) {
- ::util_ThrowExceptionToJava(env, "Exception: null Ptr passed to nativeMoveWindowTo");
- return;
- }
+ WebShellInitContext * initContext = (WebShellInitContext *) webShellPtr;
+ if (initContext == NULL) {
+ ::util_ThrowExceptionToJava(env, "Exception: null Ptr passed to nativeMoveWindowTo");
+ return;
+ }
}
+
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeRemoveFocus
(JNIEnv *env, jobject obj, jint webShellPtr)
{
-
+
}
+
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeRepaint
(JNIEnv *env, jobject obj, jint webShellPtr, jboolean forceRepaint)
{
-
}
+
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeSetVisible
(JNIEnv *env, jobject obj, jint webShellPtr, jboolean newState)
{
-
}
+
JNIEXPORT void JNICALL Java_org_mozilla_webclient_wrapper_1native_WindowControlImpl_nativeSetFocus
(JNIEnv *env, jobject obj, jint webShellPtr)
{
-
+
}
-
-
diff --git a/java/webclient/src_ie/WrapperFactoryImpl.cpp b/java/webclient/src_ie/WrapperFactoryImpl.cpp
index 40da07bae05..67f97f07d13 100644
--- a/java/webclient/src_ie/WrapperFactoryImpl.cpp
+++ b/java/webclient/src_ie/WrapperFactoryImpl.cpp
@@ -1,5 +1,5 @@
/* -*- 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
@@ -18,46 +18,16 @@
* Rights Reserved.
*
* Contributor(s): Glenn Barney
+ * Ron Capelli
*/
#include "WrapperFactoryImpl.h"
#include "ie_util.h"
#include "ie_globals.h"
-
-#include "prenv.h"
-
-
-#ifdef XP_PC
-
-
-// All this stuff is needed to initialize the history
-
-#define APPSHELL_DLL "appshell.dll"
-#define BROWSER_DLL "nsbrowser.dll"
-#define EDITOR_DLL "ender.dll"
-
-#else
-
-#ifdef XP_MAC
-
-#define APPSHELL_DLL "APPSHELL_DLL"
-#define EDITOR_DLL "ENDER_DLL"
-
-#else
-
-// XP_UNIX || XP_BEOS
-#define APPSHELL_DLL "libnsappshell"MOZ_DLL_SUFFIX
-#define APPCORES_DLL "libappcores"MOZ_DLL_SUFFIX
-#define EDITOR_DLL "libender"MOZ_DLL_SUFFIX
-
-#endif // XP_MAC
-
-#endif // XP_PC
-
//
// file data
-//
+//
const char *gImplementedInterfaces[] = {
"webclient.WindowControl",
@@ -74,40 +44,38 @@ const char *gImplementedInterfaces[] = {
//
-// Functions to hook into mozilla
-//
+// Functions to hook into Explorer
+//
-JNIEXPORT void JNICALL
+JNIEXPORT void JNICALL
Java_org_mozilla_webclient_wrapper_1native_WrapperFactoryImpl_nativeAppInitialize
(JNIEnv *env, jobject obj, jstring verifiedBinDirAbsolutePath)
{
-
}
-JNIEXPORT void JNICALL
+JNIEXPORT void JNICALL
Java_org_mozilla_webclient_wrapper_1native_WrapperFactoryImpl_nativeTerminate
(JNIEnv *env, jobject obj)
{
-
+
}
-JNIEXPORT jboolean JNICALL
+JNIEXPORT jboolean JNICALL
Java_org_mozilla_webclient_wrapper_1native_WrapperFactoryImpl_nativeDoesImplement
(JNIEnv *env, jobject obj, jstring interfaceName)
{
-
- const char *iName = (const char *) ::util_GetStringUTFChars(env,
+ const char *iName = (const char *) ::util_GetStringUTFChars(env,
interfaceName);
jboolean result = JNI_FALSE;
-
+
int i = 0;
-
+
if (nsnull == iName) {
return result;
}
-
+
while (nsnull != gImplementedInterfaces[i]) {
if (0 == strcmp(gImplementedInterfaces[i++], iName)) {
result = JNI_TRUE;
@@ -115,6 +83,6 @@ Java_org_mozilla_webclient_wrapper_1native_WrapperFactoryImpl_nativeDoesImplemen
}
}
::util_ReleaseStringUTFChars(env, interfaceName, iName);
-
+
return result;
}
diff --git a/java/webclient/src_ie/build.xml b/java/webclient/src_ie/build.xml
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/java/webclient/src_ie/ie_util.h b/java/webclient/src_ie/ie_util.h
index 48463c1215c..c6f3fe4a123 100644
--- a/java/webclient/src_ie/ie_util.h
+++ b/java/webclient/src_ie/ie_util.h
@@ -18,6 +18,7 @@
* Rights Reserved.
*
* Contributor(s): Glenn Barney
+ * Ron Capelli
*/
@@ -34,10 +35,10 @@
// pulls in ../src_share/jni_util_export.h
#include
#include //for CComPtr
-#include // for CAppModule decl WTL
+//#include // for CAppModule decl WTL
-
-extern CAppModule _Module;
+//extern CAppModule _Module;
+extern CComModule _Module;
#include // for AtlWin
#include
@@ -48,7 +49,7 @@ extern CAppModule _Module;
#include
//#include //WTL
-#include //WTL
+//#include //WTL
//#include //WTL
//#include //WTL
//#include
@@ -58,23 +59,22 @@ class CMyDialog;
extern const char *gSupportedListenerInterfaces[]; // defined in ie_util.cpp
-struct WebShellInitContext {
-
- HWND parentHWnd;
- HWND browserHost;
- JNIEnv * env;
- jobject nativeEventThread;
- const wchar_t * wcharURL;
- int initComplete;
- int initFailCode;
- int x;
- int y;
- int w;
- int h;
- jboolean canForward;
- jboolean canBack;
+struct WebShellInitContext
+{
+ HWND parentHWnd;
+ HWND browserHost;
+ JNIEnv * env;
+ jobject nativeEventThread;
+ const wchar_t * wcharURL;
+ int initComplete;
+ int initFailCode;
+ int x;
+ int y;
+ int w;
+ int h;
+ jboolean canForward;
+ jboolean canBack;
CMyDialog *browserObject;
-
};
#endif // ie_util_h
diff --git a/java/webclient/src_ie/runWCie.bat b/java/webclient/src_ie/runWCie.bat
new file mode 100755
index 00000000000..2a2d2592136
--- /dev/null
+++ b/java/webclient/src_ie/runWCie.bat
@@ -0,0 +1,13 @@
+: Script to run webclient in development environment...
+
+cd D:\Projects\mozilla\MOZILLA_1_3\mozilla\java
+
+set CLASSPATH=D:\Projects\mozilla\MOZILLA_1_3\mozilla\dist\classes;%CLASSPATH%
+
+set WCIEPATH=D:\Projects\mozilla\MOZILLA_1_3\mozilla\java\webclient\src_ie
+
+set PATH=%WCIEPATH%;%PATH%
+
+java -Djava.library.path=%WCIEPATH% -classpath %CLASSPATH% org.mozilla.webclient.test.EmbeddedMozillaImpl %WCIEPATH%
+
+
diff --git a/java/webclient/src_moz/InputStreamShim.cpp b/java/webclient/src_moz/InputStreamShim.cpp
index 2002c6691ef..005de265718 100644
--- a/java/webclient/src_moz/InputStreamShim.cpp
+++ b/java/webclient/src_moz/InputStreamShim.cpp
@@ -395,6 +395,9 @@ InputStreamShim::ReadSegments(nsWriteSegmentFun writer, void * closure, PRUint32
NS_IMETHODIMP
InputStreamShim::IsNonBlocking(PRBool *_retval)
{
- NS_NOTREACHED("IsNonBlocking");
- return NS_ERROR_NOT_IMPLEMENTED;
+// NS_NOTREACHED("IsNonBlocking");
+// return NS_ERROR_NOT_IMPLEMENTED;
+
+ *_retval = PR_FALSE;
+ return NS_OK;
}
diff --git a/java/webclient/src_moz/NavigationActionEvents.cpp b/java/webclient/src_moz/NavigationActionEvents.cpp
index 9082c438ccf..d852cf9b68c 100644
--- a/java/webclient/src_moz/NavigationActionEvents.cpp
+++ b/java/webclient/src_moz/NavigationActionEvents.cpp
@@ -27,7 +27,7 @@
* Louis-Philippe Gagnon
* Brian Satterfield
* Anthony Sizer
- * Ron Capelli
+ * Ron Capelli
*/
/*
@@ -159,9 +159,11 @@ wsLoadFromStreamEvent::handleEvent ()
// Kick off a LoadStream. This will cause
// InputStreamShim::Read() to be called,
+ printf ("debug: capelli: LoadStream - mContentType: %s mUriString: %s\n",
+ mContentType, mUriString.get());
+
rv = mInitContext->docShell->LoadStream(mShim, uri,
- nsDependentCString(mContentType,
- mShim->getContentLength()),
+ nsDependentCString(mContentType),
NS_LITERAL_CSTRING(""),
nsnull);
if (mProperties) {
diff --git a/java/webclient/src_moz/win32/Win32BrowserControlCanvas.cpp b/java/webclient/src_moz/win32/Win32BrowserControlCanvas.cpp
index 6d2ac5160b6..0a96820d151 100644
--- a/java/webclient/src_moz/win32/Win32BrowserControlCanvas.cpp
+++ b/java/webclient/src_moz/win32/Win32BrowserControlCanvas.cpp
@@ -18,6 +18,7 @@
* Rights Reserved.
*
* Contributor(s): Ashu Kulkarni
+ * Ron Capelli (capelli@us.ibm.com)
*/
@@ -29,6 +30,8 @@
#include
#include
+typedef jboolean (JNICALL *PJAWT_GETAWT)(JNIEnv*, JAWT*);
+
#include "Win32BrowserControlCanvas.h"
#include "ns_util.h" //for throwing Exceptions to Java
@@ -45,21 +48,46 @@ JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_win32_Win32Bro
JAWT_DrawingSurfaceInfo* dsi;
JAWT_Win32DrawingSurfaceInfo* dsi_win;
HWND handle_win;
+ HMODULE _hAWT; // JAWT module handle
jint lock;
+ PJAWT_GETAWT pJAWT_GetAWT; // JAWT_GetAWT function pointer
+
//Get the AWT
+ _hAWT = LoadLibrary("jawt.dll");
+ if (!_hAWT) {
+ printf(" +++ No jawt.dll... Trying awt.dll +++ \n");
+ _hAWT = LoadLibrary("awt.dll"); // IBM Java 1.3.x packages JAWT_GetAWT in awt.dll
+ }
+ if (!_hAWT) {
+ printf(" +++ JAWT DLL Not Found +++ \n");
+ ::util_ThrowExceptionToJava(env, "Exception: JAWT DLL Not Found");
+ return 0;
+ }
+
+ pJAWT_GetAWT = (PJAWT_GETAWT)GetProcAddress(_hAWT, "_JAWT_GetAWT@8");
+ printf ("Debug (RBC): pJAWT_GetAWT: %08x\n", pJAWT_GetAWT);
+ if (!pJAWT_GetAWT) {
+ printf(" +++ JAWT_GetAWT Entry Not Found +++ \n");
+ ::util_ThrowExceptionToJava(env, "Exception: JAWT_GetAWT Entry Not Found");
+ FreeLibrary(_hAWT);
+ return 0;
+ }
+
awt.version = JAWT_VERSION_1_3;
- if (JAWT_GetAWT(env, &awt) == JNI_FALSE) {
+ if (pJAWT_GetAWT(env, &awt) == JNI_FALSE) {
printf(" +++ AWT Not Found +++ \n");
::util_ThrowExceptionToJava(env, "Exception: AWT Not Found");
+ FreeLibrary(_hAWT);
return 0;
}
-
+
//Get the Drawing Surface
ds = awt.GetDrawingSurface(env, canvas);
if (ds == NULL) {
printf(" +++ NULL Drawing Surface +++ \n");
::util_ThrowExceptionToJava(env, "Exception: Null Drawing Surface");
+ FreeLibrary(_hAWT);
return 0;
}
@@ -69,6 +97,7 @@ JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_win32_Win32Bro
printf(" +++ Error Locking Surface +++ \n");
::util_ThrowExceptionToJava(env, "Exception: Error Locking Surface");
awt.FreeDrawingSurface(ds);
+ FreeLibrary(_hAWT);
return 0;
}
@@ -79,9 +108,10 @@ JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_win32_Win32Bro
::util_ThrowExceptionToJava(env, "Exception: Error Getting Surface Info");
ds->Unlock(ds);
awt.FreeDrawingSurface(ds);
+ FreeLibrary(_hAWT);
return 0;
}
-
+
//Get the Platform specific Drawing Info
dsi_win = (JAWT_Win32DrawingSurfaceInfo*)dsi->platformInfo;
@@ -92,8 +122,8 @@ JNIEXPORT jint JNICALL Java_org_mozilla_webclient_wrapper_1native_win32_Win32Bro
ds->FreeDrawingSurfaceInfo(dsi);
ds->Unlock(ds);
awt.FreeDrawingSurface(ds);
+ FreeLibrary(_hAWT);
//return the native peer handle
return (jint) handle_win;
-
}