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

796 Коммитов

Автор SHA1 Сообщение Дата
edburns%acm.org a4648dbbaf M dist/build.xml
M dist/webclient-dist.xml
M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java

- rollback 2.0 alpha b changes.  Thanks to Annie Lau.
2004-10-20 02:16:16 +00:00
edburns%acm.org 63ed119bc3 This checkin removes bookmarks support from webclient by not
initializing the bookmarks engine.  Next step is to work with the
mozilla embedding people to see how I can fix this.  What I'd like to do
is *NOT* use the GRE, but rather use the mozilla suite installation.

SECTION: Changes

M dist/build.xml

- rename release to 2_0_a2b

- made the test run from the mozilla suite installation directory

- clean out the generated batch file or sh file.

M dist/webclient-dist.xml

- made the build.xml generate a batch file, that sets the proper env
  vars, then calls back to this build.xml and executes the
  run.test.browser target.

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

- don't pull in Bookmarks, since it's not in the GRE.

SECTION: Diffs

Index: dist/build.xml
===================================================================
RCS file: /cvsroot/mozilla/java/dist/build.xml,v
retrieving revision 1.4
diff -u -r1.4 build.xml
--- dist/build.xml	15 Oct 2004 16:39:07 -0000	1.4
+++ dist/build.xml	18 Oct 2004 14:03:36 -0000
@@ -30,7 +30,7 @@

   <property name="Name" value="webclient"/>
   <property name="name" value="webclient"/>
-  <property name="version" value="2_0_a2"/>
+  <property name="version" value="2_0_a2b"/>

 <!-- ************ Per user local properties ******************************* -->

@@ -136,9 +136,13 @@
     </zip>
   </target>

-  <target name="test.dist" depends="prepare,clean.dev.build">
-
+  <target name="unzip.dist" depends="prepare">
     <unzip dest="${moz.install.dir}" src="${dist.home}/${name}_${version}_${platform}.zip" />
+  </target>
+
+  <target name="test.dist" depends="prepare">
+
+    <antcall target="unzip.dist" />

     <ant inheritAll="false" dir="${moz.install.dir}"/>

@@ -149,6 +153,8 @@
   <target name="clean.test.dist" depends="props">

     <delete file="${moz.install.dir}/build.xml" />
+    <delete file="${moz.install.dir}/runwc.bat" />
+    <delete file="${moz.install.dir}/runwc.sh" />
     <delete file="${moz.install.dir}/components/${so.prefix}javadom.${so.extension}" />
     <delete file="${moz.install.dir}/${so.prefix}javadomjni.${so.extension}" />
     <delete file="${moz.install.dir}/${so.prefix}${name}.${so.extension}" />
Index: dist/webclient-dist.xml
===================================================================
RCS file: /cvsroot/mozilla/java/dist/webclient-dist.xml,v
retrieving revision 1.2
diff -u -r1.2 webclient-dist.xml
--- dist/webclient-dist.xml	15 Oct 2004 16:39:07 -0000	1.2
+++ dist/webclient-dist.xml	18 Oct 2004 14:03:36 -0000
@@ -3,6 +3,20 @@
   <property environment="myenv" />

   <target name="props">
+    <condition property="is.win32" value="true">
+      <and>
+        <os family="windows" />
+      </and>
+    </condition>
+
+    <condition property="is.unix" value="true">
+      <and>
+        <os family="unix" />
+      </and>
+    </condition>
+
+
+
     <condition property="PATH_SEP" value=";">
       <and>
         <os family="windows" />
@@ -55,7 +69,31 @@

   </target>

-  <target name="main" depends="props">
+  <target name="main" depends="main.win32,main.unix"/>
+
+  <target name="main.win32" depends="props" if="is.win32">
+
+    <delete file="${basedir}/runwc.bat" />
+    <echo file="${basedir}/runwc.bat">
+SET PATH=${java.libpath};%PATH%
+SET NSPR_LOG_MODULES=webclient:4,webclientstub:4
+SET NSPR_LOG_FILE=webclient.log
+ant run.test.browser
+    </echo>
+    <exec command=".\runwc.bat" newenvironment="true" />
+
+  </target>
+
+  <target name="main.unix" depends="props" if="is.unix">
+
+    <delete file="${basedir}/runwc.sh" />
+    <echo file="${basedir}/runwc.sh">
+    </echo>
+
+  </target>
+
+
+  <target name="run.test.browser" depends="props">

     <java newenvironment="true"
           classname="org.mozilla.webclient.test.TestBrowser"
Index: webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java,v
retrieving revision 1.8
diff -u -r1.8 WrapperFactoryImpl.java
--- webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java	17 Jun 2004 21:27:55 -0000	1.8
+++ webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java	18 Oct 2004 14:03:37 -0000
@@ -316,7 +316,8 @@

 			((Service)WrapperFactoryImpl.this.profileManager).startup();
 			((Service)WrapperFactoryImpl.this.prefs).startup();
-			((Service)WrapperFactoryImpl.this.bookmarks).startup();
+			// PENDING(edburns): see Message-ID: <bbf0af98.0410171147.3109d532@posting.google.com> on n.p.m.java
+			// ((Service)WrapperFactoryImpl.this.bookmarks).startup();

 			WrapperFactoryImpl.this.nativeAppSetup(nativeWrapperFactory);
 			return null;
2004-10-18 14:08:22 +00:00
edburns%acm.org b6b9de1e28 M dist/build.xml
M dist/webclient-dist.xml

- first crack at making this work with a mozilla 1.7 suite install
2004-10-15 16:39:07 +00:00
edburns%acm.org 74e8b6f3cb ../cvslog.txt 2004-10-10 03:38:04 +00:00
edburns%acm.org 3cfb7955b2 cvslog.txt 2004-10-10 02:02:52 +00:00
edburns%acm.org 1448fe45f7 update_date 2004-09-30 17:59:45 +00:00
edburns%acm.org 48adbf1a5f This change-bundle enables webclient to build and run with mozilla 1.7.
The Preferences unit test currently fails, but the test browser runs.
Next step is to make all the unit tests run, then produce the source and
binary distribution for 2.0 alpha 2.

M dom/jni/javaDOMEventsGlobals.cpp

- use nsString.get() instead of nsString.GetBufferHandle()

M webclient/src_moz/NavigationActionEvents.cpp

- don't use ctor initializer for nsString

M webclient/src_moz/ns_util.cpp

- nsString2.h is gone.
2004-09-29 22:01:26 +00:00
edburns%acm.org ea9a8655e8 This change-bundle adds build.xml rules that produce a binary
distribution of webclient.

Next step is to get mozilla 1.7 building on my machine, then get
webclient to compile with it, then do a 2.0a2 release.

M build.xml

- incorporate re-added dist directory

A dist/build.xml

- create a binary distribution

A dist/webclient-dist.xml

- build.xml file for the test browser in the distribution
2004-09-29 19:53:55 +00:00
edburns%acm.org 8484d431af This checkin implements a response header listener feature.
I have changed the usage contract of the DocumentLoadListener slightly.
Prior to this checkin, calling getEventData() on the DocumentLoadEvent
passed in to your eventDispatched() method returned the URI to which the
event applies.

Now the getEventData() returns a Map.  You must look up the "URI" key to
find the URI to which the event applies.  If your listener is an
instance of PageInfoListener, and your event mask is
END_URL_LOAD_EVENT_MASK, your Map will have an additional entry under
the key "headers".  This entry is another Map representing the response
headers.

DocumentLoadListener:

 * <p>The <code>eventDispatched()</code> method is passed a {@link
 * DocumentLoadEvent} instance.  The <code>type</code> property of the
 * event will be one of the types defined as a <code>public static final
 * int</code> in <code>DocumentLoadEvent</code>.</p>
 *
 * <p>The <code>eventData</code> property of the
 * <code>DocumentLoadEvent</code> instance will be a
 * <code>java.util.Map</code>.  For all <code>EVENT_MASK</code> types in
 * <code>DocumentLoadEvent</code> the map will contain an entry under
 * the key "<code>URI</code>" without the quotes.  This will be the
 * fully qualified URI for the event.</p>
 *
 * <p>For the <code>PROGRESS_URL_LOAD_EVENT_MASK</code> there will be an
 * entry in the map for the key "<code>message</code>".  This will be
 * the progress message from the browser.</p>

PageInfoListener:

 * <p>This {@link DocumentLoadListener} subclass adds the ability to get
 * detailed information on each event. </p>
 *
 * <p>The <code>eventDispatched()</code> method is passed the same thing
 * as in the {@link DocumentLoadListener}.</p>
 *
 * <p>The <code>eventData</code> property of the
 * <code>DocumentLoadEvent</code> instance will be a
 * <code>java.util.Map</code>.  For the
 * <code>END_URL_LOAD_EVENT_MASK</code> type in
 * <code>DocumentLoadEvent</code> the map will contain an entry under
 * the key "<code>URI</code>" without the quotes.  This will be the
 * fully qualified URI for the event.  The map will also contain an
 * entry under the key "<code>headers</code>".  This entry will be a
 * <code>Map</code> of all the response headers.</p>


The next step will be to allow the same procedure to work to discover
the request headers.

Ed

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

- marker class for listenening for high fidelity page information.

A src_moz/EventRegistrationImpl.cpp

- add boolean property, capturePageInfo to turn on or off high fidelity
  page information collection.

M build-tests.xml

- add new test, DocumentLoadListenerTest

M build.xml

- added new JNI class, EventRegistrationImpl

M classes_spec/org/mozilla/webclient/CurrentPage2.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java

- rollback previous API for headers discovery

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

- pass thru the capturePageInfo property

- add URIToStringMap, currently not working.

M classes_spec/org/mozilla/webclient/test/EMWindow.java

- call toString() on the eventData, don't cast it to a String.

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

- leverage the nsIHttpHeaderVisitor interface to discover the response
  headers.

- add boolean property capturePageInfo

A src_moz/HttpHeaderVisitorImpl.cpp
A src_moz/HttpHeaderVisitorImpl.h

- copy the headers to a Properties object.

M src_moz/Makefile.in

- compile two new files:

+	EventRegistrationImpl.cpp \
+	HttpHeaderVisitorImpl.cpp \

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

- pass the NativeWrapperFactory to our Init() method

- add wrapperFactory getter.

M src_moz/WrapperFactoryImpl.cpp

- pass the nativeWrapperFactory to the NativeBrowserControl's Init method.

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

- new constants: URI, headers

R test/automated/src/classes/org/mozilla/webclient/CurrentPageTest.java

- not yet time for this one
A test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java

- exercise bare minimum functionality of PageInfoListener

M test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java

- print out headers.
2004-09-09 20:17:18 +00:00
edburns%acm.org 87a9a4b53b This checkin is the start of work for the Http header access feature.
Currently, I'm trying to discover what is the best way to expose this
API in documents that include frames.

I think I'll need more than those two new methods on CurrentPage2.  I'll
probably have some way to get a list of all URLs that comprise the
frameset, including nested framesets.  It's true that you could use the
DOM to derive this, but that's very complicated.  I need something more
lightweight.  In the meantime, I'll check in what I have.

M build-tests.xml

- add commented out CurrentPageTest

M build.xml

- add clean.test target

M classes_spec/org/mozilla/webclient/CurrentPage2.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java

- new methods and no-op impls, so test-first test fails.

+    public Map getRequestHeaders();
+
+    public Map getResponseHeaders();

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

- swallow exceptions thrown by listeners.

M src_moz/EmbedProgress.cpp

- test for existence of httpChannel, so we can visit the headers

M test/automated/src/classes/org/mozilla/util/THTTPD.java

- return a "Server: " header that I can test in the testcase.

M test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerImpl.java

- add doStartCheck() method.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java
M test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java

- push THTTPD stuff to superclass.

A test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- new testcase, fails.
2004-09-03 19:04:22 +00:00
edburns%acm.org d96b4f1ce0 Thanks again to Michael Klepikov for these fixes.
M dom/jni/org_mozilla_dom_NodeImpl.cpp

- code around the absence of LowerCaseEqualsLiteral in nsTAString.h.
  I'm surprised the unit tests worked for me all aloung though.

M webclient/build.xml

- make run.test.browser depend on "main"

M webclient/src_moz/EmbedProgress.cpp

- deal with null URL passed to ::OnStateChange

M webclient/src_moz/HistoryImpl.cpp

- Don't cast to PRBool* when you don't need to.

M webclient/test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java

- don't swallow the exception from setAppData().
2004-08-03 17:16:57 +00:00
edburns%acm.org c32e7d0c62 Author: Michael
r=edburns

M webclient/src_moz/HistoryImpl.cpp

- Incorrectly passing jboolean to mozilla methods, pass PRBool instead.
2004-08-01 19:39:40 +00:00
cbiesinger%web.de f63548a444 fixing build bustage 2004-07-21 22:09:39 +00:00
cbiesinger%web.de be9764fdfe Bug 113243 Get rid of (Compare|Equals)WithConversion
r+sr=roc
2004-07-21 20:18:39 +00:00
edburns%acm.org dfd04fbaf3 replace_jdic_with_webclient 2004-06-29 23:12:29 +00:00
edburns%acm.org 8539e82952 Ok after this checkin we now have all the functionality of Sun's JDIC
WebBrowser
<https://jdic.dev.java.net/nonav/documentation/javadoc/jdic/org/jdesktop/jdic/browser/WebBrowser.html>, with the following exceptions:

- we're based on mozilla 1.6

- it only works on windows

- we don't have mouse event support

- we only support mozilla, not IE

So, webclient still has a ways to go until we reach its former glory,
but reach it we will.

I'm going to assemble a 2.0 alpha 1 source code only release, including
build instructions, from what we have now.

I'd love it if someone could get the unit tests working on GNU/Linux
again.  I think the problem has to do with our old friend GDKSUPERWIN.

Next step is to assemble the 2.0 alpha 1 source code release!

Ed

M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java
M webclient/src_moz/NavigationImpl.cpp

- re-enable POST

M webclient/src_moz/EmbedWindow.cpp
M webclient/src_moz/EmbedWindow.h

- expose DocShell post method.

M webclient/test/automated/src/classes/org/mozilla/util/THTTPD.java
M webclient/test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- test code for POST
2004-06-25 13:59:54 +00:00
edburns%acm.org 7bb66a6538 Ok after this checkin we now have all the functionality of Sun's JDIC
WebBrowser
<https://jdic.dev.java.net/nonav/documentation/javadoc/jdic/org/jdesktop/jdic/browser/WebBrowser.html>, with the following exceptions:

- we're based on mozilla 1.6

- it only works on windows

- we don't have mouse event support

- we only support mozilla, not IE

So, webclient still has a ways to go until we reach its former glory.
However, I'm going to get together a 2.0 alpha release, including build
instructions, from what we have now.

I'd love it if someone could get the unit tests working on GNU/Linux
again.  I think the problem has to do with our old friend GDKSUPERWIN.

M webclient/classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java
M webclient/src_moz/NavigationImpl.cpp

- re-enable POST

M webclient/src_moz/EmbedWindow.cpp
M webclient/src_moz/EmbedWindow.h

- expose DocShell post method.

M webclient/test/automated/src/classes/org/mozilla/util/THTTPD.java
M webclient/test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- test code for POST
2004-06-24 16:23:42 +00:00
edburns%acm.org dbc2535b70 Next really will be to get POST working.
A test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerImpl.java

- Forgot to add this.

M classes_spec/org/mozilla/webclient/impl/wrapper_native/HistoryImpl.java
M src_moz/HistoryImpl.cpp

- push through can{back,forward}(), forward().

M test/automated/src/classes/org/mozilla/webclient/HistoryTest.java

- exercise new methods.
2004-06-23 19:58:12 +00:00
edburns%acm.org d4d419c667 Got "back()" working. Next will be to get forward(), and can{Back,Forward}.
A test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerImpl.java
A test/automated/src/classes/org/mozilla/webclient/HistoryTest.java
A test/automated/src/test/HistoryTest0.html
A test/automated/src/test/HistoryTest1.html
A test/automated/src/test/HistoryTest2.html
A test/automated/src/test/HistoryTest3.html

- new test content.

M classes_spec/org/mozilla/webclient/impl/wrapper_native/HistoryImpl.java
M src_moz/HistoryImpl.cpp

- expose back() method
M src_moz/Makefile.in

M test/automated/src/classes/org/mozilla/util/THTTPD.java

- added way for the server to return the content type of the document

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- pulled out DocumentLoadListener into a separate class.
2004-06-23 19:21:07 +00:00
edburns%acm.org f3e1f9ab8b This enables "refresh". Next step will be to enable history next and
back.

M classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java
M src_moz/NavigationImpl.cpp

- push thru "refresh" behavior.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- move test HTTPD server out so it can be used by all tests in suite.

M test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java

- make getBrowserBinDir() static.
2004-06-23 17:08:23 +00:00
edburns%acm.org 62ba5ac0a3 This checkin verifies that loading documents over HTTP works as
expected.

M src_moz/Makefile.in

- added WindowWatcher to compilation

M src_moz/NativeBrowserControl.cpp

- turn on our WindowWatcher.  Still need to flesh this out, but it
  seemed to be necessary for http to work.

M src_moz/WindowCreator.cpp
M src_moz/WindowCreator.h

- return to compilation

M src_moz/WrapperFactoryImpl.cpp

- hack to workaround bug posted to n.p.m.e by me today regarding
  nsIOService::SetOffline(TRUE) being called.  The workaround is to
  manually call nsIOService::SetOffline(FALSE) *after* the point in time
  where the "TRUE" call is made.

M test/automated/src/classes/org/mozilla/util/THTTPD.java

- tweaks to make this suitable for JUnit testing.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- all navigation tests work.
2004-06-22 19:23:23 +00:00
edburns%acm.org 8e77f639c1 Accidentally removed running testcases. 2004-06-18 14:17:28 +00:00
edburns%acm.org 7d04f13686 Implement a trivial HTTP server to test http file loads, and what do you
know, I find that selection doesn't work.  Hmm.  Well, let's hear it for
test first.

Naturally, the next step is to fix the new NavigationTest.testHttpLoad().

A test/automated/src/test/HttpNavigationTest.txt

- data file for testHttpLoad().

A test/automated/src/classes/org/mozilla/util/THTTPD.java

- trivial HTTP server that suits my needs.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- added commented out testHttpLoad().  It breaks.

M test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java

- remove emacs mode line.
2004-06-18 13:53:14 +00:00
edburns%acm.org d973808cb6 Correctly load the GtkBrowserControlCanvas. 2004-06-17 21:27:55 +00:00
edburns%acm.org 680077cedd Remove ^M 2004-06-17 21:20:30 +00:00
edburns%acm.org 1c96c99aeb This checkin enables Navigation.stop() to work.
I'm working towards getting equivalent functionality to
<https://jdic.dev.java.net/nonav/documentation/javadoc/jdic/org/jdesktop/jdic/browser/WebBrowser.html>
working by JavaOne SF 2004.  At this point, all that remains are
refresh(), back(), forward(), and post().  All but post() are trivial.

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

- remove "blocking" methods since we don't need them now that we have
  DocumentLoadListener working again.

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

- remove "blocking" methods since we don't need them now that we have
  DocumentLoadListener working again.

- implement stop().

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

- throw IllegalStateException if you try to get a BrowserControl
  instance after appTerminate() has been called.

- throw IllegalStateException if appTerminate() is called more than
  once.

M src_moz/NavigationImpl.cpp

- call through to stop

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- test first test for stop.
2004-06-16 14:37:34 +00:00
edburns%acm.org a50968cb0e This checkin makes DocumentLoadListener be fully functional for the
file:/// and LoadFromStream cases.  There were some problems:

1. RandomHTMLInputStream was never returning -1 from available, even
   when there was no more data to be read.

2. the available ivars in InputStreamShim were PRUint32, and needed to
   be PRInt32 to accomodate the -1.

3. InputStreamShim wasn't looking for the -1 from java, and it was
   incorrectly returning NS_ERROR_NOT_AVAILABLE in that case, when it
   should have been returning NS_OK if there was more data for Mozilla.

4. The testcase had a deadlock: it tried to remove the
   DocumentLoadListener from the DocumentLoadListener callback.  I had
   to move this outside of the listener callback.

M src_moz/InputStreamShim.cpp
M src_moz/InputStreamShim.h

- make available be a signed int.

- correctly handle the case when java says, "no more data available".

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- avoid deadlock by moving the call to removeDocumentLoadListener()
   outside of the listener itself.

M test/automated/src/classes/org/mozilla/webclient/RandomHTMLInputStream.java

- make sure to return -1 from available() when we have no more data.
2004-06-14 15:34:42 +00:00
edburns%acm.org 52b83f9d98 M classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java
- Major enhancement of this class.  Framework for all
  WebclientEventListener subclasses now in place.  This includes a
  separate Theard event queue to send events from mozilla to java so
  that the listener can call back into webclient without fear of
  deadlock.  I had to use semaphores!  Thank you Michael Faiman
  <http://www.cs.uiuc.edu/people/faculty/faiman2.html> who taught my
  operating systems class where I learned semaphores.

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

- use notifyAll() instead of notify, for best practice.

M src_moz/EmbedProgress.cpp

- flesh out rest of DocumentLoadListener code.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- comment out code because I can't seem to get the END_DOCUMENT_LOAD
  event to come from mozilla on the LoadFromStream case.  Top men are
  working on it.

Next step is to uncomment the rest of NavigationTest.
2004-06-14 01:44:33 +00:00
edburns%acm.org 7573cd136f This checkin enables the StartDocumentLoadEvent. Now adding the rest of
the DocumentLoadListener events will be trivial.

Next step: flesh out the rest of the DocumentLoadListener events.
Modify NavigationTest so that it does its selection checking inside the
listeners.  This will probably require creating a Thread, managed by
EventRegistrationImpl, that is used to process callbacks from mozilla
into Java, so that we don't get deadlock.

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

- remove all dependencies on NativeEventThread

- introduce dependency on BrowserControlCanvas (needed for future
  MouseListener) work.

- {add,remove}DocumentLoadListener() now just a matter of
  adding/removing to List.

- add nativeEventOccurred() method, called from native code

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

- remove dependency on BrowserControlCanvas

- removed nativeEventOccurred

M src_moz/EmbedProgress.cpp

- delete the global ref in the dtor.

- create the global ref in SetEventRegistration().

- call back to Java on startDocumentLoad.

M src_moz/NativeBrowserControl.cpp

- initialize our string constants.

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

- alter the signature of util_SendEventToJava

-void util_SendEventToJava(JNIEnv *yourEnv, jobject nativeEventThread,
-                          jobject webclientEventListener,
+void util_SendEventToJava(JNIEnv *yourEnv, jobject eventRegistrationImpl,
                           jstring eventListenerClassName,
                           jlong eventType, jobject eventData)

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- show that the DocumentLoadListener gets called.
2004-06-12 05:46:48 +00:00
edburns%acm.org b1f9171e41 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
2004-06-11 15:55:48 +00:00
edburns%acm.org 485106034b This checkin is the first step to making DocumentLoadListener work
again.  It provides the native class that implements
nsIWebProgressListener, which I've copied form gtk_moz_embed, so it's
gotta be good.  The next step will be to hook this up to the java side.

A src_moz/EmbedProgress.h
A src_moz/EmbedProgress.cpp

- mostly copied from GTKMOZEMBED

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

- remove javadoc reference to non-existing method

M src_moz/EmbedWindow.cpp
M src_moz/EmbedWindow.h

- expose AddWebBrowserListener method.

M src_moz/InputStreamShim.cpp

- make FileInputStream testcase run

M src_moz/Makefile.in
M src_moz/NativeBrowserControl.cpp
M src_moz/NativeBrowserControl.h

- add EmbedProgress

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- Make this test run
2004-06-10 16:30:00 +00:00
edburns%acm.org 5485cd3d05 This change-bundle applies Darin Fisher's astute observation that CVS
version 1.9 of InputStreamShim.cpp didn't correctly implement
QueryInterface.  Fixing that allowed me to discover that the system
wants to call ::ReadSegments, so I had to implement that.  Now the
RandomHTMLInputStream case works, but the garden variety FileInputStream
case does not.  Since the FileInputStream case is generally easier to
debug, I'll check in what I have now and continue with this last case
tomorrow.

M src_moz/InputStreamShim.cpp
M src_moz/InputStreamShim.h

- made this correctly implement nsIAsyncInputStream.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- comment out the FileInputStream case.
2004-06-03 14:28:41 +00:00
edburns%acm.org 67db434000 This checkin demonstrates that navigation.loadFromStream() works, at
least in the case of a FileInputStream.  I still can't get the
RandomHTMLInputStream to work.  I'm still waiting on a response from
Darin Fisher on that one.

M build-tests.xml

- comment in all tests

M classes_spec/org/mozilla/webclient/Navigation2.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java

- add loadFromStreamBlocking, until we have DocumentLoadListener working

M src_moz/InputStreamShim.cpp
M src_moz/InputStreamShim.h

- rollback the nsIAsyncInputStream changes.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- test from a FileInputStream

M test/automated/src/classes/org/mozilla/webclient/RandomHTMLInputStream.java

- Allow notification when read completes.
2004-06-02 17:26:49 +00:00
edburns%acm.org c452a9072e M build-tests.xml
- comment in all tests

M classes_spec/org/mozilla/webclient/Navigation2.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java

- add loadFromStreamBlocking, until we have DocumentLoadListener working

M src_moz/InputStreamShim.cpp
M src_moz/InputStreamShim.h

- rollback the nsIAsyncInputStream changes.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- test from a FileInputStream

M test/automated/src/classes/org/mozilla/webclient/RandomHTMLInputStream.java

- Allow notification when read completes.
2004-06-02 14:31:24 +00:00
edburns%acm.org 8a9b99c6b5 Snapshot: made this implement nsIAsyncInputStream. 2004-05-14 17:00:21 +00:00
edburns%acm.org a0614d0908 This change-bundle is the start of loadFromStream(). Currently, I'm
only able to load the first burst from the RandomHTMLInputStream,
because for some reason the native stream is getting closed prematurely.
Need to investigate more.

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

- remove loadFromStreamBlocking.  No point in implementing this since
  the loadFromStream() impl is inherently multi-threaded.

M src_moz/EmbedWindow.cpp
M src_moz/EmbedWindow.h

- expose LoadStream() method that wraps same on nsIDocShell.

M src_moz/InputStreamShim.cpp

- Do a lock around our buffer deletion in or dtor.

M src_moz/Makefile.in

- activate nsActions and NavigationActionEvents

M src_moz/NavigationActionEvents.cpp
M src_moz/NavigationActionEvents.h

- comment out everything but wsLoadFromStreamEvent.

- fix it to work with the NativeBrowserControl.

M src_moz/NavigationImpl.cpp

- activate nativeLoadFromStream.  This is the first *new* version method
  to use the old native event queue.

M src_moz/ns_util.cpp
M src_moz/ns_util.h

- remove unused first arg from Post*Event methods.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- activate loadFromStream test.

M test/automated/src/classes/org/mozilla/webclient/RandomHTMLInputStream.java

- add a randomExceptions param to the ctor to enable or disable randomly
  thrown exceptions.
2004-04-28 16:40:15 +00:00
edburns%acm.org 7c1f545442 This Change-bundle verifies that loadURL works as expected. Next will
be to verify that loadFromStream works as expected.

M build-tests.xml

- win32 gtk stuff.  I can't figure out why this file in particular gets
  messed up when I move from Unix to Windows and back.  Can anyone tell me
  why?

M classes_spec/org/mozilla/webclient/Navigation2.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java

- added method loadURLBlocking().

M classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java
M src_moz/CurrentPageImpl.cpp

- activated selectAll() and getSelection()

M src_moz/EmbedWindow.cpp
M src_moz/EmbedWindow.h

- imbued this class with selection related methods selectAll and
  getSelection()

M src_moz/Makefile.in

- activated CurrentPageImpl.cpp

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- new test content.
2004-04-28 14:39:54 +00:00
edburns%acm.org b00b9cc5de M build.xml
- rework exclusion patterns to prevent compilation of platform specific
  classes

A classes_spec/org/mozilla/webclient/impl/wrapper_native/GtkBrowserControlCanvas.java
R classes_spec/org/mozilla/webclient/impl/wrapper_native/gtk/GtkBrowserControlCanvas.java

- moved GtkBrowserControlCanvas.java up one level, for access to package
  private classes.

M src_moz/gtk/GtkBrowserControlCanvas.cpp

- package name changes

M test/automated/src/classes/org/mozilla/webclient/CompareFiles.java

- rework this logic to account for files that end in a different number
  of ignorable conditions.

A test/automated/src/classes/org/mozilla/webclient/impl/wrapper_native/TestGtkBrowserControlCanvas.java
R test/automated/src/classes/org/mozilla/webclient/impl/wrapper_native/gtk/TestGtkBrowserControlCanvas.java

- moved this test up one level.
2004-04-23 14:52:21 +00:00
edburns%acm.org 216b555a7e remove_^M 2004-04-23 13:17:51 +00:00
edburns%acm.org 3e625c2ad7 remove_^M 2004-04-23 13:10:44 +00:00
edburns%acm.org f0b93c432c Woohoo! I have loadURL working. The next step will be to get enough of
CurrentPage working so that I can "selectAll" the page, and verify
that the contents are loaded correctly.

Ed

M build-tests.xml

- enable all tests

M build.xml

- added compile.test passthru target

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

- unpack the Rectangle into final ints

M src_moz/WindowControlImpl.cpp

- this was causing the deadlock: the package name was wrong.  The
  UnsatisfiedLinkError was not caught, and vanished into nowhere.

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- we must independently make the canvas visible.  Hmm.  Shouldn't it
  automatically receive setVisible() when its parent is made visible?

- do cleanup
2004-04-22 06:41:02 +00:00
edburns%acm.org 273dee2dd2 M build-tests.xml
- make NavigationTest not run

M build.xml

- Move Win32BrowserControlCanvas up to parent package

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

- You can't resize until you're initialized

- pass visibility through to native layer

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

- Use WrapperFactory to create the BrowserControlCanvas impl.

A classes_spec/org/mozilla/webclient/impl/wrapper_native/Win32BrowserControlCanvas.java

- moved up from child package

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

- use the new thread model for nativeSetBounds(), nativeRealize(),
  nativeSetVisible().

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

- make this create the BrowserControlCanvas instance.

- honor the new package name for Win32BrowserControlCanvas.

R classes_spec/org/mozilla/webclient/impl/wrapper_native/win32/Win32BrowserControlCanvas.java

- moved up one level.

M src_moz/EmbedWindow.cpp
M src_moz/EmbedWindow.h

- Take size parameters to CreateWindow_

M src_moz/Makefile.in

- add WindowControlImpl.cpp

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

- add size parameters to Realize().

M src_moz/WindowControlImpl.cpp

- reactivate nativeRealize(), nativeSetVisible(), nativesetBounds(),

M src_moz/win32/Win32BrowserControlCanvas.cpp

- new package name

M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- we have to create a Canvas to load a URL.  Mozilla limitation.

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

- remove unneeded test metdod
2004-04-20 16:17:43 +00:00
edburns%acm.org d45931d8dc M classes_spec/org/mozilla/webclient/impl/WrapperFactory.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/ImplObjectNative.java

- remove getNativeEventThread().  I've decided to expose the singleton
  NativeEventThread instance via a package private class var.

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

- run the necessary native methods on the event thread to avoid thread
  safety assertions.

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

- rename pushNotifyRunnable() to pushBlockingWCRunnable.  Make it block
  the caller until the argument WCRunnable has been run on the
  NativeEventThread.  Implement this by using wait/notify between
  pushBlockingWCRunnable() and run().

- add package private NativeEventThread class variable.

- rename runnablesWithNotify ivar to blockingRunnables.

- remove the exception storage mechanism.

M classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/PreferencesImpl.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/ProfileManagerImpl.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/RDFEnumeration.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/WrapperFactoryImpl.java

- levarage NativeEventThread.instance.pushBlockingWCRunnable().

A classes_spec/org/mozilla/webclient/impl/wrapper_native/WCRunnable.java

- Just like runnable, except return Object, not void.

M src_moz/PreferencesImpl.cpp

- remove unused automatic variable.
2004-04-17 21:25:12 +00:00
edburns%acm.org aebdfa036d M dom/src/Makefile.in
M webclient/src_moz/EmbedWindow.cpp
M webclient/src_moz/NativeWrapperFactory.cpp
M webclient/src_moz/gtk/Makefile.in

- fixes for building under GNU/Linux
2004-04-16 19:02:21 +00:00
edburns%acm.org e78ca37c3a javadoc 2004-04-15 23:03:09 +00:00
edburns%acm.org c2d7e96b90 The churn continues. After this checkin, BrowserControlFactoryTest
runs, but nothing else does.

As you all probably already know, all mozilla API calls have to happen
on the same thread.  For webclient, this will be the NativeEventThread.
This change-bundle does many many things, here are the main ones.

These changes are in concert with the checkin I just did to the diagram
at
<http://www.mozilla.org/projects/blackwood/webclient/design/20040306-webclient-2_0.zargo>.

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

 * <p>This class is the hub of the startup and shutdown sequence for
 * Webclient.  It is a singleton and owns references to other app
 * singletons:</p>
 *
 * 	<ul>
 * 	  <li><p>{@link NativeEventThread}</p></li>
 *
 * 	  <li><p>{@link Bookmarks}</p></li>
 *
 * 	  <li><p>{@link Preferences}</p></li>
 *
 * 	  <li><p>{@link ProfileManager}</p></li>

 * 	  <li><p>the native object singleton corresponding to this java
 * 	  object (if necessary)</p></li>
 *
 *	</ul>
 *
 * <p>It maintains a set of {@link BrowserControlImpl} instances so that
 * we may return the native pointer for each one.</p>
 *
 * <p>This class is responsible for creating and initializing and
 * deleting {@link BrowserControlImpl} instances, as well as ensuring
 * that the native counterpart is proprely maintained in kind.</p>
 *
 * <p>This class has a tight contract with {@link
 * NativeEventThread}.</p>

- make BrowserControl creation and deletion part of this classes
  responsibilities.

- introduce NativeWrapperFactory concept.

- own the one and only NativeEventThread.

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

- make this a singleton.

- remove dependencies on BrowserControl and nativeBrowserControl

 * <p>This is a singleton class.  All native events pass thru this class
 * by virtue of the {@link #pushRunnable} or {@link pushNotifyRunnable}
 * methods.</p>

- remove listener logic.  This'll go into EventRegistration, where it
  belongs.

A src_moz/NativeWrapperFactory.cpp
A src_moz/NativeWrapperFactory.h

- takes the place of the old WebclientContext

- is now a class

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

- this no longer destroys the nativeBrowserControl.  That is now done by
  WrapperFactoryImpl.

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

- no longer maintain browserControlCount.

M classes_spec/org/mozilla/webclient/impl/wrapper_native/BookmarksImpl.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/NavigationImpl.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/PreferencesImpl.java
M classes_spec/org/mozilla/webclient/impl/wrapper_native/ProfileManagerImpl.java

- rename NativeContext to NativeWrapperFactory, to illustrate its
  singletonness.

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

- comment out a bunch of stuff in anticipation of the new threading
  model, currently being fleshed out.

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

- NativeEventThread is singleton

M src_moz/BookmarksImpl.cpp
M src_moz/PreferencesImpl.cpp
M src_moz/ProfileManagerImpl.cpp
M src_moz/RDFEnumeration.cpp
M src_moz/RDFTreeNode.cpp

- rename WebclientContext to NativeWrapperFactory.

M src_moz/EmbedWindow.cpp

-  mBaseWindow->Destroy();
+  if (mBaseWindow) {
+      mBaseWindow->Destroy();
+  }

M src_moz/Makefile.in

- Bring back NavigationImpl

- add NativeWrapperFactory.

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

- move event queue and java related stuff to NativeWrapperFactory.  This
  class is now essentially a copy of EmbedPrivate in GtkEmbed.

M src_moz/NativeEventThread.cpp

- remove methods, most of it has moved to
  WrapperFactoryImpl/NativeWrapperFactory.

M src_moz/NavigationImpl.cpp

- comment out all methods but LoadURI.

M src_moz/WrapperFactoryImpl.cpp

- take functionality over from NativeEventThread.

M src_moz/ns_util.cpp
M src_moz/ns_util.h

- the eventQueue is owned by NativeWrapperFactory now.

M src_moz/rdf_util.cpp
M src_share/jni_util.cpp

- make all exceptions RuntimeExceptions, so they can be thrown from a
  Runnable.

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

- comment out the meat of this test until I figure out how to test it.

M test/automated/src/test/BrowserControlFactoryTest_correct

- new content.
2004-04-15 22:58:08 +00:00
edburns%acm.org 4648e3ec0d javadoc: add "interfaceName" to getImplFromServices. 2004-04-15 15:30:00 +00:00
edburns%acm.org be6e7e4214 A src_moz/EmbedWindow.h
A src_moz/EmbedWindow.cpp

- copied from GtkEmbed, but modified for our purposes.

M src_moz/Makefile.in

- compile EmbedWindow

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

- hook EmbedWindow to our object hierarchy
2004-04-12 14:13:35 +00:00
edburns%acm.org eda24f9718 M webclient/build-tests.xml
- re-activate some tests

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

- Make null an acceptable argument for prefValue.  Make it mean, remove
  the pref.

M webclient/src_moz/PreferencesImpl.cpp

- make a null prefValue argument to nativeSetUnicharPref mean, ClearPref().
2004-04-11 01:09:03 +00:00
edburns%acm.org 0995c89706 - 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.
2004-04-10 21:50:39 +00:00
edburns%acm.org 00a91ef004 Checkpoint. 2004-04-01 14:54:57 +00:00
edburns%acm.org 1e41ffb99f This checkin refactors who owns the nativeWebShell pointer. It used to
be WindowControl, and now it's BrowserControl.  I'm hoping this allows
  us to operate Webclient in a "headless" fashion.  For example, you can
  imagine a web-crawler app that leverages DOM.

A test/automated/src/test/NavigationTest.txt

- fodder for testcase

M build-tests.xml

- reformat

- add NavigationTest (fails)

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

- Refactoring: remove public ivars.  Make them private, provide
  accessor.

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

- Refactoring: remove public ivars.  Make them private, provide
  accessor.

- Remove dependence on WindowControl

- leverage new method on WrapperFactory: getNativeBrowserControl().

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

- Make BrowserControlImpl the owner of the nativeWebShell pointer.  I'd
  like to see if it's possible for webclient to operate "headless" for
  certain applications, therefore, you may not have a WindowControl
  instance, which used to own the nativeWebShell pointer.

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

- reformatting

- Software Practice: avoid downcasting to implementation class.  Since BrowserControlImpl is the owner of the nativeWebShell, but there
  is no mention of that in the public API, we modify the WrapperFactory
  contract to maintain a data structure of BrowserControl to
  nativeWebShell mappings.

- add native{Create,Destroy}BrowserControl(), which is called from
  ImplObjectNative.

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

- refactoring for removing public ivars.

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

- refactoring for removing public ivars.

- comment out nativeCreateInitContext temporarily

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

- implement new methods:

- add native{Create,Destroy}BrowserControl(), which is called from
  ImplObjectNative.

M classes_spec/org/mozilla/webclient/wrapper_nonnative/WrapperFactoryImpl.java

- remove vertigo test

M src_moz/ProfileManagerImpl.cpp

- shutdown the current profile

M src_moz/WrapperFactoryImpl.cpp

- Spinup and Spindown the Appshell

A test/automated/src/classes/org/mozilla/webclient/NavigationTest.java

- new test

M test/automated/src/test/BrowserControlFactoryTest_correct

- new test content
2004-03-05 15:34:25 +00:00
edburns%acm.org 9cfd63e744 This checkin makes all the existing webclient unit tests run
successfully.  We are now ready to continue with webclient 2.0
development.

M build-tests.xml

- formatting

M build.xml

- added target that skips the "main" dependency.

M src_moz/ProfileManagerImpl.cpp

- correct error messages

M test/automated/src/classes/org/mozilla/webclient/ProfileManagerTest.java

- reset the system to the original profile before deleting the new one.
2004-02-26 04:21:24 +00:00
edburns%acm.org 43f8b545be M src_moz/ProfileManagerImpl.cpp
- remove log line that isn't guaranteed to be encountered

M test/automated/src/classes/org/mozilla/webclient/CompareFiles.java

- change "new" to "actual" and "old" to expected

- skip "WARNING:" lines in the expected file as well.

M test/automated/src/test/BrowserControlFactoryTest_correct

- remove log line that isn't guaranteed to be encountered.
2004-02-26 02:37:00 +00:00
edburns%acm.org 2fb7301a66 Formatting. 2004-02-26 02:29:15 +00:00
edburns%acm.org b497e4b3ff This checkin takes us a little closer to the unit tests running. I'm
still seeing non-ignorable differences in the golden file, which I
must address.

M README

- remove quotes from env vars

M webclient/src_moz/WrapperFactoryImpl.cpp

- make the native.waitForDebugger mechanism work on Win32.

M webclient/test/automated/src/classes/org/mozilla/webclient/CompareFiles.java

- Tweaks to optionally ignore WARNING: messages

- Tweaks to ignore lines containing keywords, such as nativeBinDir,
  which changes from platform to platform and user to user

M webclient/test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java

- formatting
2004-02-25 05:44:08 +00:00
edburns%acm.org 95545e4e27 remove bogus newlines. 2004-02-25 03:06:36 +00:00
edburns%acm.org 1dd9f8444d Make webclient compile with Mozilla 1.6. Unit tests still don't run.
M README

- update instructions for building and running source and unit tests

M build.properties.sample

- you need junit.jar

M webclient/build-tests.xml

- reformat

M webclient/build.xml

- add "prepare" target to set the PATH_SEP

M webclient/src_ie/BookmarksImpl.cpp
M webclient/src_ie/CurrentPageImpl.cpp
M webclient/src_ie/HistoryImpl.cpp

- Account for new javah header names

M webclient/src_moz/Makefile.in

- account for new location of jawt.lib in J2SDK 1.4.2

M webclient/src_moz/NativeEventThread.cpp

+#include "nsEmbedAPI.h" // for NS_HandleEmbeddingEvent

M webclient/src_moz/NavigationActionEvents.cpp

- result is an nsIInputStream

M webclient/src_moz/WrapperFactoryImpl.cpp

+#include <nsDependentString.h> // for nsDependentCString

 and the compile is more strict now.

M webclient/src_moz/dom_util.cpp

- signature change
2004-02-23 06:26:54 +00:00
edburns%acm.org dd4796eb3e readd 2003-09-28 06:51:37 +00:00
edburns%acm.org d65fae9315 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!
2003-09-28 06:29:22 +00:00
edburns%acm.org 113476328b SECTION: Changes
M build-tests.xml

- changes to make unit tests run again.

M build.xml

- updated version

- create the services definition for the webclient implementation

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

- temporary hacks until we have everything migrated to the new package
  structure.

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

- Make this class be a shim to the implementation specific instance.

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

- Interface to be implemented by the webclient implementor

A classes_spec/org/mozilla/webclient/impl/BrowserControlFactoryImpl.java

- concrete implementation of BrowserControlFactoryInterface

A test/automated/src/classes/org/mozilla/webclient/BrowserControlFactoryTest.java

- test that the factory can be instantiated.

M test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java

- Make sure we have our bin dir set.


Index: build-tests.xml
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/build-tests.xml,v
retrieving revision 1.1
diff -u -r1.1 build-tests.xml
--- build-tests.xml	1 Oct 2002 00:39:18 -0000	1.1
+++ build-tests.xml	6 Sep 2003 06:22:05 -0000
@@ -3,7 +3,7 @@
  SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 -->
 
-<project name="Webclient Unit Tests" default="test.local" basedir=".">
+<project name="Webclient Unit Tests" default="run.test" basedir=".">
 
 <!--
         This is a generic build.xml file for Ant that is used to run the
@@ -75,7 +75,7 @@
 
     <path id="test.classpath">
       <pathelement location="${junit.jar}"/>
-      <pathelement location="${build.home}/classes"/>
+      <pathelement location="${build.home}"/>
       <pathelement location="${out.test.dir}/classes"/>
     </path>
 
@@ -87,6 +87,8 @@
 -->
     <target name="compile.test">
 
+        <echo message="${build.home}"/>
+
         <mkdir  dir="${out.test.dir}/classes"/>
 
         <javac srcdir="${src.test.dir}"
@@ -125,6 +127,7 @@
             <jvmarg value="-Djava.library.path=${myenv.MOZILLA_FIVE_HOME}:${myenv.MOZILLA_FIVE_HOME}/components"/>
             <jvmarg value="-DNSPR_LOG_MODULES=${myenv.NSPR_LOG_MODULES}"/>
             <jvmarg value="-DNSPR_LOG_FILE=${myenv.NSPR_LOG_FILE}"/>
+            <jvmarg value="-DBROWSER_BIN_DIR=${myenv.MOZILLA_FIVE_HOME}"/>
             <jvmarg line="${debug.jvm.args}"/>
 
 
@@ -132,7 +135,11 @@
 
             <formatter type="plain" usefile="false"/>
 
+            <test name="org.mozilla.webclient.BrowserControlFactoryTest"/>
+<!-- non-running tests 
+
             <test name="org.mozilla.webclient.wrapper_native.gtk.TestGtkBrowserControlCanvas"/>
+-->
 
         </junit>
 
Index: build.xml
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/build.xml,v
retrieving revision 1.15
diff -u -r1.15 build.xml
--- build.xml	9 Jun 2003 20:05:33 -0000	1.15
+++ build.xml	6 Sep 2003 06:22:06 -0000
@@ -30,7 +30,7 @@

   <property name="Name" value="webclient"/>
   <property name="name" value="webclient"/>
-  <property name="version" value="20020916"/>
+  <property name="version" value="20030906"/>

 <!-- ************ Per user local properties ******************************* -->

@@ -85,8 +85,12 @@

       <include name="org/mozilla/webclient/*"/>
       <include name="org/mozilla/webclient/wrapper_native/*"/>
+      <include name="org/mozilla/webclient/impl/**"/>
       <include name="org/mozilla/webclient/test/*"/>
     </javac>
+
+    <mkdir dir="${build.home}/META-INF/services"/>
+    <echo file="${build.home}/META-INF/services/org.mozilla.webclient.BrowserControlFactoryInterface">org.mozilla.webclient.impl.BrowserControlFactoryImpl</echo>

   </target>

Index: classes_spec/org/mozilla/webclient/BrowserControlCanvas.java
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/classes_spec/org/mozilla/webclient/BrowserControlCanvas.java,v
retrieving revision 1.5
diff -u -r1.5 BrowserControlCanvas.java
--- classes_spec/org/mozilla/webclient/BrowserControlCanvas.java	9 Apr 2003 17:42:30 -0000	1.5
+++ classes_spec/org/mozilla/webclient/BrowserControlCanvas.java	6 Sep 2003 06:22:06 -0000
@@ -114,7 +114,8 @@

 } // BrowserControlCanvas() ctor

-protected void initialize(BrowserControl controlImpl)
+// PENDING(edburns): make this protected again
+public void initialize(BrowserControl controlImpl)
 {
     ParameterCheck.nonNull(controlImpl);
     webShell = controlImpl;
Index: classes_spec/org/mozilla/webclient/BrowserControlFactory.java
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/classes_spec/org/mozilla/webclient/BrowserControlFactory.java,v
retrieving revision 1.7
diff -u -r1.7 BrowserControlFactory.java
--- classes_spec/org/mozilla/webclient/BrowserControlFactory.java	1 Oct 2002 00:39:20 -0000	1.7
+++ classes_spec/org/mozilla/webclient/BrowserControlFactory.java	6 Sep 2003 06:22:06 -0000
@@ -35,22 +35,38 @@
 import java.io.File;
 import java.io.FileNotFoundException;

-/**
- *
- *  <B>BrowserControlFactory</B> creates concrete instances of BrowserControl
-
- * <B>Lifetime And Scope</B> <P>
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Properties;

- * This is a static class, it is neven instantiated.

+/**
+ *
+ *  <p><B>BrowserControlFactory</B> uses a discovery algorithm to find
+ *  an implementation of {@link BrowserControlFactoryInterface}.  All of
+ *  the public static methods in this class simply call through to this
+ *  implemenatation instance.</p>
+ *
+ * <p>The discovery mechanism used is to look try to load a resource
+ * called
+ * <code>META-INF/services/org.mozilla.webclient.BrowserControlFactoryInterface</code>.
+ * 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 {@link
+ * BrowserControlFactoryInterface}.  The named class must have a public
+ * no-arg constructor.</p>
+ *
  *
  * @version $Id: BrowserControlFactory.java,v 1.7 2002/10/01 00:39:20 edburns%acm.org Exp $
  *
- * @see	org.mozilla.webclient.test.EmbeddedMozilla
-
+ *
  */

-public class BrowserControlFactory extends Object
+public class BrowserControlFactory extends Object
 {
 //
 // Protected Constants
@@ -60,24 +76,13 @@
 // Class Variables
 //

-    private static boolean appDataHasBeenSet = false;
-    private static Class browserControlCanvasClass = null;
-    private static String platformCanvasClassName = null;
-    private static String browserType = null;
-
-//
-// Instance Variables
-//
-
-// Attribute Instance Variables
-
-// Relationship Instance Variables
+private static BrowserControlFactoryInterface instance = null;

 //
 // Constructors and Initializers
 //

-public BrowserControlFactory()
+private BrowserControlFactory()
 {
     Assert.assert_it(false, "This class shouldn't be constructed.");
 }
@@ -88,179 +93,97 @@

 public static void setAppData(String absolutePathToNativeBrowserBinDir) throws FileNotFoundException, ClassNotFoundException
 {
-    BrowserControlFactory.setAppData(BrowserControl.BROWSER_TYPE_NATIVE, absolutePathToNativeBrowserBinDir);
+    getInstance().setAppData(BrowserControl.BROWSER_TYPE_NATIVE, absolutePathToNativeBrowserBinDir);
 }

-
-    /**
-
-     * This method is used to set per-application instance data, such as
-     * the location of the browser binary.
-
-     * @param myBrowserType.  Either "native" or "nonnative"
-
-     * @param absolutePathToNativeBrowserBinDir the path to the bin dir
-     * of the native browser, including the bin.  ie:
-     * "D:\Projects\mozilla\dist\win32_d.obj\bin"
-
-     */
-
 public static void setAppData(String myBrowserType, String absolutePathToNativeBrowserBinDir) throws FileNotFoundException, ClassNotFoundException
 {
-    browserType = myBrowserType;
-    if (!appDataHasBeenSet) {
-        // figure out the correct value for platformCanvasClassName
-        if (browserType.equals(BrowserControl.BROWSER_TYPE_NON_NATIVE)) {
-            platformCanvasClassName = "org.mozilla.webclient.wrapper_nonnative.JavaBrowserControlCanvas";
-        }
-        else {
-            ParameterCheck.nonNull(absolutePathToNativeBrowserBinDir);
-
-            // verify that the directory exists:
-            File binDir = new File(absolutePathToNativeBrowserBinDir);
-            if (!binDir.exists()) {
-                throw new FileNotFoundException("Directory " + absolutePathToNativeBrowserBinDir + " is not found.");
-            }
-
-            // This hack is necessary for Sun Bug #4303996
-            java.awt.Canvas c = new java.awt.Canvas();
-            platformCanvasClassName = determinePlatformCanvasClassName();
-        }
-        // end of figuring out the correct value for platformCanvasClassName
-        if (platformCanvasClassName != null) {
-            browserControlCanvasClass = Class.forName(platformCanvasClassName);
-        }
-        else {
-            throw new ClassNotFoundException("Could not determine BrowserControlCanvas class to load\n");
-        }
-
-        try {
-            BrowserControlImpl.appInitialize(browserType, absolutePathToNativeBrowserBinDir);
-        }
-        catch (Exception e) {
-            throw new ClassNotFoundException("Can't initialize native browser: " +
-                                             e.getMessage());
-        }
-        appDataHasBeenSet = true;
-    }
+    getInstance().setAppData(myBrowserType, absolutePathToNativeBrowserBinDir);
 }

 public static void appTerminate() throws Exception
 {
-    BrowserControlImpl.appTerminate();
+    getInstance().appTerminate();
 }

 public static BrowserControl newBrowserControl() throws InstantiationException, IllegalAccessException, IllegalStateException
 {
-    if (!appDataHasBeenSet) {
-        throw new IllegalStateException("Can't create BrowserControl instance: setAppData() has not been called.");
-    }
-    Assert.assert_it(null != browserControlCanvasClass);
-
-    BrowserControlCanvas newCanvas = null;
-    BrowserControl result = null;
-    newCanvas = (BrowserControlCanvas) browserControlCanvasClass.newInstance();
-    if (null != newCanvas &&
-        null != (result = new BrowserControlImpl(browserType, newCanvas))) {
-        newCanvas.initialize(result);
-    }
-
+    BrowserControl result = null;
+    result = getInstance().newBrowserControl();
     return result;
 }

-/**
-
- * BrowserControlFactory.deleteBrowserControl is called with a
- * BrowserControl instance obtained from
- * BrowserControlFactory.newBrowserControl.  This method renders the
- * argument instance completely un-usable.  It should be called when the
- * BrowserControl instance is no longer needed.  This method simply
- * calls through to the non-public BrowserControlImpl.delete() method.
-
- * @see org.mozilla.webclient.ImplObject#delete
-
- */
-
 public static void deleteBrowserControl(BrowserControl toDelete)
 {
-    ParameterCheck.nonNull(toDelete);
-    ((BrowserControlImpl)toDelete).delete();
+    getInstance().deleteBrowserControl(toDelete);
 }

 //
-// General Methods
-//
-
-/**
+// helper methods
+//

- * Called from setAppData() in the native case.  This method simply
- * figures out the proper name for the class that is the
- * BrowserControlCanvas.
-
- * @return  "org.mozilla.webclient.wrapper_native.win32.Win32BrowserControlCanvas" or "org.mozilla.webclient.wrapper_native.gtk.GtkBrowserControlCanvas"
-
- */
-
-private static String determinePlatformCanvasClassName()
+protected static BrowserControlFactoryInterface getInstance()
 {
-    String result = null;
-    // cause the native library to be loaded
-    // PENDING(edburns): do some magic to determine the right kind of
-    // MozWebShellCanvas to instantiate
-
-    // How about this:
-    // I try loading sun.awt.windows.WDrawingSurfaceInfo. If it doesn't
-    // load, then I try loading sun.awt.motif.MDrawingSufaceInfo. If
-    // none loads, then I return a error message.
-    // If you think up of a better way, let me know.
-    // -- Mark
-    // Here is what I think is a better way: query the os.name property.
-    // This works in JDK1.4, as well.
-    // -- edburns
+    if (null != instance) {
+        return instance;
+    }

-    String osName = System.getProperty("os.name");
-
-    if (null != osName) {
-       if (-1 != osName.indexOf("indows")) {
-           result = "org.mozilla.webclient.wrapper_native.win32.Win32BrowserControlCanvas";
-       }
-       else {
-           result = "org.mozilla.webclient.wrapper_native.gtk.GtkBrowserControlCanvas";
-       }
+    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+    if (classLoader == null) {
+        throw new RuntimeException("Context ClassLoader");
     }

-    return result;
-}
-
-// ----UNIT_TEST_START
-
-//
-// Test methods
-//
-
-public static void main(String [] args)
-{
-    System.out.println("doing asserts");
-    Assert.setEnabled(true);
-    Log.setApplicationName("BrowserControlFactory");
-    Log.setApplicationVersion("0.0");
-    Log.setApplicationVersionDate("$Id: BrowserControlFactory.java,v 1.7 2002/10/01 00:39:20 edburns%acm.org Exp $");
-
-    BrowserControlCanvas canvas = null;
-    BrowserControl control = null;
+    BufferedReader reader = null;
+    InputStream stream = null;
+    String
+        className = null,
+        resourceName = "META-INF/services/org.mozilla.webclient.BrowserControlFactoryInterface";
     try {
-        BrowserControlFactory.setAppData("nonnative", args[0]);
-        control = BrowserControlFactory.newBrowserControl();
-        Assert.assert_it(control != null);
-        canvas = (BrowserControlCanvas) control.queryInterface("webclient.BrowserControlCanvas");
-        Assert.assert_it(canvas != null);
+        stream = classLoader.getResourceAsStream(resourceName);
+        if (stream != null) {
+            // Deal with systems whose native encoding is possibly
+            // different from the way that the services entry was created
+            try {
+                reader =
+                    new BufferedReader(new InputStreamReader(stream,
+                                                             "UTF-8"));
+            } catch (UnsupportedEncodingException e) {
+                reader = new BufferedReader(new InputStreamReader(stream));
+            }
+            className = reader.readLine();
+            reader.close();
+            reader = null;
+            stream = null;
+        }
+    } catch (IOException e) {
+    } catch (SecurityException e) {
+    } finally {
+        if (reader != null) {
+            try {
+                reader.close();
+            } catch (Throwable t) {
+                ;
+            }
+            reader = null;
+            stream = null;
+        }
+        if (stream != null) {
+            try {
+                stream.close();
+            } catch (Throwable t) {
+                ;
+            }
+            stream = null;
+        }
     }
-    catch (Exception e) {
-        System.out.println("\n BrowserControl not getting created \n");
-        System.out.println(e.getMessage());
+    if (null != className) {
+        try {
+            Class clazz = classLoader.loadClass(className);
+            instance = (BrowserControlFactoryInterface) (clazz.newInstance());
+        } catch (Exception e) {
+        }
     }
+    return instance;
 }
-
-// ----UNIT_TEST_END

 } // end of class BrowserControlFactory
Index: classes_spec/org/mozilla/webclient/BrowserControlImpl.java
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/classes_spec/org/mozilla/webclient/BrowserControlImpl.java,v
retrieving revision 1.7
diff -u -r1.7 BrowserControlImpl.java
--- classes_spec/org/mozilla/webclient/BrowserControlImpl.java	27 Jul 2001 20:57:52 -0000	1.7
+++ classes_spec/org/mozilla/webclient/BrowserControlImpl.java	6 Sep 2003 06:22:07 -0000
@@ -30,8 +30,8 @@
 import org.mozilla.util.Utilities;


-
-class BrowserControlImpl extends Object implements BrowserControl
+// PENDING(edburns); move this inside impl package
+public class BrowserControlImpl extends Object implements BrowserControl
 {
 //
 // Protected Constants
@@ -145,8 +145,8 @@
 //
 // Class methods
 //
-
-static void appInitialize(String myBrowserType, String verifiedBinDirAbsolutePath) throws Exception
+// PENDING(edburns): make this package private again
+public static void appInitialize(String myBrowserType, String verifiedBinDirAbsolutePath) throws Exception
 {
     browserType = myBrowserType;
     if (null == wrapperFactory) {
@@ -157,7 +157,8 @@
     wrapperFactory.initialize(verifiedBinDirAbsolutePath);
 }

-static void appTerminate() throws Exception
+// PENDING(edburns): make this package private again
+public static void appTerminate() throws Exception
 {
     Assert.assert_it(null != wrapperFactory);

Index: test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java
===================================================================
RCS file: /cvsroot/mozilla/java/webclient/test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java,v
retrieving revision 1.1
diff -u -r1.1 WebclientTestCase.java
--- test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java	1 Oct 2002 00:39:28 -0000	1.1
+++ test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java	6 Sep 2003 06:22:08 -0000
@@ -133,6 +133,16 @@
 	
 }
 
+protected void verifyBinDirSet()
+{
+    assertTrue("BROWSER_BIN_DIR is not set",
+	       null != System.getProperty("BROWSER_BIN_DIR"));
+}
+
+protected String getBrowserBinDir() {
+    return System.getProperty("BROWSER_BIN_DIR");
+}
+
 /**
 
 * assertTrue that NSPR_LOG_FILE is set.
@@ -162,6 +172,7 @@
     // make sure we have at least PR_LOG_DEBUG set
     verifyLogModuleValueIsAtLeastN(WEBCLIENTSTUB_LOG_MODULE, 4);
     verifyLogModuleValueIsAtLeastN(WEBCLIENT_LOG_MODULE, 4);
+    verifyBinDirSet();
     if (sendOutputToFile()) {
 	verifyOutputFileIsSet();
     }
2003-09-06 06:26:50 +00:00
edburns%acm.org eda9510a94 update_README 2003-07-13 04:33:16 +00:00
edburns%acm.org 11b7203f8f r=edburns
Author: Ron Capelli

These changes make webclient run with Mozilla 1.4.

Summary of changes:

  src_moz/rdf_util.cpp

    reason:  API change to RDFServiceImpl::GetResource()

  src_moz/RDFActionEvents.cpp

    reason:  API change to RDFServiceImpl::GetUnicodeResource()

  src_moz/wsRDFObserver.cpp

    reason:  member name changes to inherited nsIRDFObserver

  src_moz/CBrowserContainer.cpp

    reasons:
      - replaced obsolete/deleted nsFileSpec.h with nsCRT.h
        (to access only required/referenced function)
      - added new SetBlurSuppression and GetBlurSuppression methods
        required by change to inherited nsIBaseWindow (implementation
        copied from mozilla/xpfe/appshell/src/nsXULWindow.cpp).

  src_moz/CBrowserContainer.h

    reason:  added mBlurSuppressionLevel member variable for
             SetBlurSuppression and GetBlurSuppression methods.


The changes were relatively straightforward to identify from errors
attempting to build with Mozilla 1.4.  Testing so far indicates no
new problems have been introduced...
2003-07-13 04:23:49 +00:00
caillon%returnzero.com 4cc64cee34 Bug 209852. Remove |dont_QueryInterface|.
r=dbaron, sr=jag
2003-06-21 00:15:41 +00:00
edburns%acm.org 1f52a208ee Author: ron capelli
r=edburns
Enable progress notifications in IE webclient
Fix bug where history got out of synch between webclient and
native browser.
2003-06-10 18:53:00 +00:00
edburns%acm.org c8422041db Ant code to generate JavaOne2003 demo. 2003-06-10 17:47:34 +00:00
edburns%acm.org 09da0f3c0f author=ron capelli
r=edburns

Call clobber_all in src_ie.
2003-06-09 20:05:36 +00:00
edburns%acm.org 8ab45e6186 Author: Kyle Yuan
r=edburns

bugfix from Kyle.  Prep for future work.
2003-05-14 15:54:45 +00:00
edburns%acm.org 393a1b0ed0 r=edburns
Author: Ron Capelli <capelli@acm.org>

The following files are updated to allow use of IBM Java 1.3.x
JVMs on Linux.  Instead of statically linking libjawt.lib, the
code now dynamically links libjawt.so and then libawt.so only
if needed (similar to previous change for win32).  It should
work on Solaris, but we couldn't test that here.

    mozilla/java/webclient/src_moz/Makefile.in
    mozilla/java/webclient/src_moz/gtk/GtkBrowserControlCanvas.cpp

The following files are changed to support the ant 'clean'
target for src_ie.

    mozilla/java/webclient/build.xml
    mozilla/java/webclient/src_ie/Makefile.in

The following files are changed to disable the CurrentPage(2)
interface for IE, since it will be a while before that can be
made to work.  With these changes, IE embeds smoothly with
Navigation and History interfaces working nicely to some degree.

    mozilla/java/webclient/src_ie/WrapperFactoryImpl.cpp

mozilla/java/webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java

The following file is changed so that it does not depend on
Mozilla, allowing it to be shared cleanly for IE.

    mozilla/java/webclient/src_moz/win32/Win32BrowserControlCanvas.cpp

The following file is changed to correct the list of makefiles
that need to be configured for Webclient.

    mozilla/java/makefiles

Finally, please delete the following files from CVS.

    mozilla/java/webclient/src_ie/build.xml
    mozilla/java/webclient/src_ie/Makefile.win
2003-05-13 20:22:13 +00:00
edburns%acm.org 75e7ec52ea buildRunems_no_longer_exists 2003-05-13 19:21:12 +00:00
edburns%acm.org 08b4ea7f10 M webclient/build.xml
- src_ie has no clobber, clobber_all, or clean target.  Comment this out
  for now.

M webclient/classes_spec/org/mozilla/webclient/Prompt.java
M webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java
M webclient/classes_spec/org/mozilla/webclient/test/UniversalDialog.java
M webclient/src_moz/CBrowserContainer.cpp
M webclient/src_moz/CBrowserContainer.h
M webclient/src_moz/Makefile.in
M webclient/src_moz/NativeEventThread.cpp
M webclient/src_moz/NativeEventThreadActionEvents.cpp
M webclient/src_moz/PromptActionEvents.cpp
M webclient/src_moz/PromptActionEvents.h
M webclient/src_share/jni_util.cpp
M webclient/src_share/jni_util.h

- Roll back Kyle Yuan's 20030509 change for nsIPrompt, since it seems to
  break events between the browser and the app.

R webclient/src_moz/PromptService.h
R webclient/classes_spec/org/mozilla/webclient/test/UniversalDialogData.java
R webclient/src_moz/AppComponents.cpp
R webclient/src_moz/AppComponents.h
R webclient/src_moz/PromptService.cpp

- These are new files that Kyle added.
2003-05-13 15:22:04 +00:00
kyle.yuan%sun.com 92c9701d6f missing } at line 698 (the end of Java_org_mozilla_webclient_wrapper_1native_CurrentPageImpl_nativeClearAllSelections) 2003-05-09 10:56:07 +00:00
kyle.yuan%sun.com 636945d6ca Bug 201275 [Webclient] move Prompt code from CBrowserContainer to PromptService
r=edburns
2003-05-06 01:50:06 +00:00
kyle.yuan%sun.com 20952bc3eb Bug 201308
Forgot to check in this new file.
2003-04-24 06:53:03 +00:00
kyle.yuan%sun.com c51f266635 Bug 201308 [Webclient] support nsIWindowCreator::CreateChromeWindow
r=edburns
2003-04-24 05:55:22 +00:00
kyle.yuan%sun.com afee19ff58 Bug 201273 [Webclient] add Print/Print Preview function
r=edburns
2003-04-18 01:07:54 +00:00
edburns%acm.org 570ed13807 Author=Ronald Capelli <capelli@us.ibm.com>
r=edburns

This checkin makes Webclient run with IE!

Thanks Ron!

Ed
2003-04-12 21:40:35 +00:00
edburns%acm.org 8fe43ad62a Author= Daniel Park
r=edburns

SECTION: classes changes

M build.xml

- Removed spurious linebreak on Kyle's create.webclient.scripts.

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

- Bugfix from Daniel Park

M classes_spec/org/mozilla/webclient/test/EMWindow.java

- Leverage new CurrentPage2 interface to display the Selection object.

M classes_spec/org/mozilla/webclient/wrapper_native/CurrentPageImpl.java
M classes_spec/org/mozilla/webclient/wrapper_nonnative/CurrentPageImpl.java

- Implement new methods from CurrentPage2.

M src_moz/CurrentPageActionEvents.cpp
M src_moz/CurrentPageActionEvents.h
M src_moz/CurrentPageImpl.cpp
M src_moz/gtk/GtkBrowserControlCanvasStub.cpp
M src_moz/gtk/StubFunctions.h

Native details for CurrentPage2.

SECTION: New files

A classes_spec/org/mozilla/webclient/Selection.java
A classes_spec/org/mozilla/webclient/CurrentPage2.java
A classes_spec/org/mozilla/webclient/wrapper_native/SelectionImpl.java
2003-04-09 17:42:41 +00:00
kyle.yuan%sun.com 5a4cbd5c11 Bug 156712 Webclient can't do File->New Window on Unix
r=edburns
2003-04-09 01:36:03 +00:00
edburns%acm.org 3bc4a0884a author=kyle.yuan@sun.com
r=edburns

Remove the dependency on perl for generating the runem script.
2003-04-08 15:21:28 +00:00
kyle.yuan%sun.com 116864c12f Clean the old Makefile.win 2003-04-04 06:34:30 +00:00
edburns%acm.org a59e8755df Ronald Capelli contributed this fix to make it work with Mozilla
1.3b.
2003-03-11 18:13:22 +00:00
edburns%acm.org 6e17bff1f9 Make Webclient compile and link on win32 2003-01-13 16:36:05 +00:00
edburns%acm.org 95d5042f51 Webclient compiles with 1.3A but does not yet link. 2003-01-13 07:41:00 +00:00
edburns%acm.org 143b5003b6 no need for this anymore! 2003-01-12 07:48:16 +00:00
edburns%acm.org 9cb2b4e2a6 Make JavaDOM build with ANT. 2003-01-12 07:43:38 +00:00
edburns%acm.org 8d21545483 We use Ant here. 2003-01-12 07:30:29 +00:00
edburns%acm.org ced07e3c6e javadom 2003-01-12 07:28:28 +00:00
edburns%acm.org 596c610282 Checkpoint for getting webclient to build with 1.3a. 2003-01-11 09:01:20 +00:00
edburns%acm.org 97b9b3a02b ra=edburns
Author: Tor Norbye <tor@eng.sun.com>

Changes to make it build on Solaris.
2003-01-08 05:21:31 +00:00
edburns%acm.org 2881259b80 gtk 2003-01-02 20:43:52 +00:00
edburns%acm.org 983f5c9fac Changes to produce proper XPI on GNU/Linux 2003-01-02 20:37:53 +00:00
edburns%acm.org cd5ea07821 *** empty log message *** 2003-01-02 01:47:31 +00:00
edburns%acm.org 05fe5e5aae Set the path. 2003-01-02 01:42:40 +00:00
edburns%acm.org 9011f9db22 Build the XPI on UNIX. 2002-12-20 22:40:32 +00:00
edburns%acm.org 40cad5bf9d Uncomment the find component changes. 2002-12-20 22:01:44 +00:00
edburns%acm.org a473d40d9d This file now builds an installable xpi for webclient! 2002-11-26 05:51:27 +00:00
edburns%acm.org 0b4b29c7c0 Generates the XPI. 2002-11-20 03:42:27 +00:00
edburns%acm.org 253a75cdfd Checkpoint. Copy binary artifacts in a cross platform manner. 2002-11-12 02:52:18 +00:00
edburns%acm.org 7eadeec45c Checkpoint. Generates Webclient jar. 2002-11-09 23:03:06 +00:00