gecko-dev/java/webclient/build.xml

325 строки
10 KiB
XML
Исходник Обычный вид История

<?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 10:26:50 +04: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-03 02:23:47 +04: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-03 02:23:47 +04:00
<javac destdir="${build.home}"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}">
<classpath refid="compile.classpath"/>
<src path="${source.home}"/>
<patternset>
<exclude name="**/Win32*.java" 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 10:29:22 +04:00
<patternset>
<exclude name="**/Gtk*.java" 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 10:29:22 +04: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 10:26:50 +04: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 10:29:22 +04: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 10:26:50 +04: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 10:29:22 +04: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 10:29:22 +04:00
<javah destdir="${basedir}/src_share"
This checkin implements a response header listener feature. I have changed the usage contract of the DocumentLoadListener slightly. Prior to this checkin, calling getEventData() on the DocumentLoadEvent passed in to your eventDispatched() method returned the URI to which the event applies. Now the getEventData() returns a Map. You must look up the "URI" key to find the URI to which the event applies. If your listener is an instance of PageInfoListener, and your event mask is END_URL_LOAD_EVENT_MASK, your Map will have an additional entry under the key "headers". This entry is another Map representing the response headers. DocumentLoadListener: * <p>The <code>eventDispatched()</code> method is passed a {@link * DocumentLoadEvent} instance. The <code>type</code> property of the * event will be one of the types defined as a <code>public static final * int</code> in <code>DocumentLoadEvent</code>.</p> * * <p>The <code>eventData</code> property of the * <code>DocumentLoadEvent</code> instance will be a * <code>java.util.Map</code>. For all <code>EVENT_MASK</code> types in * <code>DocumentLoadEvent</code> the map will contain an entry under * the key "<code>URI</code>" without the quotes. This will be the * fully qualified URI for the event.</p> * * <p>For the <code>PROGRESS_URL_LOAD_EVENT_MASK</code> there will be an * entry in the map for the key "<code>message</code>". This will be * the progress message from the browser.</p> PageInfoListener: * <p>This {@link DocumentLoadListener} subclass adds the ability to get * detailed information on each event. </p> * * <p>The <code>eventDispatched()</code> method is passed the same thing * as in the {@link DocumentLoadListener}.</p> * * <p>The <code>eventData</code> property of the * <code>DocumentLoadEvent</code> instance will be a * <code>java.util.Map</code>. For the * <code>END_URL_LOAD_EVENT_MASK</code> type in * <code>DocumentLoadEvent</code> the map will contain an entry under * the key "<code>URI</code>" without the quotes. This will be the * fully qualified URI for the event. The map will also contain an * entry under the key "<code>headers</code>". This entry will be a * <code>Map</code> of all the response headers.</p> The next step will be to allow the same procedure to work to discover the request headers. Ed A classes_spec/org/mozilla/webclient/PageInfoListener.java - marker class for listenening for high fidelity page information. A src_moz/EventRegistrationImpl.cpp - add boolean property, capturePageInfo to turn on or off high fidelity page information collection. M build-tests.xml - add new test, DocumentLoadListenerTest M build.xml - added new JNI class, EventRegistrationImpl M classes_spec/org/mozilla/webclient/CurrentPage2.java M classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java - rollback previous API for headers discovery M classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java - pass thru the capturePageInfo property - add URIToStringMap, currently not working. M classes_spec/org/mozilla/webclient/test/EMWindow.java - call toString() on the eventData, don't cast it to a String. M src_moz/EmbedProgress.cpp M src_moz/EmbedProgress.h - leverage the nsIHttpHeaderVisitor interface to discover the response headers. - add boolean property capturePageInfo A src_moz/HttpHeaderVisitorImpl.cpp A src_moz/HttpHeaderVisitorImpl.h - copy the headers to a Properties object. M src_moz/Makefile.in - compile two new files: + EventRegistrationImpl.cpp \ + HttpHeaderVisitorImpl.cpp \ M src_moz/NativeBrowserControl.cpp M src_moz/NativeBrowserControl.h - pass the NativeWrapperFactory to our Init() method - add wrapperFactory getter. M src_moz/WrapperFactoryImpl.cpp - pass the nativeWrapperFactory to the NativeBrowserControl's Init method. M src_share/jni_util.cpp M src_share/jni_util.h - new constants: URI, headers R test/automated/src/classes/org/mozilla/webclient/CurrentPageTest.java - not yet time for this one A test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerTest.java - exercise bare minimum functionality of PageInfoListener M test/manual/src/classes/org/mozilla/webclient/test/TestBrowser.java - print out headers.
2004-09-10 00:17:18 +04:00
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,org.mozilla.webclient.impl.wrapper_native.EventRegistrationImpl">
<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 10:29:22 +04:00
<javah destdir="${basedir}/src_moz/gtk"
class="org.mozilla.webclient.impl.wrapper_native.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 10:29:22 +04: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 20:17:43 +04: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 10:29:22 +04: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 10:29:22 +04: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 10:29:22 +04:00
<target name="clean.classes_spec">
<delete dir="${build.home}/org/mozilla/webclient"/>
</target>
This checkin is the start of work for the Http header access feature. Currently, I'm trying to discover what is the best way to expose this API in documents that include frames. I think I'll need more than those two new methods on CurrentPage2. I'll probably have some way to get a list of all URLs that comprise the frameset, including nested framesets. It's true that you could use the DOM to derive this, but that's very complicated. I need something more lightweight. In the meantime, I'll check in what I have. M build-tests.xml - add commented out CurrentPageTest M build.xml - add clean.test target M classes_spec/org/mozilla/webclient/CurrentPage2.java M classes_spec/org/mozilla/webclient/impl/wrapper_native/CurrentPageImpl.java - new methods and no-op impls, so test-first test fails. + public Map getRequestHeaders(); + + public Map getResponseHeaders(); M classes_spec/org/mozilla/webclient/impl/wrapper_native/EventRegistrationImpl.java - swallow exceptions thrown by listeners. M src_moz/EmbedProgress.cpp - test for existence of httpChannel, so we can visit the headers M test/automated/src/classes/org/mozilla/util/THTTPD.java - return a "Server: " header that I can test in the testcase. M test/automated/src/classes/org/mozilla/webclient/DocumentLoadListenerImpl.java - add doStartCheck() method. M test/automated/src/classes/org/mozilla/webclient/NavigationTest.java M test/automated/src/classes/org/mozilla/webclient/WebclientTestCase.java - push THTTPD stuff to superclass. A test/automated/src/classes/org/mozilla/webclient/NavigationTest.java - new testcase, fails.
2004-09-03 23:04:22 +04:00
<target name="clean.test">
<ant antfile="build-tests.xml" target="clean"/>
</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 10:29:22 +04:00
<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 10:29:22 +04: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 10:08:30 +03:00
failonerror="yes">
<arg line="clobber_all"/>
2002-11-06 10:08:30 +03: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 10:08:30 +03:00
failonerror="yes">
<arg line="clobber_all"/>
2002-11-06 10:08:30 +03: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>
<target name="run.test.browser" depends="main" description="Run the test browser">
<ant antfile="build-tests.xml" target="run.test.browser"/>
</target>
<target name="compile.test" description="compile unit tests">
<ant antfile="build-tests.xml" target="compile.test"/>
</target>
</project>