a=edburns
This checkin mainly does two things:
1. Correctly populates the java.awt.event.MouseEvent subclass with the
correct modifiers, x, y, and clickCount for the mozilla mouse event.
2. Adds a performance optimization: previously, every mouse event was
causing a new instance of java.util.Properties to be created. Now,
only one Properties instance is created per-page, and it is cleared on
each mouse event.
Also, I made the DOMMouseListenerImpl constructor initialize the
refCount to 0. This allows the object to be correctly deleted.
M classes_spec/org/mozilla/webclient/test/EMWindow.java
M classes_spec/org/mozilla/webclient/wrapper_native/WCMouseListenerImpl.java
M src_moz/DOMMouseListenerImpl.cpp
M src_moz/DOMMouseListenerImpl.h
M src_moz/WindowControlImpl.cpp
M src_moz/jni_util.cpp
M src_moz/jni_util.h
M src_moz/jni_util_export.cpp
M src_moz/jni_util_export.h
M classes_spec/org/mozilla/webclient/test/EMWindow.java
* Added test code for MouseListener properties: buttons, modifiers, etc.
M classes_spec/org/mozilla/webclient/wrapper_native/WCMouseListenerImpl.java
* Added support for mouse modifiers. Pull values out of the hash table,
put them in the MouseEvent constructor.
M src_moz/DOMMouseListenerImpl.cpp
* Modified constructors so they initialize all ivars.
* changed usage model of properties object to share the lifetime of the
DOMMouseListenerImpl instance. Needed to make use of the new function
util_ClearPropertiesObject() to do this. Now we have only one call to
util_DestroyPropertiesObject(), in the DOMMouseListenerImpl
destructor.
M src_moz/DOMMouseListenerImpl.h
> virtual ~DOMMouseListenerImpl();
>
98a101
> protected:
100a104,105
>
> void JNICALL addMouseEventDataToProperties(nsIDOMEvent *aMouseEvent);
M src_moz/WindowControlImpl.cpp
* Initialize new WebShellInitConext member propertiesClass to nsnull
M src_moz/jni_util.cpp
* Added util_ClearPropertiesObject() an optimization.
* Store the jclass for java/util/Properties in an element in
WebShellInitContext. This prevents us from having to do FindClass
each time a mouse event occurs.
* Added a parameter to util_StoreIntoPropertiesObject.
M src_moz/jni_util.h
* Added propertiesClass to WebShellInitContext
* Added new method ClearPropertiesObject
* Added new last argument to DestroyPropertiesObject
M src_moz/jni_util_export.cpp
M src_moz/jni_util_export.h
* Added function pointer for util_ClearPropertiesObject.
git-svn-id: svn://10.0.0.236/trunk@71756 18797224-902f-48f8-a5cc-f745e15eee43
a=edburns
r=drapeau
This checkin creates a dependency on the mozilla java dom module.
Please see mozilla\java\dom\README to build the java dom.
Note that you can just run make in mozilla\java and everything
should be built correctly.
A webclient/classes_spec/org/mozilla/webclient/test/DOMAccessPanel.java
A webclient/classes_spec/org/mozilla/webclient/test/DOMCellRenderer.java
A webclient/classes_spec/org/mozilla/webclient/test/DOMTreeDumper.java
A webclient/classes_spec/org/mozilla/webclient/test/DOMTreeModel.java
A webclient/classes_spec/org/mozilla/webclient/test/DOMTreeNotifier.java
A webclient/classes_spec/org/mozilla/webclient/test/DOMViewerFrame.java
M Makefile.win
M README
M webclient/classes_spec/Makefile.unix
M webclient/classes_spec/Makefile.win
M webclient/classes_spec/org/mozilla/webclient/CurrentPage.java
M webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java
M webclient/classes_spec/org/mozilla/webclient/wrapper_native/CurrentPageImpl.java
M webclient/src_moz/CurrentPageImpl.cpp
M webclient/src_moz/DocumentLoaderObserverImpl.cpp
M webclient/src_moz/Makefile.win
M webclient/src_moz/WindowControlImpl.cpp
M webclient/src_moz/jni_util.h
git-svn-id: svn://10.0.0.236/trunk@71490 18797224-902f-48f8-a5cc-f745e15eee43
r=ashuk
a=edburns
This set of changes replaces all occurrences of
env->Func(args...)
with
::util_Func(env, args...)
Except of course, for the implementations of the above mentioned
::util_Func() functions.
This is done to allow the JNI functions to be called from a non JNI
context, such as UNO.
git-svn-id: svn://10.0.0.236/trunk@63190 18797224-902f-48f8-a5cc-f745e15eee43
also modifies EmbeddedMozilla so this code is exercised.
I have changed EmbeddedMozilla to be a stub-like class that simply
displays a Frame with a single Button, titled "New Window". Pressing
this button causes an EMWindow to be created and displayed. EMWindow is
basically the former EmbeddedMozilla renamed, with modifications to the
WindowListener implementation to call the BrowserControl deallocation
method.
I've added a delete() method to ImplObect:
* I know Java has automatic garbage collection and all, but explicitly
* adding a delete method helps the gc algorithm out. <P>
* Subclasses should override this and call super.delete() at the end of
* their overridden delete() method.
* @see org.mozilla.webclient.wrapper_native.ImplObjectNative#delete
and ImplObjectNative:
* Note how we call super.delete() at the end. THIS IS VERY IMPORTANT. <P>
* Also, note how we don't de-allocate nativeWebShell, that is done in
* the class that owns the nativeWebShell reference, WindowControlImpl.
* ImplObjectNative subclasses that further override delete() are <P>
<CODE><PRE>
BookmarksImpl.java
EventRegistrationImpl.java
NativeEventThread.java
WindowControlImpl.java
</PRE><CODE> <P>
* All other ImplObject subclasses don't have any local Ivars and thus
* don't need to override delete().
I've added a delete() method to BrowserControlImpl:
* Called from BrowserControlFactory.deleteBrowserControl() <P>
* The order of deletion of objects is very important! <P>
* We don't allow deletion if the Canvas is showing. <P>
In BrowserControlImpl's delete(), the important delete()s is for
WindowControlImpl:
* First, we delete our eventThread, which causes the eventThread to
* stop running. Then we call nativeDestroyInitContext(), which
* deallocates native resources for this window.
As stated above, NativeEventThread.delete() is called:
* This is a very delicate method, and possibly subject to race
* condition problems. To combat this, our first step is to set our
* browserControlCanvas to null, within a synchronized block which
* synchronizes on the same object used in the run() method's event
* loop. By setting the browserControlCanvas ivar to null, we cause the
* run method to return.
After all of this deleting, we return from
BrowserControlFactory.delete().
git-svn-id: svn://10.0.0.236/trunk@62772 18797224-902f-48f8-a5cc-f745e15eee43
a=edburns
r=bruce
Folks, don't EVER use NULL in your c++ code. Use nsnull instead.
git-svn-id: svn://10.0.0.236/trunk@62456 18797224-902f-48f8-a5cc-f745e15eee43
r=edburns
author=ashuk
bug=28407
New native code for spec-compliant impl ported to solaris -- Ashu K.
git-svn-id: svn://10.0.0.236/trunk@62342 18797224-902f-48f8-a5cc-f745e15eee43