Last Comment Bug 48227 - Listener type introspection broken
: Listener type introspection broken
Product: Core Graveyard
Classification: Graveyard
Component: Java APIs to WebShell (show other bugs)
: Trunk
: x86 Other
P3 normal (vote)
: ---
Assigned To: edburns
: geetha.vaidyanaathan
Depends on:
Blocks: 33333
  Show dependency treegraph
Reported: 2000-08-09 10:40 PDT by edburns
Modified: 2012-04-09 22:27 PDT (History)
0 users
See Also:
QA Whiteboard:
Iteration: ---
Points: ---

Full files of fix for this bug. (14.17 KB, application/octet-stream)
2000-08-09 13:18 PDT, edburns
no flags Details
Context diffs of fix for this bug. Please review. (14.79 KB, patch)
2000-08-09 13:19 PDT, edburns
no flags Details | Diff | Splinter Review

Description User image edburns 2000-08-09 10:40:40 PDT
If you have one class that implements multiple webclient listener interfaces, 
you won't be able to add listeners.
Comment 1 User image edburns 2000-08-09 11:16:31 PDT
Comment 2 User image edburns 2000-08-09 13:18:25 PDT
Created attachment 12623 [details]
Full files of fix for this bug.
Comment 3 User image edburns 2000-08-09 13:19:25 PDT
Created attachment 12624 [details] [diff] [review]
Context diffs of fix for this bug.  Please review.
Comment 4 User image edburns 2000-08-09 13:19:45 PDT
Files in this fix:

M classes_spec/org/mozilla/webclient/wrapper_native/
M classes_spec/org/mozilla/webclient/wrapper_native/
A classes_spec/org/mozilla/webclient/wrapper_native/
M src_moz/NativeEventThread.cpp
M src_moz/motif/NativeLoaderStub.cpp

Added class WCEventListenerWrapper:

 * This class allows the custom app to have one instance that implements
 * multiple Webclient event listener types. <P>

 * This is simply a "struct" type class that encapsulates a listener
 * instance with its class name.  This is necessary because the class
 * name is lost when we deal with the listener as a
 * WebclientEventListener, and not a WebclientEventListener subclass. <P>

 * @see org.mozilla.webclient.wrapper_native.NativeEventThread#addListener

Made it so when a java listener is added,

 * We create a WCEventListenerWrapper containing the user passed
 * DocumentLoadListener, and the string obtained from
 * DocumentLoadListener.class.getName();

We then call nativeEventThread.addListener:

 * Takes the abstract WebclientEventListener instance and adds it to a
 * Vector of listeners to be added.  This vector is scanned each time
 * around the event loop in run(). <P>

 * The vector is a vector of WCEventListenerWrapper instances.  In run()
 * these are unpacked and sent to nativeAddListener like this:
 * nativeAddListener(nativeWebShell,tempListener.listener, 
 * tempListener.listenerClassName); <P>
Comment 5 User image edburns 2000-09-12 15:15:36 PDT

Note You need to log in before you can comment on or make changes to this bug.