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().
a=edburns
bug=20659
Make BrowserControl vend a Canvas instead of
BrowserControlCanvas vending a BrowserControl.
This change has nothing to do with mozilla. It's pure java.
* This change fixes
http://bugzilla.mozilla.org/show_bug.cgi?id=15793 which caused one
to have to copy the component.reg and components directory. It
also causes webclient to do autoregistration. It also adds a
debugging method to BrowserControlMozillaShim.java
nativeDebugBreak().
This changes makes webclient depend on having mozilla sources from
10/5/99 or later.
Reviewed by Mark Lin <marklin@eng.sun.com>
Approved by Ed Burns <edburns@acm.org>, module owner
* This change fixes
http://bugzilla.mozilla.org/show_bug.cgi?id=15793 which caused one
to have to copy the component.reg and components directory. It
also causes webclient to do autoregistration. It also adds a
debugging method to BrowserControlMozillaShim.java
nativeDebugBreak().
This changes makes webclient depend on having mozilla sources from
10/5/99 or later.
Reviewed by Mark Lin <marklin@eng.sun.com>
Approved by Ed Burns <edburns@acm.org>, module owner