7 Commits

Author SHA1 Message Date
edburns%acm.org
51c33f1e5a This checkin is the next step for getting DocumentLoadListener to work.
I now have the new architecture for pumping events from mozilla back
into java.  I've added a sequence diagram to
<http://www.mozilla.org/projects/blackwood/webclient/design/20040306-webclient-2_0.zargo>
and updated the private API class diagram.

The next step will be to have the EmbedProgress::On* methods call back
to EventRegistration.nativeEventOccured.

M src_moz/EmbedProgress.cpp
M src_moz/EmbedProgress.h

- make this class maintain a reference to the java EventRegistration
  instance for this BrowserControl

M src_moz/NativeBrowserControl.cpp
M src_moz/NativeBrowserControl.h

- make this class maintain a reference to the java BrowserControl instance.

M src_moz/WindowControlImpl.cpp

- push the java BrowserControl to the NativeBrowserControl on Realize().

M src_moz/WrapperFactoryImpl.cpp
M src_moz/ns_globals.h

- expose gImplementedInterfaces in ns_globals.h


git-svn-id: svn://10.0.0.236/trunk@157781 18797224-902f-48f8-a5cc-f745e15eee43
2004-06-11 15:55:48 +00:00
edburns%acm.org
2642d50ece - rename initContext to NativeBrowserControl, at both the native and
java layers.

- Rework NativeEventThread to be usable without having the
  browserControl window realized.

- change who owns the NativEventThread to be the BrowserControl, by
  proxy through WrapperFactoryImpl.  Again, this is with a view toward
  using webclient without the browserControl window realized.

A webclient/src_moz/NativeBrowserControl.h
A webclient/src_moz/NativeBrowserControl.cpp

- Centerpiece of native Object hierarchy.  Owned by NativeEventThread.

M webclient/build-tests.xml

- reformat

- add new test, currently failing, for Navigation.

M webclient/classes_spec/org/mozilla/webclient/impl/BrowserControlImpl.java

- destroy our nativeBrowserControl.

M webclient/classes_spec/org/mozilla/webclient/impl/WrapperFactory.java

- Added API for obtaining the NativeEventThread for a BrowserControl.

M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/BookmarksImpl.java
M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java
M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java
M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/HistoryImpl.java
M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java

- rename nativeWebShell to nativeBrowserControl

M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/ImplObjectNative.java

- rename nativeWebShell to nativeBrowserControl

- add method to get the NativeEventThread for this instance.

M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/NativeEventThread.java

- remove dependency on WindowControl

- make this class be the owner of the nativeBrowserControl instance.

- rename nativeWebShell to nativeBrowserControl

- renamed nativeInitialize to nativeStartup

- added nativeShutdown

M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WindowControlImpl.java

- remove delete() method.

- no longer owns NativeEventThread

- no longer owns nativeBrowserControl

M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java

- Take over NativeEventThread ownership responsibilities from
  WindowControlImpl (by proxy for BrowserControl).

M webclient/src_moz/CBrowserContainer.cpp
M webclient/src_moz/CBrowserContainer.h
M webclient/src_moz/CurrentPageActionEvents.cpp
M webclient/src_moz/CurrentPageActionEvents.h
M webclient/src_moz/CurrentPageImpl.cpp
M webclient/src_moz/HistoryActionEvents.cpp
M webclient/src_moz/HistoryActionEvents.h
M webclient/src_moz/HistoryImpl.cpp
M webclient/src_moz/NativeEventThreadActionEvents.cpp
M webclient/src_moz/NativeEventThreadActionEvents.h
M webclient/src_moz/NavigationActionEvents.cpp
M webclient/src_moz/NavigationActionEvents.h
M webclient/src_moz/NavigationImpl.cpp
M webclient/src_moz/PromptActionEvents.cpp
M webclient/src_moz/PromptActionEvents.h
M webclient/src_moz/WindowControlActionEvents.cpp
M webclient/src_moz/WindowControlActionEvents.h
M webclient/src_moz/WindowCreator.cpp
M webclient/src_moz/WindowCreator.h

- rename nativeWebShell to nativeBrowserControl

M webclient/src_moz/Makefile.in

- comment out not yet fixed per-window sources

- add NativeBrowserControl.cpp

M webclient/src_moz/NativeEventThread.cpp

- major refactoring.  Much of the work is now being done in
  NativeBrowserControl.cpp

M webclient/src_moz/WindowControlImpl.cpp

- remove functionality now located in NativeEventThread and
  NativeBrowserControl.

M webclient/src_moz/WrapperFactoryImpl.cpp

- flesh out native{Create,Destroy}BrowserControl.

M webclient/src_moz/ns_globals.h

- remove gActionQueue and gEmbeddedThread.  Moved into class
  NativeBrowserControl.

M webclient/src_moz/ns_util.cpp

- rename initContext to NativeBrowserControl

- get action queue from NativeBrowserControl

M webclient/src_moz/ns_util.h

- remove WebShellInitContext!  It's finally a class now, called
  NativeBrowserControl.

M webclient/test/automated/src/classes/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImplTest.java

- added new testcase to show create/deleteBrowserControl works.


git-svn-id: svn://10.0.0.236/trunk@154679 18797224-902f-48f8-a5cc-f745e15eee43
2004-04-10 21:50:39 +00:00
edburns%acm.org
cfc2315e49 This is a checkpoint milestone for webclient 2.0. Webclient currently
doesn't run, but several unit tests for webclient do.

I'll be proceeding through the rest of the webclient interfaces,
building junit tests as I go, in the coming months.  I hope to flesh out
the basic framework, then publish build instructions, and hopefully I
can get some contributions from the community.

M util/classes/org/mozilla/util/Utilities.java

new method: getImplFromServices:

+     *
+     * <p>This method tries to load the resource
+     * <code>META-INF/services/&gt;interfaceClassName&gt;</code>, where
+     * <code>&gt;interfaceClassName&lt;</code> is the argument to this
+     * method.  If the resource is found, interpret it as a
+     * <code>Properties</code> file and read out its first line.
+     * Interpret the first line as the fully qualified class name of a
+     * class that implements <code></code>.  The named class must have a
+     * public no-arg constructor.</p>

M webclient/build-tests.xml

- junit testcases for Webclient APIs, developed using test-first.

M webclient/build.xml

- changes for new package name structure:

  packages org.mozilla.webclient.{wrapper_native, wrapper_non_native} have gone away.  Replaced with org.mozilla.webclient.impl.{wrapper_native, wrapper_non_native}

- changes to accomodate "Services" based approach for pluggable
  webclient implementation.

- don't bother re-naming the javah generated files, just let javah pick
  the names.

- pass debugging args from build.properties

- changed name of junit test target to "test".

M webclient/classes_spec/org/mozilla/webclient/BrowserControl.java

- got rid of BROWSER_TYPE.  No longer necessary due to the new
  pluggability mechanism.

M webclient/classes_spec/org/mozilla/webclient/BrowserControlFactory.java

- Leverage the org.mozilla.util.Utilities.getImplFromServices()
  mechanism to allow a vendor-pluggable webclient implementation of the
  new "WebclientFactory" interface, which is method for method
  compatible with BrowserControlFactory.  Make all BrowserControlFactory
  methods call through to methods on the vendor provided
  WebclientFactory implementation.

R webclient/classes_spec/org/mozilla/webclient/BrowserControlFactoryInterface.java
A webclient/classes_spec/org/mozilla/webclient/BrowserControlICE.java
R webclient/classes_spec/org/mozilla/webclient/BrowserControlImpl.java
R webclient/classes_spec/org/mozilla/webclient/BrowserType.java

- move all implementation specific classe to the impl package.

M webclient/classes_spec/org/mozilla/webclient/ImplObject.java

- ImplObject shouldn't depend on vendor private classes.

M webclient/classes_spec/org/mozilla/webclient/Preferences.java

- new method

+  public void unregisterPrefChangedCallback(PrefChangedCallback cb,
+                                            String prefName, Object closure);

M webclient/classes_spec/org/mozilla/webclient/ProfileManager.java

- properly specify this interface.

A webclient/classes_spec/org/mozilla/webclient/WebclientFactory.java

 * <p>This interface allows a pluggable webclient API implementation.
 * The static methods in {@link BrowserControlFactory} call through to
 * methods on this interface.  Please see {@link BrowserControlFactory}
 * for information on how to hook up your <code>WebclientFactory</code>
 * implementation to the <code>BrowserControlFactory</code></p>

R webclient/classes_spec/org/mozilla/webclient/WrapperFactory.java
R webclient/classes_spec/org/mozilla/webclient/impl/BrowserControlFactoryImpl.java

- moved these to the impl class

A webclient/classes_spec/org/mozilla/webclient/impl/BrowserControlImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/Service.java
A webclient/classes_spec/org/mozilla/webclient/impl/WebclientFactoryImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/WrapperFactory.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/BookmarkEntryImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/BookmarksImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/HistoryImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/ISupportsPeer.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/ImplObjectNative.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/NativeEventThread.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/PreferencesImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/ProfileManagerImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/RDFEnumeration.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/RDFTreeNode.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/SelectionImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WCEventListenerWrapper.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WCMouseListenerImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WindowControlImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/gtk/GtkBrowserControlCanvas.java
A webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/win32/Win32BrowserControlCanvas.java

- copied from old package naming scheme.

- lots and lots of cleanup.

R webclient/classes_spec/org/mozilla/webclient/wrapper_native/BookmarkEntryImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/BookmarksImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/CurrentPageImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/EventRegistrationImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/HistoryImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/ISupportsPeer.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/ImplObjectNative.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/NativeEventThread.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/NavigationImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/PreferencesImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/ProfileManagerImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/RDFEnumeration.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/RDFTreeNode.java
A webclient/classes_spec/org/mozilla/webclient/wrapper_native/README
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/SelectionImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/WCEventListenerWrapper.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/WCMouseListenerImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/WindowControlImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/WrapperFactoryImpl.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/gtk/GtkBrowserControlCanvas.java
R webclient/classes_spec/org/mozilla/webclient/wrapper_native/win32/Win32BrowserControlCanvas.java

- removed from old package naming scheme

M webclient/src_moz/BookmarksImpl.cpp

- remove dependency on RDFActionEvents by inlining all the code that
  formerly was in the events.

- package name change

- JNI include file name change

M webclient/src_moz/CurrentPageImpl.cpp
M webclient/src_moz/HistoryImpl.cpp
M webclient/src_moz/ISupportsPeer.cpp

- package name change

- JNI include file name change

M webclient/src_moz/Makefile.in

- get rid of PreferencesActionEvents.cpp and RDFActionEvents.cpp

- add ProfileManagerImpl.cpp

M webclient/src_moz/NativeEventThread.cpp

- this file is not done yet.  I've been pulling misplaced initialization
  stuff out of here and putting it into WrapperFactoryImpl.cpp.

- got rid of gComponentManager, since we can use do_CreateInstance
  instead.

- package name change

- JNI include file name change

M webclient/src_moz/NativeEventThreadActionEvents.h

- JNI include file name change

M webclient/src_moz/NavigationImpl.cpp

- package name change

- JNI include file name change

R webclient/src_moz/PreferencesActionEvents.cpp
R webclient/src_moz/PreferencesActionEvents.h

- don't need these anymore!  woohoo!

M webclient/src_moz/PreferencesImpl.cpp

- remove dependency on PreferencesActionEvents by inlining code into the
  methods that used to use the events.

A webclient/src_moz/ProfileManagerImpl.cpp

- new class, implementation of the ProfileManager interface.

M webclient/src_moz/PromptActionEvents.cpp

- change erroneous comment so my grep performed correctly.

R webclient/src_moz/RDFActionEvents.cpp
R webclient/src_moz/RDFActionEvents.h

- don't need these anymore!  woohoo!

M webclient/src_moz/RDFEnumeration.cpp
M webclient/src_moz/RDFTreeNode.cpp

- remove dependency on RDFActionEvents by inlining code into the
  methods that used to use the events.

M webclient/src_moz/WindowControlActionEvents.cpp

- deallocate shareInitiContext.

M webclient/src_moz/WindowControlImpl.cpp

- package name change

- JNI include file name change

- remove the "sleep so I can attach gdb" code.  Moved to
  WrapperFactoryImpl.cpp.

M webclient/src_moz/WrapperFactoryImpl.cpp

- lots of changes.  This is now where the app initialization and
  shutdown happens,

M webclient/src_moz/dom_util.cpp

- comment change

M webclient/src_moz/ns_globals.h

- get rid of inappropriate global usage.

M webclient/src_moz/ns_util.h

- new struct WebclientContext for singletons.

M webclient/src_moz/rdf_util.cpp

- new methods, rdf_startup and rdf_shutdown.

- replace calls to nsComponentManager::CreateInstance() with
  do_CreateInstance().

M webclient/src_moz/rdf_util.h

- new methods, rdf_startup and rdf_shutdown.

M webclient/src_moz/gtk/GtkBrowserControlCanvas.cpp

- package name change

- JNI include file name change

M webclient/src_moz/gtk/GtkBrowserControlCanvasStub.cpp

- package name change

- JNI include file name change

- this file isn't needed anymore, thankfully!  I'll remove it soon.

M webclient/src_moz/gtk/StubFunctions.h

- package name change

- JNI include file name change

- this file isn't needed anymore, thankfully!  I'll remove it soon.

M webclient/src_moz/motif/BrowserControlNativeShimStub.cpp
M webclient/src_moz/motif/MotifBrowserControlCanvas.cpp
M webclient/src_moz/motif/MotifBrowserControlCanvasStub.cpp
M webclient/src_moz/motif/NativeLoaderStub.cpp
M webclient/src_moz/win32/Win32BrowserControlCanvas.cpp

- package name change

- JNI include file name change

M webclient/src_share/jni_util.cpp
M webclient/src_share/jni_util.h

- util_InitializeShareInitContext() takes a JNIEnv *.

- new methods

+void util_DeleteGlobalRef(JNIEnv *env, jobject toDeleteRef);
+void util_DeleteLocalRef(JNIEnv *env, jobject toDeleteRef);
+void util_getSystemProperty(JNIEnv *env,
+                            const char *propName,
+                            char *propValue,
+                            jint propValueLen);


M webclient/src_share/jni_util_export.cpp
M webclient/src_share/jni_util_export.h

+JNIEXPORT jobjectArray util_GetJstringArrayFromJcharArray(JNIEnv *env,
+                                                          jint len,
+                                                          jchar **strings,
+                                                          jint *stringLengths)

A webclient/test/automated/src/classes/org/mozilla/webclient/BookmarksTest.java
R webclient/test/automated/src/classes/org/mozilla/webclient/BrowserControlFactoryTest.java
A webclient/test/automated/src/classes/org/mozilla/webclient/PreferencesTest.java
A webclient/test/automated/src/classes/org/mozilla/webclient/ProfileManagerTest.java
A webclient/test/automated/src/classes/org/mozilla/webclient/impl/WebclientFactoryImplTest.java
A webclient/test/automated/src/classes/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImplTest.java
A webclient/test/automated/src/classes/org/mozilla/webclient/impl/wrapper_native/gtk/TestGtkBrowserControlCanvas.java
R webclient/test/automated/src/classes/org/mozilla/webclient/wrapper_native/gtk/TestGtkBrowserControlCanvas.java
A webclient/test/automated/src/test/BrowserControlFactoryTest_correct

- junit tests!  TEST FIRST!


git-svn-id: svn://10.0.0.236/trunk@147393 18797224-902f-48f8-a5cc-f745e15eee43
2003-09-28 06:29:22 +00:00
edburns%acm.org
abbf4da054 comment
git-svn-id: svn://10.0.0.236/trunk@119292 18797224-902f-48f8-a5cc-f745e15eee43
2002-04-18 19:58:58 +00:00
ashuk%eng.sun.com
ad8ed2e23e bug=44279
a=edburns
r=edburns
author=ashuk.

This code makes Webclient work with Mozilla M16.


git-svn-id: svn://10.0.0.236/trunk@73562 18797224-902f-48f8-a5cc-f745e15eee43
2000-06-30 00:01:58 +00:00
edburns%acm.org
394bcff4aa 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.


git-svn-id: svn://10.0.0.236/trunk@66563 18797224-902f-48f8-a5cc-f745e15eee43
2000-04-20 18:16:05 +00:00
edburns%acm.org
6bd98defd0 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


git-svn-id: svn://10.0.0.236/trunk@65380 18797224-902f-48f8-a5cc-f745e15eee43
2000-04-05 21:38:27 +00:00