From aee4ebbf9311aa9d1b0a488b0712e27c5da022d6 Mon Sep 17 00:00:00 2001 From: "edburns%acm.org" Date: Thu, 2 Nov 2000 23:33:21 +0000 Subject: [PATCH] Merged branch JAVADEV_PR3_20001002 into trunk. git-svn-id: svn://10.0.0.236/trunk@82247 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/java/Makefile.in | 4 + mozilla/java/Makefile.win | 3 +- mozilla/java/README.commercial | 104 ++++++ mozilla/java/dom/Makefile | 2 +- .../classes/org/mozilla/dom/DOMAccessor.java | 57 +++ mozilla/java/dom/src/Makefile | 2 +- .../dom/tests/src/BWTestClass.lst.html.ORIG | 11 +- .../dom/tests/src/BWTestClass.lst.xml.ORIG | 57 ++- mozilla/java/dom/tests/src/Makefile | 4 +- mozilla/java/dom/tests/src/Makefile.solaris | 5 +- mozilla/java/dom/tests/src/Makefile.win | 4 +- mozilla/java/dom/tests/src/README | 70 ++-- mozilla/java/dom/tests/src/autorun.pl | 17 +- mozilla/java/dom/tests/src/autorun.sh | 41 ++- mozilla/java/dom/tests/src/mozilla.bat | 4 +- mozilla/java/dom/tests/src/mozilla.csh | 15 +- .../tests/src/newsrc/DOMViewerFactory.java | 107 ++++++ mozilla/java/dom/tests/src/newsrc/Makefile | 50 +++ .../dom/tests/src/newsrc/Makefile.solaris | 51 +++ .../java/dom/tests/src/newsrc/Makefile.win | 58 ++++ mozilla/java/dom/tests/src/newsrc/README | 121 +++++++ mozilla/java/dom/tests/src/newsrc/manifest | 2 + mozilla/java/dom/tests/src/newsrc/mozilla.bat | 38 ++ mozilla/java/dom/tests/src/newsrc/mozilla.csh | 22 ++ mozilla/java/dom/tests/src/newsrc/test.html | 7 + .../java/dom/tests/src/newsrc/testxml.html | 39 +++ mozilla/java/dom/tests/src/test.html | 4 +- mozilla/java/dom/tests/src/testxml.html | 39 +++ mozilla/java/external/Makefile.win | 46 +++ mozilla/java/external/README | 10 + mozilla/java/external/dom2-20000510.jar | Bin 59201 -> 87000 bytes mozilla/java/external/dom2.jar | Bin 59201 -> 87000 bytes mozilla/java/plugins/Makefile | 2 + mozilla/java/plugins/Makefile.in | 2 + mozilla/java/plugins/README | 14 +- .../pluglet/mozilla/PlugletInputStream.java | 7 +- .../mozilla/PlugletStreamInfoImpl.java | 4 +- .../pluglet/mozilla/PlugletTagInfo2Impl.java | 8 +- mozilla/java/plugins/config/rules.mk | 75 ++++ mozilla/java/plugins/examples/Makefile.in | 35 ++ .../plugins/examples/MediaPlayer/Makefile | 31 -- .../{rtf/Makefile => MediaPlayer/Makefile.in} | 13 +- .../{zip/Makefile => demo/Makefile.in} | 15 +- mozilla/java/plugins/examples/demo/index.html | 12 + .../java/plugins/examples/demo/pluglet_run.sh | 4 + mozilla/java/plugins/examples/dom/Makefile | 31 -- .../Makefile => examples/dom/Makefile.in} | 13 +- .../examples/dom/{test.html => dom.html} | 0 .../examples/pdf/{Makefile => Makefile.in} | 13 +- mozilla/java/plugins/examples/rtf/Makefile.in | 26 ++ .../examples/rtf/{view.html => rtf.html} | 0 mozilla/java/plugins/examples/zip/Makefile.in | 34 ++ ...lla_pluglet_mozilla_PlugletInputStream.cpp | 8 +- mozilla/java/plugins/src/PlugletEngine.cpp | 12 +- mozilla/java/plugins/src/PlugletFactory.cpp | 2 +- mozilla/java/plugins/src/PlugletViewMotif.cpp | 45 +-- mozilla/java/plugins/test/Makefile.in | 26 ++ .../java/webclient/classes_spec/Makefile.in | 9 +- .../org/mozilla/webclient/CurrentPage.java | 56 +++ .../org/mozilla/webclient/test/EMWindow.java | 44 +-- .../wrapper_native/CurrentPageImpl.java | 21 +- .../wrapper_native/ImplObjectNative.java | 2 +- .../wrapper_native/WrapperFactoryImpl.java | 4 +- mozilla/java/webclient/src_moz/Makefile.in | 326 +++++++++--------- mozilla/java/webclient/src_moz/Makefile.win | 9 +- .../webclient/src_moz/NativeEventThread.cpp | 19 +- .../webclient/src_moz/motif/gtkmozilla.cpp | 5 +- mozilla/java/webclient/src_moz/rdf_util.cpp | 14 +- mozilla/java/webclient/src_share/runem.pl | 34 +- .../webclient/src_share/runem_commercial.pl | 42 +-- .../java/webclient/src_share/runem_solaris | 47 +++ 71 files changed, 1537 insertions(+), 521 deletions(-) create mode 100644 mozilla/java/README.commercial create mode 100755 mozilla/java/dom/tests/src/newsrc/DOMViewerFactory.java create mode 100755 mozilla/java/dom/tests/src/newsrc/Makefile create mode 100755 mozilla/java/dom/tests/src/newsrc/Makefile.solaris create mode 100755 mozilla/java/dom/tests/src/newsrc/Makefile.win create mode 100755 mozilla/java/dom/tests/src/newsrc/README create mode 100755 mozilla/java/dom/tests/src/newsrc/manifest create mode 100644 mozilla/java/dom/tests/src/newsrc/mozilla.bat create mode 100755 mozilla/java/dom/tests/src/newsrc/mozilla.csh create mode 100755 mozilla/java/dom/tests/src/newsrc/test.html create mode 100755 mozilla/java/dom/tests/src/newsrc/testxml.html create mode 100755 mozilla/java/dom/tests/src/testxml.html create mode 100644 mozilla/java/external/Makefile.win create mode 100644 mozilla/java/external/README create mode 100644 mozilla/java/plugins/config/rules.mk create mode 100644 mozilla/java/plugins/examples/Makefile.in delete mode 100644 mozilla/java/plugins/examples/MediaPlayer/Makefile rename mozilla/java/plugins/examples/{rtf/Makefile => MediaPlayer/Makefile.in} (75%) rename mozilla/java/plugins/examples/{zip/Makefile => demo/Makefile.in} (74%) create mode 100644 mozilla/java/plugins/examples/demo/index.html create mode 100755 mozilla/java/plugins/examples/demo/pluglet_run.sh delete mode 100644 mozilla/java/plugins/examples/dom/Makefile rename mozilla/java/plugins/{test/Makefile => examples/dom/Makefile.in} (78%) rename mozilla/java/plugins/examples/dom/{test.html => dom.html} (100%) rename mozilla/java/plugins/examples/pdf/{Makefile => Makefile.in} (74%) create mode 100644 mozilla/java/plugins/examples/rtf/Makefile.in rename mozilla/java/plugins/examples/rtf/{view.html => rtf.html} (100%) create mode 100644 mozilla/java/plugins/examples/zip/Makefile.in create mode 100644 mozilla/java/plugins/test/Makefile.in create mode 100644 mozilla/java/webclient/src_share/runem_solaris diff --git a/mozilla/java/Makefile.in b/mozilla/java/Makefile.in index ba4de6171d9..87f9bc0053d 100644 --- a/mozilla/java/Makefile.in +++ b/mozilla/java/Makefile.in @@ -25,6 +25,9 @@ srcdir = @srcdir@ include $(DEPTH)/config/autoconf.mk +# PENDING(edburns): make it so it's possible to just build +# webclient and javadom + DIRS= util \ dom \ plugins \ @@ -32,3 +35,4 @@ DIRS= util \ $(NULL) include $(topsrcdir)/config/rules.mk + diff --git a/mozilla/java/Makefile.win b/mozilla/java/Makefile.win index be45d6ef19a..d1a691d738c 100644 --- a/mozilla/java/Makefile.win +++ b/mozilla/java/Makefile.win @@ -35,7 +35,8 @@ IGNORE_MANIFEST=1 #//------------------------------------------------------------------------ DEPTH = .. -DIRS = util \ +DIRS = external \ + util \ dom \ webclient diff --git a/mozilla/java/README.commercial b/mozilla/java/README.commercial new file mode 100644 index 00000000000..21bc82c5feb --- /dev/null +++ b/mozilla/java/README.commercial @@ -0,0 +1,104 @@ +******************** BLACKWOOD RELEASE 0.9 README ******************** + + +READ THIS DOCUMENT BEFORE RUNNING ANY OF THE BLACKWOOD COMPONENTS + + +This version of Blackwood has been built on and configured for +the Solaris(TM) operating environment + + +This package contains the following components of the Blackwood Project +- Pluglets, JavaDOM and Webclient + +The Blackwood project aims to - +1. Better integrate the Java (TM) platform with the Mozilla (Netscape 6) + Browser so developers can extend the browser with components and + plug-ins written in the Java programming language +2. Make sure that Mozilla's layout engine can be embedded in + applications running on a Java virtual machine (JVM). + +More information on the Blackwood project can be obtained online at +http://www.mozilla.org/projects/blackwood/ + + +------------------------------------------------------------------------ +SYSTEM REQUIREMENTS +------------------------------------------------------------------------ + +The Blackwood software components run on Solaris for SPARC(TM) and +Solaris for Intel with Solaris versions 7 and 8. + +You will also need to install the JRE1.3.0_01 Java Bundle that goes +with Netscape 6 PR3 + + +------------------------------------------------------------------------- +BLACKWOOD COMPONENTS +------------------------------------------------------------------------- + +JAVA PLUGLET API - A Pluglet is a plug-in that is written in the Java +programming Language. The Java Pluglet API is a close 1:1 implementation +of the new C++ Plug-in API in Mozilla and it allows users to develop +plug-ins in Java that run inside a Java Virtual Machione (JVM). + +More information can be obtained online at +http://www.mozilla.org/projects/blackwood/java-plugins/ + + +JAVA DOM API - The Java DOM API is an implementation of the Java Bindings +specified in the Document Object Model (DOM) Level 1 Specification. This +API allows Java Applets and Pluglets to interact with and modify the +document they are embedded into. + +More information can be obtained online at +http://www.mozilla.org/projects/blackwood/dom/ +http://www.w3.org/TR/REC-DOM-Level-1/java-language-binding.html + + +WEBCLIENT - Webclient is a browser-neutral Java API that enables generic +web browsing capabilities in a Java application. + +More information can be obtained online at +http://www.mozilla.org/projects/blackwood/webclient/ +http://www.mozilla.org/projects/blackwood/webclient/ref_guides/Developer_guide/index.htm +http://www.mozilla.org/projects/blackwood/webclient/ref_guides/Implementation_guide/index.htm + + +------------------------------------------------------------------------- +RUN INSTRUCTIONS +------------------------------------------------------------------------- + +PLUGLETS +- Launch the browser using the shell script "netscape" +- Navigate to the url file:///opt/SUNWns6/res/javadev/pluglets/test.html + +This contains several Pluglet examples. + + +JAVADOM +- The DOMViewer example in the Pluglets example list is a JavaDOM example + + +WEBCLIENT +- set the Environment variable MOZILLA_FIVE_HOME to the location of your + Netscape 6 binaries. If you install the SVR4 package, this will be + setenv MOZILLA_FIVE_HOME /opt/SUNWns6 +- cd to the javadev/example directory +- run the shell script runem as + runem + + +============================================================================ +Copyright 2000 Sun Microsystems, Inc., 901 San Antonio Road, Palo Alto, +California 94303 U.S.A. All rights reserved. + +Sun, Sun Microsystems, Java, SunOS, OpenWindows, and Solaris are trademarks, +registered trademarks, or service marks of Sun Microsystems, Inc. in the U.S.A. +and other countries. All SPARC trademarks are used under license and are +trademarks or registered trademarks of SPARC International, Inc. in the U.S.A. +and other countries. Products bearing SPARC trademarks are based upon an +architecture developed by Sun Microsystems, Inc. Netscape is a trademark of +Netscape Communications Corporation. PostScript is a trademark of Adobe +Systems, Incorporated, which may be registered in certain jurisdictions. + diff --git a/mozilla/java/dom/Makefile b/mozilla/java/dom/Makefile index 04bf366aaea..921ac0d7443 100644 --- a/mozilla/java/dom/Makefile +++ b/mozilla/java/dom/Makefile @@ -25,6 +25,6 @@ srcdir = . include $(DEPTH)/config/autoconf.mk -DIRS = src jni classes +DIRS = classes jni src include $(topsrcdir)/config/rules.mk diff --git a/mozilla/java/dom/classes/org/mozilla/dom/DOMAccessor.java b/mozilla/java/dom/classes/org/mozilla/dom/DOMAccessor.java index a30676432dc..e219239e3dc 100644 --- a/mozilla/java/dom/classes/org/mozilla/dom/DOMAccessor.java +++ b/mozilla/java/dom/classes/org/mozilla/dom/DOMAccessor.java @@ -19,6 +19,63 @@ Contributor(s): */ +/* + + * W3C® IPR SOFTWARE NOTICE + + * Copyright © 1994-2000 World Wide Web Consortium, (Massachusetts + * Institute of Technology, Institut National de Recherche en + * Informatique et en Automatique, Keio University). All Rights + * Reserved. http://www.w3.org/Consortium/Legal/ + + * This W3C work (including software, documents, or other related items) is + * being provided by the copyright holders under the following + * license. By obtaining, using and/or copying this work, you (the + * licensee) agree that you have read, understood, and will comply with + * the following terms and conditions: + + * Permission to use, copy, and modify this software and its documentation, + * with or without modification, for any purpose and without fee or + * royalty is hereby granted, provided that you include the following on + * ALL copies of the software and documentation or portions thereof, + * including modifications, that you make: + + * The full text of this NOTICE in a location viewable to users of the + * redistributed or derivative work. + + * Any pre-existing intellectual property disclaimers, notices, or terms + * and conditions. If none exist, a short notice of the following form + * (hypertext is preferred, text is permitted) should be used within the + * body of any redistributed or derivative code: "Copyright © + * [$date-of-software] World Wide Web Consortium, (Massachusetts + * Institute of Technology, Institut National de Recherche en + * Informatique et en Automatique, Keio University). All Rights + * Reserved. http://www.w3.org/Consortium/Legal/" + + * Notice of any changes or modifications to the W3C files, including + * the date changes were made. (We recommend you provide URIs to the + * location from which the code is derived.) + + * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT + * HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR + * FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR + * DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, + * TRADEMARKS OR OTHER RIGHTS. + + * COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE + * SOFTWARE OR DOCUMENTATION. + + * The name and trademarks of copyright holders may NOT be used in + * advertising or publicity pertaining to the software without specific, + * written prior permission. Title to copyright in this software and any + * associated documentation will at all times remain with copyright + * holders. + + */ + + package org.mozilla.dom; import java.util.Vector; diff --git a/mozilla/java/dom/src/Makefile b/mozilla/java/dom/src/Makefile index 312b6127e09..f9034788598 100644 --- a/mozilla/java/dom/src/Makefile +++ b/mozilla/java/dom/src/Makefile @@ -29,7 +29,7 @@ LIBRARY_NAME = javadom IS_COMPONENT = 1 CPPSRCS = \ - nsJavaDOMImpl.cpp + nsJavaDOMImpl.cpp include $(topsrcdir)/config/config.mk diff --git a/mozilla/java/dom/tests/src/BWTestClass.lst.html.ORIG b/mozilla/java/dom/tests/src/BWTestClass.lst.html.ORIG index 9351cd12b71..da375a2598e 100755 --- a/mozilla/java/dom/tests/src/BWTestClass.lst.html.ORIG +++ b/mozilla/java/dom/tests/src/BWTestClass.lst.html.ORIG @@ -57,8 +57,15 @@ org.mozilla.dom.test.DOMImplementationImpl_hasFeature_String_String_1 org.mozilla.dom.test.DOMImplementationImpl_hasFeature_String_String_2 org.mozilla.dom.test.DOMImplementationImpl_hasFeature_String_String_3 org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_0 -org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_String_0 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_1 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_2 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_3 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_4 org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_0 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_1 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_2 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_3 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_4 org.mozilla.dom.test.DocumentImpl_createAttribute_String_0 org.mozilla.dom.test.DocumentImpl_createAttribute_String_1 org.mozilla.dom.test.DocumentImpl_createAttributeNS_String_String_0 @@ -76,6 +83,7 @@ org.mozilla.dom.test.DocumentImpl_createElement_createElementNS_String_String_2 org.mozilla.dom.test.DocumentImpl_createElement_createElementNS_String_String_3 org.mozilla.dom.test.DocumentImpl_createEvent_String_0 org.mozilla.dom.test.DocumentImpl_createEvent_String_1 +org.mozilla.dom.test.DocumentImpl_createEvent_String_2 org.mozilla.dom.test.DocumentImpl_createTextNode_String_0 org.mozilla.dom.test.DocumentImpl_createTextNode_String_1 org.mozilla.dom.test.DocumentImpl_getDoctype @@ -88,6 +96,7 @@ org.mozilla.dom.test.DocumentImpl_getElementsByTagNameNS_String_String_2 org.mozilla.dom.test.DocumentImpl_getElementsByTagNameNS_String_String_3 org.mozilla.dom.test.DocumentImpl_getElementById_String_0 org.mozilla.dom.test.DocumentImpl_getElementById_String_1 +org.mozilla.dom.test.DocumentImpl_getElementById_String_2 org.mozilla.dom.test.DocumentImpl_getImplementation org.mozilla.dom.test.DocumentImpl_importNode_Node_boolean_0 org.mozilla.dom.test.DocumentImpl_importNode_Node_boolean_1 diff --git a/mozilla/java/dom/tests/src/BWTestClass.lst.xml.ORIG b/mozilla/java/dom/tests/src/BWTestClass.lst.xml.ORIG index d2be2779c09..fa1458cc2aa 100755 --- a/mozilla/java/dom/tests/src/BWTestClass.lst.xml.ORIG +++ b/mozilla/java/dom/tests/src/BWTestClass.lst.xml.ORIG @@ -3,8 +3,15 @@ org.mozilla.dom.test.DOMImplementationImpl_hasFeature_String_String_1 org.mozilla.dom.test.DOMImplementationImpl_hasFeature_String_String_2 org.mozilla.dom.test.DOMImplementationImpl_hasFeature_String_String_4 org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_0 -org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_String_0 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_1 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_2 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_3 +org.mozilla.dom.test.DOMImplementationImpl_createDocumentType_String_String_String_4 org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_0 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_1 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_2 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_3 +org.mozilla.dom.test.DOMImplementationImpl_createDocument_String_String_DocumentType_4 org.mozilla.dom.test.DocumentImpl_createAttributeNS_String_String_0 org.mozilla.dom.test.DocumentImpl_createAttributeNS_String_String_1 org.mozilla.dom.test.DocumentImpl_createAttributeNS_String_String_2 @@ -19,6 +26,7 @@ org.mozilla.dom.test.DocumentImpl_createElement_createElementNS_String_String_2 org.mozilla.dom.test.DocumentImpl_createElement_createElementNS_String_String_3 org.mozilla.dom.test.DocumentImpl_createEvent_String_0 org.mozilla.dom.test.DocumentImpl_createEvent_String_1 +org.mozilla.dom.test.DocumentImpl_createEvent_String_2 org.mozilla.dom.test.DocumentImpl_createEntityReference_String_0 org.mozilla.dom.test.DocumentImpl_createEntityReference_String_1 org.mozilla.dom.test.DocumentImpl_createProcessingInstruction_String_String_0 @@ -37,6 +45,7 @@ org.mozilla.dom.test.DocumentImpl_getElementsByTagNameNS_String_String_2 org.mozilla.dom.test.DocumentImpl_getElementsByTagNameNS_String_String_3 org.mozilla.dom.test.DocumentImpl_getElementById_String_0 org.mozilla.dom.test.DocumentImpl_getElementById_String_1 +org.mozilla.dom.test.DocumentImpl_getElementById_String_2 org.mozilla.dom.test.DocumentImpl_getImplementation org.mozilla.dom.test.DocumentImpl_importNode_Node_boolean_0 org.mozilla.dom.test.DocumentImpl_importNode_Node_boolean_1 @@ -55,3 +64,49 @@ org.mozilla.dom.test.ProcessingInstructionImpl_setData_String_1 org.mozilla.dom.test.TextImpl_splitText_int_0 org.mozilla.dom.test.TextImpl_splitText_int_1 org.mozilla.dom.test.TextImpl_splitText_int_2 +org.mozilla.dom.test.ElementImpl_getAttributeNS_String_String_0 +org.mozilla.dom.test.ElementImpl_getAttributeNS_String_String_1 +org.mozilla.dom.test.ElementImpl_getAttributeNS_String_String_2 +org.mozilla.dom.test.ElementImpl_getAttributeNS_String_String_3 +org.mozilla.dom.test.ElementImpl_getAttributeNodeNS_String_String_0 +org.mozilla.dom.test.ElementImpl_getAttributeNodeNS_String_String_1 +org.mozilla.dom.test.ElementImpl_getAttributeNodeNS_String_String_2 +org.mozilla.dom.test.ElementImpl_getAttributeNodeNS_String_String_3 +org.mozilla.dom.test.ElementImpl_getElementsByTagNameNS_String_String_0 +org.mozilla.dom.test.ElementImpl_getElementsByTagNameNS_String_String_1 +org.mozilla.dom.test.ElementImpl_getElementsByTagNameNS_String_String_2 +org.mozilla.dom.test.ElementImpl_getElementsByTagNameNS_String_String_3 +org.mozilla.dom.test.ElementImpl_hasAttributeNS_String_String_0 +org.mozilla.dom.test.ElementImpl_hasAttributeNS_String_String_1 +org.mozilla.dom.test.ElementImpl_hasAttributeNS_String_String_2 +org.mozilla.dom.test.ElementImpl_hasAttributeNS_String_String_3 +org.mozilla.dom.test.ElementImpl_hasAttribute_String_0 +org.mozilla.dom.test.ElementImpl_hasAttribute_String_1 +org.mozilla.dom.test.ElementImpl_hasAttribute_String_2 +org.mozilla.dom.test.ElementImpl_removeAttributeNS_String_String_0 +org.mozilla.dom.test.ElementImpl_removeAttributeNS_String_String_1 +org.mozilla.dom.test.ElementImpl_removeAttributeNS_String_String_2 +org.mozilla.dom.test.ElementImpl_removeAttributeNS_String_String_3 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_0 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_1 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_2 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_3 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_4 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_5 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_6 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_7 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_8 +org.mozilla.dom.test.ElementImpl_setAttributeNS_String_String_String_9 +org.mozilla.dom.test.ElementImpl_setAttributeNodeNS_Attr_0 +org.mozilla.dom.test.ElementImpl_setAttributeNodeNS_Attr_1 +org.mozilla.dom.test.NodeImpl_getLocalName +org.mozilla.dom.test.NodeImpl_getNamespaceURI +org.mozilla.dom.test.NodeImpl_getPrefix_0 +org.mozilla.dom.test.NodeImpl_getPrefix_1 +org.mozilla.dom.test.NodeImpl_setPrefix_String_0 +org.mozilla.dom.test.NodeImpl_setPrefix_String_1 +org.mozilla.dom.test.NodeImpl_supports_String_String_0 +org.mozilla.dom.test.NodeImpl_supports_String_String_1 +org.mozilla.dom.test.NodeImpl_supports_String_String_2 +org.mozilla.dom.test.NodeImpl_supports_String_String_3 + diff --git a/mozilla/java/dom/tests/src/Makefile b/mozilla/java/dom/tests/src/Makefile index 09869228a95..93494721a3e 100755 --- a/mozilla/java/dom/tests/src/Makefile +++ b/mozilla/java/dom/tests/src/Makefile @@ -32,10 +32,10 @@ all: @echo "and source it else it may not compile..." @echo "******************************************************" @echo "" + mkdir -p $(CLASSDIR) $(JAVAC) -d $(CLASSDIR) $(JAVAFILES) - $(JAVAC) -d $(CLASSDIR) $(DOMFILE) cd api; make - cd $(CLASSDIR); jar cvf testdom.jar org + cd newsrc; make JAVAFILES= Execution.java \ BWBaseTest.java \ diff --git a/mozilla/java/dom/tests/src/Makefile.solaris b/mozilla/java/dom/tests/src/Makefile.solaris index 4284ac0eb50..93494721a3e 100755 --- a/mozilla/java/dom/tests/src/Makefile.solaris +++ b/mozilla/java/dom/tests/src/Makefile.solaris @@ -18,7 +18,6 @@ # Contributor(s): - HOMEDIR=../ SRCDIR=$(HOMEDIR)/src CLASSDIR=$(HOMEDIR)/classes @@ -33,10 +32,10 @@ all: @echo "and source it else it may not compile..." @echo "******************************************************" @echo "" + mkdir -p $(CLASSDIR) $(JAVAC) -d $(CLASSDIR) $(JAVAFILES) - $(JAVAC) -d $(CLASSDIR) $(DOMFILE) cd api; make - cd $(CLASSDIR); jar cvf testdom.jar org + cd newsrc; make JAVAFILES= Execution.java \ BWBaseTest.java \ diff --git a/mozilla/java/dom/tests/src/Makefile.win b/mozilla/java/dom/tests/src/Makefile.win index 1ac42e588f2..8462e37e077 100644 --- a/mozilla/java/dom/tests/src/Makefile.win +++ b/mozilla/java/dom/tests/src/Makefile.win @@ -44,10 +44,12 @@ JAVAFILES= Execution.java \ DOMFILE=DOMAccessor.java \ DocumentImpl.java -all: testloader accessor +all: testloader @echo done @cd api @nmake -f Makefile.win + @cd ..\newsrc + @nmake -f Makefile.win testloader: @echo "******************************************************" diff --git a/mozilla/java/dom/tests/src/README b/mozilla/java/dom/tests/src/README index 3776bd6d8de..9c586ca7764 100755 --- a/mozilla/java/dom/tests/src/README +++ b/mozilla/java/dom/tests/src/README @@ -1,4 +1,7 @@ -This document describes steps required to run the Test Suite for JavaDOM API. +This document describes steps required to run the Test Suite for JavaDOM API +throught a PLUGLET. +You have to build PLUGLETS before building this +( see http://www.mozilla.org/projects/blackwood/java-plugins ) For Solaris =========== @@ -7,12 +10,11 @@ For Solaris 2) make changes to variables MOZILLA_FIVE_HOME - Absolute path where mozilla-bin executable is located. - JAVA_HOME - Absolute Path to JDK dir. + JAVA_HOME - Absolute Path to J2SE1.3 dir. TEST_PATH - Absolute Directory Path where file BWTestClass.lst is located. - USE_APPLET_FOR_REGISTRATION - set this variable if you wish to use - applet for running tests Otherwise - hacked DOMAccessor class is used. + PLUGLET - Absolute dir. where DOMPLUGLET.jar + is located 3) source mozilla.csh this will set up the environment @@ -24,21 +26,17 @@ For Solaris created) BW_THREADMODE (Execute tests in single thread [S] or multi-thread [M] mode. Takes values S/M.) - BW_HTMLTEST (URL where redirect.html file are located. Used if you - run tests through TestLoader applet) - BW_XMLTEST (URL where test.xml file are located. Used if you run - tests through TestLoader applet) - 5) Copy redirect.html, redirectxml.html, test.html and test.xml files to your Web-Servers DOCUMENT_ROOT - (By default it is assumed that they can be accessed as - http:///redirect.html). - or - http:///~/redirect.html). + 5) Set PLUGLET enviornment to point to classes dir. + setenv PLUGLET /opt/mozilla/java/dom/tests/classes - 6) Invoke autorun.sh from command prompt. + 6) Set LD_PRELOAD to point to libXm.so + setenv LD_PRELOAD libXm.so + + 7) Invoke autorun.sh from command prompt. sh autorun.sh - 7) The results are recorded in HTML file BWTest.html + 8) The results are recorded in HTML file BWTest.html and in log file BWTest.log Individual test Log files are also found in 'log' directory. @@ -48,18 +46,10 @@ For Solaris To Invoke a specific test case sh autorun.sh -t org.mozilla.dom.test.AttrImpl_getName -NOTE: All Test Cases are reocorded in file BWTestClass.lst.ORIG - -Assumption: - - I assume that u have copied the files test.xml - and redirect.html, redirectxml.html, test.html to your DOCUMENT_ROOT of - your WebServer. - The URL it tries to load is http:///redirect.html. - - If it is set in users public_html then open file autorun.sh - and change DOCROOT accordingly. - +NOTE: All TestCase list is recorded in file BWTestClass.lst.ORIG + If your machine is slow and loading time of mozilla is high then + accordingly increase DELAY_FACTOR to a higher value in autorun.sh. + ============================================================================= @@ -73,19 +63,12 @@ Assumes you have installed PERL and the following variables are set in your envi 1) open mozilla.bat 2) make changes to variables - USE_APPLET_FOR_REGISTRATION - set this variable if you wish to use - applet for running tests - (now available under Win32 only). - Otherwise hacked DOMAccessor class - is used. MOZILLA_BIN - Mozilla's executable file name (e.g. mozilla.exe or viewer.exe) TEST_PATH - path to the current directory (where mozilla.bat is) - TEST_URL - URL where redirect.html and test.html - are located (complete URL looks like: - $TEST_URL/redirect.html).Used if you - run tests through hacked DOMAccessor only + PLUGLET - Absolute dir. where DOMPLUGLET.jar + is located 3) execute mozilla.bat from command prompt this will create new console and set up the environment for this @@ -99,10 +82,6 @@ Assumes you have installed PERL and the following variables are set in your envi BW_THREADMODE (Execute tests in single thread [S] or multi-thread [M] mode. Takes values S/M.) - BW_HTMLTEST (URL where redirect.html file is located. Used if you - run tests through TestLoader applet) - BW_XMLTEST (URL where test.xml file is located. Used if you - run tests through TestLoader applet) NOTE: Since on Windows file separator is a `\`, it should be escaped by another '\'. So if a file is in c:\mozilla\tests then it @@ -111,15 +90,8 @@ Assumes you have installed PERL and the following variables are set in your envi 5) Invoke autorun.pl from command prompt. perl autorun.pl - For quick testing say - if you use applet for registration - mozilla.exe file:/TestLoaderHTML.html - (mozilla.exe file:/TestLoaderXML.html) - if you use hacked DOMAcceessor. - mozilla.exe file:/redirect.html - - 7) The results are recorded in HTML file BWTest.html + 6) The results are recorded in HTML file BWTest.html and in log file BWTest.log Individual test Log files are also found in 'log' directory. diff --git a/mozilla/java/dom/tests/src/autorun.pl b/mozilla/java/dom/tests/src/autorun.pl index e8b75e3d934..95467e61f48 100644 --- a/mozilla/java/dom/tests/src/autorun.pl +++ b/mozilla/java/dom/tests/src/autorun.pl @@ -33,7 +33,7 @@ use Win32::Process; ################################################################### #sometimes we need to specify additional parameters for mozilla -$ADDITIONAL_PARAMETERS="-P mozProfile"; +$ADDITIONAL_PARAMETERS="-P default"; # time in seconds after which the mozilla has to be killed. # by default the mozilla will be up for so much time regardless of @@ -85,8 +85,8 @@ sub title() { print " Automated Execution of DOM API TestSuite\n"; print "################################################\n"; print "\n"; - print "NOTE: You need to copy files redirect.html, test.html and test.xml,\n"; - print " redirectxml.html into some document directory of HTTP server\n"; + print "NOTE: You need to copy files test.html and test.xml,\n"; + print " into some document directory of HTTP server\n"; print " TEST_URL environment variable should contain the URL of \n"; print " this directory.\n"; print "\n"; @@ -270,6 +270,7 @@ $LOGFILE = "$curdir/log/BWTestRun.log"; $LOGTXT = "$curdir/log/BWTest.txt"; $LOGHTML = "$curdir/log/BWTest.html"; +$x=`mkdir -p $curdir/log`; # process command-line parameters # and check for valid usage @@ -361,7 +362,7 @@ if ( -f "$LOGHTML" ) { if (@ENV{"USE_APPLET_FOR_REGISTRATION"}) { $DOCFILE = "$DOCROOT/TestLoaderHTML.html"; } else { - $DOCFILE = "$DOCROOT/redirect.html"; + $DOCFILE = "$DOCROOT/test.html"; } $runcnt = 1; $filename = "$curdir/BWTestClass.lst.ORIG"; @@ -370,7 +371,7 @@ if ($runtype == 1) { if (@ENV{"USE_APPLET_FOR_REGISTRATION"}) { $DOCFILE = "$DOCROOT/TestLoaderHTML.html"; } else { - $DOCFILE = "$DOCROOT/redirect.html"; + $DOCFILE = "$DOCROOT/test.html"; } $filename = "$curdir/BWTestClass.lst.html.ORIG"; $runcnt = 1; @@ -380,7 +381,7 @@ if ($runtype == 2) { if (@ENV{"USE_APPLET_FOR_REGISTRATION"}) { $DOCFILE = "$DOCROOT/TestLoaderXML.html"; } else { - $DOCFILE = "$DOCROOT/redirectxml.html"; + $DOCFILE = "$DOCROOT/testxml.html"; } $filename = "$curdir/BWTestClass.lst.xml.ORIG"; $runcnt = 1; @@ -390,7 +391,7 @@ if ($runtype == 3) { if (@ENV{"USE_APPLET_FOR_REGISTRATION"}) { $DOCFILE = "$DOCROOT/TestLoaderHTML.html"; } else { - $DOCFILE = "$DOCROOT/redirect.html"; + $DOCFILE = "$DOCROOT/test.html"; } $filename = "$curdir/BWTestClass.lst.html.ORIG"; $runcnt = 2; @@ -492,7 +493,7 @@ while (true) { ( ++$currcnt < $runcnt ) || last; if ( $runtype == 3 ) { - $DOCFILE="$DOCROOT/redirectxml.html"; + $DOCFILE="$DOCROOT/testxml.html"; $filename="$curdir/BWTestClass.lst.xml.ORIG"; constructHTML; appendEntries; diff --git a/mozilla/java/dom/tests/src/autorun.sh b/mozilla/java/dom/tests/src/autorun.sh index 18fb8b1dc87..cfa98350196 100755 --- a/mozilla/java/dom/tests/src/autorun.sh +++ b/mozilla/java/dom/tests/src/autorun.sh @@ -32,7 +32,10 @@ DELAY_FACTOR=50 SERVER=`hostname` USER=`logname` -DOCROOT="http://$SERVER/~$USER" +#DOCROOT="http://$SERVER/~$USER" +curdir=`pwd` +DOCROOT="file://$curdir" +ADDITIONAL_PARAMETERS="-P default" @@ -64,8 +67,8 @@ title() echo " Automated Execution of DOM API TestSuite" echo "################################################" echo - echo "NOTE: You need to copy files redirect.html, test.html and" - echo " redirectxml.html, test.xml to DOCUMENT_ROOT dir. of" + echo "NOTE: You need to copy files test.html and" + echo " testxml.html to DOCUMENT_ROOT dir. of" echo " your Web-Server on this machine." echo echo @@ -135,14 +138,14 @@ checkRun() ################################################################## # -# check Document Root and check if files test.html and test.xml +# check Document Root and check if files test.html and testxml.html # exists in thos directories # ################################################################## #checkDocRoot() #{ # echo -#echo "You need to copy files test.html and test.xml to your DOCUMENT_ROOT" +#echo "You need to copy files test.html and testxml.html to your DOCUMENT_ROOT" #echo "of your Web-Server" #echo #echo "This test assumes that you have set up you WebServer and copied the" @@ -169,8 +172,8 @@ checkRun() # # #echo -#echo "Checking if the files test.html and test.xml exists in DOCUMENT_ROOT..." -#if [ ! -f "$docroot/test.html" ] +#echo "Checking if the files test.html and testxml.html exists in DOCUMENT_ROOT..." +#if [ ! -f "$docroot/test.html" #then # echo "Could not find 'test.html' in DOCUMENT_ROOT directory" # echo "Please copy test.html to DOCUMENT_ROOT and rerun this script" @@ -178,10 +181,10 @@ checkRun() # exit 1 #fi # -#if [ ! -f "$docroot/test.xml" ] +#if [ ! -f "$docroot/testxml.html" ] #then -# echo "Could not find 'test.xml' in DOCUMENT_ROOT directory" -# echo "Please copy test.xml to DOCUMENT_ROOT and rerun this script" +# echo "Could not find 'testxml.html' in DOCUMENT_ROOT directory" +# echo "Please copy testxml.html to DOCUMENT_ROOT and rerun this script" # echo # exit 1 #fi @@ -308,7 +311,7 @@ constructLogFooter() ################################################################## # -# check Document Root and check if files test.html and test.xml +# check Document Root and check if files test.html and testxml.html # exists in thos directories # ################################################################## @@ -334,10 +337,12 @@ clear title curdir=`pwd` +LOGDIRECTORY="$curdir/log"; LOGFILE="$curdir/log/BWTestRun.log" LOGTXT="$curdir/log/BWTest.txt" LOGHTML="$curdir/log/BWTest.html" +/bin/mkdir -p "$LOGDIRECTORY"; testparam=""; if [ $# -gt 2 ] @@ -465,7 +470,7 @@ fi appreg=${USE_APPLET_FOR_REGISTRATION} if [ -z "$appreg" ] then - DOCFILE="$DOCROOT/redirect.html"; + DOCFILE="$DOCROOT/test.html"; else DOCFILE="$DOCROOT/TestLoaderHTML.html"; fi @@ -477,7 +482,7 @@ if [ "$runtype" = "1" ] then if [ -z "$appreg" ] then - DOCFILE="$DOCROOT/redirect.html"; + DOCFILE="$DOCROOT/test.html"; else DOCFILE="$DOCROOT/TestLoaderHTML.html"; fi @@ -487,10 +492,10 @@ fi if [ "$runtype" = "2" ] then - DOCFILE="$DOCROOT/redirectxml.html" + DOCFILE="$DOCROOT/testxml.html" if [ -z "$appreg" ] then - DOCFILE="$DOCROOT/redirectxml.html"; + DOCFILE="$DOCROOT/testxml.html"; else DOCFILE="$DOCROOT/TestLoaderXML.html"; fi @@ -502,7 +507,7 @@ if [ "$runtype" = "3" ] then if [ -z "$appreg" ] then - DOCFILE="$DOCROOT/redirect.html"; + DOCFILE="$DOCROOT/test.html"; else DOCFILE="$DOCROOT/TestLoaderHTML.html"; fi @@ -560,7 +565,7 @@ do format=`echo $testcase | sed 's/\./\//g'` nom=`basename $format` testlog="$curdir/log/$nom.$id.log" - ./mozilla-bin -P mozProfile $DOCFILE 2>$testlog 1>&2 & + ./mozilla-bin $ADDITIONAL_PARAMETERS $DOCFILE 2>$testlog 1>&2 & # dummy sleep to allow mozilla-bin to show up on process table sleep 3 @@ -636,7 +641,7 @@ do if [ "$runtype" = "3" ] then - DOCFILE="$DOCROOT/redirectxml.html" + DOCFILE="$DOCROOT/testxml.html" filename="$curdir/BWTestClass.lst.xml.ORIG" constructHTML appendEntries diff --git a/mozilla/java/dom/tests/src/mozilla.bat b/mozilla/java/dom/tests/src/mozilla.bat index 541ef8d181d..9205f507921 100644 --- a/mozilla/java/dom/tests/src/mozilla.bat +++ b/mozilla/java/dom/tests/src/mozilla.bat @@ -29,8 +29,10 @@ set TEST_URL=file: set PATH=%JAVA_HOME%\bin;%PATH% set PATH=%MOZILLA_FIVE_HOME%;%PATH% -set CLASSPATH=%TEST_PATH%\..\classes;%JAVADOM_HOME%\classes;%MOZILLA_FIVE_HOME%\..\classes;%CLASSPATH% +set CLASSPATH=%TEST_PATH%\..\classes;%JAVADOM_HOME%\tests\classes;%MOZILLA_FIVE_HOME%\..\classes;%CLASSPATH% +set PLUGLET=%JAVADOM_HOME%\..\tests\classes rem creating new console window with these variables being set start + diff --git a/mozilla/java/dom/tests/src/mozilla.csh b/mozilla/java/dom/tests/src/mozilla.csh index b7047bf09ed..6aa1c238382 100755 --- a/mozilla/java/dom/tests/src/mozilla.csh +++ b/mozilla/java/dom/tests/src/mozilla.csh @@ -1,8 +1,8 @@ -setenv TEST_PATH `pwd`/.. -setenv MOZILLA_FIVE_HOME `pwd`/../../../../dist/bin -setenv JAVADOM_HOME `pwd`/../../ -setenv JAVA_HOME /usr/local/java/jdk1.2/solaris -setenv PREFIX /workspace +setenv TEST_PATH `pwd`/../.. +setenv MOZILLA_FIVE_HOME `pwd`/../../../../../dist/bin +setenv JAVADOM_HOME `pwd`/../../../ +setenv JAVA_HOME /opt/j2sdk1_3_0_01/jre +setenv PREFIX /opt setenv LD_LIBRARY_PATH ${JAVA_HOME}/jre/lib/sparc setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${JAVA_HOME}/jre/lib/sparc/classic @@ -15,3 +15,8 @@ setenv PATH ${PATH}:${MOZILLA_FIVE_HOME}:${PREFIX}/bin setenv CLASSPATH ${JAVADOM_HOME}/classes:${MOZILLA_FIVE_HOME}/../classes:${PREFIX}/xml/xml.jar:. setenv CLASSPATH ${TEST_PATH}/classes:${CLASSPATH} + + +setenv LD_PRELOAD libXm.so + +setenv PLUGLET /opt/mozilla.PR3/java/dom/tests/classes diff --git a/mozilla/java/dom/tests/src/newsrc/DOMViewerFactory.java b/mozilla/java/dom/tests/src/newsrc/DOMViewerFactory.java new file mode 100755 index 00000000000..9af24baaee4 --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/DOMViewerFactory.java @@ -0,0 +1,107 @@ +/* + * The contents of this file are subject to the Mozilla Public License + * Version 1.0 (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/MPL/ + * + * 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 Initial Developer of the Original Code is Sun Microsystems, + * Inc. Portions created by Sun are Copyright (C) 1999 Sun Microsystems, + * Inc. All Rights Reserved. + * + * Contributor(s): Igor Kushnirskiy + */ + +package org.mozilla.dom.test; + +import org.mozilla.pluglet.*; +import org.mozilla.pluglet.mozilla.*; + +import org.mozilla.dom.*; + +import java.awt.print.*; +import java.awt.*; + +import javax.swing.tree.*; +import javax.swing.event.*; +import javax.swing.*; +import java.util.*; + +import org.w3c.dom.*; +import org.mozilla.dom.test.TestLoader; +import org.mozilla.dom.test.*; + +public class DOMViewerFactory implements PlugletFactory { + public DOMViewerFactory() { + } + + public Pluglet createPluglet(String mimeType) { + return new DOMViewer(); + } + + public void initialize(PlugletManager manager) { + } + + public void shutdown() { + } + +} + + +class DOMViewer implements Pluglet { + private PlugletPeer peer; + private Node rootNode; + + public DOMViewer() { + } + + public void initialize(PlugletPeer peer) { + try { + this.peer = peer; + PlugletTagInfo info = peer.getTagInfo(); + if (info instanceof PlugletTagInfo2) { + PlugletTagInfo2 info2 = (PlugletTagInfo2)info; + Element e = (Element) info2.getDOMElement(); + Document doc = e.getOwnerDocument(); + e = doc.getDocumentElement(); + //e.normalize(); + //rootNode = e; + + // TestLoader hooks in here + Object obj = (Object) doc; + + TestLoader tl = new TestLoader(obj, 0); + if (tl != null) { + Object retobj = tl.loadTest(); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + + } + + public void start() { + } + + public void stop() { + } + + public void destroy() { + } + + public PlugletStreamListener newStream() { + return null; + } + + public void setWindow(Frame fr) { + } + + public void print(PrinterJob printerJob) { + } +} diff --git a/mozilla/java/dom/tests/src/newsrc/Makefile b/mozilla/java/dom/tests/src/newsrc/Makefile new file mode 100755 index 00000000000..d4a9d58dd24 --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/Makefile @@ -0,0 +1,50 @@ +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + + +HOMEDIR=../.. +SRCDIR=$(HOMEDIR)/src/newsrc +CLASSDIR=$(HOMEDIR)/classes + +JAVAC=javac +TESTPACKAGE=org/mozilla/dom/test +DOMPACKAGE=org/mozilla/dom +DOMPLUGLET_JAR=DOMPLUGLET.jar + + + + +all: + @echo "******************************************************" + @echo "Make changes to $(SRCDIR)/mozilla.csh" + @echo "and source it else it may not compile..." + @echo "******************************************************" + @echo "" + $(JAVAC) -d $(CLASSDIR) $(JAVAFILES) + /bin/cp manifest $(CLASSDIR) + cd $(CLASSDIR); jar cvfm $(DOMPLUGLET_JAR) manifest org + cd $(CLASSDIR); /bin/cp $(DOMPLUGLET_JAR) $(MOZILLA_FIVE_HOME)/../classes; rm -rf *.class + +JAVAFILES= DOMViewerFactory.java + +clean: + for i in ${JAVAFILES} ; do \ + file=$$i; \ + classfile=`echo $$file | sed 's/java/class/g'` ; \ + /bin/rm $(CLASSDIR)/$(TESTPACKAGE)/$$classfile ; done diff --git a/mozilla/java/dom/tests/src/newsrc/Makefile.solaris b/mozilla/java/dom/tests/src/newsrc/Makefile.solaris new file mode 100755 index 00000000000..f5e36acddad --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/Makefile.solaris @@ -0,0 +1,51 @@ +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + + +HOMEDIR=../.. +SRCDIR=$(HOMEDIR)/src/newsrc +CLASSDIR=$(HOMEDIR)/classes + +JAVAC=javac +TESTPACKAGE=org/mozilla/dom/test +DOMPACKAGE=org/mozilla/dom +DOMPLUGLET_JAR=DOMPLUGLET.jar + + + + +all: + @echo "******************************************************" + @echo "Make changes to $(SRCDIR)/mozilla.csh" + @echo "and source it else it may not compile..." + @echo "******************************************************" + @echo "" + cd $(HOMEDIR); $(JAVAC) -d $(CLASSDIR) $(JAVAFILES) + /bin/cp manifest $(CLASSDIR) + cd $(HOMEDIR)/src/api; make + cd $(CLASSDIR); jar cvfm $(DOMPLUGLET_JAR) manifest org + cd $(CLASSDIR); /bin/cp $(DOMPLUGLET_JAR) $(MOZILLA_FIVE_HOME)/../classes; rm -rf *.class + +JAVAFILES= DOMViewerFactory.java + +clean: + for i in ${JAVAFILES} ; do \ + file=$$i; \ + classfile=`echo $$file | sed 's/java/class/g'` ; \ + /bin/rm $(CLASSDIR)/$(TESTPACKAGE)/$$classfile ; done diff --git a/mozilla/java/dom/tests/src/newsrc/Makefile.win b/mozilla/java/dom/tests/src/newsrc/Makefile.win new file mode 100755 index 00000000000..e9c170c19cd --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/Makefile.win @@ -0,0 +1,58 @@ +#!nmake +# +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + + +HOMEDIR=..\.. +SRCDIR=$(HOMEDIR)\src\newsrc +CLASSDIR=$(HOMEDIR)\classes + +JAVAC=javac +TESTPACKAGE=org\mozilla\dom\test +DOMPACKAGE=org\mozilla\dom +DOMPLUGLET_JAR=DOMPLUGLET.jar + + +JAVAFILES=DOMViewerFactory.java + + +all: testloader + @echo done + @cd $(CLASSDIR); jar cvfm $(DOMPLUGLET_JAR) manifest org + @cd $(CLASSDIR); cp $(DOMPLUGLET_JAR) $(MOZILLA_FIVE_HOME)\..\classes; del /f/q *.class + +testloader: + @echo "******************************************************" + @echo "Make changes to $(SRCDIR)\mozilla.bat" + @echo "and execute it else it may not compile..." + @echo "******************************************************" + @echo "" + @echo Building test accessory classes ... + @$(JAVAC) -d $(CLASSDIR) $(JAVAFILES) + @cp manifest $(CLASSDIR) + + +clean: + del /f/q $(CLASSDIR)\$(TESTPACKAGE)\*.class + del /f/q $(CLASSDIR)\$(DOMPACKAGE)\*.class + + + + diff --git a/mozilla/java/dom/tests/src/newsrc/README b/mozilla/java/dom/tests/src/newsrc/README new file mode 100755 index 00000000000..9c586ca7764 --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/README @@ -0,0 +1,121 @@ +This document describes steps required to run the Test Suite for JavaDOM API +throught a PLUGLET. +You have to build PLUGLETS before building this +( see http://www.mozilla.org/projects/blackwood/java-plugins ) + +For Solaris +=========== + 1) open mozilla.csh + + 2) make changes to variables + MOZILLA_FIVE_HOME - Absolute path where mozilla-bin + executable is located. + JAVA_HOME - Absolute Path to J2SE1.3 dir. + TEST_PATH - Absolute Directory Path where file + BWTestClass.lst is located. + PLUGLET - Absolute dir. where DOMPLUGLET.jar + is located + + 3) source mozilla.csh + this will set up the environment + + 4) Edit BWProperties file and change the locations for variables + BW_TESTDIR (Absolute Directory Path where file BWTestClass.lst is + located) + BW_LOGDIR (Absolute Directory Path where log files need to be + created) + BW_THREADMODE (Execute tests in single thread [S] or + multi-thread [M] mode. Takes values S/M.) + + 5) Set PLUGLET enviornment to point to classes dir. + setenv PLUGLET /opt/mozilla/java/dom/tests/classes + + 6) Set LD_PRELOAD to point to libXm.so + setenv LD_PRELOAD libXm.so + + 7) Invoke autorun.sh from command prompt. + sh autorun.sh + + 8) The results are recorded in HTML file BWTest.html + and in log file BWTest.log + Individual test Log files are also found in 'log' directory. + + +--------------------------------------------------------------------------- + +To Invoke a specific test case + sh autorun.sh -t org.mozilla.dom.test.AttrImpl_getName + +NOTE: All TestCase list is recorded in file BWTestClass.lst.ORIG + If your machine is slow and loading time of mozilla is high then + accordingly increase DELAY_FACTOR to a higher value in autorun.sh. + + + +============================================================================= + +For WIN32 +=========== +Assumes you have installed PERL and the following variables are set in your environment: + MOZILLA_HOME - top directory in mozilla's tree + JAVA_HOME - path to JDK + + 1) open mozilla.bat + + 2) make changes to variables + MOZILLA_BIN - Mozilla's executable file name + (e.g. mozilla.exe or viewer.exe) + TEST_PATH - path to the current directory + (where mozilla.bat is) + PLUGLET - Absolute dir. where DOMPLUGLET.jar + is located + + 3) execute mozilla.bat from command prompt + this will create new console and set up the environment for this + command prompt + + 4) Edit BWProperties file and change the locations for variables + BW_TESTDIR (Absolute Directory Path where file BWTestClass.lst is + located) + BW_LOGDIR (Absolute Directory Path where log files need to be + created) + BW_THREADMODE (Execute tests in single thread [S] or + multi-thread [M] mode. Takes values S/M.) + + + NOTE: Since on Windows file separator is a `\`, it should be escaped + by another '\'. So if a file is in c:\mozilla\tests then it + would be written as c:\\mozilla\\tests. + + + 5) Invoke autorun.pl from command prompt. + perl autorun.pl + + 6) The results are recorded in HTML file BWTest.html + and in log file BWTest.log + Individual test Log files are also found in 'log' directory. + + +--------------------------------------------------------------------------- + +To Invoke a specific test case + perl autorun.pl -t org.mozilla.dom.test.AttrImpl_getName + +NOTE: All Test Cases are recorded in file BWTestClass.lst.ORIG + +--------------------------------------------------------------------------- + + +BUGS: + + Currently a bug is filed against getDocumentType method of object Document. + for XML (see Bugzilla ID: 15118). + Hence all the tests which depend on the same will fail, namely + DocumentTypeImpl->getEntities + DocumentTypeImpl->getInternalSubset + DocumentTypeImpl->getName + DocumentTypeImpl->getNotations + DocumentTypeImpl->getPublicId + DocumentTypeImpl->getSystemId + DocumentImpl->getDoctype_xml + diff --git a/mozilla/java/dom/tests/src/newsrc/manifest b/mozilla/java/dom/tests/src/newsrc/manifest new file mode 100755 index 00000000000..75d00466e71 --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/manifest @@ -0,0 +1,2 @@ +MIMEDescription: application/dom-pluglet::Pluglet DOM Viewer +Pluglet-Class: org.mozilla.dom.test.DOMViewerFactory diff --git a/mozilla/java/dom/tests/src/newsrc/mozilla.bat b/mozilla/java/dom/tests/src/newsrc/mozilla.bat new file mode 100644 index 00000000000..9205f507921 --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/mozilla.bat @@ -0,0 +1,38 @@ +rem @ECHO off +set BLACKWOOD_HOME=%MOZILLA_HOME% +set MOZILLA_FIVE_HOME=%MOZILLA_HOME%\dist\WIN32_D.OBJ\bin +set JAVADOM_HOME=%MOZILLA_HOME%\java\dom +rem Mozilla binary file name +set MOZILLA_BIN=mozilla.exe +set JAVA_HOME=%JAVAHOME% + +rem path to the SRC directory of the JavaDOM tests +set TEST_PATH=E:\Mozilla\BW_SQE\Tests_accessor\src\JavaDOM\CoreLevel1\src + + +rem if this variable is set then we register DOMDocumentListener through TestLoader applet +rem (currently avilable on Win32 only) +rem otherwise hacked DOMAccessorImpl class is used for running tests +set USE_APPLET_FOR_REGISTRATION=1 + +if %USE_APPLET_FOR_REGISTRATION%x==1x del %TEST_PATH%\..\classes\org\mozilla\dom\DOMAccessorImpl.class 2> nul; +if %USE_APPLET_FOR_REGISTRATION%x==1x del %TEST_PATH%\..\classes\org\mozilla\dom\DocumentImpl.class 2> nul; + +rem url of the directory where you placed test.html and test.xml +rem complete URL looks like that: $TEST_PATH/test.html(xml) +rem if you register DOMDocumentListener through TestLoader applet (by default under Win32) then +rem url below is unused - it should be set in the BWProperties file +rem (BW_HTMLTEST and BW_XMLTEST properties) +rem (file:/test.html and file:/test.xml URLs are used by default) +set TEST_URL=file: + +set PATH=%JAVA_HOME%\bin;%PATH% +set PATH=%MOZILLA_FIVE_HOME%;%PATH% + +set CLASSPATH=%TEST_PATH%\..\classes;%JAVADOM_HOME%\tests\classes;%MOZILLA_FIVE_HOME%\..\classes;%CLASSPATH% + +set PLUGLET=%JAVADOM_HOME%\..\tests\classes + +rem creating new console window with these variables being set +start + diff --git a/mozilla/java/dom/tests/src/newsrc/mozilla.csh b/mozilla/java/dom/tests/src/newsrc/mozilla.csh new file mode 100755 index 00000000000..6aa1c238382 --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/mozilla.csh @@ -0,0 +1,22 @@ +setenv TEST_PATH `pwd`/../.. +setenv MOZILLA_FIVE_HOME `pwd`/../../../../../dist/bin +setenv JAVADOM_HOME `pwd`/../../../ +setenv JAVA_HOME /opt/j2sdk1_3_0_01/jre +setenv PREFIX /opt + +setenv LD_LIBRARY_PATH ${JAVA_HOME}/jre/lib/sparc +setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${JAVA_HOME}/jre/lib/sparc/classic +setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${JAVA_HOME}/jre/lib/sparc/native_threads +setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${PREFIX}/lib:${PREFIX}/mozilla/dist/lib +setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:${MOZILLA_FIVE_HOME} + +setenv PATH ${JAVA_HOME}/bin:${PATH} +setenv PATH ${PATH}:${MOZILLA_FIVE_HOME}:${PREFIX}/bin + +setenv CLASSPATH ${JAVADOM_HOME}/classes:${MOZILLA_FIVE_HOME}/../classes:${PREFIX}/xml/xml.jar:. +setenv CLASSPATH ${TEST_PATH}/classes:${CLASSPATH} + + +setenv LD_PRELOAD libXm.so + +setenv PLUGLET /opt/mozilla.PR3/java/dom/tests/classes diff --git a/mozilla/java/dom/tests/src/newsrc/test.html b/mozilla/java/dom/tests/src/newsrc/test.html new file mode 100755 index 00000000000..1c47a452200 --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/test.html @@ -0,0 +1,7 @@ + + + + +Hello + + diff --git a/mozilla/java/dom/tests/src/newsrc/testxml.html b/mozilla/java/dom/tests/src/newsrc/testxml.html new file mode 100755 index 00000000000..a1a2919633d --- /dev/null +++ b/mozilla/java/dom/tests/src/newsrc/testxml.html @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + +]> + + + +Hello1 + + + + diff --git a/mozilla/java/dom/tests/src/test.html b/mozilla/java/dom/tests/src/test.html index 6344987ac51..1c47a452200 100755 --- a/mozilla/java/dom/tests/src/test.html +++ b/mozilla/java/dom/tests/src/test.html @@ -1,5 +1,7 @@ - + + + Hello diff --git a/mozilla/java/dom/tests/src/testxml.html b/mozilla/java/dom/tests/src/testxml.html new file mode 100755 index 00000000000..a1a2919633d --- /dev/null +++ b/mozilla/java/dom/tests/src/testxml.html @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + +]> + + + +Hello1 + + + + diff --git a/mozilla/java/external/Makefile.win b/mozilla/java/external/Makefile.win new file mode 100644 index 00000000000..bf31690b0f2 --- /dev/null +++ b/mozilla/java/external/Makefile.win @@ -0,0 +1,46 @@ +#!nmake +# +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + +IGNORE_MANIFEST=1 +#//------------------------------------------------------------------------ +#// +#// Makefile to build the java enhancers to mozilla +#// +#//------------------------------------------------------------------------ + + +#//------------------------------------------------------------------------ +#// +#// Specify the depth of the current directory relative to the +#// root of NS +#// +#//------------------------------------------------------------------------ +DEPTH = ..\.. + +include <$(DEPTH)\config\rules.mak> + +export:: + if not exist $(DEPTH)\dist\classes $(MKDIR) $(DEPTH)\dist\classes + cd $(DEPTH)\dist\classes + $(JDKHOME)\bin\jar -xf ..\..\java\external\dom2.jar + +clobber_all:: + $(RM) -rf $(DEPTH)\dist\classes\org\w3c diff --git a/mozilla/java/external/README b/mozilla/java/external/README new file mode 100644 index 00000000000..d9c1aafcf84 --- /dev/null +++ b/mozilla/java/external/README @@ -0,0 +1,10 @@ +This Directory contains files needed by the Blackwood project components, +that are external to the Mozilla project. + +- dom2.jar + This is a .jar file of all the org.w3c.dom classes built from source + files published by the W3C. This jar file was created using sources + available on May 10 2000 from the W3C HomePage http://www.w3.org/ + This jar contains the Interfaces for the JavaDOM spec as defined by + the consortium. + diff --git a/mozilla/java/external/dom2-20000510.jar b/mozilla/java/external/dom2-20000510.jar index 5dd2e9b052501d987c7e272be09e4c0800bc9dea..96a34bcddf0ad2469280a113a9465dce12a6f02f 100644 GIT binary patch literal 87000 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 CTdKJL literal 59201 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

kfjY_tVsW zw2}jR1;ontk7yGA22DAAQ)5MQcjKSIu-w99IF{-!5S97CcYOMMm-cO)0tywQ<$;hEgIpiET#>Ru&FU!URgVF@HU?bv~Lx$kE^^m=<(6Z*X6k} zC^f>(g-_we4qC8eMeT3Hk**%vpgHk>`AQwhzX6pA_vPIPF+tOigEwBFSU(gMYQT#V z5A1wK!HwEmJJyGd3sJPSmjN=VfRV|hBZ!ls`rVb=EdzFq*jpAS%vQz3p{*>oVaE?u zk?h(svtnmz8l@8|?YmeYZy-y+$;%-b{XPk$krxV?W#xNrTm&0ZxHx`Nk-Lz8>4+H5 z?Z}o-mv#T_ks-dx;y6$NL5Kfi%tiV;;4Sstgq-aEC*X3DlYUeIQvD@p8DYVE2~M;S z=Y=Bh`O(mj4WqzobBl+gCs>zM*2>(TWPmb^t(PX1uWd}Xn}-f}KHor{*0m*t7ltQ? zli)c86wZB>x_Vj5b=Vk>CpzI`gLP^$IWj^dIK1f00tKJUA(b^zaZn^0F}fg5t(~WX zs@bl_fNoN5obL zI*Op1^p{b=H_U+^s9CEgqk%hOOtJAn9@#;*Vipil7R}nPXV?=p4sag^-CuFTm0>9Y>n+5&5eIj zh*JWT>!JzXdnfb2NtW;>cny^-V=_JqvpHk8uCCRo($VTHsq4eDG=nt9T?#Vi*|7=k zS&yS;Ri6sgxyQeAa#uWGTwbi`4xeqhoi{g3-sX6C4Lhl7AK-4J&d;)Jrt)rb8TZv^ zu6(a!EpS4M+cmLrLplqt|Z4A?54J{xz+k!s+(w z?Typx?P!k@iNng-d*9Drdbn-`Z2jW5Flh&+!?$bZTr}NvVlO*vtVg>IX6ZBP@$C~Z zddrkk*};Rq${1gE7pFQ-Vt@WN1i$zOP^Q)Fm*qIVuV~`26i)|f$C==q>n9ZPAt@81 zz%n2V-I<@?+#!{*t%@KysiHd+RX8pGWO`OA`C!gWpd=t_Al#lQ2-$u*_IZH{D`;)5 z;5RQ963yBb)%Q!5Y4vwE9(S&W3fDXpF^P!7`Uno@^9OGCA~i0|*6yNiTaei&7g-Q? z&UOmVMX9ZwD!q(}o9F$`C9OB>x3p=BEK3s|*xQU92>ta3z9v*7t{7i}L7DhLfRvQQE|uQDUiW zNM2qlVZrir_OgA^Yb-d@=$QLlNyQyhHQ9sn`FUfh+gYw3>BTulzjGhxj$Z#USR8z< zX$_BynsAY~E9t^&(}MNK=N?s9u>|0SU#UaUeG~NS7``}RN%Z0^<5jYtP`QM~xS7r& zD)n(NdvQf!_1Twy5o9Ep*xRyBFM1EC}N&?Dn&MSpV~eGO_|&vR*BQ@h!&dE!aG+}Bcx z?*9FA{85OZ;@W=Y2v5`Exq)%IUV3V}>l%vA_(YM5daL`{&Z6g`mILJecdTHpL`{yI z6)S|DE{45OJdW&FGl(9BiVjd`FU;5};#8~OmA?_$r3$x4Y#RX8vO&zGgOW=CuS>_} zvqH>_1xMz1_Z^qd3o(-iN-hTclLLs#PmBCP&{>Xm^G{~1P=pR3&WM@G;Q9TaQ=1@f z>>ppnKAH<75{`nRbG)-h%miB5gT&#s5kkrJgDN?I41Y#yR zl->?VAqU87D7`HZ366JMkKYZv=#TH-0WtbgE?@f74Q_$#*#mD3*j``@h##*5{0Mmdz~lKpZy0!e;FnZ$ z0IvglA87aH>DC@i-wlDnKQ@qW`|(8@IOWs%R8W}%y!g|P&8uNaHB1dKyw`42UqLsm z+%U7Ic;An=3C$saFMCMp64ltxy@}9|)`!-Q6U9buBd{FXgzbjv=5UI+*}qA(N!za( zRZDIoxE#MIc}QX-x}4qw?ndqQfyT38Yh2n^RIfg5y>A9QD zDbJ=?|4r1!CIpALOw>)k`RV;8sC|GZ$TgpRJeOFy@JQ6z=G-RO9O?6Zhdwg=p@v$R`<|qh+MM(P+rTRKI zQS8$e2_vE-$O!~_;yrP%T~A>)(fTQ(WXVTK=pC&yGY(6>e_1ZB7f%TR)T<>*0_v3# z2Lbh3i7x^53W*4umAZg~u&sM~WLT%w6PuxDKQ>GVTz0Jkg#derUijwYeR z1lThseI2@?mjJh1hBDOc>5e9m#Luv2occQSLpT7pYz7=~JU3(b%!;JT1O7j1jL!&5NP2KJ0rzlC|&eAs2Kim2h?#^7l)XB7R}JZT_=;L?g~N1?gr!} z`Ubiw6**vVe@;Na*!glKwt~^R@s)adS+R|q47+NJ=BdY!t`$||LbX>VfHWo=CPsMa z*rAb%oyKa-iFqg&A)H{pGzX&>Y6Y@`j|z=G*sz-d=3FP)j9Wj)tD9)1)ME0m<)o%y zNV44IIgIMt**hj;t=o@prFMP3or99XtU(0%YT(;D_D#~Auke{7iSj#2wal_3MdLrmOs;gpUPA!Z5AeknH!8u>H_#xTa+Q?$9M?{JC{^tvAFp@ z=XW+6ZBWPZ(4u0r&{Y~G&L%9C^AV%9E|#mfP+*N<9$?@;L~CX&>2y<-(P2z+Lw-fl zPQvW?cf!3$fKHmxO3^K@_l-4cAu>W@Oqxvk9;b!ZR8upq9eNr#EmjH78aBfipBc1sBFmH%Z4Tzf=V}k^Ut4ZTv)_oDA8j3FLsL9Jwy9~rj_>Xw~CcFPD1N{eJ zGVO@%!2DA&7k!P;&aumfo1HT{{RQed_`)l5>IG{B&GpZ?p6?=1OJe+_n367+hf*%x zdDG4Gd|IGZ1V0N#Fr*C&Dw3|(D6AVXWzjt^5Bkuz{K`h%TwN?B*;5)z*-_6PN38q3 z!r3WJS@f#)P!NnC!?2sG3FC87?ET;q5=G2lzbeQBz`^GjhTNh07PyZto7q_yt zvHz#rgpW#e@&UCsa|6|>c@+p*d@gABF>cpyYLu`AzWZ>N(TsVU5nsuJ%eLDeN7tMV zm;$D=Nz2hf+REtBXEtIj{ZiX}2IWMQaC*9!YOmUc3h6BAoq@bMvecl(27$MWMw~Vl zX>MiDdlC;T4bBD@#kX&Dd!QzvCigLRa-}5*>_tzHTf8l_FQ-&J@oG@kg;SXIlVcHh zzc~#Y&gI2XdgL8w_Y5+@7p@+ToWSX;HVl6R1XY1U>$4v7=2?sgaV~Z65F*ReT(x7P zi4bz2yrU%lN&=aKuh&$7_BD_s);=Qh{z<|RKYNJW0ivS#NB{Xv(k*RlWUl|W^EgFH zO9EjFSSctkz$`h>c1PxdIpDusE$=Nv7Nf;FNsl117Dwy1F1mk(bPw`2mOV%zgmRGS z?2w1~=CJ8)Q;R-=>2Ce3Q~8d;N;l|Q4)1XYld|mda*5!i;4t}Y!n!omuNH>y0h79b za(e6(C=-jRL^M2a2bmR|MKpJ>w=d`f;{4qT!8G@{@Z7;8#^P#T>7MhHVHIFwz@V{~ zr5k!zHS{55ZS1GoY*z*jHZlwp?q?<@FzW7WkfxSz6~bhtRp4PO!W38r73v~O>;y>O z2p`;HB?~Er)2^AFizdXJOn|IiMcC1Jp&>pbsl*sHkq&~cvIDH@KFr5O&ql@|&Ikt* zuSCnWWTwn!l-_I|q8Up()H*Z`s}Z2{ zmLWX_DqBKvOTt4{>6&9rZGL8J?}SE?xlvACyC`dBo;Qwby_jX>szc?&;?Y9}!6Hfn zaVsOo3Y{bm0;~W_6*IXboeK8K`;+9z(2(G=gpk;!sT||XYVC$l`jBHW`-^1BktQca z9XEm3jso!ISB&X74&%s(Z{Oofm$sBZi&|V8}YQ z)eykm?=`>9(ozdB$>n-{dx5Bvg>w&)d>5= zFc^HWgKxt;N9mRqS`#a8z3+V?EZ@a}+(t4)!$d=fN0SOilcR_+k;afJl1`GUN8^g8 z=kPHJGD$LtGRao(Rfs8&suQb|Q^91yWWtT1uA=$*+vmC&WXu_i;yVgY5;XW7vid1k zHS4S1)=Z;BG`GxRhY9uLAbFYw&Q-sx5HVCeb;r+5D3f@NN1zyF-)$60lM=`2r!-fr ziim|ixV?q%3ouG9$y#vnx*X#8oOBUDeh`ehx96gR1_{QFk zpDqwxc}7b3b4O@#vb>{N!1)W2YRs91n-0Bbuv~Hr6*KDb;hR`Q8s#uB8YW?%85NhU z{F3-CLIQ{iBK@p4g5gZ^<1_kdEUvC&?};Q6harjR3YVwKb%Gh(1I@96XP`eW&Ro2@ zbC}XxkhAq7JDSZ(^6-nYLAurZa;$Uh(aUkJ?TC$@eAqVLb4OxoHYdt0#Y}DEzM*hz8ib<457k1H9*A?vqN6J!uCOMh~$1@Gk@S=_;ZAeEg?S9 z{q2mN*FP|jqI{U>J?JN(oPldcFam)@w4~@3t!p^8@mcV#TdV<+-(7)W6R}p z8@vH=3fU{ZDIKoZXTvT-qRNgLnPHd8?>%rrdTJ5=F;dr_E9^FMgXWaAm%}J(gX`2G z9Io$(Bc0!S=!E7Jv)7?7f<0YydCe8He&B@o6fHcY&p13GlEAhp^frD2)qBOR2`q`! zkGn2NChT6|q#+<2%*9|tv@Wbok6^|yiF`4bgL*NL19CBpgM4uV@Aj2%_~FBoI+whz z@-_pg4DCMq)6DjtbrOn-e=~7)GRW~c30wD zYh*>u2|8HaVLyU4B;!=!Hu5(yce38huVcOpd3&}r`$6p3l7o5+1V)k(MMnlk=0_&N zi!$L3+6oYA(oAO*KbN$lsV$Q`L|VMZ@WFHR@YZ!}u8M;?QZM)8lc%x@!wnekSdkx~ zK+KK^wQC~5kc{Oky=rtX5G2f9j@49RZY*)uM!V9!5zrz>mT!g<(Gxyje5Xlwq&5Q0 zkrigex(WUbRZJCO>8r|MA!|`o@vCGJ3mry9f;uSz?#o0Q4Q^2*wknAdF1X&5t$jD* zb{@2;rm|5yn7uI16lEx4+UXe^rwy5m-tVDB{CX9Py^tu$@uOOF$rPVjRx{+0BgZXd z0tfvW3^WcDf&MCps*C9ZE+&0IR4io$I-%$Ri#^mAyz`zl+|(tx z`QoW(6E=6PB7jWx>5sbKZ{~%^o|Q6p__6g~{=D~Ieqns2Nwf8!3KJ*8b`Nd@7H zZbZL2su#?g`Psb|lba6-V+qbGWq9a%HI?~j^z0d$CXMBg|}|Bhm;%qYX2De-iugD~pCo zfJ{CMJboXqQT_LvsOacsX)I(6tVp!i|GNYuOyN;@M)nH9fM}JIlb;F+YWMrL+V3hP zEhZO4wkVl2744mPfccm3JQ=J|4#hUtl*Yza*517{`a1m+%Uyw^%fGR%3Rz&61an_Njb^h zuWyH)bJ4^^rJoH@IjiJz1aplH(Q?C!7?qpRa<}fkZ_Mb0OEn609&cz1Af?BetR?h- zRZLguyw*Iu^&&(rizff%Z~V>SEd&J}k@(hlzTNu;CD+L*N9M z17Mn^vvFt#cZTOF-O!-Gj@1LY?DQX9_BY|;Q@8ztkz}Q1!5ERfI*BC%8#1xDU7sV) z`-w(mQp9$l9xXA=(NJkl(gwdB_Tz0MFt&WS z8QGoS+kV_yj2ID%sPhP5+u#z<~&B1_q3#DNc##b_&ndJuT zGVUzA*LI9qH%@NJ^kDC8kG0QT-LKt(KRvw9q71ja%9wUxFM9jN>={MoF)E07%qM>Y z!Y-?-<#oD=cg|oh+`^981c7l3#$z0VSAQUS3H0rNKgKb?$yT0VR5UaGt5U!zlK(O6 z_FtKrH7imn!sHh^p2Gi%&vk)?0Xy!Ca%9fg73)Yc7dG9x{TRQXnreRH28P`?2Oga* zb7e;nvX-l;cm!4i?|H&KanWQNn?F%1zG{`2%1JEf!om<57mPc5XM5lJ!lWm-b05(| z79hix+EZ3OV3=0e7oQ{p)wvuwhUsCn;t-ymWVMo%Lq$n0WwzKvc56^6fFtm7h-F2! zk})CTgx$qnNy)gQb`Fd@wbJ;KDJ!W0A=HjA?X^I5{kA<7E0a}SmE^2$?u)RGscIel z-}ydgH?AN9DtS$`{VBAH_j_P^U_?r!oT7Ef)$u__Nxrr}f5REA5tD+s2NsQx65{@@ z#OeK4ZH~{M?w%Bvh7zy2$FRHVk0AeMSw-2}!rI2g`fqRj?^<2`oz>N`rms!6r%jm? zsY?G})s|fUsJ7&-uTvv1qwC`nf#jfJ5@W4k1Y7EY21vmZw)M3^k|trPJ!NfLcLq5@ zK>sQIBYXZ@fc$ge`5)mgu*l?bxw)q`EA9>G2@+*K63A0fplD&K&^Fc)7h7R2kx6DH z@A(Re=N&L6up&lXGBUkjTiHxmy1R9Mc;{=OMYT!>-Y*x;KRz}wHe<_g=GZW@`1T~s zpWuB!%13$JWt3Q%&txpGAF2-%<(RcyzS7UEiwr=dxfz6O*^H4Wk?{)&l$euX%u~D64}0C#MtWw*k&C$2sk07+%6H2W6rxLywH|NCb^+M zwjgsu@=V?2mMiJK(E^dNZvgkb0*2Mp7|5F1J<|>=qDx(u){4G=eM2WTdYo;5R}FFM zMrL2aSp7!MF-5E!Tgc(SQ}u4$F8|SMpm(kO(ZhbjhELt_j~P6o8PS&y8DRR1=-$FK ziyPD3KbI^B24)=0@NF9;<1MM}Zln5Rsm}=|O+RKMb4q{h&2`H%!>8_{p4pzRo>)D0 zoQO}(O<}q!L9T}+C<*m}dm458wsGp6P#x>MH|8bIF4vI|leC89L$_6{iZSoCw2czY zO|fF7F-{n*x(W5S9HR15WO9NXI+}((6zQ7dNOJP{n(L9LFqSPk(**3=GfeXJyV z|Ms&80xe+!Gs!q87lVnVe(-#I)4PpS-|E|NOc{tZyxLo9is!}i0hZVYCI87jfXbec1XI~EY>ReNP#mW!&r8o1sd(&jjZV`_iV)Ar6 zMdTyB^KiNo>Eivv`d7rYL(kVn{l`7HvQzS0BvO1-c_8_OL-L!jb?Zl0n%$7THQ zW5C8guCV_ep8u-26Oxq%DpQtEm3B{Y&i~-_HyP;m)h0j zc()q;VW`Q`LJCDXWmAWj|J9tsZzU3*1goJ$VwZxprUt4~1U2iu@oULO>Of`uN+*Von7*4Ee2*Vf+# zX256*B2Es;`ov{zt*XR*KzwNbh|kOaa3A3x&;U^px3)C5Hh!8If7a1NlmkZ-e1N8q zJg%cN+g>IcJLd;-a-sKU&%(2bA~)!K1UHH}o`#bii}TeatL{V1V?fNU*2(@(9)zgF zpgveSuKY%&Vk%Z@=2Zy$&PA4)tU{2)?BXt-FF{f)vI&$hnfZQZj7ohT;u88gIWl>< zMQRFD)*dzL)^TJ?UbN%TfTsSx^<{ksB`K6*Tq$!Ky&OFcfNEN!>SFH#FnFYi)=*7t zajQaU7BpE+bBa5M6@)UIF7H=tkhSYBfTQI_6=G4qMaM{4S2QAIs@4VUv}ndP&`q(v?q}~9d`S6D3)&8z#kP_l ze+mQedky3ncL{CEWx->(MpbtXe|RnN1;+X2CaCC4JnZv;rwZ8P74}!M70fRoH0cIErUAC8*91oK(h4 z;WL9{@iTYm-*aHHXKU!T;=T+K?wC-40(|nT4NGBK`U06dsutvOOC72uVP$YSKHt!m zIcAK3XBD+j*quHDbW(`obtC0muKp-5o3AK3Y6b$a`$w1fugqV?+}P!R$U-}uR~AUB z-7D27RJqVK)8oB0LZHlk8aY9 zw5Tx&MCQf6c;nYiSicUKzowiY113#r!FrMpnOjo;!G~O$ifRmu)}NJ%1#|rwRZ|Wd zm4fZdXo_WAQ;YiG1G8qI?a!{jeQlIo#RuCJ2=*Al(v8sSi$8ywzUB^KM6P=ja6l~?Tk;^s znGO2!H~^DJ8iKMy)m(dy*Rs+Es&p>C18(swqku)yd zyPE(mH^A7`CV0x)HyEW&Y=lE1cqE(a2ckyG zp7Z67z=PLZfd}~0s?G%dvnro37pM<=FF^Ju<8~iX(-Y+GpB9r89+*7QfEn)Mza+O` zUF+Al?l0F8vDY{KyEy*usTw#>|IZ#j`GnieiO2m}wI8}1kxLTd)Z+X4+Kyt9682P+ zQ(`sHqZ4Ce2Kw4CQgtuQ4r4E>TaV6>Tx0f58h?rj)2L7OPi3=3)rjhk~% zSvng8_11aoUAkH5(1dw~iR93|xB==zPH}C`oo~h9*zub?GZtk9`rsyT`vo0e(k#qhp5M`x>T@8(G z|CXw(VxD*>pjSGX#e5_ymn?O{UQAHauMUEU_98${Vy3-OM$?*xt(rKyON0niCj<`A z^$e*^kjMlLss@$q;ros0tL3?*yYrh~S+RB)E=kaL&$5)v8%d9k6f#j&(h98_*p z3kt9b!3q)z1L|Xy$1F$~by0rQU(xlDoZ)O?tq`0wnlJAubTh8T)ppL*vBGq55njz& zojgD>(RWg&woVXQb*cJ53X_EMjNF;=e4~KdEHuCTk|2MqkKZ$1AeF_Bz)go6(tJ{P z9_~J6cRZ>c!r8^x@H|~`r6D#XPPZaad^9f1DWpEtT}UtBbE(*3a(6(EX%apo{D51u zgVhV|b!0&~)2*YDyA~@Ayg|Z_iaBZ}?e}$r`-@vTSkEjOo8e75T2uR|vA-zt5QwkJS-rq_IZst8{Hl~cU6+A>L{%icH)M`- z7jTMR&D`7bn#HQ~Krwz%)xGL#XUW?od(3gJRLHlD@6LNG%kQtR#ae?uHp~;6t@A0_ zicx3w`?QsL)rGtykF9*a&$FoF3Vt2lLA8nIKiMbk&laT#YZ@7WK0?f^;0kwL-odfy z0lO20gt08*{lOOWns1HxRM20t?-GM<m}%gQQ_k)eoBLW=7~h;;9AyXAt=7ApKPr`oHpoACp^HR5LJ{0&d5( z5(IxXKLJ|K01j@X_f@O_5Q`e50&f}afuTTVw?%&2^aA|Rw@RV-sDull7IrE}$IEX| zt}nvLN5(J5&&SW~_}DoRcJ{=dB~eG~Da==iLB8#u17EYwPO)gpDi=TYEbvR}_sber z9uem7(msA?+p50X3bWryHrvR=Opc3~eInh`H>sP)w(h;BD$LHh8rxzm--OOqb;mz@1G%~S$x_e5zSn9}yZh?dK`yU7EuX}5M zCKZ3h2ZO-PW9Z!3%2g^>R$i^T)o)_`al))UOR4GR>ug2$AsC;*OL^TU!#$Rf>xg7K zwgm=6c5*u$?n`y-FPy

    18~z`ekHMPsgJLa97cRJ+|=P%HI$!lI*A+ae=NE2#1< zvU^J|?^l*{i_vi;|6}pGlcKTXQnzVDh#=9Jt_0p=Rrp32&w*zXdE~{8#}QL~(H37O z=oMe~2R17WY|=T#m6M@ej^IwB!q-n?y41a_>3jn}H`zr}1Ow&EENms_q*A16;DU~=+Cm0vUCWo z1cRzzrj))+Yq^3Tk&!FO;Wz2?M7Wh*ZooiELf{ABi{SS_R9+J|eZt9p7Q+$dL}t`N zWLrzU0dX($CMzXQ8W|!hlB;kKplTYA-b2t;SgO$SJRXAMbJTCUJmjX zA`A6JtylE4DYqIC{r(@5^$H79mp@YtD~T_d#N0e5Ia5x^1UKjbU9E%gs(aVo{@g31 z=O}53|ME$8@vXp!c+3tSb>zPj#$UOD=szJ)Fg7u^H?}tXIj8@3jDqsHDS9Y+Aakl} z>cdpi=Kr6#$@vd)lVDgb6Vgb%6{t4+?pXv|f_Mp!TgY>NHVPK_7X;+jE#zpx_x{7TpE*?*~>|8?8l&lCQNZiFAt|KS!^vK)vVeDGC7#J;vc!O^I&v%b;M*|2hL zP^=*sWWgi)GEGWoA+$oY`FU|!DoFDToqh;5807VkatSjt+S_Q zX`iy|$^;!2*6mi@HDcr|lXI4x*vQC#oM$2mot7jo+%pwIz<~sqzx}WqNg+ajqM`r6 zT-gX^t|auLxWGzEAA=SZ3d~r1`&%?g6)(|@yhL!pp-bSL`}Kv$?p^<7%tzl_O5c~? zt{7ZHJw>eJ>x!BZGEbk9Bc&P#x=tWUX#e8AUt#$*Q27bVKj3hRdW!ah%fz!-xM1_S z25?l2LDfHfEu`Jbg{4MSbM#v@5Rlswl2Pa?D}PFkW@+VM%9A!;Gq>O`5MIv7T{*x@LUh1IC){I1aLT2NuaCtp z`31gei&#-l`>T_YF2v3^TV?7Wv-kazU5=)$N0RY7J@0CCY_zq~mTE^WtYflf^Q)T| zQp%-DQMjQ4>P1LnVh6v4zsELTfVa&V&D1X83oa^N!5G+BiW~^-DPN*gj}ZG0aBSRl2HK(^ca@l1?u4X(MiH+MfjM$FS>%*!m(|i@_D1x zdKMGY3AuUmXlFSBFor<7rcpjKSgDD$+j`}&F&NhcHLYQqAh_t`9GXX8R-EYkSR<9I zqaAPqcAzFOBKUiR|JsSaR=fPO6Mqdm|C0N+%3{H&eNki=k*Dyv-ZV{-5fK68EY}OD zj3-Bc=ynruRzFJ=i-~Msv{Dx7UhR&m?Z*2Y711kO|SD;EO1C(n;Ak`86rO8fJ00mbAFI8mY5^P}h zww?;i;`#_7Fi-kv=){L5X(t9HXe5n{RxkU9B+p+COH0tgic1ZEQg6VH(9=rDI1NJB z)iI-wL-z`#``#X+q&~`96ZH!++(A z4)VeH(PU#jh{vbD3_%K67MdG0OuGe6>iX z4@|-gRR+7;T_0Bq%U|{)+_FM?gYd#mQ=#SyaxI>DdC$DQd3+Rt;Nm)Q4`q*ADC3%b zbeYl1ZjEG#q2|fF0sDRG6K`EuV~ciLoRvUzih64<9OpUv?-F&%-(FOHiALtu=mt2- zVooT3J!+s4V7j4n+o*nppr2~dIl9oGR~y;QxhS^nyf5KBp&cWUi`W4}lA99tZEGPN zYVZM0Cm16Ebm^P)MS@h_;o0qoM4hA7LOjw$1eGUImS$(5Z7?*ndq6gyELfN?BA9q% z%qLj^Ji_H4Rk-519Y;X$y#DAjzsBu90hG3Jaxi{!oF7w=KX3yba9unNtb!W$ssxKZ zeKnKYbrT?jMr^iD+}`YzU`MO&9Ao`_UH5Di=~xtd!5WQ$$S(QY@P3LL^Owufo#*Il zup@ZvPOC#ckUj>L(rhc-INQ@8Rgj)!PPpPBW0kRb86kC{Mj|GNrPC}NP`7C(uP!Jasc=s{seP%e6@&R$4g55^fYmBD{sK!+EDf$9sJy}d>cna^M%E?gmjca z2w1);DlooWA-(6gApXjfIK}+^dQ0o+)0edPZ2|3qMFi?xHQ!+@sZGIN@6qvXJ%5Z5 z=LW&xA0H*b^GEvp%|MoRa(r5H`A5HmMgGXAA|&UbDewGzqRR2wz)8>q7%==O_r{)a z^eb;t+mUYM9QCw;AIk-%pu!X~5K8iJ_O6^aU-a%QyuPpv-$2er-atn4iTPsLG7}e{ zR8yekYHI0zj`y4{E@e=ST$oNd3b~hllC?>rx}Wtt!>9%w+PY3hkDV=EDM@rQ-6__N zsh+<1BJWczhWcCi=Ww_*!4ut%rf=36$le|_D{|VTei&9TC2Qnq6ctrAgtE+_oJ>cp zK44>=xk^I>%gz8L`0%P5H|^e=YI?TFa<`H<+?nnx%)MuO5qKufF#sB5#yeXy3~_8} z51E_%I;zR#(~l~&6R&i);%uMh@*bWlKgeWAGoiBJhjvojBCdf;&V27IQbpNA7=jqc zAnc-1OV>$@v`C# zk^DIq0``2wp>i+TD}sA=Dy#JE%MA#oVIN6NA49pBaRf~vMJsweaxdIIa+6t5667N{ zlQx(f+C5e282fvnUSjHb4PDdJ?+`Oa8*arf?Su38Loc9<4atsPT`y1Im9rBSs=kp8 zLGj6K}2^4JCTj{pl;CV}I>#0atgzLpfdhF9@f;@~;$bldzvgjbej9@sC zAjpeCCWQD*A&UamBrcI0M)>M{hs2kJnDzuW#HY~FL=jOGeTqidZUJ1PI)wC5s+j<# z@-i{lvMN_m!t*B$dGmV&xjV4yul~h8|NH*51upzL{?ea=!2U$%I|5Na#!zZ|9=r~T zIqxs2YQ{oCO-ERVKahhr0rds%ctz_9)H~KLI6=YBe8R!TBRc8vQ8qB@bv_p0Zy=`- z*bU^YT#Bi5Z6`N;3=x$`!FSU6OPa5%nGGU6;3<6ho7p_e8!D41reY{OQSukmOyz2f z2){eLrTIWa@PAnQ%BU)|c5Ax3ySqziDe3O+?(UH8?vn13ZjtV8=|&VmkP;BS4W9R$ zBj@OM?>p`f1`fvd$DV7gC+9OCPmNWAz^{WC6D&F~(Q?|dT)+Xh4oVuKA%iZvg0R6l zJ~32NXPxr4!f($5owS5m$D5^nvTuyqql>#K3}1?P?PO$9r3e_mu4mEI-$^}oZRCXZ zo>A^FwMk?)yQL+62iqLot&CQb&lJ|pC!ZSLt%OGL^Q;0h%H5@MM07PA$-yC4sF7BX(H;}&?0csrR6vL^HS+lcGez}t^!(toaW z{sM3&nZG@gryk+)Nj|B-z85PbqAJ-yM|U;O)oym`W8z{WVbIg6 zhP9?+vfd`^8v*E#0eevm)CXp8r46~>B_yz}FI)~#Dl~Vtgz=)@P#{1ls8kBe)mnUJ z_RejT6`D8_F+lTJ7&6T6tk!4{^{+j5B|E}Z;S&gGld`tBI9hh@`Vch%f+3P}Lg+8( ziB>yKhQ&0M52_1qaNc%uu>oybh@glbXSG3Q|SY_b=$4v@jz?&Tl8T-vDasEy_%t}$sxll41V409*Izu~l=v;!l`Y&YkdIQ3VuKQh z(U9wlZ08p~$A~3c;MPIG-TB?9n=O2H3nrFMR?~75u(*Yrp_2!?bV-j{p6R)PbgWSqazuz!CA^%NxmNyq9z6`_;&mAEesk?{qx&388B}$)a zf{q{8V}yzKb{}jSVEj4$@FqWm;+~q5r!0~`ukHg%57S;hBNfg25U2;QTMB8v(Ci?C z5D9hxLX2E33B>||D_wkjhNi&TxYJB@GJ|ymd`lH5l<$&L>onnc@tWY(y_ZjJgk>fS z9t<8d9F%FkeXX3WgoQConult-fglIr_jma3kn&1jvuAGu({%-kI zp#E^wqDEnjBI(k-JBQ^4L;zziSb>3VG_=k+a3A;XLFkgrJ{lF17t@pB0{glrjvX-z zGz+3-XGV~+rQHAv?p{We6~Z*nKtR*=?k&5@$+9#JOB^Pqa%%1;@)kF$Iyo~wC`A|> zS>;kv`wS&%$?&ao64+pbq-`P%vC3hdBCWZRFo`4+yV6oa<=u#dytUVJJ!`{<%$X6P zIunV>x4SG`HN#hmafM#ev72Y>gQqRVDmEr#W4A7>lI(R(tn=0hxxgaD&^ezcY4CiT z4c|8&svT*#&?8o#^mOcYo=%<)o;H(wuM>6!J$hupxh^zqK1hl!{TAM*+2dbVQ{g9Y z|4NsAe(;)HAaq0^km05O$!!vWkcXF&A7lEH!9*N`q)S*#wD3q_Lg9^7cq*KVm&5Xx zZfXcAZ$mF9<+Ga5H~}F2##ag|77oy)0a`xttv)UGwLTI)RX!r(HqkG_(Ieql)X+N% zIm2^{>X=!Wn3+I`SwTTTQDG;M;ppJt_|s$j(5V32CTJ8>J;=wDI(Dcv?4baM@LN!R z8O{khJ2~0f`~-|OK;N;O9}A$aS{NFY2eLL9WH0~V|5esPqtG#t0E)NVrQ~l@$CY;H zerODun8}ftPapFY13KFmpKi8MjWf4jib@V-MSJ_#zORACF&Ri}eN%n&TvF$vC0psR9!DnIMz@z5OeJK6XSlW24sg>001 zqhaT9_jEK)%u}?kWK@d!>;cqt_*HQ-70Up&37#d`LMD*mH#{*c7yPDRxPoiJQViE% ztpKeZua9lauWdt#xK9plRtU#+0(H@62BRF9=U?5tkS?0t1}mn0=TXWi;JG`!RnwJR zURzjZB_I2pUd>pz5=H>}rIs;JFoh4?JWv;xQ=hdGnk&pJ%yfhN$uWOOHC3LM(kCU8 z)=KCxg&4>0(JoOU2_N#oQTC5oyny2%|E;5WIx73;Jq0j}to|7(dmv~L z1q-O0TL;mG(5b28rve3%1gsv$AvVBG)|2eTbWaQ(JHH4vpjHOa!BIB9X-rr%4UV(X@A2v z%flrqUCZ2lF#>{W3`+0XQDjqTIneq^dBqu?-il8PTO!F9DXi_!V5$7FTKkkkwp5Y*zrUPNl)nme z#QPJUm*x%tcx)Yhww3?>oK4`zr~t1vifW9BX!l3C>i~J{({{XiV!BqmuF^qzLV8BJ zYTm!{B0!bK{-j0h6%;3P?C)ccJuo7meCt2_Ns;gmRQeh*eLfPEaISdjc+M)};CNQ^ zzHg8yKp9^vy&TI19+wmp6_gZ-g_VhksRn2lOAQOlmyHmVRxU8k50z}Z6XEe88!8Bo zKD1fx06%}##-2LfU*4LR<}N?I;(y2Ee`enFAIw|ID9fMrP2->Tjq8bhW2R)~jd`$d z&Hu4)UjMLfW%v*FP5IHj^*^z1=)bUU^d%nxdjXIj{r0jvtxf-RSsrSnKLKMM#S36; zq6O{)OWgMLkN3;Ku6C1Np~B7z8VEFPKrqu;+Re480~&J1T6A=g?tMGntO@QNM~I79 zU5-iQ;yF=6(W`fyrYs<( z7?4HA(#a!o!vvoKlXgOUaa~X{Wn=*I;ReeYtu?7$XiN2L7ve?;OI9=u4x{??dduyy zS2FlA7|fh^@&1d}=dMEQHX`vschG(?!9i!Ar)o@HU+TH$`!1_i z;uceI6zlZ93@w}1ErXQ-#Sx)OD?3_8^sZ=6q5r+<&21|ftsjiyaTzC{sr@N|BP6gPDYY+=BQC>fzQv;{2VdY$Hh z(Lv*BA9#>cMan5&W>3|4Gk~N7sbN^pL~(hRwE^$3Vzr^M$Qd3uZ(J)y^(@K}j;XWZ zp7}|L?{Z8T#Mw|s?P>QA$G$$?Zd~m--_9}MuQAyCB=Q1+LhjaCKB2wvg{XXjJj=&A zCkrz5zz8<)>o`CP)DR0U?4R0wDu|ffNB4X=Gup{;|EFYk#@-A;iJ|tqC9jeB$pV z!9T(I>Gd1O);tjZgYRk0K?^7OHPzgFA5sx~Sf~QIV39)^18`Ltl0JrZ+()JgU_J)9 zcIWuW>B9BmX5bU9i(T{#QV)`RC~3DFSH!}pIt*#KV1-tGxq(co)V-={OrW0pemK%9 z#pOwZd|}y&@Uj?If2+cXbXpljTx6|;sBVF1u zP-)B~P;GeROAR4;>(~U-4a0c)O6);yEu$}WQo3dNIhLzlv`mLq0;}8H4}Wf2@o4!T zr^$GX{0jZ#BhUxPTO2ST$92aI_YLu_jKH>`Go4P@_HbS@X z`VVQChyr9I{rCF8o68F~Cof?o;dsw@&UoRV>b`X^7}FemQUi!|mdh*PF^Il;BiWEp z(aePF-!=!0N})?>m*?f<~$~s3%A)1$=A;Y*&KBMD1Ps3f0?QM zGsFE+vKM)`9GrfS0fP%_$n6W+AB~PIWk+I1GfAlx**~Q4mc~4h-U!FbJOX;tq27}_3pKA))9lD2m6xKX zZgcH}#IoHo8tS#U`T0!QaD8^^sNJUiN0k=~_V4j7VDXE_Ib@OW43j=dON_Y61XP}I z0(2^nsxldOmbDo$tKu1RS!$7+6uQsfO}yGOFn#Mh|8Cr4`w;ma^5G&0^DvP3y3d|A z?*e)9@mRXA#oi#e9rJrVMs7ObCJoyF*ff57gMI^>gY{3Z@kgowsB3Mi^ua23(ZYn` zK5TMO$0nI7*Z|q;pigKl_#B%iu>GU1wJntf1zjNi&QWG!_x|SV&3P2b(PZOfwVlOg zWX|G22huFJw(H(oPnj*_T-Ics@os{yN*Y!IEt%`%JRs61YY{zHt_hJWnynjZ8j?9S)U-rbCZupLLSrA^2E$ zA#q*Kr#KFkt{IhK3HG@%djSq5k#h`v*dK@ zuO53*UFq2}fYUMltt0tmxCEdSTR*9C0f-rZVsP*TkV3$qw473VwIwDX8Fcjz6z+N% zN&!d)v4iVh8x@&t=-otOqWs`Y#1TtgB`L=DPG$QkSm6W0Wt5=ws;9Mj_XS_!=8x{=)~&O=vLI} z;`mMi3_Ro-24#ZiUN$@OZTW16=QHpl!>pIv*ubE$LU`3y_~D{uSGYwaMRAnENIBqs zUMS?z6}Q+gr1ocf(kka9)B5!FD1$Yk`ES;D=U_VxOQjJT_Hr9}W{X0u0aD-u7OO&q z1n#%S{9lHE_@9aD5xM}yk`ETrS*oy=r#~A59W1W+v@*#9LAo2ZS85{pRq89Ai=xg4 zuQa3y#a>qkn8(15{KN|QVc0q4w}rp3d&)4fGTFT7wu1&4E_m|;GZxtQSvsB(H6>)SKmkCg> z`~Sah@t1X3@qh8e@ei9{kbF&%sYyUch-mIM!5?%iWMNRGUeTzH6Q}M^r}B*rxW_%i^xk z@?73idvg<_;^9qvMucg9(aR1>K?vc@MkB1vHFsSIPN{Jj@7Uqp@Gb<3))iDkx}&X? z_*^r`&w7-R9*rnE9B=k9(o`p+`r+WD&Q6#h)HC7n$h`@Lu?n{2INx37_66~+?@tAC zyXjefv+tMR$f$V^&02D=spF1*n1k8R`IezLW#=qBb1in}lY<9wvFh%bmP~?H_$Fc3 z7fB#~&ag2eXy4K9i%3tj{ZMxUzh+rF6vR++gETj=QtX&8%3hq4L^ly0N*yG|u=7;6 zb+~9~vHQmZobZDFW(l~~v%hu9zl@~BtpR#!KizHXzaps<2pTtm_KgO*df1ezc8GX? zSR_;zA#Q5&x3O6y$9oS-nvpXOu{hERK7csNltTCBVXd8cb6`418%!elqM@9U<#p^k z`?1Ze!iJvCiwax_^M-jtIfeV9xmGw93&#GpwlMFNkJ-+HN9a#JK&iTIDzo(xy;;sO zi(2h~;%Yx094~C-Lx4Lm679<)@75e>8q zx6rQI$ktVwPZ16+FBNJah_;`1C5eWbcSRb``r{Ac zY_#``Oy3HCax(R+L9l^_l(%r0W$BO>^ojQ%<}!LoYF@68*r2+Gq7U}}=*Elo(oiwS zl)fO&LILQh_rm7k$a~O_xWYI*23Dq{$FjD7Gd%e(&(Oxs`AP9G-dYhb$LV`XRA2u= z3C*hy6OCD!n5F|E8!xfO5SF#^)X#QdBo2Z>oHB#zy!eNXTYDRwH5S+FA;-3+_sgE? z@9ur>{nQtI5tZGvg3f7p^qD?A*Mv)6F}X>--^kjs-*B#Diwv-au;hAO;CJaL>E?st z9zdtCmZDSqHltw5l$;dXbh&ZB&zpe7ZY3Eyc{Sp@)S5jay$g!&N1B;(bi}Wb>DK8f zSZquBbeE?kj57qswA$*&6z()THfA8jZ%z}tGUakPrg$V?M#EY7jlO^(4#5tPtQWbZ z5rx~6F6kyRk*kr^R#=F5?T1D=ZCYItAbT3RZxL@P&cUc*&%*(JYb=;)3(W|4mTw&ET8jcG2Gi-1MN&iNPT6Odl-Qbqh|(4 zl|te2W9um!zwhp=X;cA0kIugUCT zO;oQkwz%bLw15Xr89uM)f4@QFBdStZ6$&RrUI=9vn+t5+Ror6Ta@>NTQ?o(g9e$T{ zMLtWXEAJC=`i9y^$V<}sn99etl>rL@_pIemw~sDkUqk$#q~RT98)s4NWe~j zm<&8WFA?50P^^c)p5n6Epvd&FcF!ixL$ENVL80?dJ@{Dy^l69Vmljn@-@y3iXu6=t@>iYAKFgj9rRs@bgkeD1W_DFe{d9oY?(OXGA^JSC9MSBe+BZujB3={LlA9rb#B`s$atzn*Nuk@jQ z8nx~U9?>wO?782YA|-CFkxXuI?d96ctI_g!mW#PhzWzqK+a@$%;Z)AD(G5GeuyoJq8sXa_D+aVpSd*0sz%EYMW(g({SoE+x$MJ|Ynj7XFM=U+ zU^B=-UNB!h%+K&g>|Va(5Qx0tFXG#RRsn=PNGN^Tow-v0j6d_npThXd$U@54)Y#_d z{O2K(1!V?AvXwJ3rE`sUm0DpDF1hN>hY|(CcC*3}H{V)%sac_oiU2yak1Ed@EJS@M zgG18eo7_7OOlr^OZu`(4qyQwL?jbjn%B?0f^qMIP`L>l0)SC)bl`|i|Qz)m=&sl0? zeDwK-HC9P$3Z7zRQS&}tNcmuKaaTRY9= zaFgkZ)@lHl0{Vo&L`$}3K%b+cC*OaFQ$4vfvdz7Dlz-S&s9$)%@nUq z{DxxyiZc9g{d`TLF@m|T-Xl4(B;sOWBZrFlAw;$6PAiHzi_3WcpIE?o0}+&UmzKEz zsn_x?XP?!*YFx*yXYNzmQpjUuCaUMg$`tYA=h=Blhxa0#{ve&=tu`(69F z})!KeO~v*E`Oc8QbXxJuxGDKS$7Kpq>yH*kvYl ztS&{-=p1pT=O~+^YtMw{tuC-F_SSX2h7p@yDApUK%!D?ses;S3u={+2I3`~596>0o z@#;Gno}E5-fG>j0*;W|VDK{THfvg6ps8|*g8uiMR0=^?QoP>2(w&_io0tnov#MYH_ zbGNKvQG(G3Y9T+EW#lZJVu;1#H)lzw-S_%TdqNiThMVfPszM`CLY9eveucLU+(O&y z7t`lr+6?6*=+58D8B}L?1+~ZLcD1w_N=MQ>vhIK%h8C0XdMF%#>|rgbo17WUlb^Y= z(WbYhE02NhC=zswxfgt`G130|@~hHUsk&S-9bpYts@umf6~ij(J3rt&lz$uI{IYE< zt#9}9k;t{lfXE~9g3?NQ`N?ymz~WM!VI->rno(iU5uLfF0G2Vn7~Rdg7ukfolJ8e% z&W)8~nP7F4+56;q6Gm}l7q>;%=N^u*S;jZ0a;;69uU%@wtW@Piwj!|{qTtPgW^qvI z5j9_O;uRm&&aBlt%q^gOd4G(65oojn7>B69q`3Y(RBeoTY)O}!pd4L{o8g%HX$9)Y zZI3;7W50}HiF`m`?=3|^yi7xqiL30__&0&sliXCtG2wQOcI}v?3kz+Z=;MoH)j;`K zi8D8#V%@@b*j=XL!v@jT`EMTmcOS*h;Tqr)i~e_)SlZae`DetUxe)++VP6iAA)OTG z6y!+3*mWTzh5E|^=jAxYD+BdChk;&+@&~n}3XDR^C?z?`!f~u5h;s^7Va|U5u{+OlSA~eDrXex8zDvj!dlN zK;#QXcEI`ciBUar4KLasM;DYjkhod^VEinB^VA0ZGJlsgc6vfo{iD71D#e!?O(SO& z3u_r5ti_@tj6cm%VBk8fm`+neY(Lz_`~`>yZA$^03Pip2c)Ww#`}Co`c3~Ig*IW8h zHIH(VFuJ>8%`C|>p=>ZIP5c-PqUT*xzNnv`RZ6eoOdnll+)P3y49iiGImUOfroarFjwaG=pfJ_jy8TeZOhXAI6!h5;@n*zn(AYU_$`APv4jUvBUZT0tWPT zv2NRa%RTrz{RA%~&kel0Y=$B1De8k)#-w*=e`w6d{`Ok^`W@Onamg_PvVdeiXkE`a zzl6Ux16q~i0|Af6%cu|%NSxzk7lmY}HgWZ{cYxhiU-Cm0g${vhhuYce7{8e`wjC2@ zZV-S5Ne0mdS$5m;gsJY$e3(`W(g|Er=|kOg@#1*x1z=20q}hE<9^Fct(3Nn}3JRf+ z{Lt69br~huA|s_Cab&Q`?%e;T(OjuZ-y)#7s@W8kqeiCHM>4&bb{u4Ld?D!0W7O&B zwGM>pM~LQPWD(JK%ie(vcczt^^Vmb*$=-kxg&Xm`G$5;AAdtDQUoY7iFLcTAd1RQn z(IeO{0FdJPEmFUXUt|p|0Q8@qpJ2SEtfBy*GLq}i+?xXx8je{#NZpjbwcABmgOZNs zWfm0J^qDhbMrge7{rkMzXN0%FcU0Rt{k6)|1?!`Shf)`oufE@%pi<~#u0ej`@$~@0 zg`?;ZiRdy|G}HYeNwC{4l^-3ip5~)hoi~ysm2Z1vpQt1}Td}22EKwNq@g5IAsApeD5$#6K-!=omwVX zSay)%c(>KLQ4!vl4uLg6s#wr_w61>E8FjchTl?d6qznR08q^TcWX&>*=oGLh<0l<> zr$)Uxg@d_Qx`$QITefUG6ni;Sx|7BdR@4zyd6uCXgw zkk_>nG;OMUgzZNm8D11J@41_*=Uu}cX=yrTVO6YMX~yzFd}1ev5ueBXqCs>GGKCsS z>c>HW?0y5by zsYSF#%7Bs*I>Kb^o_&g*+UN!3w<}b}M^c4Ch?>nmc1pcF5o+1%yak)uutFBx3t=D8 zEWJW})SbCYu#0>`eu94TY*g(?@hVPIf9Hw91uBGF5dK=4tRog5Wt3&InI?FDXe9u;PE;1p>6 z=)Sd^t`{4A`}*lSsJ7N7PbX8SxUXU`1EMJ$DS-&>Hxgm$a;@HZG-aPp447~P*+H^! zhIj1KS)N{-Or7v4h#}b9g#&4F1gME~gKHBFi8l$8oC-Q`TiW-{r-b~ke zFJ8I8QU}LtVL%I?1e`RqoQ@Ju>6KNbl+jiq&7fn;Qd803*4TD$Tm8MIzK7m!!XCe{o7!yZRGy$Sn3?*V3z0oF4!|IN?~1cY~w&+uIL4*Ee! z(d)O*@Rv;|Svx0DzK#i{fKs3HQb~uc7 zfcielk8qMO$SzMJG=y$-JKyomyH8{LH;}E(U1>3fgx-Xp-R?*tk}b)CLoBGQmZvOj zluiM50?kl&CY!Kbuo#s*9}=Ncw!e|3R~;ryom-SNZ%nT}cMSANOu5yky!b;4!ew+h{-O6HfTcra1_uBDf1l3& z+KxTS^!#kcVr2oGEUf-)5SB!uP~ZE>fDjwn!5x@jha zYcN#@ZgJ54ZI`1f@tyYYQ0|xnO4rzeDNs}72w~lcROI^4_oN<*{_(ss&5~Xslk%VQ z*^wz~u|% zMv?|SGKWO9XVG+IZn}_QoA$C*wT04(S|yo!w}q#$rlV_6Q;br;^%H37Ay|s$$SVe_ z9@FJ+(~M2p_gtopX^QAht+ifeNZ-(bW+lLGs)2@D^+AotKoi+A7N>aF&XcFCdr%K8 zvT(9;^WHzZ)-re3k-md1`H`f&FrC4C81vx!Z9x1>cBvdd>f6*o-_Go(llkvEgaElq zKpQOEw>Pi%EU(ue?$7Q7!aw_j7Jv2$ksdkYe{w2={NU6DzW>z1^=kA{jys>2O9R$hRv~HRcgWf%97v;;Cg%5EBW)xr}wSj zF@B!$@$s&(_tiY(80TEV!w;yTXho=52sOR65de4g#N)-kUt6TwAbE&ujatS=(5@0@fi- zGWnV380J{!h)&XZN>5fccq=e5f>6Mzj=MNgxyL#5w`5WrjghBjaO|%>`wEydXH<6m zY-msKt+~}e|NUdj zsTU1>BdcfbBVP7r$NAYmJI>^P>o{itI?kEuAV$zcQkSyB64DI%MzKST5(|v%GV`)S z6LS+(Lt|5r>LAau;{=e)*=lip_b`Plqp z#aNC%cnZ)wj^KR&R8W37G6aZLu)e+iXno&+td&nrn>D zYPz``7Uq7YK`z{c7kXbW0!RPVcEZD`BsCvo)oK)bDPZ&UHUvp}sm>^BR$2Kin$T*P zf)Agp7ejCs;mo`>dq#xsWj;xumNR8mtQNDCLi4Vy7Tw62e?MIloD#|;+;hE$Al6!_q!MV;x=6kC0pOPa05wC-@DJc>jEGStMXNNyTkHT z+{3n_-?phzqLr`9_0AH3W@+HsN`QKKtwX9 z4bIqVGzE_MOhFJMOs(4Su#_3clZ20Icc%3Np7f#kLnrRc6jL7E2tJ#NbrRNKUlC!DkNo4!~$ zsj>-3-MX_}{GuRPL;!~=*E9TKH#0xZ@K%(y-nM{^P>`7`ZhOt(5 z?l8(8Rqh*$6YxFwsvPq#gOuCZ?dAXX-;lRd>5(1-hwsi(Rp)%E}`MhNJCWv?E^pMSa+)-gZE8+DtAfnn$hT0U@h<>e_#h?(k! z<$>kSfq``+&@82cQkqZ}8)vShtOa}aU5}XQ=6nH?_skzi~t5Tf@k+g2!skpRY zSZgV^lSv7E_04c%I*0f(+auBQvLUlFD^{w(m9lvm2S4qjy+qn^cdhT3hL2#sIkb6jpV(k5M{?;7mG z)LaH3qaQ*Lk-09rwu6liM1AGow1trem5cDlf5|@>V+Iy9S?1LHSYTtbFRK~`U_kN{ zN-R&*7JeCx{y@pt>Pg=#e&~_JK486+*kD{NcR_DF;zvqZ!e6Nr{t`LKW5i%OhpcL= zngz&Av2aXeJSmt^-VA8X^+`{9Sx=R2EVGR|r<`r0AzAny5VBuuum%d+zk#t)qnVIgfpyWlNQWR?4_!|Li$}U={$;rOYpcLtgAa>gTW= zW46y(Z(czG73uok@o>^o7iKkoD9CyMOu_;EN++<7Jv&0Zru7VmPS3zV0m@x~*5Lrx z&p$E1$KVqcCo2KvFben1SU|pgDU$TkZ zC_+I*_q}#9O<#YlaLlqFXB~H+=OpCZ$KJ<#joJ4K_$3b~klGBCln^j~bz}vRX>45% z^>}WUD1)9i@;QnFc6hk*;Tt_~baf#cL2-N7mZ%j0fIdU)O%5$V&huDjEJdE)JLGwQ zN<)12aiZJ4-qxduY08K@cnvsl(VtAr(^LOtZvErbZJ!)EU@Q|L5gB|xGi}hYR8~1Z zG7V0b2#{q6HnZ|~5l~#vD&lAL^(*bjfF0Ie=8+&*8sZ4$&EoEYN>3_=kQf=EIHNgV?IlV3=auMb+RNVy=~50sUtte z@W_5J=>t=OpC3ql>%VY^>~ia zY0ICN8k$vZG-Rl$Q&46dCU&WAgA@89261pNP|(n1(46mc-%oJfPrSRoy#+@%>u!XV z)n2sAJ?Jh1jnK(=?CxOJt!6uIOADVdTlRC7l0^Szs_92K+{-tPvUz-tz(r3DhFGgs zRHBhqu!PRDX&xLOB_2=k33kn(c&{X4xb0gCtb3oOm%ZNHGG9{+jfI@Y>dj>%#rhe; z+HT8r&GV>^rFdf3oQ@mbjSHrzw~;VnE#?}Idby~@w=+Zsj>fJv6||5v8=n`!9R0TF zaG&pXS`l0>DVPY?52%MO#lq@LkMEqs@dz1r5X{RbF3gc+c_Y~ek~?c1z2tBytzH9D z2-4cc%@5d@?hLvb?MC9IM_EtyJ@8x3dqU|G?wUhNQJW;0!6=JsZRG;qxHV z9$6m4=UTH9OFWZ-MdeJ3Di+Uj+CDeL8%ho+$mHRKYd1HhbU)CMd(UTA)f5wM1*Hew zG}?_4DHYSkWC)VJF*Uv4vG%qjv(+6*WOEtn02+@d+O$kN2{*sdR31L zh%0Hp{~kj8@7}k9t?N%$&Rg!0X#cjS+!x2oH*X8{$JDiIIF>j+3h|*NcVhfOq_ zYX-m?fnm2|xR?!6X^$g-1nl<8!?1s754sW?$Ml9;Ks*E`*p^3w0MQ%O4AQS-Y^g)| z`KZ?nt~St0u^1hOQZ{rw7+K74ye2%(nq%pDks7(Q9A(2E+lcC~Aw3V+SyXSKd0@uvG+ffH_Ns1ixAgx(Z|e zZ)?;%JV>`&K(Ue=d$CAVNMhl571K5Us3_2k;q%@OU^AM3$`PKPL` zVPVwmLV|k8m@KJ2GX*l_?zf4BiB?TT^jo$+gw=|T!Sl_Yzh?&!Q%0BF@7=tG2=+PV ztIPFeg@k%u2#s;nQI6Lc!iaj9u!ngaXftOja7FSsx*VkUFfk2?6OFd%EH?@gH)mYs zlFfzL--lF?yLB21rh}MY!#QtXrn2c)cN3ecS-x$)rMAXpWt&0ZH6?O$eIeo8CdSQV zwbZeLIHT8@FZFV6)efiSc3w8@#g0GaEpsMwB5#%!?0N#6FihnMk8u=tK5~Ev@sL@b zjJz(ivu;0+MD6v*X-88gVph1QtIo^v)W^Xi!nn|QApI^I zGtpit%^7oapRpjq4N+{Ae-lqt^+XP1(A~giN5tb_U%=(3%uhsHru>${-^u zEf-R{rDLV*bs6%Dm!9Y#kO~OhS>Iib7Hu}(%f=0SUY_^d|pJX{2906CDe|kcQ$XYPD&8{(yjx?4BXbFKD)PY zBtwi4$k0G%7`UHSj4)<&Phhj55J*u$3UEqPdqveEX_WhH5l=FEox}m`?m;w#a;p3} zKX0ZP)5m%5Xq~7H=}4z<$z{j2U1GNIx;tJPDrPV4QCru%O=Mo?oE?KOS7@EQ`^?8p z9E%cZ*_N3qMbj_dr=-9frxf`$EX>OwQ}%W|1tXP){1rXYH*%mHv%y$B5HT%&t-ykQ zawawgQbvA_ZI}W!40&B)Z}|NMWcF%Z!4-jf?Lo7Z0QIPwK}4eR6Qpm*r-qqzNF!y8 z>)9!$AbTB;Cym|s9Vs4g(vZK6n||%b&7G|NZ%avHCgL*xn^F==yoNkrpu?AG^TJ<>yz`+o~HZm54rCZGscu2ZYeu$kRf?6ObN&Lx2-)`3q z_HQ1tR!r7R=u9X$aFIYqKB%UT>O)%SrCO~lw9}S?3y3O#u=j5;d60Qt%?+&s*Gf8jf?^Om>;v$QSxJe z@Ea@Bx<)CWv1INVB$yyE05gH$ySNw??*=SgwLp6J^J;7F=Z_2QZZ~p#@m7pj*T>m) zOGGs3QTS%Ot`?i(}GCtIRY zo)x^cN0P)XU&p2?bzp%urX)-{=lcR4ZWqU5HV6VKnyJJN?yVpyB)Uv!F(y%i$Rg>U zKbrI&N)HCBHA{U==~34e#6tvb(XfAk3xHVoCma0~W{jsW0}%cL-Xu-c2Vym4y_|-| z%K|m9bGLx4pfWds6G3ssibm*San5d7O6e37ne-hp>Kwi?$XC96!`oK1^vfdwjI1|f zhlk^%HqT$(-Ce^oyFsiQ01?SC3kXMsbD$?ENy*3M7^H`jp;ObCl!#I4u>%)^iGk4V zER>sGx9C(mwQ0+NPSh_igX~Nmx_$2ME0QkWS)ES#v+Kyr+)YNTAweiaVRvzz$Qi8mlo zx>ZRbq2tnVMmuGZ{$#dZ1F%CE@-j+ennHlNGvC?;bW0RZCf}ytc;+i8Mute$$AAx5 zt-{CD7=dD<9p$(M@^3cm{7k=7I@oE@5u)Y)k{tDEM(9ov8CvR zDf+LJt&X6&r3#-22}BUqrRn-f@%J;&G`5i!x}Tp-5|+>(=#szq?5e$R0`dxm8w&e6 zxD$n^+f~fh^9)|_Em#w07C(a>o=``RJ)V2iw)hT!PZpc)kjdXMa>8~B8l5nR$SFg- zzV8O{jd{R)un*h~p=mO{*p~96dVRYuIvB7{w^s?fKJo0E4UrOE*6$E|g5Q%5=uKV? zT=5zSy^Z2&?tyG3@OV)hDoeM;x{cqA{gH$YQ8>IB%VU^S{Wxm$J4g$$q;c;lx~D%M z@*))X=?>w;Q-KpLx!(so6D^3pCl61b%F}&P560-hi2ryl+R@Ai{`^S7_dv+PVHh5e zR8FvxlBlRC{y{o=eq*g*i(r^kNykYmULJmm{QA4^V8-vOq zlXT=2yI4`Jn8&AeqDKhaFiWT&Rb~vYq3yHVHMSH#glTEb(C#73MAAOvP}(Y3ai9nq z5@sA5!%0NO*Wb0M*nMlXUyGbXTycNQxf;0Px6uz$Cp)(?t%d*wg3dXjm%YG`SLKHMI_S)5Fx=HLYg?mB0G2X z=jmEbL7vG^NimSDZ8=PA+pm54?q=YNUPJ(bh>A!oP_Ncc-o~O)QZ_$b*9YkSt_>Qe!3m*U$fFGlRmz|Ne2^ z{%Sw|siSTVP=)*Za?8Bl_A{mLL`ddif2yeO#Aj>R3Ni z)P3>1?+YqscThwi+@&n#EA$PG^bGWjfPf$LP!Mw3{OBNDh=zJQVIJR=homNpQi!Ed`F;wgr0Hsjw$#i$Wrg^rkI@;y7+iy90%f)F9 zQqIbNs{0N*PR`*)r=q>c4TH4shg6Umc)xF(25<7E5`-EixCB4KLW#g{3P+`onwnP( ztT`~nDy)w?C1j%X#83zk!8UzimF&T>>W0_|`pAg5|Ew8v+Ob4ckSoaJS;35)II0`a zS23C*f<}KM*l^@iq@$OEq-x=@19IW9l+34WjSH-5p|SgNp|KW`vl}jf?V;{E{XB1S zcu24hUx0EN+1gZRp1hUTYpcdGJVx<4MqLaET#141kcB>U>}GxC=he)5yUu>ua`))z zs+6x3bO4?%>8CQ;(}($#UHs!AKVHw!M9KTb;dCd+O)hf~SXy>k?lX ze%z69C$3t*Gsd$sm+^OVxn|?&u&d{zqhH0Jl>hk0nrQ*!?Y*_eb`~sj8einsR9Cs} z^RBOv#+}Q5T&a|fJ~lC{K&Fjla;v{vXLRbqH`cQjx6P4?Kei=fiOayl#UkhJ^O}Ds zUsGEo=fbGWl(#-_aiZ1&jOYC_KA%YzmLC}>F*h=8f?RLb?FZ8e4_~!=wkGrA{S14T zgsIn$nT*)qFc5lU&~N7NdgEVcfVT7`-}aP@VHC&?@nHtS=!#c0CQMIp)(vyzy47`a1?M*W zdqdlQ$7-eci%A;LWgi~Z@Kh&DI5y1ZPtjGPf5Hfcz^SI-C$Yqu%3opdbIxi+7%S*# zHfTjVv38c!0NID58h|%m_~%~p-*R94PtM7(9I@{N4GXWB_7+aKH9<UxFJud)?f8re!U|@j1qEdKS6DC>PkXz%bI> zp5_0O$yqf9+nGY=-F{wy(`tEEk2%5;_)Z z_C$<+k|CbF;y=ekR-WuBmuWxz4c>Tm0l5+|8>uzcwKjd4k(JO>)!3F!!*|YJHze~I zj*rw2MmB|i3eyZ-_oO{VR7zUchcWN4`a|_8f0;hDa+zhXWSF#X$w9Xh201yG{7zVG zcl%qh#<;m8%<{mgqS;oG1{$@E9b#`x*lHVI*?L+&j(6<*tC96Qal-M(w_esV*(Mw;;XFAm{_-4S zme9K=eQ&?KYJc!!;75O?u5(rP*ol(yQmb~V9*PUTGS@PBv6|_<=XFMY);H{07O5N> zm5@5ZME9q{#-con3c0CuG6jipNe>fyI>pwyhqy12`l_ep@#L4HcPUQ}l&ZdycksCE z?0Jf@*CzAz>^jEtEh@ep!Gd<1SwdSC4(Vj)UT}TF=uLkY6=9rnIQB|n7u)7|Z0lqX z#iNl`57}%ZM2Y7W3aMnKC%*xc$204fHNr$5+*)J3VSubB#GFK?feu zGwhjl#micvZP)Cm@~S%w@ez7)B@x@Aw_P8dBw3T|P$D3yP;Td-UDvktk43eYm)1+J z@=?2>c3w^XVBX7#3-WqK`6kDF)gABc6t_lK@onI`2XPkN7TqJSXczxJak5_HyO2{J zZ}Tjjv#ZCnW~}VD_9_~9^NXQMFq0i8yl<6*pL)t%Guex?=k*#`TkeZl>CBQF)BQ8p z>&0%@9qG67C7jAeHBYx!l)bNgt)DZRK6U$2U?Hf_@3A^f&P2$S8Edd;K4@evW-EUc z)RV|r*VW&;qC{|PsGIj9eYy7z0TD;;xy|+fCrHxjssyD?FF)FS{no8Bp%tg0d$;lW z=N4^{4vH5t-j~sIRBZBJZ)Zq0U^ zS4|a*CTJfmtOlo*btJ{An{itqf!y`YC~p8ufI7 zQ~;ahwwcKabVGw=EFwBTB>+XIAl!F`yFTk-%AhWDE#XDmDQRc(TpYq37q57{Y>C&e zGy1%gBsOdf$gsHV*_2SId1>!_r@>`Jh1s#C$3A(^j7+Irs3EIz*1Z0Hl~k$PXAkM> zE^$9|qra4^uSQJ>w2CcA3Do|kw`gvQj~%08?XMzl?w=@X8h0qeZpC^Z(}UlO!q%mn zWIW!anxOpsmyT2Z)-J5)h2{^wF!B^+FNRug>k+Za6+Ucf`MyLsusEgm{Lz(ut9)&C ze|lo!a3DUlcTBt32c5fCR~)?@l&WW~Eo4QmDcTUu`o7;(>&Mqg6(SdIgp11N*c#k7 zeAXCm+#y;!qd4`?$0iMO+d2Agy1XV28ecP38A)A|qd=}M;mU`Rw-0+b&XrBmEk>)V zgwT`Y_Z4IXmwQK;yizFBSJ~32kXpJt!*5So!T#c$#j)>IRcF7QGP-!NBxl|d5I@e) z^S$v=PZ!p+Z{LI8kDk{rEHh8QRbre-T-6CLhvfc@dvbg$V?$){ z>MixIA?@{XBVWF@>U{n3T6}F^Q|_MK5p@MMu18+(+s81!DWjd5H2TO{gDIEN;xbBu z=9G_#f9tF>@OGS(YJy(N(zHxg=wh?6S=XfU8nadl{o#-@In{W;`e|T^+uVVv-~M!Y zyguJz;eL@a6?ugz^K7PXYqjx{?$BK`Q>wQ4@RhfDiR`4=Kq+-MaJ&v_3EBw5}sVB*e_>OedE)!$}xW#do$F#QYEb?56o9GW4~y# z-6V8UFIjm;=sWQl9llG``$kr5&G#vZSfl2X(c;=$vA#h?wCUTmXzw3RR~HP#bZqUi zi%#uIj&|x=7`?vHeB6b`dePv9`f>FcU!z|(o*kzmP$cD388#4C8QR=(iQ_CkRaDv# z9>ded_IgOOAiG1{EKGn=xB*wtgS9IN#Ipj2W7DEc8+U*W^yV!)c71-b_qhA=orwaC z)vb4QGcsQl9D4f;W7O%V2vs*)Sdg?qMm6ugqmP;5rf1C7x)`v~=68(!yNA#{c zbFyy!edj2>Oi8`9#&;)c{nU4oZ}B{!zG>uzP3||&9llofb*adfmbUTtyM6RceRG-_ z>38BL_1eXaNhwI1)t1K`P(G8@{DP(2lB6JCrtbFQ=E$hsIil-FoU|%D?5k*V*K$E| zy?&^izT&LU?av>r7ZyC)opH}Ly|(%4s)q$L>OL8zA9^r4#=6N>HO1<>yrH2}Yp~w5 zrG1yA+QME=*7_RWd$wyt*4+l}duNzNlKqorCWe*&mMp@AG`DF)XmZ}Dg*6b z>h#nrCa7Jjz2P5ip3*IC%9)*M+cGB21qD$3Kh{fY7L#e`=Cg6QUiv0-Hoc?Qk5Wn( zR_xDx|3nbp0f^rn6SI7T!9@So&GX{2T78nmejeg1-fJn%-M+y4NbtG^AKzZ`?@>9M z7@?t6obG-lZ`4*%_45OoyG(Pp%kTF$S8;CLCx1z4iI1w*_vU-C<`y-JSBN>sEIYm- zQ)k8$>y6=dcYCIIre;o&aMX~LSMr>qF{gdEcyH3|1o+;J$%>LpHGey&|s4exo zezSh5uiG(yyM*Gsx(MOLLfyK5zp(#ZG)Skt%y`eed7T+8BIg_GUA7qZE!bSC|M;zzKKs=Q-6vzOIq%kZdj8P$BLO4E4~TBA zFfM=Hro3ET>&wsQ<;N^f?+%Z$kCQNql)m<{@RNh`<$F(M3hcT%BJ@5?Dw-d~6mY+h zFKT;poW03K?*XU8)ef4y#U1e-Lf`^L=V^nT8)x6kvoT^n}fmc>$!tfNH-6*EqHsdj!`U*DG*bb!rHqZ+{1?A z&L^qPtUt6@uR$%lBy*0MRPE5>*wAE-XG#+=>Sgj|g_EVsomy>R7NdF<&SD&U(J+Io zg9qfD{=&lyUK^gqjN(jV%zu~V;hy_{$nv$!&ZJ}2&jzy`QL|{N z!hVo*g{2qgFVqy9mqX)YzUChv^PTUqP97-9JfU#l#STq1-YM&Kw}%Nn;|IOTj}%rd z1Q&V)+QmH8@<*D?7P95!yf4jI@f67Q9Zt>#M@R?^&N94*MlQf+IBARkxJ8Mj)rQu3 zN+xDTDnG!oqQy%5)zin@eGI_Y;Uj^)wgmk3&#SBT%uI|7t*n(-8$p7Iz@TlK5yK|@ zr>_D697LgSka2j0vEO_?^hU6T2lf`ZLM)2C1tW)`gEcgda5S9KpSE!X_|7iyz`-Cl zX%cVhvDrgC4#|){_Cb3mcoD|9gj>qov=wL`{dIiIImLhU08l_b()(hDc;ui5AyqG%txYLCe9r<3n-@% zJhEI4_*4US)ks0~t*q4bLcM*1*j~Kqfs&;*%r7zks69Z}a8}4oTEO(EaLe61Hm(Qv zU;R8S`~$tY+cc!0TYIL|LCd=X9=KA(P4~voko{SnOqNxEn+Mniq83;5)Z;2a089ms zB9{n0Ef`A;9a5%=p9hPH7w>Qj0o5?7t^M>5K#2ofI3DMw1W=c#)G)+lFaw9zBuE9Y zyBA!6@f=~bn#l!%PaWfEm_e+-;UOJKTQ9_}f@>&6;8DP6bHu1=&{emQn+Ma1ZrTM*oGR19NIP#&wpSoE^^^Iuz~2E;6j+oT7YRN!f=G;1R14rQ z(8@b>XcLOec;DX9&B}l$33#(Go+$`YPRa9e3o!^{Q5umZC~TQ38Lxe#fqz43l6Vs| z@svcCe*lxk_GVJ#84{HOmgP4C+2#N_aT(8o-=HGGRR$|BH&6ee(FK}oNOXB<74QfU z4S9(7Km$TS)CWx=Fhxd?4}~5fF+en><2)cjhbOoJ34unIf;e2*^hlGBKNI10CANrFoq#|&_>%(1S*0~# zdia1|nYv?uhB*D=8{28fjh9=tZof&GkLU@!%~De021Un#jjqLh8ihih*R% zu5tD4Ql*rR!=f)`_M;gCaMuI2*|Ok&Zi-Rkpx;AQ+klY(Qs97H>#>g=HsYsA_dn*e7jP$J$YbS~g! z!3i6s-r(S#@l$=~5uDKD>Qd36=2?dXP!u6#IXQTFN`O3G0Mi4U#a>LX%vTdT>uBYNtobFg z4ZZ=n27p|6YjRhYhXwkx!MLb2%^d`)u6n)@#+~{57jgn3y9@_n7b!@&b{0-bfaV2T zPPk#sP2cqhj33*Z9YS4-&-JG#!`V<4cx1T<_(`9N!eFjrvY37zh~kImw&Y9|491Yu zOyHQC!PE+$7-<3JSQiH>Uj?sC1Pa2(-9iSqJVStCBQ=CP-aJC4MTyeQ5WsT+7J*yC zbVEueA6EE-Ioh&-6%HP}$L};~QqhRoIQ6Ing-{$SZ)9_liiU*73qylJMG5KwcZp^}kVNhBJ=6Ca&fI?*7hgPD?GGzcax>w0HeFdh$- zM54hY@iu+C3mp=}HGA2h+U$BQ$+97#=>7 zi*TbM^UXRMQ4X)7H{5A>lmYcf4WJ>{@G5%OgO2-e)&2nzBn)ScWzsT<&~2ogXbdad zo^sdGF?oWGkx(?y6RuQuFMd!m7#7Jz10~@KNb;uP@&t_{nP_k!urPq6(;N6O!TKCu zyFw%E;LYjHjdWQ4%_$n02G6{-FCCGL(?ez+4VHp8(F^=&m=qCiNGck>1GlL@e>y5p z*cB3r#&5u(mp0KsdE$VOP&BjwUie~cIw(aT2oj6B`p0E838KOBMoA!{sNZ|MtP(fV zL3v{akW|z+JZ`7=gXyTa2Yr%=dN#-HR3wCsNP3tjnW*z`ydymlO2Z^Qq?1V0g*Gl` z{Z=|8=|h}kqRymoX4^JeCgF;kWTI}D@vP6@PRAsiQjTMKP!IVgPuD8D*-$oyG&xsEt&qmQusr{Cc z;-XF~aoygH<^#rkeUebr0VHl&lDp}kg!fAliF!`N<(wHqgXHxiNkUPNfOuJH$I?J4 zTriSU)SVnoy%0x7W%BqIB&n!(HCzD=d+4Zeb(gPMq0Y#ZkpT+WR!pFQ(zQ52Yfa|IrE*R~vQeiSxXckLbZjb@DkK+mS%E8fV=5h&$AJe4Mcp~z(5N&T zD6j7e6bcuoQRfBtT50)V9Lnn#f@Gn$yC-9HOaZKRqT6QhTr=<76v~5Mn#Ol4EROLq zs5iAB2fc)hbCw(@Ip~FJGEeA*TwLjznK*~f1!f4PTV|YqDQZ&|4jsG@hzbR-5TdtW z@m?o`^8Mj8bI!#=UcEykdS4OWaN2uomTWBN{y&i;j z*(>tsp`5JKY?#CRqZe)PwW^}C{|%MC9-}u{@HV9)A18CK?Z7iH7@D>Vmc~$R30+v3I}fs6H0LA;JIv6COGUs4?N?O?+VKIdCzr|MD!prPAt4g dCDCv(bB|41tQ;i-ZDbGl7Y^z}PAUBB{{ZwgPP+gA diff --git a/mozilla/java/external/dom2.jar b/mozilla/java/external/dom2.jar index 5dd2e9b052501d987c7e272be09e4c0800bc9dea..96a34bcddf0ad2469280a113a9465dce12a6f02f 100644 GIT binary patch literal 87000 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 CTdKJL literal 59201 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

    kfjY_tVsW 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 diff --git a/mozilla/java/plugins/Makefile b/mozilla/java/plugins/Makefile index 03d66b1556e..6575deb5109 100644 --- a/mozilla/java/plugins/Makefile +++ b/mozilla/java/plugins/Makefile @@ -29,6 +29,8 @@ DIRS= \ src \ jni \ classes \ + test \ + examples \ $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/mozilla/java/plugins/Makefile.in b/mozilla/java/plugins/Makefile.in index dd0c315ee70..5921cb13678 100644 --- a/mozilla/java/plugins/Makefile.in +++ b/mozilla/java/plugins/Makefile.in @@ -29,6 +29,8 @@ DIRS= \ src \ jni \ classes \ + test \ + examples \ $(NULL) include $(topsrcdir)/config/rules.mk diff --git a/mozilla/java/plugins/README b/mozilla/java/plugins/README index 5c90f8241dd..0b3b2f66c88 100644 --- a/mozilla/java/plugins/README +++ b/mozilla/java/plugins/README @@ -63,14 +63,14 @@ Requirements: * current mozilla built tree -* JDK1.2 or JDK1.3 +* JDK1.3 * Perl 5 must be in your path How To Build: * make sure the environment var JDKHOME is set to your jdk installation - directory, ie export JDKHOME=/usr/local/jdk1.2 + directory, ie export JDKHOME=/usr/local/jdk1.3 * Add following directories to to your LD_LIBRARY_PATH: @@ -84,13 +84,13 @@ How to Run: * Add $MOZILLA_FILE_HOME/../classes to your CLASSPATH How to build and run test + * go to the test directory and type "gmake" + test.jar will be placed in mozilla/dist/bin/plugins directory -* Set PLUGLET environment to the directory you have test.jar - -* Run mozilla and load page test.html from test directory and if everething is ok you will see - some awt demo. +* set LD_PRELOAD to libXm.so +* Run mozilla and load page resource:///res/javadev/pluglets/test.html and if everething is ok you will see some awt demo. ======================================================================== @@ -101,3 +101,5 @@ Problems: + + diff --git a/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletInputStream.java b/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletInputStream.java index f4159b9cb70..9fbdcbd64a0 100644 --- a/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletInputStream.java +++ b/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletInputStream.java @@ -31,8 +31,11 @@ public class PlugletInputStream extends InputStream { nativeInitialize(); } public int read() throws IOException { - read(buf,0,1); - return buf[0]; + if (read(buf,0,1) < 0) { + return -1; + } else { + return buf[0] & 0xff; + } } public int read(byte b[], int off, int len) throws IOException { if (b == null) { diff --git a/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletStreamInfoImpl.java b/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletStreamInfoImpl.java index 928fae83ec5..3832457920f 100644 --- a/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletStreamInfoImpl.java +++ b/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletStreamInfoImpl.java @@ -43,7 +43,9 @@ public class PlugletStreamInfoImpl implements PlugletStreamInfo { * @param offset the start point for reading. * @param length the number of bytes to be read. */ - public native void requestRead(ByteRanges ranges); + public void requestRead(ByteRanges ranges) { + throw(new UnsupportedOperationException("PlugletStreamInfo.requestRead not implemented yet")); + } protected void finalize() { nativeFinalize(); } diff --git a/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletTagInfo2Impl.java b/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletTagInfo2Impl.java index 4b1aba6016f..cbe1d3b6f04 100644 --- a/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletTagInfo2Impl.java +++ b/mozilla/java/plugins/classes/org/mozilla/pluglet/mozilla/PlugletTagInfo2Impl.java @@ -61,12 +61,16 @@ public class PlugletTagInfo2Impl implements PlugletTagInfo2 { /* Get the complete text of the HTML tag that was * used to instantiate this pluglet */ - public native String getTagText(); + public String getTagText() { + throw(new UnsupportedOperationException("PlugletTagInfo2.getTagText not implemented yet")); + } public native String getDocumentBase(); /* Return an encoding whose name is specified in: * http://java.sun.com/products/jdk/1.1/docs/guide/intl/intl.doc.html#25303 */ - public native String getDocumentEncoding(); + public String getDocumentEncoding() { + throw(new UnsupportedOperationException("PlugletTagInfo2.getDocumentEncoding not implemented yet")); + } public native String getAlignment(); public native int getWidth(); public native int getHeight(); diff --git a/mozilla/java/plugins/config/rules.mk b/mozilla/java/plugins/config/rules.mk new file mode 100644 index 00000000000..4bb33263fc3 --- /dev/null +++ b/mozilla/java/plugins/config/rules.mk @@ -0,0 +1,75 @@ +# +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): +# +# Igor Kushnirskiy idk@eng.sun.com + + +include $(DEPTH)/config/autoconf.mk +include $(DEPTH)/config/config.mk + +ifneq ($(PACKAGE_BUILD),) + JAVADEV=$(DIST)/javadev + PLUGLETS_DIR=$(JAVADEV)/example + MISC_DIR=$(JAVADEV)/misc + HTML_DIR=$(JAVADEV)/misc + INSTALL = $(DEPTH)/config/nsinstall -m 666 +else + PLUGLETS_DIR=$(DIST)/bin/plugins + MISC_DIR=$(DIST)/bin/res/javadev/pluglets + HTML_DIR=$(DIST)/bin/res/javadev/pluglets +endif + +$(PLUGLET).jar: $(CLASSES) manifest + $(JDKHOME)/bin/jar cvfm $(PLUGLET).jar manifest *.class + +.SUFFIXES: .java .class +.java.class: + $(JDKHOME)/bin/javac -classpath .:../../classes:$(CLASSPATH):JavaDOM.jar $< +clobber: + rm -f *.class *.jar + +clean : clobber + +ifneq ($(PLUGLET),) + INSTALL_DEPS += install_pluglet +endif + +ifneq ($(HTML),) + INSTALL_DEPS += install_html +endif + +ifneq ($(MISC),) + INSTALL_DEPS += install_misc +endif + + +install_pluglet: $(PLUGLET).jar + $(INSTALL) $(PLUGLET).jar $(PLUGLETS_DIR) + +install_html : + $(INSTALL) $(HTML) $(HTML_DIR) + +install_misc : + $(INSTALL) $(MISC) $(MISC_DIR) + +install: $(INSTALL_DEPS) + +export: install + diff --git a/mozilla/java/plugins/examples/Makefile.in b/mozilla/java/plugins/examples/Makefile.in new file mode 100644 index 00000000000..4c009939fc2 --- /dev/null +++ b/mozilla/java/plugins/examples/Makefile.in @@ -0,0 +1,35 @@ +#!gmake +# 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): + +DEPTH = ../../.. +topsrcdir = @top_srcdir@ +VPATH = @srcdir@ +srcdir = @srcdir@ + +include $(DEPTH)/config/autoconf.mk + +DIRS= \ + zip \ + rtf \ + dom \ + demo \ + $(NULL) + +include $(topsrcdir)/config/rules.mk diff --git a/mozilla/java/plugins/examples/MediaPlayer/Makefile b/mozilla/java/plugins/examples/MediaPlayer/Makefile deleted file mode 100644 index 0d869166c92..00000000000 --- a/mozilla/java/plugins/examples/MediaPlayer/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# -# The contents of this file are subject to the Mozilla 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/MPL/ -# -# 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 Sun Microsystems, -# Inc. Portions created by Sun are -# Copyright (C) 1999 Sun Microsystems, Inc. All -# Rights Reserved. -# -# Contributor(s): - - -JMPlayer.jar: JMPlayer.class manifest - $(JDKHOME)/bin/jar cvfm JMPlayer.jar manifest *.class - -.SUFFIXES: .java .class -.java.class: - $(JDKHOME)/bin/javac -classpath ../classes:$(CLASSPATH) $< -clobber: - rm *.class *.jar -install: - cp *.jar $(PLUGLET) diff --git a/mozilla/java/plugins/examples/rtf/Makefile b/mozilla/java/plugins/examples/MediaPlayer/Makefile.in similarity index 75% rename from mozilla/java/plugins/examples/rtf/Makefile rename to mozilla/java/plugins/examples/MediaPlayer/Makefile.in index a427b122c77..6b9aa9f5a5e 100644 --- a/mozilla/java/plugins/examples/rtf/Makefile +++ b/mozilla/java/plugins/examples/MediaPlayer/Makefile.in @@ -18,14 +18,9 @@ # # Contributor(s): +DEPTH= ../../../.. -JView.jar: JView.class manifest - $(JDKHOME)/bin/jar cvfm JView.jar manifest *.class +PLUGLET=JMPlayer +CLASSES=JMPlayer.class -.SUFFIXES: .java .class -.java.class: - $(JDKHOME)/bin/javac -classpath ../classes:$(CLASSPATH) $< -clobber: - rm *.class *.jar -install: - cp *.jar $(PLUGLET) +include ../../config/rules.mk diff --git a/mozilla/java/plugins/examples/zip/Makefile b/mozilla/java/plugins/examples/demo/Makefile.in similarity index 74% rename from mozilla/java/plugins/examples/zip/Makefile rename to mozilla/java/plugins/examples/demo/Makefile.in index 6ccd3458bd2..963923583ad 100644 --- a/mozilla/java/plugins/examples/zip/Makefile +++ b/mozilla/java/plugins/examples/demo/Makefile.in @@ -18,14 +18,11 @@ # # Contributor(s): +DEPTH= ../../../.. -ZipView.jar: ZipView.class manifest - $(JDKHOME)/bin/jar cvfm ZipView.jar manifest *.class +HTML=index.html -.SUFFIXES: .java .class -.java.class: - $(JDKHOME)/bin/javac -classpath ../classes:$(CLASSPATH) $< -clobber: - rm *.class *.jar -install: - cp *.jar $(PLUGLET) +include ../../config/rules.mk + +export: + cp pluglet_run.sh $(DEPTH)/bin diff --git a/mozilla/java/plugins/examples/demo/index.html b/mozilla/java/plugins/examples/demo/index.html new file mode 100644 index 00000000000..c5ac7ed1a06 --- /dev/null +++ b/mozilla/java/plugins/examples/demo/index.html @@ -0,0 +1,12 @@ + + +Pluglets demo + + + + + \ No newline at end of file diff --git a/mozilla/java/plugins/examples/demo/pluglet_run.sh b/mozilla/java/plugins/examples/demo/pluglet_run.sh new file mode 100755 index 00000000000..4413220aecb --- /dev/null +++ b/mozilla/java/plugins/examples/demo/pluglet_run.sh @@ -0,0 +1,4 @@ +#!/bin/sh +LD_PRELOAD=libXm.so +export LD_PRELOAD +./mozilla resource:///res/javadev/pluglets/index.html \ No newline at end of file diff --git a/mozilla/java/plugins/examples/dom/Makefile b/mozilla/java/plugins/examples/dom/Makefile deleted file mode 100644 index d11df9f79fe..00000000000 --- a/mozilla/java/plugins/examples/dom/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -# -# The contents of this file are subject to the Mozilla 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/MPL/ -# -# 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 Sun Microsystems, -# Inc. Portions created by Sun are -# Copyright (C) 1999 Sun Microsystems, Inc. All -# Rights Reserved. -# -# Contributor(s): - - -DOMViewer.jar: DOMViewerFactory.class DOMAccessPanel.class DOMTreeDumper.class manifest - $(JDKHOME)/bin/jar cvfm DOMViewer.jar manifest *.class - -.SUFFIXES: .java .class -.java.class: - $(JDKHOME)/bin/javac -classpath .:../../classes:$(CLASSPATH):JavaDOM.jar $< -clobber: - rm *.class *.jar -install: - cp *.jar $(PLUGLET) diff --git a/mozilla/java/plugins/test/Makefile b/mozilla/java/plugins/examples/dom/Makefile.in similarity index 78% rename from mozilla/java/plugins/test/Makefile rename to mozilla/java/plugins/examples/dom/Makefile.in index 23b35f07529..f6e493a2541 100644 --- a/mozilla/java/plugins/test/Makefile +++ b/mozilla/java/plugins/examples/dom/Makefile.in @@ -18,14 +18,13 @@ # # Contributor(s): +DEPTH= ../../../.. -test.jar: test.class manifest - $(JDKHOME)/bin/jar cvfm test.jar manifest *.class +PLUGLET=DOMViewer +CLASSES=DOMViewerFactory.class DOMAccessPanel.class DOMTreeDumper.class +HTML=dom.html + +include ../../config/rules.mk -.SUFFIXES: .java .class -.java.class: - $(JDKHOME)/bin/javac -classpath ../classes $< -clobber: - rm *.class *.jar diff --git a/mozilla/java/plugins/examples/dom/test.html b/mozilla/java/plugins/examples/dom/dom.html similarity index 100% rename from mozilla/java/plugins/examples/dom/test.html rename to mozilla/java/plugins/examples/dom/dom.html diff --git a/mozilla/java/plugins/examples/pdf/Makefile b/mozilla/java/plugins/examples/pdf/Makefile.in similarity index 74% rename from mozilla/java/plugins/examples/pdf/Makefile rename to mozilla/java/plugins/examples/pdf/Makefile.in index 79deb362b0d..411b4d98135 100644 --- a/mozilla/java/plugins/examples/pdf/Makefile +++ b/mozilla/java/plugins/examples/pdf/Makefile.in @@ -18,14 +18,9 @@ # # Contributor(s): +DEPTH= ../../../.. -PDFView.jar: PDFView.class manifest - $(JDKHOME)/bin/jar cvfm PDFView.jar manifest *.class +PLUGLET=PDFView.jar +CLASSES=PDFView.class -.SUFFIXES: .java .class -.java.class: - $(JDKHOME)/bin/javac -classpath ../classes:$(CLASSPATH) $< -clobber: - rm *.class *.jar -install: - cp *.jar $(PLUGLET) +include ../../config/rules.mk diff --git a/mozilla/java/plugins/examples/rtf/Makefile.in b/mozilla/java/plugins/examples/rtf/Makefile.in new file mode 100644 index 00000000000..8f1db51bd45 --- /dev/null +++ b/mozilla/java/plugins/examples/rtf/Makefile.in @@ -0,0 +1,26 @@ +# +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + +DEPTH= ../../../.. + +PLUGLET=JView +CLASSES=JView.class + +include ../../config/rules.mk diff --git a/mozilla/java/plugins/examples/rtf/view.html b/mozilla/java/plugins/examples/rtf/rtf.html similarity index 100% rename from mozilla/java/plugins/examples/rtf/view.html rename to mozilla/java/plugins/examples/rtf/rtf.html diff --git a/mozilla/java/plugins/examples/zip/Makefile.in b/mozilla/java/plugins/examples/zip/Makefile.in new file mode 100644 index 00000000000..f4094ff1986 --- /dev/null +++ b/mozilla/java/plugins/examples/zip/Makefile.in @@ -0,0 +1,34 @@ +# +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + +DEPTH= ../../../.. + +PLUGLET=ZipView +CLASSES=ZipView.class + +MISC=ZipView.jar +HTML=zip.html + +include ../../config/rules.mk + + + + + diff --git a/mozilla/java/plugins/jni/org_mozilla_pluglet_mozilla_PlugletInputStream.cpp b/mozilla/java/plugins/jni/org_mozilla_pluglet_mozilla_PlugletInputStream.cpp index 445b221800f..261e34c5dc9 100644 --- a/mozilla/java/plugins/jni/org_mozilla_pluglet_mozilla_PlugletInputStream.cpp +++ b/mozilla/java/plugins/jni/org_mozilla_pluglet_mozilla_PlugletInputStream.cpp @@ -67,7 +67,7 @@ JNIEXPORT void JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_close */ JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_nativeRead (JNIEnv *env, jobject jthis, jbyteArray b, jint off, jint len) { - PRUint32 retval = 0; + jint retval = -1; nsIInputStream * input = (nsIInputStream*)env->GetLongField(jthis, peerFID); if (input) { PR_LOG(PlugletLog::log, PR_LOG_DEBUG, @@ -91,17 +91,19 @@ JNIEXPORT jint JNICALL Java_org_mozilla_pluglet_mozilla_PlugletInputStream_nativ //nb throw OutOfMemory } nsresult res; - res = input->Read((char*)bufElems,(PRUint32)len,&retval); + PRUint32 actualLen; + res = input->Read((char*)bufElems,(PRUint32)len,&actualLen); if (NS_FAILED(res)) { free(bufElems); return retval; } + retval = actualLen; PR_LOG(PlugletLog::log, PR_LOG_DEBUG, ("PlugletInputStream.nativeRead: %i bytes read\n", retval)); env->SetByteArrayRegion(b,off,retval,bufElems); free(bufElems); - return retval; + return (len > 0 && actualLen <= 0) ? -1 : retval; } /* diff --git a/mozilla/java/plugins/src/PlugletEngine.cpp b/mozilla/java/plugins/src/PlugletEngine.cpp index 001aa23b51e..b18ead59dcd 100644 --- a/mozilla/java/plugins/src/PlugletEngine.cpp +++ b/mozilla/java/plugins/src/PlugletEngine.cpp @@ -183,13 +183,15 @@ void PlugletEngine::StartJVM() { ("PlugletEngine::StartJVM we got already started JVM\n")); return; } - char classpath[1024]; + char classpath[1024]=""; JavaVMInitArgs vm_args; JavaVMOption options[2]; - - sprintf(classpath, "-Djava.class.path=%s",PR_GetEnv("CLASSPATH")); - PR_LOG(PlugletLog::log, PR_LOG_DEBUG, - ("PlugletEngine::StartJVM about to create JVM classpath=%s\n",classpath)); + char * classpathEnv = PR_GetEnv("CLASSPATH"); + if (classpath != NULL) { + sprintf(classpath, "-Djava.class.path=%s",classpathEnv); + PR_LOG(PlugletLog::log, PR_LOG_DEBUG, + ("PlugletEngine::StartJVM about to create JVM classpath=%s\n",classpath)); + } options[0].optionString = classpath; options[1].optionString=""; //-Djava.compiler=NONE"; vm_args.version = 0x00010002; diff --git a/mozilla/java/plugins/src/PlugletFactory.cpp b/mozilla/java/plugins/src/PlugletFactory.cpp index 957ed75069d..8a763fe27ab 100644 --- a/mozilla/java/plugins/src/PlugletFactory.cpp +++ b/mozilla/java/plugins/src/PlugletFactory.cpp @@ -179,7 +179,7 @@ int PlugletFactory::Compare(const char *mimeType) { char *p1 = mimeDescription; char *p2 = strchr(p1,';'); while ( p1 != NULL && p1 < terminator ) { - size_t n = sizeof(char) * ( ( (p2 == NULL) ? terminator : p2) - p1 ); + size_t n = sizeof(char) * ( ( (p2 == NULL || p2 > terminator) ? terminator : p2) - p1 ); if (PL_strncasecmp(p1,mimeType,n) == 0) { return 1; } diff --git a/mozilla/java/plugins/src/PlugletViewMotif.cpp b/mozilla/java/plugins/src/PlugletViewMotif.cpp index 81fd823ec2a..b2c65a4ebf9 100644 --- a/mozilla/java/plugins/src/PlugletViewMotif.cpp +++ b/mozilla/java/plugins/src/PlugletViewMotif.cpp @@ -28,12 +28,6 @@ #include #include -#include -#include - -#include -#include - #include "PlugletViewMotif.h" #include "PlugletEngine.h" @@ -67,6 +61,10 @@ static Colormap awt_cmap; static Visual * awt_visual; static int awt_num_colors; +static void (*AwtLock)(JNIEnv *); +static void (*AwtUnLock)(JNIEnv *); +static void (*AwtNoFlushUnLock)(JNIEnv *); + void PlugletViewMotif::Initialize() { PR_LOG(PlugletLog::log, PR_LOG_DEBUG, ("PlugletViewMotif.Initialize\n")); @@ -83,6 +81,7 @@ void PlugletViewMotif::Initialize() { return; } getAwtData(&awt_depth, &awt_cmap, &awt_visual, &awt_num_colors, NULL); + getAwtLockFunctions(&AwtLock, &AwtUnLock, &AwtNoFlushUnLock,NULL); } PRBool PlugletViewMotif::SetWindow(nsPluginWindow* win) { @@ -100,7 +99,7 @@ PRBool PlugletViewMotif::SetWindow(nsPluginWindow* win) { || !win->window) { if (win && !win->window) { PR_LOG(PlugletLog::log, PR_LOG_DEBUG, - ("PlugletViewMotif.SetWindow win->window = NULL. We have a bug in plugin module. this=%p\n",this)); + ("PlugletViewMotif.SetWindow win->window = NULL. We have a bug in plugin module. this=%p\n",this)); } if (frame) { env->DeleteGlobalRef(frame); @@ -112,30 +111,16 @@ PRBool PlugletViewMotif::SetWindow(nsPluginWindow* win) { } return PR_FALSE; } - GdkSuperWin * superWin = (GdkSuperWin *) win->window; - Window parentWindowID; - Window rootWindowID; - Window * childrenWindowIDs; - unsigned int numberOfChildren; - int containerWindowID = GDK_WINDOW_XWINDOW(superWin->shell_window); - - Status status = XQueryTree(GDK_DISPLAY(), containerWindowID, - &rootWindowID, &parentWindowID, - &childrenWindowIDs, & numberOfChildren); - if (numberOfChildren >= 1) { - containerWindowID = childrenWindowIDs[0]; - } - if (WindowID == containerWindowID) { - return PR_FALSE; - } - - - WindowID = containerWindowID; - void (*AwtLock)(JNIEnv *); - void (*AwtUnLock)(JNIEnv *); - void (*AwtNoFlushUnLock)(JNIEnv *); - getAwtLockFunctions(&AwtLock, &AwtUnLock, &AwtNoFlushUnLock,NULL); AwtLock(env); + int containerWindowID = win->window; + printf("containerWindowID=%d WindowID=%d\n",containerWindowID, WindowID); +#if 0 + if (WindowID == containerWindowID) { + printf("about to return false\n"); + return PR_FALSE; + } +#endif + WindowID = containerWindowID; Display *awt_display = getAwtDisplay(); XSync(awt_display, FALSE); Arg args[40]; diff --git a/mozilla/java/plugins/test/Makefile.in b/mozilla/java/plugins/test/Makefile.in new file mode 100644 index 00000000000..14f3948184a --- /dev/null +++ b/mozilla/java/plugins/test/Makefile.in @@ -0,0 +1,26 @@ +# +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + +DEPTH= ../../.. + +PLUGLET=test +CLASSES=test.class +HTML=test.html +include ../config/rules.mk diff --git a/mozilla/java/webclient/classes_spec/Makefile.in b/mozilla/java/webclient/classes_spec/Makefile.in index 4ba6899a795..5d772039fba 100644 --- a/mozilla/java/webclient/classes_spec/Makefile.in +++ b/mozilla/java/webclient/classes_spec/Makefile.in @@ -76,9 +76,12 @@ ifneq ($(PACKAGE_BUILD),) if test ! -d $(PACKAGE_LIB) ; then mkdir $(PACKAGE_LIB) ; else true ; fi ; if test ! -d $(PACKAGE_LIB)/blackwood.$(VERSION_NUMBER).jar ; then rm -f $(PACKAGE_LIB)/blackwood.$(VERSION_NUMBER).jar ; else true ; fi ; if test ! -d $(PACKAGE_LIB)/blackwood.jar ; then rm -f $(PACKAGE_LIB)/blackwood.jar ; else true ; fi ; - jar -xvf $(topsrcdir)/java/external/dom2.jar $(topsrcdir)/dist/classes/. - jar -cvf $(PACKAGE_LIB)/blackwood.$(VERSION_NUMBER).jar $(topsrcdir)/dist/classes/org - ln -s blackwood.$(VERSION_NUMBER).jar $(PACKAGE_LIB)/blackwood.jar + cd $(topsrcdir)/dist/classes ; \ + jar -xvf ../../java/external/dom2.jar ; \ + jar -cvfM0 blackwood.$(VERSION_NUMBER).jar org ; \ + cp blackwood.$(VERSION_NUMBER).jar ../javadev/lib/blackwood.$(VERSION_NUMBER).jar ; + cd $(topsrcdir)/dist/javadev/lib ; \ + ln -s blackwood.$(VERSION_NUMBER).jar $(PACKAGE_LIB)/blackwood.jar ; endif doc:: diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/CurrentPage.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/CurrentPage.java index f8bd664be1b..703e1bc3b76 100644 --- a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/CurrentPage.java +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/CurrentPage.java @@ -20,6 +20,62 @@ * Contributor(s): Ed Burns */ +/* + + * W3C® IPR SOFTWARE NOTICE + + * Copyright © 1994-2000 World Wide Web Consortium, (Massachusetts + * Institute of Technology, Institut National de Recherche en + * Informatique et en Automatique, Keio University). All Rights + * Reserved. http://www.w3.org/Consortium/Legal/ + + * This W3C work (including software, documents, or other related items) is + * being provided by the copyright holders under the following + * license. By obtaining, using and/or copying this work, you (the + * licensee) agree that you have read, understood, and will comply with + * the following terms and conditions: + + * Permission to use, copy, and modify this software and its documentation, + * with or without modification, for any purpose and without fee or + * royalty is hereby granted, provided that you include the following on + * ALL copies of the software and documentation or portions thereof, + * including modifications, that you make: + + * The full text of this NOTICE in a location viewable to users of the + * redistributed or derivative work. + + * Any pre-existing intellectual property disclaimers, notices, or terms + * and conditions. If none exist, a short notice of the following form + * (hypertext is preferred, text is permitted) should be used within the + * body of any redistributed or derivative code: "Copyright © + * [$date-of-software] World Wide Web Consortium, (Massachusetts + * Institute of Technology, Institut National de Recherche en + * Informatique et en Automatique, Keio University). All Rights + * Reserved. http://www.w3.org/Consortium/Legal/" + + * Notice of any changes or modifications to the W3C files, including + * the date changes were made. (We recommend you provide URIs to the + * location from which the code is derived.) + + * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT + * HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR + * FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR + * DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, + * TRADEMARKS OR OTHER RIGHTS. + + * COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE + * SOFTWARE OR DOCUMENTATION. + + * The name and trademarks of copyright holders may NOT be used in + * advertising or publicity pertaining to the software without specific, + * written prior permission. Title to copyright in this software and any + * associated documentation will at all times remain with copyright + * holders. + + */ + package org.mozilla.webclient; import java.util.Properties; diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java index 75cdb3ea5ea..c585f21fa0f 100644 --- a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/test/EMWindow.java @@ -54,7 +54,7 @@ import org.w3c.dom.Document; * This is a test application for using the BrowserControl. * - * @version $Id: EMWindow.java,v 1.21 2000-09-20 21:53:01 edburns%acm.org Exp $ + * @version $Id: EMWindow.java,v 1.22 2000-11-02 23:33:10 edburns%acm.org Exp $ * * @see org.mozilla.webclient.BrowserControlFactory @@ -113,34 +113,34 @@ public class EMWindow extends Frame implements DialogClient, ActionListener, Doc // Create the Menu Bar menuBar = new MenuBar(); this.setMenuBar(menuBar); - Menu fileMenu = new Menu("File"); + // Menu fileMenu = new Menu("File"); Menu viewMenu = new Menu("View"); - Menu searchMenu = new Menu("Search"); + // Menu searchMenu = new Menu("Search"); Menu editMenu = new Menu("Edit"); - MenuItem newItem = new MenuItem("New Window"); - MenuItem closeItem = new MenuItem("Close"); - MenuItem findItem = new MenuItem("Find"); - MenuItem findNextItem = new MenuItem("Find Next"); + // MenuItem newItem = new MenuItem("New Window"); + // MenuItem closeItem = new MenuItem("Close"); + // MenuItem findItem = new MenuItem("Find"); + // MenuItem findNextItem = new MenuItem("Find Next"); MenuItem sourceItem = new MenuItem("View Page Source"); MenuItem pageInfoItem = new MenuItem("View Page Info"); MenuItem selectAllItem = new MenuItem("Select All"); MenuItem copyItem = new MenuItem("Copy"); - menuBar.add(fileMenu); + // menuBar.add(fileMenu); menuBar.add(viewMenu); - menuBar.add(searchMenu); + // menuBar.add(searchMenu); menuBar.add(editMenu); - fileMenu.add(newItem); - newItem.addActionListener(this); - fileMenu.add(closeItem); - closeItem.addActionListener(this); - searchMenu.add(findItem); - findItem.addActionListener(this); - searchMenu.add(findNextItem); - findNextItem.addActionListener(this); + // fileMenu.add(newItem); + // newItem.addActionListener(this); + // fileMenu.add(closeItem); + // closeItem.addActionListener(this); + // searchMenu.add(findItem); + // findItem.addActionListener(this); + // searchMenu.add(findNextItem); + // findNextItem.addActionListener(this); viewMenu.add(sourceItem); sourceItem.addActionListener(this); - viewMenu.add(pageInfoItem); - pageInfoItem.addActionListener(this); + // viewMenu.add(pageInfoItem); + // pageInfoItem.addActionListener(this); editMenu.add(selectAllItem); selectAllItem.addActionListener(this); editMenu.add(copyItem); @@ -165,8 +165,8 @@ public class EMWindow extends Frame implements DialogClient, ActionListener, Doc stopButton.setEnabled(false); refreshButton = makeItem(buttonsPanel, "Refresh", 3, 0, 1, 1, 0.0, 0.0); refreshButton.setEnabled(false); - makeItem(buttonsPanel, "Bookmarks", 4, 0, 1, 1, 0.0, 0.0); - makeItem(buttonsPanel, "DOMViewer", 5, 0, 1, 1, 0.0, 0.0); + // makeItem(buttonsPanel, "Bookmarks", 4, 0, 1, 1, 0.0, 0.0); + // makeItem(buttonsPanel, "DOMViewer", 5, 0, 1, 1, 0.0, 0.0); // Create the control panel controlPanel = new Panel(); @@ -312,7 +312,7 @@ public void delete() domViewer.setVisible(false); domViewer.dispose(); domViewer = null; - } + } BrowserControlFactory.deleteBrowserControl(browserControl); browserControl = null; this.hide(); diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/CurrentPageImpl.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/CurrentPageImpl.java index 3719ee026d3..c34bb73f32e 100644 --- a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/CurrentPageImpl.java +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/CurrentPageImpl.java @@ -103,18 +103,23 @@ public void findInPage(String stringToFind, boolean forward, boolean matchCase) ParameterCheck.nonNull(stringToFind); myFactory.throwExceptionIfNotInitialized(); - synchronized(myBrowserControl) { + /* synchronized(myBrowserControl) { nativeFindInPage(nativeWebShell, stringToFind, forward, matchCase); - } + }*/ + + throw new UnimplementedException("\nUnimplementedException -----\n API Function CurrentPage::findInPage is not implemented in Webclient release 0.9\n"); + } public void findNextInPage(boolean forward) { myFactory.throwExceptionIfNotInitialized(); - synchronized(myBrowserControl) { + /* synchronized(myBrowserControl) { nativeFindNextInPage(nativeWebShell, forward); - } + }*/ + + throw new UnimplementedException("\nUnimplementedException -----\n API Function CurrentPage::findNextInPage is not implemented in Webclient release 0.9\n"); } public String getCurrentURL() @@ -211,9 +216,11 @@ public void resetFind() { myFactory.throwExceptionIfNotInitialized(); - synchronized(myBrowserControl) { + /* synchronized(myBrowserControl) { nativeResetFind(nativeWebShell); - } + }*/ + + throw new UnimplementedException("\nUnimplementedException -----\n API Function CurrentPage::resetFind is not implemented in Webclient release 0.9\n"); } public void selectAll() @@ -261,7 +268,7 @@ public static void main(String [] args) Assert.setEnabled(true); Log.setApplicationName("CurrentPageImpl"); Log.setApplicationVersion("0.0"); - Log.setApplicationVersionDate("$Id: CurrentPageImpl.java,v 1.8 2000-07-22 02:48:25 edburns%acm.org Exp $"); + Log.setApplicationVersionDate("$Id: CurrentPageImpl.java,v 1.9 2000-11-02 23:33:12 edburns%acm.org Exp $"); } diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/ImplObjectNative.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/ImplObjectNative.java index cf21747c52f..72159164707 100644 --- a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/ImplObjectNative.java +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/ImplObjectNative.java @@ -146,7 +146,7 @@ WindowControlImpl.java public void delete() { nativeWebShell = -1; - System.out.println("debug: edburns: ImplObjectNative.delete()"); + System.out.println("ImplObjectNative.delete()"); super.delete(); } diff --git a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/WrapperFactoryImpl.java b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/WrapperFactoryImpl.java index eab8a50dafb..88e689f1cd4 100644 --- a/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/WrapperFactoryImpl.java +++ b/mozilla/java/webclient/classes_spec/org/mozilla/webclient/wrapper_native/WrapperFactoryImpl.java @@ -114,7 +114,7 @@ public Object newImpl(String interfaceName, interfaceName + ": not implemented."); } - System.out.println("debug: edburns: native library does implement " + + System.out.println("native library does implement " + interfaceName); if (BrowserControl.WINDOW_CONTROL_NAME == interfaceName) { result = new WindowControlImpl(this, browserControl); @@ -222,7 +222,7 @@ public static void main(String [] args) WrapperFactory me = new WrapperFactoryImpl(); Log.setApplicationName("WrapperFactoryImpl"); Log.setApplicationVersion("0.0"); - Log.setApplicationVersionDate("$Id: WrapperFactoryImpl.java,v 1.2 2000-03-07 22:10:08 ashuk%eng.sun.com Exp $"); + Log.setApplicationVersionDate("$Id: WrapperFactoryImpl.java,v 1.3 2000-11-02 23:33:13 edburns%acm.org Exp $"); } diff --git a/mozilla/java/webclient/src_moz/Makefile.in b/mozilla/java/webclient/src_moz/Makefile.in index 4d5d3c075ab..154c13b5a6b 100644 --- a/mozilla/java/webclient/src_moz/Makefile.in +++ b/mozilla/java/webclient/src_moz/Makefile.in @@ -1,166 +1,160 @@ -# The contents of this file are subject to the Mozilla 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/MPL/ -# -# 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 Sun Microsystems, -# Inc. Portions created by Sun are -# Copyright (C) 1999 Sun Microsystems, Inc. All -# Rights Reserved. -# -# Contributor(s): - -DEPTH = ../../.. -topsrcdir = $(DEPTH) -srcdir = $(topsrcdir)/java/webclient/src_moz -VPATH = $(topsrcdir)/java/webclient/src_moz - -# We don't need to build the stubs in the BAL case. -ifeq ($(BAL_INTERFACE),) -DIRS = motif -endif - -JAVAHOME = $(JDKHOME) - -include $(DEPTH)/config/autoconf.mk - -ifneq ($(BAL_INTERFACE),) -LIBRARY_NAME = webclient_bal -else -LIBRARY_NAME = webclient -endif - -CPPSRCS = \ - ns_util.cpp \ - ns_util_export.cpp \ - dom_util.cpp \ - nsActions.cpp \ - rdf_util.cpp \ - BookmarksImpl.cpp \ - CBrowserContainer.cpp \ - CurrentPageImpl.cpp \ - HistoryImpl.cpp \ - ISupportsPeer.cpp \ - NativeEventThread.cpp \ - NavigationImpl.cpp \ - RDFEnumeration.cpp \ - RDFTreeNode.cpp \ - WindowControlImpl.cpp \ - WrapperFactoryImpl.cpp \ - nsSetupRegistry.cpp \ - motif/MotifBrowserControlCanvas.cpp \ - motif/gtkmozilla.cpp \ - $(NULL) - -include $(topsrcdir)/config/rules.mk - -ifdef MOZ_ENABLE_GTK -ifndef MOZ_MONOLITHIC_TOOLKIT -CXXFLAGS += $(MOZ_GTK_CFLAGS) -CFLAGS += $(MOZ_GTK_CFLAGS) -EXTRA_DSO_LDOPTS += -lgtkxtbin -lgtksuperwin -L/usr/X11R6/lib -lXt -else -CXXFLAGS += $(TK_CFLAGS) -CFLAGS += $(TK_CFLAGS) -EXTRA_DSO_LDOPTS += -lgtkxtbin -lgtksuperwin -L/usr/X11R6/lib -lXt -endif -endif - -ifneq ($(BAL_INTERFACE),) -CXXFLAGS += -DBAL_INTERFACE -endif - -EXTRA_DSO_LDOPTS += -L$(DEPTH)/dist/lib -L$(DEPTH)/dist/bin/components -lwidget_gtk - -ifneq ($(BAL_INTERFACE),) -EXTRA_DSO_LDOPTS += -lwc_share_bal -else -EXTRA_DSO_LDOPTS += -lwc_share -endif - - -ifeq ($(OS_ARCH),Linux) -INCLUDES := -I$(JDKHOME)/include -I$(JDKHOME)/include/linux $(INCLUDES) \ - -I$(DEPTH)/widget/src/gtk -I../src_share -else -INCLUDES := -I$(JDKHOME)/include -I$(JDKHOME)/include/solaris $(INCLUDES) \ - -I$(DEPTH)/widget/src/gtk -I../src_share -endif - - -ifneq ($(PACKAGE_BUILD),) -ifneq ($(VERSION_NUMBER),) -VERSION_NUMBER=0.9 -endif # VERSION_NUMBER -PACKAGE_DIR=$(topsrcdir)/dist/javadev -PACKAGE_LIB=$(PACKAGE_DIR)/lib -PACKAGE_EXAMPLE=$(PACKAGE_DIR)/example -endif # PACKAGE_BUILD - -export:: linkSetupRegistry - -linkSetupRegistry: - rm -f nsSetupRegistry.cpp - ln -s $(DEPTH)/xpfe/bootstrap/nsSetupRegistry.cpp . - -clobber_all:: - rm -f nsSetupRegistry.cpp - -buildRunems: -ifeq ($(BAL_INTERFACE),) -ifeq ($(PACKAGE_BUILD),) - @echo +++ Creating runem. Use this to run the test browser. - rm -f runem - @echo #!/bin/sh > runem - @echo $(PERL) ../src_share/runem.pl $(DIST)/bin org.mozilla.webclient.test.EmbeddedMozilla $(DEPTH) "$$"1 "$$"2 "$$"3 "$$"4 "$$"4 "$$"6 >> runem - chmod 755 runem -else - @echo +++ Commercial Packaging - Creating runem. Used to run test - rm -f runem - @echo #!/bin/sh > runem - @echo $(PERL) runem.pl ../../ org.mozilla.test.EmbeddedMozilla "$$"1 "$$"2 "$$"3 "$$"4 "$$"4 "$$"6 >> runem - chmod 755 runem - if test ! -d $(PACKAGE_EXAMPLE) ; then mkdir $(PACKAGE_EXAMPLE) ; else true ; fi ; - cp $(topsrcdir)/dist/bin/libwebclientstub.so $(PACKAGE_LIB)/libwebclientstub.so.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/bin/libwebclient.so $(PACKAGE_LIB)/libwebclient.so.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/lib/libwc_share.a $(PACKAGE_LIB)/libwc_share.a.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/bin/libjavadomjni.so $(PACKAGE_LIB)/libjavadomjni.so.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/bin/libplugletjni.so $(PACKAGE_LIB)/libplugletjni.so.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/bin/components/libpluglet.so $(PACKAGE_LIB)/libpluglet.so.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/bin/components/libjavadom.so $(PACKAGE_LIB)/libjavadom.so.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/bin/components/libpluglet.so $(topsrcdir)/dist/bin/components/libpluglet.so.$(VERSION_NUMBER) - cp $(topsrcdir)/dist/bin/components/libjavadom.so $(topsrcdir)/dist/bin/components/libjavadom.so.$(VERSION_NUMBER) - rm -r $(topsrcdir)/dist/bin/components/libpluglet.so - rm -r $(topsrcdir)/dist/bin/components/libjavadom.so - chmod 555 $(PACKAGE_LIB)/libwebclientstub.so.$(VERSION_NUMBER) - chmod 555 $(PACKAGE_LIB)/libwebclient.so.$(VERSION_NUMBER) - chmod 555 $(PACKAGE_LIB)/libwc_share.a.$(VERSION_NUMBER) - chmod 555 $(PACKAGE_LIB)/libjavadomjni.so.$(VERSION_NUMBER) - chmod 555 $(PACKAGE_LIB)/libplugletjni.so.$(VERSION_NUMBER) - chmod 555 $(PACKAGE_LIB)/libpluglet.so.$(VERSION_NUMBER) - chmod 555 $(PACKAGE_LIB)/libjavadom.so.$(VERSION_NUMBER) - chmod 555 $(topsrcdir)/dist/bin/components/libpluglet.so.$(VERSION_NUMBER) - chmod 555 $(topsrcdir)/dist/bin/components/libjavadom.so.$(VERSION_NUMBER) - if test ! -d $(PACKAGE_LIB)/libwc_share.a ; then ln -s libwc_share.a.$(VERSION_NUMBER) $(PACKAGE_LIB)/libwc_share.a ; else true ; fi ; - if test ! -d $(PACKAGE_LIB)/libwebclientstub.so ; then ln -s libwebclientstub.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libwebclientstub.so ; else true ; fi ; - if test ! -d $(PACKAGE_LIB)/libwebclient.so ; then ln -s libwebclient.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libwebclient.so ; else true ; fi ; - if test ! -d $(PACKAGE_LIB)/libjavadomjni.so ; then ln -s libjavadomjni.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libjavadomjni.so ; else true ; fi ; - if test ! -d $(PACKAGE_LIB)/libplugletjni.so ; then ln -s libplugletjni.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libplugletjni.so ; else true ; fi ; - if test ! -d $(PACKAGE_LIB)/libpluglet.so ; then ln -s libpluglet.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libpluglet.so ; else true ; fi ; - if test ! -d $(PACKAGE_LIB)/libjavadom.so ; then ln -s libjavadom.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libjavadom.so ; else true ; fi ; - if test ! -d $(topsrcdir)/dist/bin/components/libpluglet.so ; then ln -s libpluglet.so.$(VERSION_NUMBER) $(topsrcdir)/dist/bin/components/libpluglet.so ; else true ; fi ; - if test ! -d $(topsrcdir)/dist/bin/components/libjavadom.so ; then ln -s libjavadom.so.$(VERSION_NUMBER) $(topsrcdir)/dist/bin/components/libjavadom.so ; else true ; fi ; - if test ! -d $(PACKAGE_EXAMPLE)/runem ; then cp $(topsrcdir)/java/webclient/src_moz/runem $(PACKAGE_EXAMPLE)/runem ; else true ; fi ; - if test ! -d $(PACKAGE_EXAMPLE)/runem.pl ; then cp $(topsrcdir)/java/webclient/src_share/runem_commercial.pl $(PACKAGE_EXAMPLE)/runem.pl ; else true ; fi ; - chmod 755 $(PACKAGE_EXAMPLE)/runem.pl -endif # PACKAGE_BUILD -endif # BAL_INTERFACE - -install:: buildRunems +# The contents of this file are subject to the Mozilla 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/MPL/ +# +# 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 Sun Microsystems, +# Inc. Portions created by Sun are +# Copyright (C) 1999 Sun Microsystems, Inc. All +# Rights Reserved. +# +# Contributor(s): + +DEPTH = ../../.. +topsrcdir = $(DEPTH) +srcdir = $(topsrcdir)/java/webclient/src_moz +VPATH = $(topsrcdir)/java/webclient/src_moz + +# We don't need to build the stubs in the BAL case. +ifeq ($(BAL_INTERFACE),) +DIRS = motif +endif + +JAVAHOME = $(JDKHOME) + +include $(DEPTH)/config/autoconf.mk + +ifneq ($(BAL_INTERFACE),) +LIBRARY_NAME = webclient_bal +else +LIBRARY_NAME = webclient +endif + +CPPSRCS = \ + ns_util.cpp \ + ns_util_export.cpp \ + dom_util.cpp \ + nsActions.cpp \ + rdf_util.cpp \ + BookmarksImpl.cpp \ + CBrowserContainer.cpp \ + CurrentPageImpl.cpp \ + HistoryImpl.cpp \ + ISupportsPeer.cpp \ + NativeEventThread.cpp \ + NavigationImpl.cpp \ + RDFEnumeration.cpp \ + RDFTreeNode.cpp \ + WindowControlImpl.cpp \ + WrapperFactoryImpl.cpp \ + motif/MotifBrowserControlCanvas.cpp \ + motif/gtkmozilla.cpp \ + $(NULL) + +include $(topsrcdir)/config/rules.mk + +ifdef MOZ_ENABLE_GTK +ifndef MOZ_MONOLITHIC_TOOLKIT +CXXFLAGS += $(MOZ_GTK_CFLAGS) +CFLAGS += $(MOZ_GTK_CFLAGS) +EXTRA_DSO_LDOPTS += -lgtkxtbin -lgtksuperwin -lwc_share -lembed_base_s -lxpfelocation_s -L/usr/X11R6/lib -lXt +else +CXXFLAGS += $(TK_CFLAGS) +CFLAGS += $(TK_CFLAGS) +EXTRA_DSO_LDOPTS += -lgtkxtbin -lgtksuperwin -lwc_share -lembed_base_s -lxpfelocation_s -L/usr/X11R6/lib -lXt +endif +endif + +ifneq ($(BAL_INTERFACE),) +CXXFLAGS += -DBAL_INTERFACE +endif + +EXTRA_DSO_LDOPTS += -L$(DEPTH)/dist/lib -L$(DEPTH)/dist/bin/components -lwidget_gtk + +ifneq ($(BAL_INTERFACE),) +EXTRA_DSO_LDOPTS += -lwc_share_bal +else +EXTRA_DSO_LDOPTS += -lwc_share +endif + + +ifeq ($(OS_ARCH),Linux) +INCLUDES := -I$(JDKHOME)/include -I$(JDKHOME)/include/linux $(INCLUDES) \ + -I$(DEPTH)/widget/src/gtk -I../src_share +else +INCLUDES := -I$(JDKHOME)/include -I$(JDKHOME)/include/solaris $(INCLUDES) \ + -I$(DEPTH)/widget/src/gtk -I../src_share +endif + + +ifneq ($(PACKAGE_BUILD),) +ifneq ($(VERSION_NUMBER),) +VERSION_NUMBER=0.9 +endif # VERSION_NUMBER +PACKAGE_DIR=$(topsrcdir)/dist/javadev +PACKAGE_LIB=$(PACKAGE_DIR)/lib +PACKAGE_EXAMPLE=$(PACKAGE_DIR)/example +endif # PACKAGE_BUILD + +clobber_all:: + +buildRunems: +ifeq ($(BAL_INTERFACE),) +ifeq ($(PACKAGE_BUILD),) + @echo +++ Creating runem. Use this to run the test browser. + rm -f runem + @echo #!/bin/sh > runem + @echo $(PERL) ../src_share/runem.pl org.mozilla.webclient.test.EmbeddedMozilla $(DEPTH) "$$"1 "$$"2 "$$"3 "$$"4 "$$"4 "$$"6 >> runem + chmod 755 runem +else + @echo +++ Commercial Packaging - Copying runem_solaris. Used to run test + if test ! -d $(PACKAGE_EXAMPLE) ; then mkdir $(PACKAGE_EXAMPLE) ; else true ; fi ; + cp $(topsrcdir)/dist/bin/libwebclientstub.so $(PACKAGE_LIB)/libwebclientstub.so.$(VERSION_NUMBER) + cp $(topsrcdir)/dist/bin/libwebclient.so $(PACKAGE_LIB)/libwebclient.so.$(VERSION_NUMBER) + cp $(topsrcdir)/dist/lib/libwc_share.a $(PACKAGE_LIB)/libwc_share.a.$(VERSION_NUMBER) + cp $(topsrcdir)/dist/bin/libjavadomjni.so $(PACKAGE_LIB)/libjavadomjni.so.$(VERSION_NUMBER) + cp $(topsrcdir)/dist/bin/libplugletjni.so $(PACKAGE_LIB)/libplugletjni.so.$(VERSION_NUMBER) + cp $(topsrcdir)/dist/bin/components/libpluglet.so $(PACKAGE_LIB)/libpluglet.so.$(VERSION_NUMBER) + cp $(topsrcdir)/dist/bin/components/libjavadom.so $(PACKAGE_LIB)/libjavadom.so.$(VERSION_NUMBER) + rm -f $(topsrcdir)/dist/bin/libwebclientstub.so + rm -f $(topsrcdir)/dist/lib/libwebclientstub.so + rm -f $(topsrcdir)/dist/bin/libwebclient.so + rm -f $(topsrcdir)/dist/lib/libwebclient.so + rm -f $(topsrcdir)/dist/lib/libwc_share.a + rm -f $(topsrcdir)/dist/bin/libjavadomjni.so + rm -f $(topsrcdir)/dist/lib/libjavadomjni.so + rm -f $(topsrcdir)/dist/bin/libplugletjni.so + rm -f $(topsrcdir)/dist/lib/libplugletjni.so + rm -f $(topsrcdir)/dist/bin/components/libpluglet.so + rm -f $(topsrcdir)/dist/lib/components/libpluglet.so + rm -f $(topsrcdir)/dist/bin/components/libjavadom.so + rm -f $(topsrcdir)/dist/lib/components/libjavadom.so + chmod 555 $(PACKAGE_LIB)/libwebclientstub.so.$(VERSION_NUMBER) + chmod 555 $(PACKAGE_LIB)/libwebclient.so.$(VERSION_NUMBER) + chmod 555 $(PACKAGE_LIB)/libwc_share.a.$(VERSION_NUMBER) + chmod 555 $(PACKAGE_LIB)/libjavadomjni.so.$(VERSION_NUMBER) + chmod 555 $(PACKAGE_LIB)/libplugletjni.so.$(VERSION_NUMBER) + chmod 555 $(PACKAGE_LIB)/libpluglet.so.$(VERSION_NUMBER) + chmod 555 $(PACKAGE_LIB)/libjavadom.so.$(VERSION_NUMBER) + if test ! -d $(PACKAGE_LIB)/libwc_share.a ; then ln -s libwc_share.a.$(VERSION_NUMBER) $(PACKAGE_LIB)/libwc_share.a ; else true ; fi ; + if test ! -d $(PACKAGE_LIB)/libwebclientstub.so ; then ln -s libwebclientstub.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libwebclientstub.so ; else true ; fi ; + if test ! -d $(PACKAGE_LIB)/libwebclient.so ; then ln -s libwebclient.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libwebclient.so ; else true ; fi ; + if test ! -d $(PACKAGE_LIB)/libjavadomjni.so ; then ln -s libjavadomjni.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libjavadomjni.so ; else true ; fi ; + if test ! -d $(PACKAGE_LIB)/libplugletjni.so ; then ln -s libplugletjni.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libplugletjni.so ; else true ; fi ; + if test ! -d $(PACKAGE_LIB)/libpluglet.so ; then ln -s libpluglet.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libpluglet.so ; else true ; fi ; + if test ! -d $(PACKAGE_LIB)/libjavadom.so ; then ln -s libjavadom.so.$(VERSION_NUMBER) $(PACKAGE_LIB)/libjavadom.so ; else true ; fi ; + if test ! -d $(PACKAGE_EXAMPLE)/runem ; then cp $(topsrcdir)/java/webclient/src_share/runem_solaris $(PACKAGE_EXAMPLE)/runem ; else true ; fi ; + chmod 755 $(PACKAGE_EXAMPLE)/runem + cp $(topsrcdir)/java/README.commercial $(PACKAGE_DIR)/README +endif # PACKAGE_BUILD +endif # BAL_INTERFACE + +install:: buildRunems + diff --git a/mozilla/java/webclient/src_moz/Makefile.win b/mozilla/java/webclient/src_moz/Makefile.win index a4e1b8e2ec2..8ac36631d45 100644 --- a/mozilla/java/webclient/src_moz/Makefile.win +++ b/mozilla/java/webclient/src_moz/Makefile.win @@ -44,7 +44,6 @@ OBJS = \ .\$(OBJDIR)\RDFEnumeration.obj \ .\$(OBJDIR)\RDFTreeNode.obj \ .\$(OBJDIR)\ISupportsPeer.obj \ -# .\$(OBJDIR)\nsSetupRegistry.obj \ $(NULL) @@ -76,7 +75,6 @@ LLIBS = \ $(DIST)\lib\nspr4.lib \ $(DIST)\lib\plc4.lib \ $(DIST)\lib\plds4.lib \ -# $(DEPTH)\xpfe\bootstrap\$(OBJDIR)\nsSetupRegistry.obj \ $(NULL) WIN_LIBS= \ @@ -121,17 +119,13 @@ INCS = \ !CMDSWITCHES -S # generate the jni header -export:: nsSetupRegistry.cpp - -nsSetupRegistry.cpp: - copy $(MOZ_SRC)\mozilla\xpfe\bootstrap\nsSetupRegistry.cpp buildRunems: !ifdef BAL_INTERFACE !else @echo +++ Creating runem.bat. Use this to run the test browser. rm -f runem.bat - @echo $(PERL) ..\src_share\runem.pl $(DIST)\bin org.mozilla.webclient.test.EmbeddedMozilla $(DEPTH) %1% >> runem.bat + @echo $(PERL) ..\src_share\runem.pl org.mozilla.webclient.test.EmbeddedMozilla $(DEPTH) %1% >> runem.bat !endif install:: $(DLL) buildRunems @@ -142,6 +136,5 @@ clobber_all:: clobber clobber:: rm -f $(DIST)\bin\$(DLLNAME).dll - rm -f nsSetupRegistry.cpp rm -f runem.bat diff --git a/mozilla/java/webclient/src_moz/NativeEventThread.cpp b/mozilla/java/webclient/src_moz/NativeEventThread.cpp index b09a40815d2..b76b2b5169f 100644 --- a/mozilla/java/webclient/src_moz/NativeEventThread.cpp +++ b/mozilla/java/webclient/src_moz/NativeEventThread.cpp @@ -113,14 +113,6 @@ extern const char * gBinDir; // defined in WrapperFactoryImpl.cpp #endif // XP_PC -// -// Functions to hook into mozilla -// - -extern "C" void NS_SetupRegistry(); -extern nsresult NS_AutoregisterComponents(); - - // // Local functions // @@ -410,7 +402,7 @@ int processEventLoop(WebShellInitContext * initContext) // PENDING(edburns): revisit this. Not sure why this is necessary, but // this fixes bug 44327 - printf("%c", 8); // 8 is ASCII for backspace + // printf("%c", 8); // 8 is ASCII for backspace return 1; } @@ -455,7 +447,6 @@ void DoMozInitialization(WebShellInitContext * initContext) // It is vitally important to call NS_InitEmbedding before calling // anything else. NS_InitEmbedding(pathFile, nsnull); - // NS_SetupRegistry(); rv = NS_GetGlobalComponentManager(&gComponentManager); if (NS_FAILED(rv)) { ::util_ThrowExceptionToJava(env, "NS_GetGlobalComponentManager() failed."); @@ -471,8 +462,6 @@ void DoMozInitialization(WebShellInitContext * initContext) gComponentManager->RegisterComponentLib(kSHistoryCID, nsnull, nsnull, APPSHELL_DLL, PR_FALSE, PR_FALSE); - NS_AutoregisterComponents(); - // handle the profile manager nonsense nsCOMPtr cmdLine =do_GetService(kCmdLineServiceCID); nsCOMPtr profile = do_GetService(NS_PROFILE_CONTRACTID); @@ -645,10 +634,6 @@ nsresult InitMozillaStuff (WebShellInitContext * initContext) nsCOMPtr webShell(do_QueryInterface(initContext->docShell)); webShell->SetContainer(wsContainer); - // set the URIContentListener - nsCOMPtr contentListener(do_QueryInterface(initContext->browserContainer)); - webBrowser->SetParentURIContentListener(contentListener); - // set the TreeOwner nsCOMPtr docShellAsItem(do_QueryInterface(initContext->docShell)); nsCOMPtr treeOwner(do_QueryInterface(initContext->browserContainer)); @@ -688,7 +673,7 @@ nsresult InitMozillaStuff (WebShellInitContext * initContext) } initContext->initComplete = TRUE; - + #if DEBUG_RAPTOR_CANVAS if (prLogModuleInfo) { PR_LOG(prLogModuleInfo, 3, diff --git a/mozilla/java/webclient/src_moz/motif/gtkmozilla.cpp b/mozilla/java/webclient/src_moz/motif/gtkmozilla.cpp index 74f125229c2..a70a8bcdb22 100644 --- a/mozilla/java/webclient/src_moz/motif/gtkmozilla.cpp +++ b/mozilla/java/webclient/src_moz/motif/gtkmozilla.cpp @@ -98,8 +98,9 @@ gtk_mozilla_get_type (void) sizeof (GtkMozillaClass), (GtkClassInitFunc) gtk_mozilla_class_init, (GtkObjectInitFunc) gtk_mozilla_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, + /* reserved_1 */ NULL, + /* reserved_2 */ NULL, + (GtkClassInitFunc) NULL }; mozilla_type = gtk_type_unique (GTK_TYPE_LAYOUT, &mozilla_info); } diff --git a/mozilla/java/webclient/src_moz/rdf_util.cpp b/mozilla/java/webclient/src_moz/rdf_util.cpp index 6e063c69ca2..160eaeaa36a 100644 --- a/mozilla/java/webclient/src_moz/rdf_util.cpp +++ b/mozilla/java/webclient/src_moz/rdf_util.cpp @@ -21,7 +21,6 @@ */ #include "rdf_util.h" -#include "rdf_progids.h" #include "ns_globals.h" // for prLogModuleInfo and gComponentManager @@ -45,6 +44,8 @@ nsCOMPtr kNC_Folder = nsnull; nsCOMPtr kRDF_type = nsnull; static NS_DEFINE_CID(kRDFContainerCID, NS_RDFCONTAINER_CID); +static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); +static NS_DEFINE_CID(kRDFContainerUtilsCID, NS_RDFCONTAINERUTILS_CID); nsresult rdf_InitRDFUtils() { @@ -75,7 +76,7 @@ nsresult rdf_InitRDFUtils() if (nsnull == gRDF) { // get the RDF service - gRDF = do_GetService(NS_RDFSERVICE_PROGID, &rv); + gRDF = do_GetService(kRDFServiceCID, &rv); if (NS_FAILED(rv)) { return rv; } @@ -83,7 +84,7 @@ nsresult rdf_InitRDFUtils() if (nsnull == gRDFCU) { // get the RDF service - gRDFCU = do_GetService(NS_CONTAINERUTILS_PROGID, &rv); + gRDFCU = do_GetService(kRDFContainerUtilsCID, &rv); if (NS_FAILED(rv)) { return rv; } @@ -313,6 +314,13 @@ void rdf_recursiveResourceTraversal(nsCOMPtr currentResource) void rdf_printArcLabels(nsCOMPtr currentResource) { + if (!currentResource) { + if (prLogModuleInfo) { + PR_LOG(prLogModuleInfo, 3, ("resource: null\n")); + } + return; + } + nsCOMPtr labels; nsCOMPtr supportsResult; nsCOMPtr resourceResult; diff --git a/mozilla/java/webclient/src_share/runem.pl b/mozilla/java/webclient/src_share/runem.pl index b4e4dec9cd4..b4056f826e4 100644 --- a/mozilla/java/webclient/src_share/runem.pl +++ b/mozilla/java/webclient/src_share/runem.pl @@ -28,10 +28,13 @@ # Verification, usage checking # $ARGC = $#ARGV + 1; -$MIN_ARGC = 3; +$MIN_ARGC = 2; -if ($MIN_ARGC > $ARGC) { - print "usage runem.pl \n"; +if ($MIN_ARGC > $ARGC || !($ENV{"MOZILLA_FIVE_HOME"})) { + if (!($ENV{"MOZILLA_FIVE_HOME"})) { + print "MOZILLA_FIVE_HOME must be set to the absolute path\nto the mozilla bin directory.\n"; + } + print "usage runem.pl \n"; exit -1; } @@ -39,8 +42,8 @@ if ($MIN_ARGC > $ARGC) { # Constant definitions # -$CLASSNAME = $ARGV[1]; -$DEPTH = $ARGV[2]; +$CLASSNAME = $ARGV[0]; +$DEPTH = $ARGV[1]; # determine the path separator $_ = $ENV{PATH}; @@ -57,31 +60,14 @@ if ($SEP eq "/") { $IS_UNIX = 1; } -if ($IS_UNIX) { -# Under red hat linux $ENV{"PWD"} is undefined, -# so it only appends a '/' to argv[0]. - if ( $ENV{"PWD"} == "" ) { - $BINDIR = $ARGV[0]; - } - else { - $BINDIR = $ENV{"PWD"} . $SEP . $ARGV[0]; - } -} -else { - open(CD, "cd |"); - $_ = ; - chop; - close(CD); - $BINDIR = $_ . $SEP . $ARGV[0]; -} +$BINDIR = $ENV{"MOZILLA_FIVE_HOME"}; + $JAVA_CMD = $ENV{"JDKHOME"} . $SEP . "bin" . $SEP . "java"; # # set up environment vars # -$ENV{"MOZILLA_FIVE_HOME"} = $BINDIR; - # prepend mozilla dist to path $ENV{PATH} = $BINDIR . $CPSEP . $ENV{PATH}; diff --git a/mozilla/java/webclient/src_share/runem_commercial.pl b/mozilla/java/webclient/src_share/runem_commercial.pl index febb44c41dd..57f3cd6020c 100644 --- a/mozilla/java/webclient/src_share/runem_commercial.pl +++ b/mozilla/java/webclient/src_share/runem_commercial.pl @@ -28,10 +28,13 @@ # Verification, usage checking # $ARGC = $#ARGV + 1; -$MIN_ARGC = 2; +$MIN_ARGC = 1; -if ($MIN_ARGC > $ARGC) { - print "usage runem.pl \n"; +if ($MIN_ARGC > $ARGC || !($ENV{"MOZILLA_FIVE_HOME"})) { + if (!($ENV{"MOZILLA_FIVE_HOME"})) { + print "MOZILLA_FIVE_HOME must be set to the absolute path\nto the mozilla bin directory.\n"; + } + print "usage runem.pl \n"; exit -1; } @@ -39,7 +42,7 @@ if ($MIN_ARGC > $ARGC) { # Constant definitions # -$CLASSNAME = $ARGV[1]; +$CLASSNAME = $ARGV[0]; # determine the path separator $_ = $ENV{PATH}; @@ -56,31 +59,14 @@ if ($SEP eq "/") { $IS_UNIX = 1; } -if ($IS_UNIX) { -# Under red hat linux $ENV{"PWD"} is undefined, -# so it only appends a '/' to argv[0]. - if ( $ENV{"PWD"} == "" ) { - $BINDIR = $ARGV[0]; - } - else { - $BINDIR = $ENV{"PWD"} . $SEP . $ARGV[0]; - } -} -else { - open(CD, "cd |"); - $_ = ; - chop; - close(CD); - $BINDIR = $_ . $SEP . $ARGV[0]; -} +$BINDIR = $ENV{"MOZILLA_FIVE_HOME"}; + $JAVA_CMD = $ENV{"JDKHOME"} . $SEP . "bin" . $SEP . "java"; # # set up environment vars # -$ENV{"MOZILLA_FIVE_HOME"} = $BINDIR; - # prepend mozilla dist to path $ENV{PATH} = $BINDIR . $CPSEP . $ENV{PATH}; @@ -113,11 +99,12 @@ $ENV{"CLASSPATH"} = $ENV{"JDKHOME"} . $SEP . "lib" . $SEP . "tools.jar" . $CPSEP . $ENV{"JDKHOME"} . $SEP . "lib" . $SEP . "rt.jar" . $CPSEP . $ENV{"CLASSPATH"}; if ($IS_UNIX) { - $ENV{"CLASSPATH"} = $ENV{"CLASSPATH"} . $CPSEP . $BINDIR . $SEP . ".." . - $SEP . "classes"; + $ENV{"CLASSPATH"} = $ENV{"CLASSPATH"} . $CPSEP . $BINDIR . $SEP . "javadev" . + $SEP . "lib" . $SEP . "blackwood.jar"; } else { - $ENV{"CLASSPATH"} = $ENV{"CLASSPATH"} . $CPSEP ."../lib" . $SEP . "blackwood.jar"; + $ENV{"CLASSPATH"} = $ENV{"CLASSPATH"} . $CPSEP . $BINDIR . $SEP . "javadev" . + $SEP . "lib" . $SEP . "blackwood.jar"; } # build up the command invocation string @@ -128,7 +115,8 @@ if ($SEP eq "/") { $cmd = $cmd . " -native"; } #tack on the java library path -$cmd = $cmd . " -Djava.library.path=" . $BINDIR; +$cmd = $cmd . " -Djava.library.path=" . $BINDIR . $CPSEP . $BINDIR . $SEP . + "javadev" . $SEP . "lib"; #tack on the classpath, class name, and bin dir $cmd = $cmd . " -classpath " . $ENV{"CLASSPATH"} . " " . $CLASSNAME . " " . $BINDIR; diff --git a/mozilla/java/webclient/src_share/runem_solaris b/mozilla/java/webclient/src_share/runem_solaris new file mode 100644 index 00000000000..0b3cc50d208 --- /dev/null +++ b/mozilla/java/webclient/src_share/runem_solaris @@ -0,0 +1,47 @@ +#!/bin/sh +# + +script_args="" +if [ $# -gt 0 ]; then + script_args=$1 +else + script_args="auto.blank" +fi + +echo "args = $script_args" + +JDKHOME=`pwd`/../../java +MOZILLA_FIVE_HOME=`pwd`/../.. + +ARCH=`uname -p` + +LD_LIBRARY_PATH=$JDKHOME/lib/$ARCH/client:$JDKHOME/lib/$ARCH:$LD_LIBRARY_PATH +LD_LIBRARY_PATH=$JDKHOME/lib:$JDKHOME/lib/$ARCH/native_threads:$LD_LIBRARY_PATH +LD_LIBRARY_PATH=`pwd`/../lib:`pwd`/../..:`pwd`/../../components:$LD_LIBRARY_PATH +LD_LIBRARY_PATH=`pwd`/../../dist/lib:$LD_LIBRARY_PATH + +echo "LD_LIBRARY_PATH =" $LD_LIBRARY_PATH + +if [ "$CLASSPATH" = "" ]; then + CLASSPATH=$JDKHOME/lib/tools.jar:$JDKHOME/lib/rt.jar:`pwd`/../lib/blackwood.jar +else + CLASSPATH=$JDKHOME/lib/tools.jar:$JDKHOME/lib/rt.jar:`pwd`/../lib/blackwood.jar:$CLASSPATH +fi + +echo "CLASSPATH =" $CLASSPATH + +libpath=`pwd`/../..:`pwd`/../../components:`pwd`/../lib +testclass="org.mozilla.webclient.test.EmbeddedMozilla" +bindir=`pwd`/../.. + +export LD_LIBRARY_PATH +export CLASSPATH +export JDKHOME +export MOZILLA_FIVE_HOME + +args="-native -Djava.library.path=$libpath -classpath $CLASSPATH $testclass $bindir $script_args" + +cmd="$JDKHOME/bin/java $args" +echo "CMD = " $cmd + +eval $cmd