gecko-dev/java/webclient/build.xml

311 lines
10 KiB
XML
Raw Normal View History

<?xml version="1.0"?>
<!--
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
* Ed Burns &gt;edburns@acm.org&lt;
-->
<project name="webclient" default="main" basedir=".">
<property name="Name" value="webclient"/>
<property name="name" value="webclient"/>
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
<property name="version" value="20030906"/>
<!-- ************ Per user local properties ******************************* -->
<property file="${user.home}/build.properties"/> <!-- User local -->
<property file="build.properties"/> <!-- Component local -->
<property file="../build.properties"/> <!-- java-supplement local -->
<property environment="myenv" />
<!-- ************ Compiler Defaults *************************************** -->
<!-- Should Java compilations set the 'debug' compiler option? -->
<property name="compile.debug" value="true"/>
<!-- Should Java compilations set the 'deprecation' compiler option? -->
<property name="compile.deprecation" value="false"/>
<!-- Should Java compilations set the 'optimize' compiler option? -->
<property name="compile.optimize" value="false"/>
<!-- ************ Where are we building into? ***************************** -->
<!-- The base directory for component sources -->
<property name="source.home" value="${basedir}/classes_spec"/>
<!-- Construct compile classpath -->
<path id="compile.classpath">
2002-10-02 22:23:47 +00:00
<pathelement location="${build.home}"/>
</path>
<target name="prepare">
<condition property="PATH_SEP" value=";">
<and>
<os family="windows" />
</and>
</condition>
<condition property="PATH_SEP" value=":">
<and>
<os family="unix" />
</and>
</condition>
</target>
<target name="main"
depends="prepare,compile.classes_spec,compile.src_share,compile.src_moz,compile.src_ie,create.webclient.scripts"/>
<target name="compile.classes_spec">
2002-10-02 22:23:47 +00:00
<javac destdir="${build.home}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}">
<classpath refid="compile.classpath"/>
<src path="${source.home}"/>
<patternset>
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
<include name="org/mozilla/webclient/impl/wrapper_native/gtk/*"
if="build.unix.classes"/>
</patternset>
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
<patternset>
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
<include name="org/mozilla/webclient/impl/wrapper_native/Win32*"
if="build.win32.classes"/>
</patternset>
<!-- PENDING(edburns): include additional patternsets for ICE,
HotJava, etc -->
<include name="org/mozilla/webclient/*"/>
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
<include name="org/mozilla/webclient/impl/wrapper_native/*"/>
<include name="org/mozilla/webclient/impl/*"/>
<include name="org/mozilla/webclient/test/*"/>
</javac>
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
<mkdir dir="${build.home}/META-INF/services"/>
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
<echo file="${build.home}/META-INF/services/org.mozilla.webclient.WebclientFactory">org.mozilla.webclient.impl.WebclientFactoryImpl</echo>
<echo file="${build.home}/META-INF/services/org.mozilla.webclient.impl.WrapperFactory">org.mozilla.webclient.impl.wrapper_native.WrapperFactoryImpl</echo>
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
</target>
<target name="compile.src_share" depends="compile.javah.headers">
<exec os="SunOS" dir="${basedir}/src_share" failonerror="yes"
executable="gmake"/>
<exec os="Linux" dir="${basedir}/src_share" failonerror="yes"
executable="make"/>
<exec os="Windows 2000" dir="${basedir}/src_share" executable="make"
failonerror="yes"/>
</target>
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
<target name="compile.javah.headers" depends="compile.classes_spec,compile.javah.canvas.headers">
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
<javah destdir="${basedir}/src_share"
class="org.mozilla.webclient.impl.wrapper_native.BookmarksImpl,org.mozilla.webclient.impl.wrapper_native.ProfileManagerImpl,org.mozilla.webclient.impl.wrapper_native.PreferencesImpl,org.mozilla.webclient.impl.wrapper_native.CurrentPageImpl,org.mozilla.webclient.impl.wrapper_native.HistoryImpl,org.mozilla.webclient.impl.wrapper_native.WrapperFactoryImpl,org.mozilla.webclient.impl.wrapper_native.NavigationImpl,org.mozilla.webclient.impl.wrapper_native.RDFEnumeration,org.mozilla.webclient.impl.wrapper_native.RDFTreeNode,org.mozilla.webclient.impl.wrapper_native.ISupportsPeer,org.mozilla.webclient.impl.wrapper_native.WindowControlImpl,org.mozilla.webclient.impl.wrapper_native.NativeEventThread">
<classpath refid="compile.classpath"/>
</javah>
</target>
<target name="compile.javah.canvas.headers"
depends="compile.unix.canvas.headers,compile.win32.canvas.headers"/>
<target name="compile.unix.canvas.headers" if="build.unix.classes">
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
<javah destdir="${basedir}/src_moz/gtk"
class="org.mozilla.webclient.impl.wrapper_native.gtk.GtkBrowserControlCanvas">
<classpath refid="compile.classpath"/>
</javah>
</target>
<target name="compile.win32.canvas.headers" if="build.win32.classes">
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
<javah destdir="${basedir}/src_moz/win32"
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
class="org.mozilla.webclient.impl.wrapper_native.Win32BrowserControlCanvas">
<classpath refid="compile.classpath"/>
</javah>
</target>
<target name="compile.src_moz" depends="compile.src_share">
<exec os="SunOS" dir="${basedir}/src_moz" executable="gmake"
failonerror="yes">
</exec>
<exec os="Linux" dir="${basedir}/src_moz" executable="make"
failonerror="yes">
</exec>
<exec os="Windows 2000" dir="${basedir}/src_moz" executable="make"
failonerror="yes"/>
</target>
<target name="compile.src_ie" depends="compile.src_share">
<!-- PENDING(edburns): re-enable IE support
<exec os="Windows 2000" dir="${basedir}/src_ie" executable="make"
failonerror="yes"/>
-->
</target>
<target name="create.webclient.scripts"
depends="create.win32.webclient.scripts,create.unix.webclient.scripts"/>
<target name="create.win32.webclient.scripts"
if="build.win32.classes">
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
<condition property="debug.options" value="${debug.jvm.args}">
<equals arg1="${myenv.MOZ_DEBUG}" arg2="1"/>
</condition>
<condition property="debug.options" value="">
<not>
<equals arg1="${myenv.MOZ_DEBUG}" arg2="1"/>
</not>
</condition>
<echo file="${basedir}/src_moz/runem.bat">set CLASSPATH=${build.home};%CLASSPATH%
set PATH=%PATH%;${build.home}\..\bin;${build.home}\..\bin\components;${myenv.MOZ_JDKHOME}\jre\bin
${myenv.MOZ_JDKHOME}/bin/java ${debug.options} org.mozilla.webclient.test.EmbeddedMozillaImpl ${build.home}\..\bin %1%
</echo>
</target>
<target name="create.unix.webclient.scripts"
if="build.unix.classes">
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
<condition property="debug.options" value="${debug.jvm.args}">
<equals arg1="${myenv.MOZ_DEBUG}" arg2="1"/>
</condition>
<condition property="debug.options" value="">
<not>
<equals arg1="${myenv.MOZ_DEBUG}" arg2="1"/>
</not>
</condition>
<echo file="${basedir}/src_moz/runem">export CLASSPATH=${build.home}:$CLASSPATH
export LD_LIBRARY_PATH=${build.home}/../bin:${build.home}/../bin/components:$LD_LIBRARY_PATH:;${myenv.MOZ_JDKHOME}/jre/bin
${myenv.MOZ_JDKHOME}/bin/java ${debug.options} org.mozilla.webclient.test.EmbeddedMozillaImpl ${build.home}/../bin $*
</echo>
<chmod perm="755" file="${basedir}/src_moz/runem"/>
</target>
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
<target name="clean.classes_spec">
<delete dir="${build.home}/org/mozilla/webclient"/>
</target>
<target name="clean" depends="clean.classes_spec">
<ant antfile="build-tests.xml" target="clean"/>
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
<delete>
<fileset dir="${basedir}/src_moz">
<include name="**/*BrowserControlCanvas.h"/>
<exclude name="motif/MotifBrowserControlCanvas.h"/>
</fileset>
</delete>
<delete >
<fileset dir="${basedir}/src_share">
<include name="*.h"/>
<exclude name="bal_util.h"/>
<exclude name="jni_util_export.h"/>
<exclude name="jni_util.h"/>
</fileset>
</delete>
<delete >
<fileset dir="${basedir}/src_moz">
<include name="*.ilk"/>
</fileset>
</delete>
<delete >
<fileset dir="${basedir}/src_ie">
<include name="*.ilk"/>
</fileset>
</delete>
<exec os="SunOS" dir="${basedir}/src_moz" executable="gmake"
failonerror="yes">
<arg line="clobber_all"/>
</exec>
<exec os="Linux" dir="${basedir}/src_moz" executable="make"
failonerror="yes">
<arg line="clobber_all"/>
</exec>
<exec os="Windows 2000" dir="${basedir}/src_moz" executable="make"
2002-11-06 07:08:30 +00:00
failonerror="yes">
<arg line="clobber_all"/>
2002-11-06 07:08:30 +00:00
</exec>
<exec os="Windows 2000" dir="${basedir}/src_ie" executable="make"
failonerror="yes">
<arg line="clobber_all"/>
</exec>
<exec os="SunOS" dir="${basedir}/src_share" executable="gmake"
failonerror="yes">
<arg line="clobber_all"/>
</exec>
<exec os="Linux" dir="${basedir}/src_share" executable="make"
failonerror="yes">
<arg line="clobber_all"/>
</exec>
<exec os="Windows 2000" dir="${basedir}/src_share" executable="make"
2002-11-06 07:08:30 +00:00
failonerror="yes">
<arg line="clobber_all"/>
2002-11-06 07:08:30 +00:00
</exec>
</target>
<target name="test" depends="main"
description="compile everything and Run unit tests">
<antcall target="run.test" />
</target>
<target name="run.test" description="Run unit tests">
<ant antfile="build-tests.xml" target="run.test"/>
</target>
</project>