Граф коммитов

96 Коммитов

Автор SHA1 Сообщение Дата
edburns%acm.org 0fca80d0e2 Added comment in nativeDestroyInitContext about bug http://bugzilla.mozilla.org/show_bug.cgi?id=38271 2000-05-05 14:02:12 +00:00
edburns%acm.org 01cadcca39 a=edburns
bug: pressing BACK hangs webclient

Files touched

File: DocumentLoadEvent.java	Status: Locally Modified

Made the constants final so they can be used in a
switch statement

File: EMWindow.java    	Status: Locally Modified

Modified eventDispatched() so it doesn't call any webclient
events.  This was causing the hang.  Took advantage of
the newly implemented ability to pass a string from the
mozilla event handler into java.


File: DocumentLoaderObserverImpl.cpp	Status: Locally Modified

Create a jstring from the url in the OnStartDocumentLoad event.
Pass it on to java.

File: jni_util.cpp	Status: Locally Modified

Wrapped JNU_GetEnv in BAL stuff so it works from Star.

File: WebclinetEventListener.java	Status: Locally Modified

Added comment to eventDispatched.
2000-04-22 02:01:20 +00:00
edburns%acm.org 1124a9f70b bug 33099
r=shaver
a=edburns

Native code changes: This fix eradicates all
occurrences of the following symbols
 nsComponentManager nsServiceManeger
And replaces them with their nsI counterparts.
The following ns* classes still are used in
webclient, and no plans exist to replace them
with nsI counterparts: nsresult nsCOMPtr
nsCRT nsnull * nsServiceManager occurrences
were replaced with do_GetService(), using a
PROGID. * nsComponentManager occurrences were replaced with a call on the global class gComponentManager, declared in the new file ns_globals.h, and defined in WrapperFactoryImpl.cpp. ns_globals.h is included in jni_util.h. See the attachment to bug 33099 for ns_globals.h * Added deallocation code to WindowControlImpl.cpp nativeTerminate. I know it doesn't do much, but it's correct. Java code changes: * Added static method BrowserControlFactory.appTerminate(). This method simply calls the existing BrowserControlImpl.appTerminate(), which calls WrapperFactoryImpl.cpp nativeTerminate(). BrowserControlFactory.appTerminate() is called from EmbeddedMozilla's WindowListener, which gets fired when the user signals she wants the app to terminate.
2000-04-20 18:16:05 +00:00
ashuk%eng.sun.com 39289fdb27 fixed small bug with call to getSourceBytes
_Ashu
2000-04-20 03:16:15 +00:00
ashuk%eng.sun.com 55078fbfc4 new signature for getSourceBytes
_Ashu
2000-04-20 02:59:53 +00:00
edburns%acm.org fd78722617 bug 32011
r=ashuk
a=edburns

Add an "eventData" argument to WebclientEvent and subclasses.
This argument is sub-event specific.  For example, when a user
gets a DocumentLoadEvent, with an event type of
STATUS_URL_LOAD, the eventData is a String containing
the status string from the browser.

Added support for doing this in a BAL context.
2000-04-18 21:58:29 +00:00
edburns%acm.org a90c0cf107 bug 32011
r=ashuk
a=edburns

Add an "eventData" argument to WebclientEvent and subclasses.
This argument is sub-event specific.  For example, when a user
gets a DocumentLoadEvent, with an event type of
STATUS_URL_LOAD, the eventData is a String containing
the status string from the browser.
2000-04-18 21:57:42 +00:00
edburns%acm.org cb7301f20a bug=http://bugzilla.mozilla.org/show_bug.cgi?id=32011
Added ability to allow Native webclient client to populate
the listener class hash table and provide an InstanceOf function.

This enables listeners to work for the future.
2000-04-15 00:27:35 +00:00
edburns%acm.org 198a14a484 bug: http://bugzilla.mozilla.org/show_bug.cgi?id=32011
Add first function pointer integration to webclient for StarOffice.
This is necessary to allow events to be sent from mozilla to
StarOffice.
2000-04-13 00:12:50 +00:00
ashuk%eng.sun.com 5580fae4fe Made fix for Find Dialog closing correctly on Solaris
a=ashuk
r=geetha.vaidyanaathan@sun.com
Bug=35514

_Ashu
2000-04-12 18:06:21 +00:00
ashuk%eng.sun.com 27aef922e1 Made changes for accomodating new CurrentPage Find features into
webclient

a=ashuk
r=edburns
Bug=20659

Ashu
2000-04-06 17:45:27 +00:00
ashuk%eng.sun.com be8b015d45 changed signatures of functions in CurrentPage interface
a=ashuk
r=edburns
Bug=20659

Ashu
2000-04-06 17:42:46 +00:00
ashuk%eng.sun.com 5df586e60d Added stuff to implement Find features in CurrentPage interface
a=ashuk
r=edburns
Bug=20659

_Ashu
2000-04-06 17:39:01 +00:00
ashuk%eng.sun.com 93bd635847 Added AWT code to create a generic Dialog box. Used this to create a
Find Dialog Box for the Find features in the CurrentPage interface

a=ashuk
r=edburns
Bug=20659

Ashu
2000-04-06 17:36:57 +00:00
ashuk%eng.sun.com 189bf05849 Made changes in EMWIndow.java and EmbeddedMozilla.java to create a better
GUI with menus for creating and closing new windows and for Find features.

Ashu

a=ashuk
r=edburns
Bug=20659
2000-04-06 17:33:49 +00:00
edburns%acm.org 453a9616da bug: http://bugzilla.mozilla.org/show_bug.cgi?id=34665
This change replaces all printfs in src_moz with calls to PR_LOG.  No
printfs should appear in src_moz anymore.

You won't see any console output from native code unless you define

NSPR_LOG_MODULES=webclient:3

in your environment.  Furthermore, if you want PR_LOG statements in
webclient to go to a file instead, define

WEBCLIENT_LOG_FILE=C:\VALIDDIR\filename.txt

in your environment.  This file will get created fresh each time, since
PR_LOG uses fopen(filename, "w").

New Files:

I've created ns_globals.h, included from jni_util.h.  ns_globals.h holds
an extern * to a struct used in the PR_LOG calls.

Significant changes:

WrapperFactoryImpl.cpp

nativeAppInitialize(){

Added:

#if DEBUG_RAPTOR_CANVAS
    prLogModuleInfo = PR_NewLogModule("webclient");
    const char *webclientLogFile = PR_GetEnv("WEBCLIENT_LOG_FILE");
    if (nsnull != webclientLogFile) {
        PR_SetLogFile(webclientLogFile);
        // If this fails, it just goes to stdout/stderr
    }
#endif
}

All the other files in this checkin follow the this pattern:

Before checkin:

       printf("InitMozillaStuff(%lx): Create the Event Queue for the UI thread...\n",
               initContext);

After checkin:

    if (prLogModuleInfo) {
        PR_LOG(prLogModuleInfo, 3,
               ("InitMozillaStuff(%lx): Create the Event Queue for the UI thread...\n",
               initContext));
    }

See http://lxr.mozilla.org/mozilla/source/nsprpub/pr/include/prlog.h#190

for the definition of PR_LOG
2000-04-05 21:38:27 +00:00
edburns%acm.org 2f7e19a151 The problem was in the way the
NativeEventThread's run() method's infinite loop was implemented.  The
  loop looks like this:

    while (null != this.browserControlCanvas) {
        synchronized (this.browserControlCanvas.getTreeLock()) {
            nativeProcessEvents(nativeWebShell);

            if (null != listenersToAdd && !listenersToAdd.isEmpty()) {
                tempEnum = listenersToAdd.elements();
                while (tempEnum.hasMoreElements()) {
                    nativeAddListener(nativeWebShell,
                                          (WebclientEventListener)
                                      tempEnum.nextElement());
                }
                listenersToAdd.clear();
            }
        }
    }

  The problem I was observing was that
  nativeProcessEvents(nativeWebShell) would crash due to the fact that
  the nativeWebShell, which is actually an WebShellInitContext instance,
  had been de-allocated.  This de-allocation happens as a result of the
  WindowControlImpl.delete() method, which looks like this:

public void delete()
{
    Assert.assert(null != eventThread, "eventThread shouldn't be null at delete time");
    eventThread.delete();
    eventThread = null;
    nativeDestroyInitContext(nativeWebShell);
    nativeWebShell = -1;
}

  nativeDestroyInitContext de-allocates the WebShellInitContextInstance.
  You can see that the first thing done is to delete the eventThread().
  NativeEventThread.delete() looks like this:

public void delete()
{
    // setting this to null causes the run thread to exit
    synchronized(this.browserControlCanvas.getTreeLock()) {
        browserControlCanvas = null;
    }
...
}

  If you compare NativeEventThread.delete() with the infinite loop in
  NativeEventThread.run(), you'll see that the fact that they both
  synchronize on the same object doesn't protect us from the following
  case:

    NativeEventThread: The infinite loop checks to see if the
    browserControlCanvas is null, then does synchronize on
    browserControlCanvas.getTreeLock(), then calls processNativeEvents().

meanwhile

    WindowControlImpl thread: delete() calls NativeEventThread.delete(),
    which does synchronize on browserControlCanvas.getTreeLock().
    During NativeEventThread.delete(), synchronized section,
    browserControlCanvas is set to null.

    NativeEventThread: because the check for null browserControlCanvas
    occurrs outside of the synchronized block, it's not recheked, and
    thus, the event loop continues to process when it shouldn't.

  The fix is to change the event loop to look like this:

    while (true) {
        synchronized (this.browserControlCanvas.getTreeLock()) {
            // this has to be inside the synchronized block!
            if (null == this.browserControlCanvas) {
                return;
            }
            nativeProcessEvents(nativeWebShell);

            if (null != listenersToAdd && !listenersToAdd.isEmpty()) {
                tempEnum = listenersToAdd.elements();
                while (tempEnum.hasMoreElements()) {
                    nativeAddListener(nativeWebShell,
                                          (WebclientEventListener)
                                      tempEnum.nextElement());
                }
                listenersToAdd.clear();
            }
        }
    }
2000-04-03 04:32:27 +00:00
edburns%acm.org df7298bf88 Adding this line to the top of the run() method in
NativeEventThread seems to fix the hanging problem.

    this.setPriority(Thread.MIN_PRIORITY);


Looks like it was starvation.
2000-04-01 01:17:33 +00:00
edburns%acm.org 98e68de71c Thanks to Andi Eades, and Steffen Grarup for finding and fixing this.
Basically, we were storing a local jobject ref and using it on
 another thread without calling NewGlobalRef.

The fix is below:

cvs diff WindowControlImpl.cpp NativeEventThread.cpp (in directory D:\Projects\mozilla\java\webclient\src_moz\)
Index: WindowControlImpl.cpp
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/src_moz/WindowControlImpl.cpp,v
retrieving revision 1.5
diff -r1.5 WindowControlImpl.cpp
131c131,134
<     initContext->nativeEventThread = nsnull;
---
>     if (nsnull != initContext->nativeEventThread) {
>         ::util_DeleteGlobalRef(env, initContext->nativeEventThread);
>         initContext->nativeEventThread = nsnull;
>     }
Index: NativeEventThread.cpp
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/src_moz/NativeEventThread.cpp,v
retrieving revision 1.7
diff -r1.7 NativeEventThread.cpp
213c213,215
<         initContext->nativeEventThread = obj; // VERY IMPORTANT!!
---
>         initContext->nativeEventThread =
>             ::util_NewGlobalRef(env, obj); // VERY IMPORTANT!!
>

*****CVS exited normally with code 1*****
2000-03-31 17:09:00 +00:00
ashuk%eng.sun.com c5e4bf9228 a=ashuk
Made changes to the solaris makefile to include jni_util_export - for webclient-uno stuff

_Ashu
2000-03-28 21:36:04 +00:00
edburns%acm.org 8305c05bc3 I really meant to check in this one. 2000-03-27 20:28:21 +00:00
edburns%acm.org 8debd911c6 bug=33093
a=edburns
r=ashuk

Force prefs to be read, causing the proxy data to be read.
2000-03-23 23:08:35 +00:00
edburns%acm.org 226e980797 bug=33093
a=edburns
r=ashuk

Force prefs to be read, causing the proxy data to be read.
2000-03-23 22:57:57 +00:00
edburns%acm.org 97880eb454 r=ashuk
a=edburns
bug=32011
This change enables the current webclient API to be called from native
code.

It adds makefile and conditional compilation logic.

If the user defines BAL_INTERFACE in their environment before building
webclient, -DBAL_INTERFACE is added to LCFLAGS.  This causes code in
jni_util_export.cpp to behave differently due to the conditional
compilation logic.

I've broken out the 8 functions that are necessary to call into the
Webclient JNI methods into jni_util_export.{h,cpp}.

I've created a new pair of files, bal_util.{h,cpp} that contain function
declarations and definitions that are used when src_moz is built with
BAL_INTERFACE.  bal_util.obj is not built, nor added to webclient.dll if
building without BAL_INTERFACE.

See the page
http://www.mozilla.org/projects/blackwood/webclient/design/uno-transition.html
for a design document description of these changes.
2000-03-21 19:27:13 +00:00
edburns%acm.org 1cb45027a0 bug=32011
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.
2000-03-16 23:07:03 +00:00
edburns%acm.org 8f986c0f07 This checkin adds API to cleanly destroy a BrowserControl instance. It
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().
2000-03-13 18:44:32 +00:00
edburns%acm.org 1072637f9a r=ashuk
a=edburns
bug=31253

This change doesn't impact SeaMonkey.

Move the initialization of the nativeWebShell ptr into a superclass.
2000-03-09 23:22:52 +00:00
edburns%acm.org 1fe821d51c bug=31123
a=edburns
r=bruce

Folks, don't EVER use NULL in your c++ code.  Use nsnull instead.
2000-03-09 05:12:42 +00:00
edburns%acm.org 2d0c6834f0 JAVAH generated header files should not be checked in, since they are generated as a result of the build. 2000-03-09 04:41:43 +00:00
sherry.shen%sun.com a783dc2393 Bug #28281, r=leaf, a=leaf,
Add an option for building Java-supplement and
fix the Java building problem about JDIRS.
2000-03-09 01:14:22 +00:00
edburns%acm.org 2e656bb727 For win32 builds. If you define
WEBCLIENT_SPEC=1

in your environment before building webclient, the spec-compliant
version of webclient will be built.
2000-03-08 19:17:16 +00:00
edburns%acm.org 502f0e0575 Changed NULL to nsnull, so it would build with gcc.
.
2000-03-08 18:54:00 +00:00
ashuk%eng.sun.com c4b109d817 a=edburns
r=edburns
author=ashuk
bug=28407

Made fix for new BookmarksImpl.java file -- Ashu K.
2000-03-08 18:49:36 +00:00
ashuk%eng.sun.com a162d16554 a=edburns
r=edburns
author=ashuk
bug=28407

Made fix for changed BookmarksImpl.cpp file in the Stubs file -- Ashu K.
2000-03-08 18:41:01 +00:00
ashuk%eng.sun.com de8a825d98 a=edburns
r=edburns
author=ashuk
bug=28407

New native code for spec-compliant impl ported to solaris -- Ashu K.
2000-03-07 22:45:37 +00:00
ashuk%eng.sun.com 6ee91c835d a=edburns
r=edburns
author=ashuk
bug=28407

Moved this file to java/webclient/classes_new/org/mozilla/webclient/wrapper_native -- Ashu K.
2000-03-07 22:39:11 +00:00
ashuk%eng.sun.com e39f366367 a=edburns
r=edburns
author=ashuk
bug=28407

New native code for spec-compliant impl ported to solaris -- Ashu K.
2000-03-07 22:33:38 +00:00
edburns%acm.org 47d84ba5d3 NOT IN SeaMonkey
Added // PENDING comment
2000-03-07 22:32:27 +00:00
ashuk%eng.sun.com 09b2307321 a=edburns
r=edburns
author=ashuk
bug=28407

New run script for spec-compliant impl -- Ashu K.
2000-03-07 22:19:20 +00:00
ashuk%eng.sun.com 45ce84a34f a=edburns
r=edburns
author=ashuk
bug=28407

New solaris Makefile for spec-compliant impl -- Ashu K.
2000-03-07 22:18:17 +00:00
ashuk%eng.sun.com 5ff64a96cb a=edburns
r=edburns
author=ashuk
bug=28407

New java code for spec-compliant impl ported to solaris -- Ashu K.
2000-03-07 22:16:07 +00:00
ashuk%eng.sun.com 05667b6516 a=edburns
r=edburns
author=ashuk
bug=28407

New java code for spec-compliant impl ported to solaris -- Ashu K.
2000-03-07 22:10:08 +00:00
ashuk%eng.sun.com 229256c605 a=edburns
r=edburns
author=ashuk
bug=28407

makefile for Java code - spec compliant impl -- Ashu K
2000-03-07 22:03:57 +00:00
edburns%acm.org daf6f29e27 a=edburns
r=ashuk
bug=2069

Native code for spec compliant webclient impl.
2000-03-04 01:37:20 +00:00
edburns%acm.org e4349bb561 a=edburns
r=ashuk
bug=2069

Java classes for spec compliant webclient impl.
2000-03-04 01:10:58 +00:00
edburns%acm.org e7b3aa53ad Put #include <unistd.h> inside #ifdef XP_UNIX 2000-02-18 19:33:28 +00:00
edburns%acm.org 2a216d23c1 Removed import org.mozilla.webclient.motif.* 2000-02-18 19:32:22 +00:00
edburns%acm.org 01cdae7df9 author=Ashutosh Kulkarni
r=edburns
approver=edburns
bug=28407

THIS CODE IS NOT MOZILLA CODE!

This code change allows webclient to work with GTKSUPERWIN.
2000-02-18 19:16:27 +00:00
edburns%acm.org 3edfc17d1a More simple name change changes. 2000-01-07 00:44:24 +00:00
edburns%acm.org 2865ae33df Changed MozillaEventThread.h to NativeEventThread.h 2000-01-06 22:52:03 +00:00