bug=47357
a=edburns
r=ashuk
This change creates a new directory, java/webclient/src_share, that
contains the code that will be used in both src_moz and src_ie, and any
other native browser wrapping implementations.
Here are the steps I followed to implement this change.
1. Create a new directory java/webclient/src_share
2. Move all jni_util*.* files from src_moz into src_share
3. Make it so src_share compiles into a new .lib
src_share has no netscape dependencies. Any functionality that
depended on ns dependencies was kept in src_moz. In this case, we
have a function prototype only in src_share, with the implementation
in src_moz. We did this for nsHashtable. The other trick was for
things in WebShellInitContext that had nothing to do with Netscape.
This case was accomodated by creating a new struct, ShareInitContext,
that contains all WebShellInitContext members that have nothing to do
with Netscape. Currently this is just jobject propertiesClass. I
modified the WebShellInitContext struct to contain a ShareContext
struct as its last member. There are two new methods in jni_util.h
that allow for the initialization and deallocation of the members of
the ShareContext struct.
4. Make it so src_moz uses the new .lib to provide the jni_util behavior
a. Create ns_util* files that include ../src_share/jni_util* files
appropriately.
The only tricky part was for things in jni_util.h that
Here's the list of files in this change.
cvs -z3 -n update (in directory D:\Projects\mozilla\java\webclient)
cvs server: Updating .
M Makefile.win // added src_share to DIRS
M src_moz/BookmarksImpl.cpp // include ns_util instead of jni_util
M src_moz/CBrowserContainer.cpp // include ns_util instead of jni_util
M src_moz/CBrowserContainer.h // include ns_util instead of jni_util
M src_moz/CurrentPageImpl.cpp // include ns_util instead of jni_util
M src_moz/HistoryImpl.cpp // include ns_util instead of jni_util
M src_moz/Makefile.win // include ns_util instead of jni_util
M src_moz/NativeEventThread.cpp // include ns_util instead of jni_util
M src_moz/NavigationImpl.cpp // include ns_util instead of jni_util
M src_moz/RDFEnumeration.cpp // include ns_util instead of jni_util
M src_moz/RDFTreeNode.cpp // include ns_util instead of jni_util
M src_moz/WindowControlImpl.cpp // include ns_util instead of jni_util
// also use new util_InitShareContext
// function
M src_moz/WrapperFactoryImpl.cpp // include ns_util instead of jni_util
R src_moz/jni_util.cpp // moved to ../src_share
R src_moz/jni_util.h // moved to ../src_share
R src_moz/jni_util_export.cpp // moved to ../src_share
R src_moz/jni_util_export.h // moved to ../src_share
M src_moz/nsActions.cpp // include ns_util instead of jni_util
// also use new
util_DeallocateShareContext
M src_moz/nsActions.h // include ns_util instead of jni_util
A src_moz/ns_util.cpp // include jni_util.h
A src_moz/ns_util.h // include jni_util.h, changes to
// WebshellInitContext struct
A src_moz/ns_util_export.cpp // provide impls for methods in
// jni_util_export.h
A src_share/Makefile.win
A src_share/bal_util.cpp
A src_share/bal_util.h
A src_share/jni_util.cpp
A src_share/jni_util.h
A src_share/jni_util_export.cpp
A src_share/jni_util_export.h
*****CVS exited normally with code 0*****
git-svn-id: svn://10.0.0.236/trunk@75504 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
159
mozilla/java/webclient/src_moz/ns_util.h
Normal file
159
mozilla/java/webclient/src_moz/ns_util.h
Normal file
@@ -0,0 +1,159 @@
|
||||
/* -*- 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>
|
||||
* Ann Sunhachawee
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* Util methods
|
||||
|
||||
*/
|
||||
|
||||
#ifndef ns_util_h
|
||||
#define ns_util_h
|
||||
|
||||
#include "jni_util.h" // located in ../src_share,
|
||||
// pulls in ../src_share/jni_util_export.h
|
||||
|
||||
#include "nsCOMPtr.h" // so we can save the docShell
|
||||
#include "nsIWebBrowser.h"
|
||||
#include "nsIDocShell.h" // so we can save our nsIDocShell
|
||||
#include "nsIBaseWindow.h" // to get methods like SetVisibility
|
||||
#include "nsIWebNavigation.h" // for all Navigation commands
|
||||
#include "nsISHistory.h" // for session history
|
||||
#include "nsIPresShell.h"
|
||||
#include "nsIThread.h" // for PRThread
|
||||
#include "nsIWebShell.h" // for nsIWebShell
|
||||
#include "nsIEventQueueService.h" // for PLEventQueue
|
||||
#include "nsISearchContext.h" // for Find
|
||||
#include "nsIDOMDocument.h"
|
||||
|
||||
#include "wcIBrowserContainer.h" // our BrowserContainer
|
||||
|
||||
#include "ns_globals.h"
|
||||
|
||||
// Ashu
|
||||
#ifdef XP_UNIX
|
||||
#include "nsIWidget.h" // for GTKWidget
|
||||
#include <gtk/gtk.h>
|
||||
#endif
|
||||
//
|
||||
|
||||
//
|
||||
// local classes
|
||||
//
|
||||
|
||||
// PENDING(edburns): this should be a class, and we should define a
|
||||
// constructor and destructor for it.
|
||||
|
||||
struct WebShellInitContext {
|
||||
#ifdef XP_UNIX
|
||||
GtkWidget * parentHWnd;
|
||||
#else
|
||||
// PENDING(mark): Don't we need something for Mac?
|
||||
HWND parentHWnd;
|
||||
#endif
|
||||
nsCOMPtr<nsIWebShell> webShell;
|
||||
nsCOMPtr<nsIDocShell> docShell;
|
||||
nsCOMPtr<nsIBaseWindow> baseWindow;
|
||||
nsCOMPtr<nsISHistory> sHistory;
|
||||
nsCOMPtr<nsIWebNavigation> webNavigation;
|
||||
nsCOMPtr<nsIPresShell> presShell;
|
||||
nsCOMPtr<nsIWebBrowser> webBrowser;
|
||||
PLEventQueue * actionQueue;
|
||||
PRThread * embeddedThread;
|
||||
JNIEnv * env;
|
||||
jobject nativeEventThread;
|
||||
int stopThread;
|
||||
int initComplete;
|
||||
int initFailCode;
|
||||
int x;
|
||||
int y;
|
||||
int w;
|
||||
int h;
|
||||
int gtkWinPtr;
|
||||
nsCOMPtr<nsISearchContext> searchContext;
|
||||
nsCOMPtr<nsIDOMDocument> currentDocument;
|
||||
nsCOMPtr<wcIBrowserContainer> browserContainer;
|
||||
// This struct contains all per-window information not specific to mozilla
|
||||
ShareInitContext shareContext;
|
||||
};
|
||||
|
||||
enum {
|
||||
kEventQueueError = 1,
|
||||
kCreateWebShellError,
|
||||
kCreateDocShellError,
|
||||
kGetBaseWindowError,
|
||||
kInitWebShellError,
|
||||
kShowWebShellError,
|
||||
kHistoryWebShellError,
|
||||
kClipboardWebShellError,
|
||||
kFindComponentError,
|
||||
kSearchContextError,
|
||||
kGetContentViewerError,
|
||||
kGetDOMWindowError
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
* This method calls PL_PostEvent(),
|
||||
|
||||
* http://lxr.mozilla.org/mozilla/source/xpcom/threads/plevent.c#248
|
||||
|
||||
* which simply uses nice monitors to insert the event into the provided
|
||||
* event queue, which is from WebShellInitContext->actionQueue, which is
|
||||
* created in NativeEventThread.cpp:InitMozillaStuff(). The events are
|
||||
* processed in NativeEventThread.cpp:processEventLoop, which is called
|
||||
* from the Java NativeEventThread.run(). See the code and comments for
|
||||
* processEventLoop in NativeEventThread.cpp.
|
||||
|
||||
*/
|
||||
|
||||
void util_PostEvent (WebShellInitContext * initContext, PLEvent * event);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
* This method calls PL_PostSynchronousEvent(),
|
||||
|
||||
* http://lxr.mozilla.org/mozilla/source/xpcom/threads/plevent.c#278
|
||||
|
||||
* which, instead of putting the event in the queue, as in
|
||||
* util_PostEvent(), either calls the event's handler directly, or puts
|
||||
* it in the queue and waits for it to be processed so it can return the
|
||||
* result.
|
||||
|
||||
*/
|
||||
|
||||
void * util_PostSynchronousEvent (WebShellInitContext * initContext, PLEvent * event);
|
||||
|
||||
// hack functions to get around mozilla oddities
|
||||
#ifdef XP_UNIX
|
||||
jint util_GetGTKWinPtrFromCanvas(JNIEnv *env, jobject browserControlCanvas);
|
||||
#endif
|
||||
|
||||
#endif // ns_util_h
|
||||
Reference in New Issue
Block a user