summaryrefslogtreecommitdiff
path: root/testautomation/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'testautomation/extensions')
-rwxr-xr-xtestautomation/extensions/optional/e_display_name.bas57
-rwxr-xr-xtestautomation/extensions/optional/e_extensions.bas54
-rwxr-xr-xtestautomation/extensions/optional/e_fileopen.bas55
-rwxr-xr-xtestautomation/extensions/optional/e_help.bas57
-rwxr-xr-xtestautomation/extensions/optional/e_identifiers.bas59
-rwxr-xr-xtestautomation/extensions/optional/e_issues.bas55
-rwxr-xr-xtestautomation/extensions/optional/e_location.bas68
-rwxr-xr-xtestautomation/extensions/optional/e_meta-inf.bas59
-rwxr-xr-xtestautomation/extensions/optional/e_online_update.bas57
-rwxr-xr-xtestautomation/extensions/optional/e_options.bas59
-rwxr-xr-xtestautomation/extensions/optional/e_platforms.bas58
-rwxr-xr-xtestautomation/extensions/optional/e_publisher.bas55
-rw-r--r--testautomation/extensions/optional/e_taskpane.bas49
-rw-r--r--testautomation/extensions/optional/includes/display_name.inc113
-rw-r--r--testautomation/extensions/optional/includes/e_taskpane.inc74
-rw-r--r--testautomation/extensions/optional/includes/extensions.inc684
-rw-r--r--testautomation/extensions/optional/includes/fileopen.inc103
-rw-r--r--testautomation/extensions/optional/includes/help.inc213
-rw-r--r--testautomation/extensions/optional/includes/identifiers.inc120
-rwxr-xr-xtestautomation/extensions/optional/includes/issue110083.inc79
-rw-r--r--testautomation/extensions/optional/includes/location.inc133
-rw-r--r--testautomation/extensions/optional/includes/meta-inf.inc83
-rw-r--r--testautomation/extensions/optional/includes/online_update.inc114
-rw-r--r--testautomation/extensions/optional/includes/options.inc172
-rw-r--r--testautomation/extensions/optional/includes/platforms.inc126
-rw-r--r--testautomation/extensions/optional/includes/publisher.inc286
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/broken-dependency.oxtbin0 -> 1655 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/double-dependencies.oxtbin0 -> 1651 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/empty-dependencies.oxtbin0 -> 1624 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/funny-dependency.oxtbin0 -> 1730 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/license-dependency.oxtbin0 -> 1891 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/many-dependencies.oxtbin0 -> 1702 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/no-dependencies.oxtbin0 -> 1611 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/no-description.oxtbin0 -> 1360 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/unknown-dependency.oxtbin0 -> 1633 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version10000.oxtbin0 -> 1668 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version21.oxtbin0 -> 1666 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version21ns.oxtbin0 -> 1661 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version21other.oxtbin0 -> 1679 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/version25.oxtbin0 -> 1794 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version30.oxtbin0 -> 1493 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version300.oxtbin0 -> 1408 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version301.oxtbin0 -> 1409 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version31.oxtbin0 -> 1495 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version310.oxtbin0 -> 1493 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version33.oxtbin0 -> 1494 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version330.oxtbin0 -> 1494 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version34.oxtbin0 -> 1441 bytes
-rw-r--r--testautomation/extensions/optional/input/dependencies/version937.oxtbin0 -> 1409 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/versionempty.oxtbin0 -> 1675 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/dependencies/versionnone.oxtbin0 -> 1674 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name1.oxtbin0 -> 704 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name2.oxtbin0 -> 699 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name3.oxtbin0 -> 681 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name4.oxtbin0 -> 675 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/name5.oxtbin0 -> 654 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/display_name/readme.txt26
-rwxr-xr-xtestautomation/extensions/optional/input/errors/i77436-README.txt21
-rwxr-xr-xtestautomation/extensions/optional/input/errors/i77436-extension.oxtbin0 -> 57727 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/errors/lowercasemetainf.oxtbin0 -> 9381 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/eventbinding/DialogComponent.odtbin0 -> 12541 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/eventbinding/DialogComponent.oxtbin0 -> 7588 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/extensible_help/extensible_help_en.oxtbin0 -> 8284 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/extensible_help/extensible_help_en_de.oxtbin0 -> 13522 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/extensible_help/extension.info59
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/build.xml72
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-impl.xml794
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-uno-impl.xml462
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/genfiles.properties9
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/config.properties0
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/private.properties7
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project-uno.properties19
-rw-r--r--testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.properties68
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.xml14
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/CalcWindowState.xcu23
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/Factories.xcu35
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/CentralRegistrationClass.java140
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/TaskPaneComponent.java116
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanel.java56
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanelUIElement.java153
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/description.xml5
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/toolpanels/TaskPaneComponentUI.xdl8
-rwxr-xr-xtestautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/uno-extension-manifest.xml9
-rwxr-xr-xtestautomation/extensions/optional/input/extensions/TaskPaneComponent/TaskPaneComponent.oxtbin0 -> 9884 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/files.txt50
-rwxr-xr-xtestautomation/extensions/optional/input/identifier/explicit/identifier.oxtbin0 -> 1660 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/identifier/legacy/identifier.oxtbin0 -> 1634 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/identifier/readme.txt16
-rw-r--r--testautomation/extensions/optional/input/issues/111434.oxtbin0 -> 1166 bytes
-rw-r--r--testautomation/extensions/optional/input/issues/Logging.xcu24
-rw-r--r--testautomation/extensions/optional/input/issues/LoggingOptions.xcs19
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaf1.oxtbin0 -> 8308 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaf2.oxtbin0 -> 8338 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaves1.oxtbin0 -> 21158 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaves2.oxtbin0 -> 21153 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/leaves3.oxtbin0 -> 21080 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/modules1.oxtbin0 -> 24317 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/modules2.oxtbin0 -> 24196 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes1.oxtbin0 -> 1882 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes2.oxtbin0 -> 24287 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes3.oxtbin0 -> 24315 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes4.oxtbin0 -> 24318 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/nodes5.oxtbin0 -> 12616 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/options/readme.txt195
-rwxr-xr-xtestautomation/extensions/optional/input/path_to_extension/LocationTest.odtbin0 -> 7666 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/path_to_extension/locationtest.oxtbin0 -> 5055 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/all1.oxtbin0 -> 692 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/all2.oxtbin0 -> 702 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/all3.oxtbin0 -> 297 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/extensions.info146
-rwxr-xr-xtestautomation/extensions/optional/input/platform/freebsd_x86.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/freebsd_x86_64.oxtbin0 -> 711 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/invalid1.oxtbin0 -> 653 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/invalid2.oxtbin0 -> 653 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/invalid3.oxtbin0 -> 655 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_arm_eabi.oxtbin0 -> 709 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_arm_oabi.oxtbin0 -> 710 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_ia64.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_mips_eb.oxtbin0 -> 709 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_mips_el.oxtbin0 -> 708 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_powerpc.oxtbin0 -> 708 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_powerpc64.oxtbin0 -> 710 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_s390.oxtbin0 -> 705 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_s390x.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_sparc.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_x86.oxtbin0 -> 705 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/linux_x86_64.oxtbin0 -> 708 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/macosx_powerpc.oxtbin0 -> 710 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/macosx_x86.oxtbin0 -> 707 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/mul1.oxtbin0 -> 952 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/os2_x86.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/readme.txt49
-rwxr-xr-xtestautomation/extensions/optional/input/platform/solaris_sparc.oxtbin0 -> 709 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/solaris_x86.oxtbin0 -> 706 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/platform/windows_x86.oxtbin0 -> 707 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/extension.info58
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub1.oxtbin0 -> 1882 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub2.oxtbin0 -> 1866 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub3.oxtbin0 -> 1829 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub4.oxtbin0 -> 1812 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub5.oxtbin0 -> 1769 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub6.oxtbin0 -> 1814 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/publisher/pub7.oxtbin0 -> 1769 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/BadDesc.oxtbin0 -> 9663 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/BadNamespace.oxtbin0 -> 10027 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/BadRoot.oxtbin0 -> 9248 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/CancelLicense.oxtbin0 -> 9406 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/IncompAttr1.oxtbin0 -> 9389 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/IncompAttr2.oxtbin0 -> 9365 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/LongLic.oxtbin0 -> 9540 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/MissingLic.oxtbin0 -> 9232 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/MissingLicRef.oxtbin0 -> 9343 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/NoDesc.oxtbin0 -> 8722 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/NoLangNoDefault.oxtbin0 -> 9234 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/OnlyDefault.oxtbin0 -> 9394 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/ShortLicense.oxtbin0 -> 9406 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/simpleLicense/ShortLicenseShared.oxtbin0 -> 9407 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/plain1.oxtbin0 -> 2187 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/plain2.oxtbin0 -> 2186 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/plain3.oxtbin0 -> 2186 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/update/readme.txt26
-rwxr-xr-xtestautomation/extensions/optional/input/versions/plain.oxtbin0 -> 1522 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_0.0/plain.oxtbin0 -> 1618 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.02.4.7.0/plain.oxtbin0 -> 1624 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.2.15.3/plain.oxtbin0 -> 1624 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.2.3/plain.oxtbin0 -> 1620 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_1.2.4.7/plain.oxtbin0 -> 1623 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/versions/version_none/plain.oxtbin0 -> 1598 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/readme.txt133
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web1.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web2.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web3.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web4.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web5.oxtbin0 -> 1693 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web6.oxtbin0 -> 1638 bytes
-rwxr-xr-xtestautomation/extensions/optional/input/web_update/web7.oxtbin0 -> 1894 bytes
-rwxr-xr-xtestautomation/extensions/required/e_update.bas58
-rw-r--r--testautomation/extensions/required/includes/e_update.inc166
178 files changed, 6078 insertions, 0 deletions
diff --git a/testautomation/extensions/optional/e_display_name.bas b/testautomation/extensions/optional/e_display_name.bas
new file mode 100755
index 000000000000..b0cafa1a8c71
--- /dev/null
+++ b/testautomation/extensions/optional/e_display_name.bas
@@ -0,0 +1,57 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extension display names
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\display_name.inc"
+
+ call hStatusIn( "extensions" , "e_display_name.bas" )
+ call tExtensionDisplayName()
+ call hStatusOut()
+
+end sub
+
+'*******************************************************************************
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_extensions.bas b/testautomation/extensions/optional/e_extensions.bas
new file mode 100755
index 000000000000..fb7decd9eed6
--- /dev/null
+++ b/testautomation/extensions/optional/e_extensions.bas
@@ -0,0 +1,54 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/************************************************************************
+'*
+'* owner : thorsten.bosbach@oracle.com
+'*
+'* short description : Function test of extension manager
+'*
+'\************************************************************************
+
+sub main
+ use "extensions\optional\includes\extensions.inc"
+
+ call hStatusIn ( "extensions","e_extensions.bas" )
+
+ printlog " function test of extension manager "
+
+ call tExtensionsFunction()
+
+ call hStatusOut
+end sub
+
+'-------------------------------------------------------------------------
+sub LoadIncludeFiles
+ use "global\system\includes\master.inc"
+ use "global\system\includes\gvariabl.inc"
+ gApplication = "WRITER"
+ call GetUseFiles
+end sub
+'-------------------------------------------------------------------------
+
diff --git a/testautomation/extensions/optional/e_fileopen.bas b/testautomation/extensions/optional/e_fileopen.bas
new file mode 100755
index 000000000000..47223ff61209
--- /dev/null
+++ b/testautomation/extensions/optional/e_fileopen.bas
@@ -0,0 +1,55 @@
+'encoding UTF-8 Do not remove or change this line!
+'*******************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : CWS oxtsysint01 enables installing extensions via file open dialog
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\fileopen.inc"
+
+ call hStatusIn( "extensions" , "e_fileopen.bas" )
+ call tExtensionFileOpen()
+ call hStatusOut()
+
+end sub
+
+'*******************************************************************************
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_help.bas b/testautomation/extensions/optional/e_help.bas
new file mode 100755
index 000000000000..c68005f75142
--- /dev/null
+++ b/testautomation/extensions/optional/e_help.bas
@@ -0,0 +1,57 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extensible help
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\help.inc"
+
+ call hStatusIn( "extensions" , "e_help.bas" )
+ call tExtensibleHelp()
+ call hStatusOut()
+
+end sub
+
+'*******************************************************************************
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_identifiers.bas b/testautomation/extensions/optional/e_identifiers.bas
new file mode 100755
index 000000000000..fe10332cec61
--- /dev/null
+++ b/testautomation/extensions/optional/e_identifiers.bas
@@ -0,0 +1,59 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Use unique identifiers instead of filenames for extensions
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\identifiers.inc"
+
+ call hStatusIn( "extensions" , "e_identifiers.bas" )
+ call tExtensionIdentifiers()
+ call hStatusOut()
+
+end sub
+
+'-------------------------------------------------------------------------
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\master.inc"
+ use "global\system\includes\gvariabl.inc"
+
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+ use "global\tools\includes\optional\t_treelist_tools.inc"
+ use "global\tools\includes\optional\t_docfuncs.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_issues.bas b/testautomation/extensions/optional/e_issues.bas
new file mode 100755
index 000000000000..0e7659d8b7b4
--- /dev/null
+++ b/testautomation/extensions/optional/e_issues.bas
@@ -0,0 +1,55 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extension publisher string
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\issue110083.inc"
+
+ call hStatusIn( "extensions" , "e_issues.bas" )
+ call tExtensionIssue110083()
+ call hStatusOut()
+
+end sub
+
+'*******************************************************************************
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_location.bas b/testautomation/extensions/optional/e_location.bas
new file mode 100755
index 000000000000..cfc660bba2d4
--- /dev/null
+++ b/testautomation/extensions/optional/e_location.bas
@@ -0,0 +1,68 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Test the extension locator service
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\location.inc"
+
+ call hStatusIn( "extensions" , "e_location.bas" )
+
+ hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_MEDIUM )
+
+ call tExtensionLocation()
+
+ hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_DEFAULT )
+
+ call hStatusOut()
+
+end sub
+
+'-------------------------------------------------------------------------
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\master.inc"
+ use "global\system\includes\gvariabl.inc"
+
+ use "global\tools\includes\optional\t_docfuncs.inc"
+ use "global\tools\includes\optional\t_filetools.inc"
+ use "global\tools\includes\optional\t_macro_tools.inc"
+ use "global\tools\includes\optional\t_security_tools.inc"
+ use "global\tools\includes\optional\t_treelist_tools.inc"
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_meta-inf.bas b/testautomation/extensions/optional/e_meta-inf.bas
new file mode 100755
index 000000000000..0758fd0d1600
--- /dev/null
+++ b/testautomation/extensions/optional/e_meta-inf.bas
@@ -0,0 +1,59 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Case sensitive META-INF file
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\meta-inf.inc"
+
+ call hStatusIn( "extensions" , "e_meta-inf.bas" )
+ call tLowerCaseMetaInf
+ call hStatusOut()
+
+end sub
+
+'-------------------------------------------------------------------------
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+
+ use "global\tools\includes\optional\t_docfuncs.inc"
+ use "global\tools\includes\optional\t_filetools.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_online_update.bas b/testautomation/extensions/optional/e_online_update.bas
new file mode 100755
index 000000000000..8e21d9cd2a34
--- /dev/null
+++ b/testautomation/extensions/optional/e_online_update.bas
@@ -0,0 +1,57 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Hit update button for an extension
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\online_update.inc"
+
+ call hStatusIn( "extensions" , "e_online_update.bas" )
+ call tExtensionUpdate()
+ call hStatusOut()
+
+end sub
+
+'-------------------------------------------------------------------------
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\master.inc"
+ use "global\system\includes\gvariabl.inc"
+
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_options.bas b/testautomation/extensions/optional/e_options.bas
new file mode 100755
index 000000000000..1f7b6a3e2342
--- /dev/null
+++ b/testautomation/extensions/optional/e_options.bas
@@ -0,0 +1,59 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Options for extensions
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\options.inc"
+
+ call hStatusIn( "extensions" , "e_options.bas" )
+ call tExtensionOptions1()
+ call hStatusOut()
+
+end sub
+
+'-------------------------------------------------------------------------
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\master.inc"
+ use "global\system\includes\gvariabl.inc"
+
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+ use "global\tools\includes\optional\t_treelist_tools.inc"
+ use "global\tools\includes\optional\t_control_objects.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_platforms.bas b/testautomation/extensions/optional/e_platforms.bas
new file mode 100755
index 000000000000..8287060abb2f
--- /dev/null
+++ b/testautomation/extensions/optional/e_platforms.bas
@@ -0,0 +1,58 @@
+'encoding UTF-8 Do not remove or change this line!
+'*******************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Supported extension platforms
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\platforms.inc"
+
+ call hStatusIn( "extensions" , "e_platforms.bas" )
+ call tExtensionPlatforms()
+ call hStatusOut()
+
+end sub
+
+'*******************************************************************************
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+ use "global\tools\includes\optional\t_key_tools.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_publisher.bas b/testautomation/extensions/optional/e_publisher.bas
new file mode 100755
index 000000000000..320064c8b633
--- /dev/null
+++ b/testautomation/extensions/optional/e_publisher.bas
@@ -0,0 +1,55 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extension publisher string
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\optional\includes\publisher.inc"
+
+ call hStatusIn( "extensions" , "e_publisher.bas" )
+ call tExtensionPublisher()
+ call hStatusOut()
+
+end sub
+
+'*******************************************************************************
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/optional/e_taskpane.bas b/testautomation/extensions/optional/e_taskpane.bas
new file mode 100644
index 000000000000..b6d29d22283d
--- /dev/null
+++ b/testautomation/extensions/optional/e_taskpane.bas
@@ -0,0 +1,49 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/************************************************************************
+'*
+'* owner :
+'*
+'* short description :
+'*
+'\***********************************************************************
+
+sub main
+
+ use "extensions/optional/includes/e_taskpane.inc"
+ call tTaskPane
+
+end sub
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+ use "global\tools\includes\optional\t_extension_manager_tools.inc"
+ gApplication = "CALC"
+ call GetUseFiles()
+
+end sub \ No newline at end of file
diff --git a/testautomation/extensions/optional/includes/display_name.inc b/testautomation/extensions/optional/includes/display_name.inc
new file mode 100644
index 000000000000..e7663c7dc8b6
--- /dev/null
+++ b/testautomation/extensions/optional/includes/display_name.inc
@@ -0,0 +1,113 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extension display names
+'*
+'\******************************************************************************
+
+testcase tExtensionDisplayName
+
+ if ( gISOLang <> "en-US" ) then
+ qaerrorlog( "Test is not locale-safe, en-US only" )
+ goto endsub
+ endif
+
+ '///<h1>Extension display names</h1>
+ '///<u><pre>Synopsis</pre></u>Since CWS jl76 a possibility exists to give an extension a name which
+ '///+ differs from the filename to be displayed in the extension manager.<br>
+ '///<u><pre>Specification</pre></u>http://specs.openoffice.org/appwide/packagemanager/packagemanager_gui_spec.sxw<br>
+ '///<u><pre>Files used</pre></u>gTesttoolPath/extensions/features/input/display_name/*.oxt
+
+ const EXTENSION_COUNT = 5
+
+ dim cExtensionPath as string
+ cExtensionPath = gTesttoolPath & "extensions\optional\input\display_name\"
+ cExtensionPath = convertpath( cExtensionPath )
+
+ dim cExtensionFileName( EXTENSION_COUNT ) as string
+ cExtensionFileName( 1 ) = "name1.oxt"
+ cExtensionFileName( 2 ) = "name2.oxt"
+ cExtensionFileName( 3 ) = "name3.oxt"
+ cExtensionFileName( 4 ) = "name4.oxt"
+ cExtensionFileName( 5 ) = "name5.oxt"
+
+ dim cExtensionDisplayName( EXTENSION_COUNT ) as string
+ cExtensionDisplayName( 1 ) = "name1 en-US"
+ cExtensionDisplayName( 2 ) = "name2 en-US-region1"
+ cExtensionDisplayName( 3 ) = "name3 en"
+ cExtensionDisplayName( 4 ) = "name4 en-GB"
+ cExtensionDisplayName( 5 ) = "name5 de"
+
+ dim iCurrentExtension as integer
+ dim cCurrentExtension as string
+ dim iStatus as integer
+ dim bStatus as boolean
+
+ '///<u><pre>Test case specification</u></pre>
+ '///<ul>
+ '///+<li>Install test extensions via GUI</li>
+ for iCurrentExtension = 1 to EXTENSION_COUNT
+
+ cCurrentExtension = cExtensionPath & cExtensionFileName( iCurrentExtension )
+
+ printlog( "" )
+ printlog( "Adding extension by filename: " & cCurrentExtension )
+
+ iStatus = hExtensionAddGUI( cCurrentExtension , "NoLicense, InstallForUser, NoUpdate, Verbose" )
+ if ( iStatus < 1 ) then
+ warnlog( "Failed to install extension: " & cCurrentExtension )
+ endif
+
+ next iCurrentExtension
+
+ '///+<li>Remove all extensions by display name (which also verifies the display name)</li>
+ bStatus = true
+ for iCurrentExtension = 1 to EXTENSION_COUNT
+
+ cCurrentExtension = cExtensionDisplayName( iCurrentExtension )
+
+ printlog( "" )
+ printlog( "Removing extension by display name: " & cCurrentExtension )
+
+ iStatus = hExtensionRemoveGUI( cCurrentExtension )
+ if ( iStatus <> 0 ) then
+ warnlog( "Failed to remove extension: " & cCurrentExtension )
+ bStatus = false
+ endif
+
+ next iCurrentExtension
+
+ '///+<li>If anything went wrong, reset the office/userlayer</li>
+ if ( not bStatus ) then
+ call sResetTheOffice
+ endif
+ '///</ul>
+
+endcase
+
diff --git a/testautomation/extensions/optional/includes/e_taskpane.inc b/testautomation/extensions/optional/includes/e_taskpane.inc
new file mode 100644
index 000000000000..6d1794e68456
--- /dev/null
+++ b/testautomation/extensions/optional/includes/e_taskpane.inc
@@ -0,0 +1,74 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/************************************************************************
+'*
+'* owner :
+'*
+'* short description :
+'*
+'\***********************************************************************
+testcase tTaskPane
+
+ Dim sExtensionPath as String
+ Dim iStatus as integer
+
+ sExtensionPath = gTesttoolPath + "extensions/optional/input/extensions/TaskPaneComponent/TaskPaneComponent.oxt"
+
+ iStatus = hExtensionAddGUI( sExtensionPath, "InstallForUser, NoLicense" )
+ if(iStatus <= 0 ) then
+ warnlog "extension could not installed. ErrorCode is " + iStatus
+ goto endsub
+ endif
+
+ call hNewDocument
+
+ kontext "DocumentCalc"
+
+ DocumentCalc.useMenu
+
+ hMenuSelectNr(3)
+ if(hMenuItemIsChecked(11)) then
+ ' do nothing. The pane is displayed
+ else
+ hMenuSelectNr(11)
+ endif
+
+ kontext "MSC_Special_Dialog"
+ if ( MSC_Special_Dialog.exists(1) ) then
+ printlog "task pane exists"
+ else
+ warnlog "task pane does not exists"
+ endif
+
+ call hCloseDocument
+
+ iStatus = hExtensionRemoveGUI("TaskPaneComponent.oxt")
+ if(iStatus <> 0 ) then
+ warnlog "extension could not deinstalled. ErrorCode is " + iStatus
+ goto endsub
+ endif
+
+endcase
diff --git a/testautomation/extensions/optional/includes/extensions.inc b/testautomation/extensions/optional/includes/extensions.inc
new file mode 100644
index 000000000000..db115274e19d
--- /dev/null
+++ b/testautomation/extensions/optional/includes/extensions.inc
@@ -0,0 +1,684 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/************************************************************************
+'*
+'* owner : thorsten.bosbach@oracle.com
+'*
+'* short description : Function test of extension manager
+'*
+'\************************************************************************
+
+testcase tExtensionsFunction
+
+ ' written for CWS jsc7, in master since SRC680m176
+ ' additions for CWS sb63 - Dependency checking with versioning - documents 24-30
+ ' features: - http://specs.openoffice.org/appwide/packagemanager/simple_extension_license.odt
+ ' - http://specs.openoffice.org/appwide/packagemanager/extensiondependencies1.odt
+ '/// The test documents are available at http://qa.openoffice.org/source/browse/qa/qatesttool/framework/basic/input/extensions/ ///'
+ '/// Textdocuments used in this test and expected messages: ///'
+ '/// (1/31): simpleLicense\BadDesc.oxt ///'
+ '/// - BadDesc.oxt/description.xml contains data which cannot be parsed. ///'
+ '/// - will not install ///'
+ '/// (2/31): simpleLicense\BadNamespace.oxt ///'
+ '/// - BadNamespace.oxt/description.xml contains a root element with an unsupported namespace. ///'
+ '/// - will not install ///'
+ '/// (3/31): simpleLicense\BadRoot.oxt ///'
+ '/// - BadRoot.oxt/description.xml does not contain the root element <description>. ///'
+ '/// - will not install ///'
+ '/// (4/31): simpleLicense\IncompAttr1.oxt ///'
+ '/// - ExtensionSoftwareLicenseAgreement dialog exists ///'
+ '/// - installs and is enabled ///'
+ '/// (5/31): simpleLicense\IncompAttr2.oxt ///'
+ '/// - Cannot find a localized license text or a default license text. ///'
+ '/// - will not install ///'
+ '/// (6/31): simpleLicense\LongLic.oxt ///'
+ '/// - ExtensionSoftwareLicenseAgreement dialog exists ///'
+ '/// - It is a Long License ///'
+ '/// - installs and is enabled ///'
+ '/// (7/31): simpleLicense\MissingLic.oxt ///'
+ '/// - MissingLic.oxt\registration\license_en_US.txt does not exist. ///'
+ '/// - will not install ///'
+ '/// (8/31): simpleLicense\MissingLicRef.oxt ///'
+ '/// - Cannot find a localized license text or a default license text. ///'
+ '/// - will not install ///'
+ '/// (9/31): simpleLicense\NoDesc.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (10/31): simpleLicense\NoLangNoDefault.oxt ///'
+ '/// - Cannot find a localized license text or a default license text. ///'
+ '/// - will not install ///'
+ '/// (11/31): simpleLicense\OnlyDefault.oxt ///'
+ '/// - Cannot find a localized license text or a default license text. ///'
+ '/// - will not install ///'
+ '/// (12/31): simpleLicense\ShortLicense.oxt ///'
+ '/// - ExtensionSoftwareLicenseAgreement dialog exists ///'
+ '/// - installs and is enabled ///'
+ '/// (13/31): ///'
+ '/// - will not install ///'
+ '/// (14/31): simpleLicense\ShortLicenseShared.oxt ///'
+ '/// - ExtensionSoftwareLicenseAgreement dialog exists ///'
+ '/// - installs and is enabled ///'
+ '/// (15/31): dependencies\broken-dependency.oxt ///'
+ '/// - broken-dependency.oxt/description.xml contains data which cannot be parsed. ///'
+ '/// - will not install ///'
+ '/// (16/31): dependencies\double-dependencies.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/2): Dependency 1 ///'
+ '/// (2/2): Dependency 2 ///'
+ '/// - will not install ///'
+ '/// (17/31): dependencies\empty-dependencies.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (18/31): dependencies\funny-dependency.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/1): & < > ' " > ' tab . crlf ///'
+ '/// . em-dash�;. line-separator?. paragraph-separator?. xxxxxxxxxxx... ///'
+ '/// - will not install ///'
+ '/// (19/31): dependencies\license-dependency.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/1): Dependency ///'
+ '/// - will not install ///'
+ '/// (20/31): dependencies\many-dependencies.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/20): Dependency 1 ///'
+ '/// (2/20): Dependency 2 ///'
+ '/// (3/20): Dependency 3 ///'
+ '/// (4/20): Dependency 4 ///'
+ '/// (5/20): Dependency 5 ///'
+ '/// (6/20): Dependency 6 ///'
+ '/// (7/20): Dependency 7 ///'
+ '/// (8/20): Dependency 8 ///'
+ '/// (9/20): Dependency 9 ///'
+ '/// (10/20): Dependency 10 ///'
+ '/// (11/20): Dependency 11 ///'
+ '/// (12/20): Dependency 12 ///'
+ '/// (13/20): Dependency 13 ///'
+ '/// (14/20): Dependency 14 ///'
+ '/// (15/20): Dependency 15 ///'
+ '/// (16/20): Dependency 16 ///'
+ '/// (17/20): Dependency 17 ///'
+ '/// (18/20): Dependency 18 ///'
+ '/// (19/20): Dependency 19 ///'
+ '/// (20/20): Dependency 20 ///'
+ '/// - will not install ///'
+ '/// (21/31): dependencies\no-dependencies.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (22/31): dependencies\no-description.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (23/31): dependencies\unknown-dependency.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/1): Unknown ///'
+ '/// - will not install ///'
+ '/// (24/31): dependencies\version21.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (25/31): dependencies\version10000.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/1): Unknown ///'
+ '/// - will not install ///'
+ '/// (26/31): dependencies\version21ns.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (27/31): dependencies\version21other.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/1): Unknown ///'
+ '/// - will not install ///'
+ '/// (25/31): dependencies\version25.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (25/31): dependencies\version30.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (25/31): dependencies\version31.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/1): Unknown ///'
+ '/// - will not install ///'
+ '/// (27/31): dependencies\version21other.oxt ///'
+ '/// - UnsatisfiedDependencies dialog exists ///'
+ '/// (1/1): Unknown ///'
+ '/// (30/31): dependencies\versionempty.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (31/31): dependencies\versionnone.oxt ///'
+ '/// - installs and is enabled ///'
+ '/// (32/41): versions/plain.oxt
+ '/// - installs and is enabled ///'
+ '/// (33/41): versions/plain.oxt
+ '/// - You are about to install version 1.02.4.7.0 of the extension org.openoffice.legacy.plain.oxt. That version is already installed.
+ '/// - installs and is enabled ///'
+ '/// (34/41): versions/version_none/plain.oxt
+ '/// - You are about to install version 0 of the extension org.openoffice.legacy.plain.oxt. The newer version 1.02.4.7.0 is already installed.
+ '/// - installs and is enabled ///'
+ '/// (35/41): versions/version_1.2.3/plain.oxt
+ '/// - You are about to install version 1.2.3 of the extension org.openoffice.legacy.plain.oxt. The older version 0 is already installed.
+ '/// - installs and is enabled ///'
+ '/// (36/41): versions/version_1.2.3/plain.oxt
+ '/// - You are about to install version 1.2.3 of the extension org.openoffice.legacy.plain.oxt. That version is already installed.
+ '/// - installs and is enabled ///'
+ '/// (37/41): versions/version_0.0/plain.oxt
+ '/// - You are about to install version 0.0 of the extension org.openoffice.legacy.plain.oxt. The newer version 1.2.3 is already installed.
+ '/// - installs and is enabled ///'
+ '/// (38/41): versions/version_1.2.4.7/plain.oxt
+ '/// - You are about to install version 1.2.4.7 of the extension org.openoffice.legacy.plain.oxt. The older version 0.0 is already installed.
+ '/// - installs and is enabled ///'
+ '/// (39/41): versions/version_1.02.4.7.0/plain.oxt
+ '/// - You are about to install version 1.02.4.7.0 of the extension org.openoffice.legacy.plain.oxt. That version is already installed.
+ '/// - installs and is enabled ///'
+ '/// (40/41): versions/version_1.2.3/plain.oxt
+ '/// - You are about to install version 1.2.3 of the extension org.openoffice.legacy.plain.oxt. The newer version 1.02.4.7.0 is already installed.
+ '/// - installs and is enabled ///'
+ '/// (41/41): versions/version_1.2.15.3/plain.oxt
+ '/// - You are about to install version 1.2.15.3 of the extension org.openoffice.legacy.plain.oxt. The older version 1.2.3 is already installed.
+
+ dim j,b,i,a,x,y as integer
+ dim sPath as string
+ dim aFiles(50) as string
+ dim aFeatures(50) as string
+ dim aFileList(50) as string
+ dim sTemp as string
+ dim sTemp2 as string
+ dim sTemp3 as string
+ dim sTemp4 as string
+ dim aTemp
+ dim aTemp2
+ dim sFirstStatus as string
+ dim bFound as boolean
+ dim aRemovePackages(50) as string
+ dim bFoundNumber as boolean
+ dim sLastVersion as string
+
+ sLastVersion = ""
+ ' want to start and work with just one document window
+ b = getDocumentCount
+ hFileCloseAll()
+ hNewDocument()
+
+ ' load about twenty one extension files, to test the features
+ ' the list tells the filename and in encoded numbers the features
+ ' a line looks like:
+ ' simpleLicense\LongLic.oxt;0,2,1,0
+ ' - the filename and the features are seperated by a semicolon
+ ' - the numbes for the features are seperated by colons
+ ' 1st number: Unsatisfied dependencies; if there are any, the number counts them; if there are none it is zero and the dialog won't come up
+ ' 2nd number: License; if there is one the value is 1; it it a long one, where the scroll button needs to be used it is 2; 3 if the license should not be accepted for testing purposes, if there is no license the value is zero
+ ' 3rd number: If the extension should successfully install the value is one, else zero.
+ ' 4th number: If an active is expected after selecting a file for installation the value is one, else zero.
+ ' 5th number: If active is expected the expected version information after selecting a file for installation the value is one, else zero and if an upgrade/downgrade is expected, the number is 2.
+
+ ' Base path for test files
+ sPath = convertPath(gTestToolPath+"extensions/optional/input/")
+ ' read filelist and expected features
+ ListRead(aFileList(), sPath+"files.txt")
+ a = listCount(aFileList())
+ printlog a
+ for i = 1 to a
+ aTemp = split (aFileList(i),";")
+ if uBound(aTemp()) >0 then
+ listAppend(aFiles(),aTemp(0))
+ listAppend(aFeatures(),aTemp(1))
+ endif
+ next i
+
+ ' there are some dependencys to languages...
+ if iSprache = 49 then
+ sTemp = aFeatures(4)
+ aFeatures(4) = aFeatures(5)
+ aFeatures(5) = sTemp
+ else
+ if iSprache <> 01 then
+ aFeatures(4) = aFeatures(5)
+ aFeatures(6) = aFeatures(5)
+ aFeatures(12) = aFeatures(5)
+ aFeatures(13) = aFeatures(5)
+ aFeatures(14) = aFeatures(5)
+ endif
+ endif
+ ' cleanup before starting; check that no extension from the list is installed right now; if remove it.
+ '/// Before starting, look into extension manager, if already a file is installed, that will be used in this test ///'
+ '/// Remove it. ///'
+ a = listCount(aFiles())
+ dim ii as integer
+ ToolsPackageManager
+ kontext "PackageManager"
+ If PackageManager.exists(10) then
+ BrowsePackages.typeKeys("<home>")
+ ii = 1
+ while (ii < BrowsePackages.getItemCount+1 )
+ kontext "PackageManager"
+ 'BrowsePackages.typeKeys("+")
+ 'BrowsePackages.typeKeys("<down>")
+ BrowsePackages.select ii
+ sTemp = BrowsePackages.getItemText (ii,1)
+ if right(sTemp,3) = "oxt" then
+ for x = 1 to a
+ sTemp3 = aFiles(x)
+ aTemp = split(sTemp3,"\")
+ if uBound(aTemp) < 1 then
+ aTemp = split(sTemp3,"/")
+ endif
+ sTemp3 = aTemp(uBound(aTemp))
+ if sTemp = sTemp3 then
+ qaErrorLog "Package is already installed, trying to remove it: '" + sTemp + "'"
+ if remove.isEnabled then
+ remove.click
+
+ kontext "Active"
+ if ( Active.exists( 2 ) ) then
+ Active.ok()
+ else
+ warnlog( "No confirmation dialog for Extension removal" )
+ endif
+
+ Kontext "AddingPackages"
+ y=0
+ while AddingPackages.exists(1) AND (y<30)
+ printlog "RemovingPackages..."
+ sleep 1
+ y=y+1
+ wend
+ kontext "PackageManager"
+ BrowsePackages.typeKeys("<up>")
+ x = 100
+ else
+ warnlog "Package is already installed and can't get removed: '" + sTemp + "'"
+ ii=ii+1
+ x = 101
+ endif
+ endif
+ next x
+ if x < 100 then
+ ii=ii+1
+ endif
+ else
+ ii=ii+1
+ endif
+ wend
+ kontext "PackageManager"
+ PackageManager.close
+ WaitSlot( 5000 )
+ endif
+
+ ' for every test file do...
+ a = listCount(aFiles())
+ for i = 1 to a
+ printlog "********** Test file ("+i+"/"+a+"): "+aFiles(i)
+ aTemp = split (aFeatures(i),",")
+ '/// call Tools - Package/Extension manager ///'
+ ToolsPackageManager
+ kontext "PackageManager"
+ If PackageManager.exists(10) then
+ '/// going to top of package list and explode every line, until the button 'Add' is enabled ///'
+ '/// should be 'My Packages' ///'
+ 'BrowsePackages.typeKeys("<home>")
+ 'sTemp = BrowsePackages.getSelText
+ 'sTemp2 = ""
+ 'while (Not Add.isEnabled AND (sTemp <> sTemp2))
+ ' BrowsePackages.typeKeys("+")
+ ' BrowsePackages.typeKeys("<down>")
+ ' sTemp2 = sTemp
+ ' sTemp = BrowsePackages.getSelText
+ 'wend
+ 'if sTemp = sTemp2 then
+ ' warnlog "Couldn't find a way to enable the Add button - aborting"
+ ' goto endsub
+ 'endif
+ 'printlog BrowsePackages.getSelText
+ '/// click button 'Add' ///'
+ try
+ Add.click
+ catch
+ warnlog "#i90870# extension manager deadlock/C++ runtimes"
+ exitrestarttheoffice
+ ToolsPackageManager
+ kontext "PackageManager"
+ Add.click
+ endcatch
+ '/// Add Package(s)... dialg comes up ///'
+ Kontext "OeffnenDlg"
+ if OeffnenDlg.exists(5) then
+ '/// put filename into field ///'
+ Dateiname.setText convertPath(sPath + aFiles(i))
+ printlog DateiTyp.getSelText
+ '/// press button 'Open' ///'
+ Oeffnen.click
+ else
+ warnlog "Add Package(s)... dialog didn't came up"
+ endif
+
+ 'Asking for whom to install; All: YES, Me: NO, nobody: Cancel
+ kontext
+ if active.exists(5) then
+ sTemp = active.getText
+ printlog "Messagebox: " + sTemp
+ ' We only want to handle the installation target here which only
+ ' pops up if we have the choice (rights to write to shared layer)
+ if active.getButtonCount = 3 then
+ try
+ active.yes
+ catch
+ warnlog( "Try...catch: Failed to click Yes-button" )
+ endcatch
+ else
+ printlog "No installation target message (this is probably a root-installation)"
+ endif
+ endif
+
+ '/// Progress dialog comes up ///'
+ Kontext "AddingPackages"
+ if AddingPackages.exists(1) then
+ printlog " - AddingPackages dialog exists"
+ 'DialogTest(AddingPackages)
+ endif
+
+ '/// If any error happens, an active comes up, telling what is wrong ///'
+ ' error is just a dialog with one button
+ ' version infos have two buttons
+ Kontext
+ if active.exists(5) then
+ sTemp = active.getText
+ select case active.getbuttoncount
+ case 1:
+ y = instr(sTemp, " ")
+ if cBool(aTemp(3)) then
+ printlog sTemp
+ else
+ warnlog sTemp
+ endif
+ case 2:
+ x = 0
+ if cBool(aTemp(4)) then
+ printlog "Version info message available."
+ else
+ warnlog "Version info message available, but not expected"
+ endif
+ printlog sTemp
+ bFoundNumber = false
+ aTemp2 = split(sTemp," ")
+ y = uBound(aTemp2)
+ while ((NOT bFoundNumber) AND (x < y))
+ stemp2 = left(aTemp2(x),1)
+ if isNumeric(stemp2) then
+ bFoundNumber = TRUE
+ printlog "Try to install version: " + aTemp2(x)
+ endif
+ x=x+1
+ wend
+ if NOT bFoundNumber then
+ warnlog "No version was mentioned in the version message!"
+ endif
+ bFoundNumber = false
+ while (NOT bFoundNumber AND x < y)
+ stemp2 = left(aTemp2(x),1)
+ if isNumeric(stemp2) then
+ bFoundNumber = TRUE
+ endif
+ x=x+1
+ wend
+ if aTemp(4) = "2" AND bFoundNumber then
+ printlog "Old version is: " + aTemp2(x-1)
+ elseif bFoundNumber then
+ warnlog "No old version expected: " + aTemp2(x-1)
+ elseif aTemp(4) = "2" then
+ warnlog "Old version expected, but not mentioned."
+ endif
+ end select
+ active.ok
+ else
+ if cBool(aTemp(3)) then
+ if i = 3 then
+ qaErrorLog "#i73367# "
+ else
+ warnlog "errormessage expected, but none came up."
+ endif
+ endif
+ endif
+
+ '/// If there are any unsatisfied dependencies, they are shown now ///'
+ Kontext "UnsatisfiedDependencies"
+ if UnsatisfiedDependencies.exists(10) then
+ if cBool(aTemp(0)) then
+ printlog " - UnsatisfiedDependencies dialog exists"
+ else
+ warnLog "UnsatisfiedDependencies are not expected but available"
+ endif
+ DialogTest(UnsatisfiedDependencies)
+ y = UnsatisfiedDependencyList.getItemCount
+ if cInt(aTemp(0)) <> y then
+ warnlog "Difference in dependencies; expected: " + aTemp(0) + "; found: " +y
+ endif
+ for x = 1 to y
+ printlog " ("+x+"/"+y+"): "+UnsatisfiedDependencyList.getItemText(x)
+ next x
+ '/// close dialog if available, extension will not be installed ///'
+ UnsatisfiedDependencies.close
+ else
+ if cBool(aTemp(0)) then
+ warnLog "UnsatisfiedDependencies expected but none shown."
+ endif
+ endif
+
+ '/// If there is a license, it is shown now ///'
+ Kontext "ExtensionSoftwareLicenseAgreement"
+ if ExtensionSoftwareLicenseAgreement.exists(10) then
+ if cBool(aTemp(1)) then
+ printlog " - ExtensionSoftwareLicenseAgreement dialog exists"
+ else
+ warnlog "ExtensionSoftwareLicenseAgreement are not expected but shown"
+ endif
+ if NOT Accept.isEnabled then
+ if cInt(aTemp(1)) = 2 then
+ printlog " Long License"
+ else
+ errorlog "Long License"
+ endif
+ else
+ if NOT cInt(aTemp(1)) = 2 then
+ printlog "Long License"
+ else
+ errorlog "Long License"
+ endif
+ endif
+ '/// scroll down until accept button is enabled, click accept button ///'
+ LicenseText.typeKeys ("<mod1 a>",true)
+ if Accept.isEnabled then
+ '/// for testing purposes click cancel one time - the extension should not get installed ///'
+ if cInt(aTemp(1)) = 3 then
+ ExtensionSoftwareLicenseAgreement.CANCEL
+ else
+ Accept.click
+ endif
+ else
+ qaErrorLog "Accept not enabled.yet"
+ while NOT Accept.isEnabled
+ ScrollDown.click
+ printlog "Scrolling..."
+ sleep 1
+ wend
+ '/// for testing purposes click cancel one time - the extension should not get installed ///'
+ if cInt(aTemp(1)) = 3 then
+ ExtensionSoftwareLicenseAgreement.CANCEL
+ else
+ Accept.click
+ endif
+ endif
+ else
+ if cBool(aTemp(1)) then
+ errorlog "ExtensionSoftwareLicenseAgreement dialog expected but not shown."
+ endif
+ endif
+
+ '/// There may come up another active right now, which would be an error ///'
+ Kontext
+ if active.exists(5) then
+ sTemp = active.getText
+ if i = 7 then
+ qaerrorlog "#i67452# " + sTemp
+ else
+ if i = 13 then
+ qaerrorlog "#i73307#" + stemp
+ else
+ warnlog sTemp
+ endif
+ endif
+ active.ok
+ endif
+
+ '/// the progress dialog is now available again ///'
+ Kontext "AddingPackages"
+ x=0
+ while AddingPackages.exists(1) AND (x<30)
+ printlog "AddingPackages..."
+ sleep 1
+ x=x+1
+ wend
+
+ '/// There may come up another active right now, which would be an error ///'
+ Kontext
+ if active.exists(5) then
+ sTemp = active.getText
+ warnlog sTemp
+ active.ok
+ endif
+
+ ' find out, if the extension got installed
+ kontext "PackageManager"
+ BrowsePackages.typeKeys("<home>")
+ BrowsePackages.typeKeys("+")
+ y = BrowsePackages.getItemCount
+ sTemp = aFiles(i)
+ aTemp2 = split(sTemp,"\")
+ if uBound(aTemp2) < 1 then
+ aTemp2 = split(sTemp,"/")
+ endif
+ sTemp = aTemp2(uBound(aTemp2))
+ printlog stemp
+ bFound = FALSE
+ for x = 1 to y
+ sTemp2 = BrowsePackages.getItemText(x,1)
+ printlog "("+x+"/"+y+"): "+sTemp2
+ ' Mechanism to detect a status change; report it only one time
+ sTemp3 = BrowsePackages.getItemText(x,3) ' enabled?
+ sTemp4 = BrowsePackages.getItemText(x,2) ' version
+ if sTemp3 <> "" AND sFirstStatus = "" then
+ sFirstStatus = sTemp3
+ else
+ if (sFirstStatus <> sTemp3) AND (sTemp3 <> "") AND (sFirstStatus <> "alreadyshown") then
+ qaErrorlog "#i67450# " + sFirstStatus + " <> " + sTemp3
+ sFirstStatus= "alreadyshown"
+ endif
+ endif
+ if sTemp3 <> "" then
+ printlog " +++ " + sTemp3
+ endif
+ if sTemp4 <> "" then
+ sLastVersion = sTemp4
+ printlog " Version:" + sTemp4
+ endif
+ if sTemp = sTemp2 then
+ listAppend(aRemovePackages(), sTemp)
+ if cBool(aTemp(2)) then
+ printlog "-------------------------------- Extension got installed"
+ bFound = TRUE
+ else
+ if i = 3 then
+ qaerrorLog "#i73367# "
+ else
+ warnLog "-------------------------------- Extension got installed, but shouldn't do that"
+ endif
+ endif
+ endif
+ next x
+ if NOT cBool(aTemp(2)) and bFound then
+ warnlog "not found"
+ endif
+ '/// Close extension manager ///'
+ PackageManager.OK
+ 'OK / Close
+ else
+ warnlog "Couldn't call Tools -> Package manager - aborting test at " + i
+ goto endsub
+ endif
+ next i
+
+ '/// after installing all extensions, remove them ///'
+ ' uninstall all components, that were installed
+ a = listCount(aRemovePackages())
+ ToolsPackageManager
+
+ kontext "PackageManager"
+ If PackageManager.exists(10) then
+
+ BrowsePackages.typeKeys("<home>")
+ waitslot()
+
+ ii = 1
+ while (ii < BrowsePackages.getItemCount +1)
+
+ wait( 2000 ) ' Required, Extension Manager needs time to populate
+ kontext "PackageManager"
+ 'BrowsePackages.typeKeys("+")
+ 'BrowsePackages.typeKeys("<down>")
+ sTemp2 = sTemp
+ BrowsePackages.select ii
+ waitslot()
+
+ sTemp = BrowsePackages.getItemText (ii,1)
+ if right(sTemp,3) = "oxt" then
+ for x = 1 to a
+ if sTemp = aRemovePackages(x) then
+ printlog "Package is installed, trying to remove it: '" + sTemp + "'"
+ if remove.isEnabled then
+ remove.click
+
+ kontext "Active"
+ if ( Active.exists( 2 ) ) then
+ Active.ok()
+ else
+ warnlog( "No confirmation for extension removal" )
+ endif
+
+ Kontext "AddingPackages"
+ y=0
+ while AddingPackages.exists(1) AND (y<30)
+ printlog "RemovingPackages..."
+ sleep 1
+ y=y+1
+ wend
+ kontext "PackageManager"
+ BrowsePackages.typeKeys("<up>")
+ x = 100
+ else
+ warnlog "Package can't get removed: '" + sTemp + "'"
+ ii=ii+1
+ endif
+ endif
+ next x
+ endif
+ ii = ii+1
+ wend
+ kontext "PackageManager"
+ hCloseDialog( PackageManager, "close" )
+ else
+ qaErrorLog "disabling installed extensions failed;"
+ endif
+ WaitSlot()
+ hFileCloseAll()
+endcase
+
+
diff --git a/testautomation/extensions/optional/includes/fileopen.inc b/testautomation/extensions/optional/includes/fileopen.inc
new file mode 100644
index 000000000000..8c3800f007d8
--- /dev/null
+++ b/testautomation/extensions/optional/includes/fileopen.inc
@@ -0,0 +1,103 @@
+'encoding UTF-8 Do not remove or change this line!
+'*******************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : CWS oxtsysint01 enables installing extensions via file open dialog
+'*
+'\******************************************************************************
+
+testcase tExtensionFileOpen
+
+ printlog( "Install an extension via File Open - new with CWS oxtsysint01" )
+
+ dim cString as string
+
+ if ( gBuild < 9305 ) then
+ printlog( "No testing for builds prior to 9305"
+ goto endsub
+ endif
+
+ const EXTENSION_NAME = "locationtest.oxt"
+ dim cPath as string
+ cPath = gTesttoolPath & "extensions/optional/input/path_to_extension/" & EXTENSION_NAME
+
+ hFileOpen( cPath )
+
+ kontext "Active"
+ if ( Active.exists() ) then
+ printlog( "Extension installation message found, accepting" )
+ printlog( Active.getText() )
+ Active.ok()
+ else
+ warnlog( "Extension installation message missing" )
+ endif
+
+ hExtensionRemoveGUI( EXTENSION_NAME )
+
+ printlog( "Verify that the Add Extension Dialog remembers the last used path..." )
+ hExtensionAddGUI( cPath, "" )
+
+ printlog( "Reopen Extension Manager UI, click Add.. and check the directory" )
+ ToolsPackageManager
+
+ kontext "PackageManager"
+ if ( PackageManager.exists( 3 ) ) then
+ Add.click()
+
+ Kontext "OeffnenDlg"
+ if ( OeffnenDlg.exists( 2 ) ) then
+
+ printlog( "Select the last item in the list which should be the extension" )
+ DateiAuswahl.select( Dateiauswahl.getItemCount() )
+ cString = DateiAuswahl.getSelText()
+ if ( cString <> EXTENSION_NAME ) then
+ warnlog( "Incorrect extension listed. Please check path and filename" )
+ printlog( "Expected: " & EXTENSION_NAME )
+ printlog( "Found...: " & cString )
+ printlog( "Issues: #i67122, #i92234" )
+ else
+ printlog( "Found correct extension, the dialog remembers the path" )
+ endif
+
+ kontext "OeffnenDlg"
+ OeffnenDlg.cancel()
+ else
+ warnlog( "Could not access Add Extensions Dialog" )
+ endif
+
+ kontext "PackageManager"
+ PackageManager.close()
+ else
+ warnlog( "Could not open Extension Manager GUI" )
+ endif
+
+ hExtensionRemoveGUI( EXTENSION_NAME )
+
+endcase
+
+
diff --git a/testautomation/extensions/optional/includes/help.inc b/testautomation/extensions/optional/includes/help.inc
new file mode 100644
index 000000000000..5e6aa357e4b6
--- /dev/null
+++ b/testautomation/extensions/optional/includes/help.inc
@@ -0,0 +1,213 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extensible help
+'*
+'\******************************************************************************
+
+testcase tExtensibleHelp
+
+ '///<h1>Extensible help</h1>
+
+ '///<u><pre>Synopsis</pre></u>Beginning with CWS ab38 extensions can extend the help application with index entries and content<br>
+ '///<u><pre>Specification document</pre></u><a href=http://specs.openoffice.org/appwide/help/ExtensibleHelp.odt>
+ '///+http://specs.openoffice.org/appwide/help/ExtensibleHelp.odt</a><br>
+ '///<u><pre>Files used:</pre></u>.../extensions/features/input/extensible_help/*.info, *.oxt<br>
+ '///<u><pre>Test case specification</pre></u>
+
+ ' This is the base path to the input directory where all workfiles are located
+ dim cExtName as string
+ dim cExtPath as string
+ cExtPath = gTesttoolPath & "extensions\optional\input\extensible_help\"
+ cExtPath = convertpath( cExtPath )
+
+ ' This is the configuration file for the test extensions. This approach was chosen
+ ' because the extensions have a lot in common but not enough to make a general
+ ' routine without any special cases. It is possible to add more extensions easily
+ ' by just configuring them in the config file. Ideally no canges to the test case
+ ' itself are required.
+ const CONFIG_FILE = "extension.info"
+ dim cCfgPath as string
+ cCfgPath = cExtPath
+ cCfgPath = convertpath( cCfgPath & CONFIG_FILE )
+
+ ' In this array we store the config file. Always make sure it is large enough
+ ' to hold the entire file
+ dim cCfgArray( 60 ) as string
+
+ ' Some returnvalues/status variables, general purpose
+ dim iStatus as integer
+ dim bStatus as boolean
+
+ ' Control variables for the outer loop (actions for each extension)
+ dim iCurrentExtension as integer
+ dim iExtensionCount as integer
+
+ ' Control variables for the inner loop (items to test for an extension)
+ dim cCurrentHelpItem as string
+ dim iCurrentHelpItem as integer
+ dim iHelpItemCount as integer
+
+ ' Values retrieved from the config file or the help content
+ dim cItem as string
+ dim cHead as string
+ dim cLine as string
+
+ ' Correct the position within the index list. If we have a main item with
+ ' sub-items we might need to move a few entries down in the list to get the
+ ' sub-items.
+ dim cMove as string
+ dim iMove as integer
+ dim iMoveDown as integer
+
+ do while ( getDocumentCount > 0 )
+ call hCloseDocument()
+ loop
+
+ '///<ul>
+ '///+<li>Open a writer document (so the help comes up for writer)</li>
+ gApplication = "WRITER"
+ call hNewDocument()
+ if ( getDocumentCount <> 1 ) then
+ warnlog( "Fatal: Unable to open new writer document" )
+ sResetTheOffice
+ goto endsub
+ endif
+
+ '///+<li>Read the config file - determine the number of test-extensions</li>
+ iStatus = hGetDataFileSection( cCfgPath, cCfgArray(), "files", "", "" )
+ iExtensionCount = int( hGetValueForKeyAsString( cCfgArray(), "count" ) )
+ printlog( "Read configuration for " & iExtensionCount & " files." )
+
+ '///+<li>Cycle through the configured test-extensions</li>
+ '///<ul>
+ for iCurrentExtension = 1 to iExtensionCount
+
+ '///+<li>Read the config file - get settings for current extension</li>
+ hGetDataFileSection( cCfgPath, cCfgArray(), iCurrentExtension, "", "" )
+ cExtPath = cExtPath & hGetValueForKeyAsString( cCfgArray(), "file" )
+ cExtName = hGetValueForKeyAsString( cCfgArray(), "name" )
+
+
+ '///+<li>Install the test-extension, cleanup and quit on failure</li>
+ iStatus = hExtensionAddGUI( cExtPath , "NoUpdate,NoLicense,InstallForUser,Verbose" )
+ if ( iStatus < 1 ) then
+ warnlog( "Fatal: Adding extension failed with rc = " & iStatus )
+ sResetTheOffice
+ goto endsub
+ endif
+
+ '///+<li>Open the help browser</li>
+ HelpContents
+ kontext "StarOfficeHelp"
+ if ( StarOfficeHelp.exists( 2 ) ) then
+
+ '///+<li>Switch to the index tabpage</li>
+ TabControl.setPage( IndexPage )
+ else
+ warnlog( "Unable to open help browser" )
+ hCloseDocument()
+ sResetTheOffice()
+ goto endsub
+ endif
+
+ '///+<li>Search the help index for the items described in the config file</li>
+ iHelpItemCount = int( hGetValueForKeyAsString( cCfgArray(), "items" ) )
+ printlog( "Testing " & iHelpItemCount & " items" )
+ '///<ul>
+ for iCurrentHelpItem = 1 to iHelpItemCount
+
+ printlog( "" )
+ printlog( "Testing item " & iCurrentHelpItem )
+
+ '///+<li>Get the test strings from the config file</li>
+ cItem = "hindex_" & iCurrentHelpItem
+ cMove = "h_move_" & iCurrentHelpItem
+ cHead = "header_" & iCurrentHelpItem
+ cItem = hGetValueForKeyAsString( cCfgArray(), cItem )
+ cHead = hGetValueForKeyAsString( cCfgArray(), cHead )
+ iMove = int( hGetValueForKeyAsString( cCfgArray(), cMove )
+
+ '///+<li>Enter the search term into the search field of the index page</li>
+ kontext "StarOfficeHelp"
+ SearchIndex.setText( cItem ) : WaitSlot()
+
+ for iMoveDown = 1 to iMove
+ SearchIndex.typeKeys( "<DOWN>" )
+ next iMoveDown
+
+ '///+<li>Display the associated help page (content) by clicking on &quot;Display&quot;</li>
+ DisplayIndex.click() : WaitSlot()
+
+ '///+<li>Get the header from the content</li>
+ kontext "HelpContent"
+ HelpContent.typeKeys( "<MOD1 HOME>" )
+ HelpContent.typeKeys( "<SHIFT RIGHT>" , len( cHead ) )
+ hUseAsyncSlot( "EditCopy" )
+ cLine = GetClipBoardText
+
+ '///+<li>Compare the config string with the header</li>
+ if ( cLine <> cHead ) then
+ if ( iCurrentHelpItem = 1 and gPlatGroup <> "Win95" ) then
+ qaerrorlog( "Header is incorrect, slower navigation on Unix(like)" )
+ else
+ warnlog( "Header is incorrect. Please check." )
+ endif
+ printlog( "Found...: " & cLine )
+ printlog( "Expected: " & cHead )
+ else
+ printlog( "The header is correct: " & cLine )
+ endif
+
+ next iCurrentHelpItem
+ '///</ul>
+
+ '///+<li>Close the help browser</li>
+ kontext "StarOfficeHelp"
+ StarOfficeHelp.typeKeys( "<MOD1 F4>" )
+
+ '///+<li>Remove the extension</li>
+ hExtensionRemoveGUI( cExtName )
+
+
+ next iCurrentExtension
+ '///</ul>
+
+ '///+<li>Close the writer document</li>
+ call hCloseDocument()
+ if ( getDocumentCount <> 0 ) then
+ warnlog( "Fatal: Failed to close writer document" )
+ sResetTheOffice
+ goto endsub
+ endif
+
+ '///</ul>
+
+endcase
+
diff --git a/testautomation/extensions/optional/includes/identifiers.inc b/testautomation/extensions/optional/includes/identifiers.inc
new file mode 100644
index 000000000000..dd4d42ca160d
--- /dev/null
+++ b/testautomation/extensions/optional/includes/identifiers.inc
@@ -0,0 +1,120 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Use unique identifiers instead of filenames for extensions
+'*
+'\******************************************************************************
+
+testcase tExtensionIdentifiers()
+
+ printlog( "Extension identifiers / reinstallation of extensions" )
+
+ if ( gBuild <= 9183 ) then
+ printlog( "Build does not support extension identifiers" )
+ goto endsub
+ endif
+
+
+ dim cExtensionPath( 2 ) as string
+ dim cCommonPath as string
+ dim cExtensionCount( 3 ) as integer
+ const EXTENSION_NAME = "identifier.oxt"
+ dim cExtensionFlags as string
+
+
+ ' paths to the extensions - the have identical names but different identifiers
+ cCommonPath = gTesttoolPath & "extensions\optional\input\identifier\"
+ cExtensionPath( 1 ) = convertpath( cCommonPath & "legacy\" & EXTENSION_NAME )
+ cExtensionPath( 2 ) = convertpath( cCommonPath & "explicit\" & EXTENSION_NAME )
+ cExtensionCount( 0 ) = hGetExtensionCount()
+
+ ' Install first extension
+ cExtensionFlags = "InstallForUser"
+ cExtensionCount( 1 ) = hExtensionAddGUI( cExtensionPath( 1 ), cExtensionFlags )
+ if ( cExtensionCount( 1 ) = cExtensionCount( 0 ) + 1 ) then
+ printlog( "Extension 1 was installed" )
+ else
+ warnlog( "Incorrect extension count: " & cExtensionCount( 1 ) )
+ endif
+
+ ' Install second extension
+ cExtensionFlags = "InstallForUser"
+ cExtensionCount( 2 ) = hExtensionAddGUI( cExtensionPath( 2 ), cExtensionFlags )
+ if ( cExtensionCount( 2 ) = cExtensionCount( 1 ) + 1 ) then
+ printlog( "Extension 2 was installed" )
+ else
+ warnlog( "Incorrect extension count: " & cExtensionCount( 2 ) )
+ endif
+
+ ' Install first extension again
+ cExtensionFlags = "InstallForUser,AllowUpdate"
+ cExtensionCount( 3 ) = hExtensionAddGUI( cExtensionPath( 1 ), cExtensionFlags )
+ if ( cExtensionCount( 3 ) = cExtensionCount( 2 ) ) then
+ printlog( "Extension 1 was installed, overwriting existing" )
+ endif
+
+
+ ' Install second extension again
+ cExtensionFlags = "InstallForUser,AllowUpdate"
+ cExtensionCount( 3 ) = hExtensionAddGUI( cExtensionPath( 2 ), cExtensionFlags )
+ if ( cExtensionCount( 3 ) = cExtensionCount( 2 ) ) then
+ printlog( "Extension 2 was installed, overwriting existing" )
+ endif
+
+ hExtensionRemoveGUI( EXTENSION_NAME )
+ hExtensionRemoveGUI( EXTENSION_NAME )
+
+ ' Install first extension
+ cExtensionFlags = "InstallForUser"
+ cExtensionCount( 1 ) = hExtensionAddGUI( cExtensionPath( 1 ), cExtensionFlags )
+ if ( cExtensionCount( 1 ) = cExtensionCount( 0 ) + 1 ) then
+ printlog( "Extension 1 was installed again" )
+ else
+ warnlog( "Extension 1 was not installed" )
+ endif
+
+ ' Install second extension
+ cExtensionFlags = "InstallForUser"
+ cExtensionCount( 2 ) = hExtensionAddGUI( cExtensionPath( 2 ), cExtensionFlags )
+ if ( cExtensionCount( 2 ) = cExtensionCount( 1 ) + 1 ) then
+ printlog( "Extension 2 was installed again" )
+ else
+ warnlog( "Extension 2 was not installed" )
+ endif
+
+ hExtensionRemoveGUI( EXTENSION_NAME )
+ hExtensionRemoveGUI( EXTENSION_NAME )
+
+ if ( hGetExtensionCount() <> cExtensionCount( 0 ) ) then
+ warnlog( "For some reason we have an unexpected number of extensions listed" )
+ else
+ printlog( "Extensions were handled correctly" )
+ endif
+
+endcase
diff --git a/testautomation/extensions/optional/includes/issue110083.inc b/testautomation/extensions/optional/includes/issue110083.inc
new file mode 100755
index 000000000000..8bd6c38dacee
--- /dev/null
+++ b/testautomation/extensions/optional/includes/issue110083.inc
@@ -0,0 +1,79 @@
+'encoding UTF-8 Do not remove or change this line!
+'*******************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : CWS sb112 fixes a problem with configuration schemas
+'*
+'\******************************************************************************
+
+testcase tExtensionIssue110083()
+
+ printlog( "Configuration/-schema .xcu/.xcs-files which might trigger exceptions from unopkg/Extension Manager" )
+
+ const NUMBER_OF_TEST_EXTENSIONS = 2
+
+ dim cExtensionNames( NUMBER_OF_TEST_EXTENSIONS ) as string
+ cExtensionNames( 1 ) = "LoggingOptions.xcs"
+ cExtensionNames( 2 ) = "Logging.xcu"
+
+ dim cErrorIdentifier( NUMBER_OF_TEST_EXTENSIONS ) as string
+ cErrorIdentifier( 1 ) = "no component element"
+ cErrorIdentifier( 2 ) = "no component element"
+
+ dim cExtensionPath as string
+ cExtensionPath = gTesttoolPath & "extensions/optional/input/issues/"
+
+ dim cExtension as string
+
+ dim iCurrentExtension as integer
+
+
+ for iCurrentExtension = 1 to NUMBER_OF_TEST_EXTENSIONS
+
+ cExtension = convertpath( cExtensionPath & cExtensionNames( iCurrentExtension ) )
+ hExtensionAddGUI( cExtension, "" )
+
+ kontext "Active"
+ if ( Active.exists() ) then
+ if ( instr( Active.getText, cErrorIdentifier( iCurrentExtension ) ) > 0 ) then
+ warnlog( "#i110083# - Error installing .xcs/.xcu-file: " & cExtensionNames( iCurrentExtension ) )
+ Active.ok()
+
+ kontext "PackageManager"
+ PackageManager.close()
+ else
+ warnlog( "Unexpected messagebox displayed. It cannot be handled" )
+ endif
+ else
+ hExtensionRemoveGUI( cExtensionNames( iCurrentExtension ) )
+ endif
+
+ next iCurrentExtension
+
+endcase
+
diff --git a/testautomation/extensions/optional/includes/location.inc b/testautomation/extensions/optional/includes/location.inc
new file mode 100644
index 000000000000..2c1cc45f0b07
--- /dev/null
+++ b/testautomation/extensions/optional/includes/location.inc
@@ -0,0 +1,133 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Test the extension locator service
+'*
+'\******************************************************************************
+
+testcase tExtensionLocation
+
+ printlog( "Test the extension locator service" )
+
+ ' The location of the sample extension and helper document
+ dim cWorkPath as string
+ cWorkPath = gTesttoolPath & "extensions\optional\input\path_to_extension\"
+ cWorkPath = convertpath( cWorkPath )
+
+ const EXTENSION_NAME = "locationtest.oxt"
+ const DOCUMENT_NAME = "LocationTest.odt"
+ const MACRO_NAME = "tExtensionLocation"
+
+ dim brc as boolean
+ dim irc as integer
+ dim cMsg as string
+
+ printlog( "Using extension: " & cWorkPath & EXTENSION_NAME )
+ printlog( "Using document.: " & cWorkPath & DOCUMENT_NAME )
+
+ brc = hFileOpen( cWorkPath & DOCUMENT_NAME )
+ if ( not brc ) then
+ brc = hAllowMacroExecution()
+ if ( not brc ) then
+ warnlog( "This is not the macro execution warning" )
+ endif
+ else
+ warnlog( "Macro execution warning is missing" )
+ endif
+
+ hMacroOrganizerRunMacro( MACRO_NAME )
+
+ kontext "Makro"
+ if ( Makro.exists( 1 ) ) then
+ warnlog( "Macro was not executed")
+ Makro.close()
+ goto endsub
+ else
+ printlog( "Macro was executed")
+ endif
+
+ kontext "active"
+ if ( active.exists( 2 ) ) then
+ cMsg = active.getText()
+ if ( cMsg <> "" ) then
+ warnlog( "The messagebox is not empty: " & cMsg )
+ else
+ printlog( "Messagebox is empty, good." )
+ endif
+ active.ok()
+ else
+ warnlog( "No messagebox displayed, please check that the macro is executed" )
+ endif
+
+ hExtensionAddGUI( cWorkPath & EXTENSION_NAME , "verbose,InstallForUser" )
+ hMacroOrganizerRunMacro( MACRO_NAME )
+
+ kontext "active"
+ if ( active.exists( 2 ) ) then
+ cMsg = active.getText()
+
+ if ( cMsg = "" ) then
+ warnlog( "The messagebox is empty, please check." )
+ else
+
+ printlog( "Content of messagebox: " & cMsg )
+
+ if ( instr( cMsg , "file:///" ) > 0 ) then
+ printlog( "Found File-URL" )
+ else
+ warnlog( "This does not appear to be a File-URL, please check!" )
+ endif
+
+ if ( instr( cMsg , EXTENSION_NAME ) > 0 ) then
+ printlog( "Extension string is present" )
+ else
+ warnlog( "Extension name seems to be missing" )
+ endif
+
+ if ( dir( cMsg ) = "" ) then
+ warnlog( "The extension could not be found at the expected location" )
+ else
+ printlog( "Extension found. Good." )
+ endif
+
+ endif
+ active.ok()
+ else
+ warnlog( "No messagebox displayed, please check that the macro is executed" )
+ endif
+
+ irc = hExtensionRemoveGUI( EXTENSION_NAME )
+ if ( irc <> 0 ) then
+ warnlog( "the extension was NOT cleanly removed" )
+ endif
+
+ hDestroyDocument()
+
+endcase
+
diff --git a/testautomation/extensions/optional/includes/meta-inf.inc b/testautomation/extensions/optional/includes/meta-inf.inc
new file mode 100644
index 000000000000..e9fbd91bf7b3
--- /dev/null
+++ b/testautomation/extensions/optional/includes/meta-inf.inc
@@ -0,0 +1,83 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Case sensitive META-INF in packages
+'*
+'\******************************************************************************
+
+testcase tLowerCaseMetaInf
+
+ printlog( "The filename <META-INF> in lowercase letters may prevent installation" )
+
+ dim cExtensionName as string
+ cExtensionName = "lowercasemetainf.oxt"
+
+ dim cExtensionPath as string
+ cExtensionPath = gTesttoolPath & "extensions\optional\input\errors\"
+ cExtensionPath = cExtensionPath & cExtensionName
+
+ dim irc as integer
+
+ printlog( "Install extension: " & cExtensionPath )
+ irc = hExtensionAddGUI( cExtensionPath, "AcceptLicense,InstallForUser" )
+
+ if ( irc > 0 ) then
+
+ printlog( "Check for unexpected messagebox" )
+ kontext "Active"
+ if ( Active.exists( 3 ) ) then
+ warnlog( "Extension should install after license has been displayed" )
+ printlog( Active.getText() )
+
+ printlog( "Trying to end test gracefully" )
+ Active.ok()
+
+ printlog( "Close Extension Manager" )
+ kontext "PackageManager"
+ if ( PackageManager.exists( 3 ) ) then
+ PackageManager.close()
+ else
+ warnlog( "Cannot access Extension Manager" )
+ endif
+
+ else
+ printlog( "No messagebox, good." )
+ endif
+
+ printlog( "Remove extension" )
+ hExtensionRemoveGUI( cExtensionName )
+
+ else
+
+ warnlog( "The extension was not installed" )
+
+ endif
+
+endcase
+
diff --git a/testautomation/extensions/optional/includes/online_update.inc b/testautomation/extensions/optional/includes/online_update.inc
new file mode 100644
index 000000000000..9f125c1c8a2c
--- /dev/null
+++ b/testautomation/extensions/optional/includes/online_update.inc
@@ -0,0 +1,114 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Hit update button for an extension
+'*
+'\******************************************************************************
+
+testcase tExtensionUpdate
+
+ 'warnlog( "#i81543# Office crashes when Testtool executes .exists() method on some objects" )
+ 'goto endsub
+
+ '///<h3>Hit update button for an extension</h3>
+ '///<ul>
+
+ const EXTENSION_NAME = "ShortLicense.oxt"
+
+ dim cSampleExtension as string
+ cSampleExtension = gTesttoolPath & "extensions\optional\input\simpleLicense\"
+ cSampleExtension = cSampleExtension & EXTENSION_NAME
+ cSampleExtension = convertpath( cSampleExtension )
+
+ dim iDocumentsBefore as integer
+ dim iDocumentsAfter as integer
+
+ printlog( "" )
+
+ if ( dir( cSampleExtension ) <> "" ) then
+ printlog( "Using extension: " & cSampleExtension )
+ else
+ warnlog( "Fatal: Sample extension could not be found: " & cSampleExtension )
+ goto endsub
+ endif
+ printlog( "" )
+
+
+ '///+<li>Create a new writer document</li>
+ hNewDocument()
+
+ '///+<li>get the number of open documents (should be 2)</li>
+ iDocumentsBefore = getDocumentCount()
+
+ '///+<li>Add sample extension &quot;ShortLicense&quot;</li>
+ hExtensionAddGUI( cSampleExtension , "InstallForUser,AcceptLicense,Verbose" )
+
+ '///+<li>Reopen the Extension Manager</li>
+ printlog( "Reopen Extension Manager" )
+ ToolsPackageManager
+
+ '///+<li>Click the &quot;Update&quot;-button</li>
+ printlog( "Click the update-button" )
+ kontext "PackageManager"
+ updates.click()
+
+ '///+<li>verif y that the update-Dialog is present</li>
+ kontext "ExtensionUpdate"
+ if ( ExtensionUpdate.exists() ) then
+ printlog( "Close update-dialog. Good." )
+ ExtensionUpdate.close()
+ else
+ warnlog( "Extension update dialog is missing" )
+ endif
+
+ '///+<li>Close the Extension Manager"
+ kontext "PackageManager"
+ if ( PackageManager.exists() ) then
+ printlog( "Close Extension Manager" )
+ PackageManager.close()
+ endif
+
+ '///+<li>verify that we still have the correct number of documents open</li>
+ iDocumentsAfter = getDocumentCount()
+ if ( iDocumentsAfter <> iDocumentsBefore ) then
+ warnlog( "Incorrect number of documents open. Please verify" )
+ else
+ printlog( "Correct number of documents are open. Good" )
+ endif
+
+ '///+<li>Close the second document</li>
+ hCloseDocument()
+
+ '///+<li>Remove the extension</li>
+ hExtensionRemoveGUI( EXTENSION_NAME )
+
+ '///</ul>
+
+endcase
+
diff --git a/testautomation/extensions/optional/includes/options.inc b/testautomation/extensions/optional/includes/options.inc
new file mode 100644
index 000000000000..e3cc82ba15f2
--- /dev/null
+++ b/testautomation/extensions/optional/includes/options.inc
@@ -0,0 +1,172 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Options for extensions
+'*
+'\******************************************************************************
+
+testcase tExtensionOptions1
+
+ '///<h3>Options for extensions</h3>
+ '///<ul>
+
+ const EXTENSION_NAME = "leaf1.oxt"
+ const OPTIONS_ITEM = "Writer leaf1 en-US"
+ const ITEM_POS_1 = 2
+ const ITEM_POS_2 = 35
+ const ITEM_POS_2_ASIAN = 38
+
+ dim cExtensionName as string
+
+ dim cExtensionPath as string
+ cExtensionPath = gTesttoolPath & "extensions\optional\input\options\"
+
+ dim cExtensionFile as string
+ cExtensionFile = convertpath( cExtensionPath & EXTENSION_NAME )
+
+ dim irc as integer
+ dim brc as boolean
+
+ '///+<li>Create one single writer document, the node will be merged into it</li>
+ do while ( getDocumentCount > 0 )
+ hCloseDocument()
+ loop
+ gApplication = "WRITER"
+ hNewDocument()
+ kontext "DocumentWriter"
+ DocumentWriter.typeKeys( "tExtensionOptions1" )
+
+
+ '///+<li>Open the Extension Manager, click Add</li>
+ '///+<li>Load the sample extension &quot;leaf1.oxt&quot;</li>
+ '///+<li>Close the Extension Manager</li>
+ printlog( "Add sample extension" )
+ hExtensionAddGUI( cExtensionFile, "verbose,InstallForUser" )
+
+ '///+<li>Reopen the Extension Manager</li>
+ printlog( "Reopen the Extension Manager" )
+ ToolsPackageManager
+ kontext "PackageManager"
+
+ '///+<li>Select the extension by name</li>
+ printlog( "Move from the top node to the sample extension" )
+ BrowsePackages.select( EXTENSION_NAME )
+
+ '///+<li>Test some control states for leaf1.oxt node</li>
+ printlog( "Verify control states" )
+ '///<ul>
+ '///+<li>Add... (enabled)</li>
+ if ( not Add.isEnabled() ) then
+ warnlog( "Add button should be enabled" )
+ endif
+
+ '///+<li>Remove (enabled)</li>
+ if ( not Remove.isEnabled() ) then
+ warnlog( "Remove button should be enabled" )
+ endif
+
+ '///+<li>Enable (hidden)</li>
+ if ( Enable.exists() ) then
+ warnlog( "Enable button should be hidden" )
+ endif
+
+ '///+<li>Disable (enabled)</li>
+ if ( not Disable.isEnabled() ) then
+ warnlog( "Disable button should be enabled" )
+ endif
+
+ '///+<li>Updates... (enabled)</li>
+ if ( not Updates.isEnabled() ) then
+ warnlog( "Updates button should be enabled" )
+ endif
+
+ '///+<li>Options... (enabled)</li>
+ if ( not Options.isEnabled() ) then
+ warnlog( "Options button should be enabled" )
+ endif
+ '///</ul>
+
+ '///+<li>Click on the Options... button</li>
+ printlog( "Open Options dialog from Extension Manager" )
+ kontext "PackageManager"
+ if ( options.exists() ) then
+ options.click()
+
+ '///+<li>Verify that the node &quot;leaf1&quot; is at pos 2 (absolute)</li>
+ printlog( "Verify presence and position of the leaf node" )
+ irc = hSelectOptionsItem( OPTIONS_ITEM , ITEM_POS_1 )
+ if ( irc > 0 ) then
+ warnlog( "Test failed" )
+ endif
+
+ '///+<li>Close Options dialog (cancel)
+ printlog( "Cancel Options dialog to get back to the Extension Manager" )
+ OptionenDlg.cancel()
+
+ else
+ warnlog( "Options button does not exist/implemented in CWS jl61" )
+ endif
+
+ '///+<li>Close the Extension Manager</li>
+ kontext "PackageManager"
+ printlog( "Close the Extension Manager" )
+ PackageManager.close()
+
+ '///+<li>Open Tools/Options</li>
+ printlog( "From the document open Tools/Options" )
+ ToolsOptions
+
+ printlog( "Verify presence and position of the leaf node" )
+ if ( bAsianLan ) then
+ irc = hSelectOptionsItem( OPTIONS_ITEM , ITEM_POS_2_ASIAN )
+ else
+ irc = hSelectOptionsItem( OPTIONS_ITEM , ITEM_POS_2 )
+ endif
+ if ( irc > 1 ) then
+ warnlog( "Node <" & OPTIONS_ITEM & "> was not found in Tools/Options" )
+ else
+ printlog( "Node is present. Good." )
+ endif
+
+ Kontext "OptionenDlg"
+ printlog( "Cancel Tools/Options to get back to the document" )
+ OptionenDlg.cancel()
+
+ '///+<li>Cleanup: Remove the sample extension</li>
+ printlog( "Remove sample extension" )
+ hExtensionRemoveGUI( EXTENSION_NAME )
+
+ '///+<li>Cleanup: Close document</li>
+ do while ( getDocumentCount > 0 )
+ hCloseDocument()
+ loop
+
+ '///<ul>
+endcase
+
diff --git a/testautomation/extensions/optional/includes/platforms.inc b/testautomation/extensions/optional/includes/platforms.inc
new file mode 100644
index 000000000000..3ba5d4b2bc7f
--- /dev/null
+++ b/testautomation/extensions/optional/includes/platforms.inc
@@ -0,0 +1,126 @@
+'encoding UTF-8 Do not remove or change this line!
+'*******************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Supported extension platforms
+'*
+'\******************************************************************************
+
+testcase tExtensionPlatforms
+
+ printlog( "Verify that only extensions designed for this platform are installed" )
+
+ dim cBasePath as string
+ cBasePath = gTesttoolPath & "extensions\optional\input\platform\"
+ cBasePath = convertpath( cBasePath )
+
+ dim cConfigFile as string
+ cConfigFile = cBasePath & "extensions.info"
+
+ dim iExtensionCount as integer
+ dim iCurrentExtension as integer
+
+ dim cCurrentExtensionName as string
+ dim cCurrentExtensionPath as string
+ dim cCurrentExtensionFile as string
+ dim cCurrentExtensionPlatform as string
+ dim cInfoArray( 200 ) as string
+
+ dim iStatus as integer
+ dim bShouldInstall as boolean
+
+ hGetDataFileSection( cConfigFile, cInfoArray(), "general", "", "" )
+ iExtensionCount = hGetValueForKeyAsInt( cInfoArray(), "ExtensionCount" )
+
+ for iCurrentExtension = 1 to iExtensionCount
+
+ hGetDataFileSection( cConfigFile, cInfoArray(), iCurrentExtension, "" , "" )
+ cCurrentExtensionFile = hGetValueForKeyAsString( cInfoArray(), "File" )
+ cCurrentExtensionName = hGetValueForKeyAsString( cInfoArray(), "Name" )
+ cCurrentExtensionPath = cBasePath & cCurrentExtensionFile
+ cCurrentExtensionPlatform = hGetValueForKeyAsString( cInfoArray(), "Platform" )
+
+ ' Find out whether the extension should install or not
+ select case ( cCurrentExtensionPlatform )
+ case "all" : bShouldInstall = TRUE
+ case gtSysName : bShouldInstall = TRUE
+ case gPlatGroup : bShouldInstall = TRUE
+ case gPlatform : bShouldInstall = TRUE
+ case else : bShouldInstall = FALSE
+ end select
+
+ printlog( "" )
+ printlog( "("+iCurrentExtension+"/"+iExtensionCount+") Current extension: " & cCurrentExtensionFile )
+ iStatus = hExtensionAddGUI( cCurrentExtensionPath, "InstallForUser, NoLicense, NoUpdate, Verbose" )
+
+ if ( iStatus = -7 or iStatus >= 0 ) then
+
+ kontext "Active"
+ if ( Active.exists( 2 ) ) then
+ select case ( bShouldInstall )
+ case TRUE : warnlog( "Extension should install but a warning is displayed" )
+ case FALSE : printlog( "Extension is for another platform, it is not installed" )
+ end select
+ Active.ok()
+ else
+ select case ( bShouldInstall )
+ case TRUE : printlog( "No platform mismatch warning. Good." )
+ case FALSE : warnlog( "Platform mismatch warning is missing!" )
+ end select
+ endif
+
+ kontext "PackageManager"
+ if ( PackageManager.exists( 1 ) ) then PackageManager.close()
+
+ iStatus = hExtensionRemoveGUI( cCurrentExtensionName )
+
+ select case ( iStatus )
+ case 0: ' Extension was removed successfully
+ select case ( bShouldInstall )
+ case TRUE : printlog( "Extension was installed and removed, good" )
+ case FALSE : warnlog( "The extension was removed but should not be installed" )
+ end select
+ case 3: ' Extension was not found at removal
+ select case ( bShouldInstall )
+ case TRUE : warnlog( "The extension should have been installed but is missing" )
+ case FALSE : printlog( "The extension was not installed. Good" )
+ end select
+ case else : ' Any other returnvalue is bad
+ warnlog( "Unexpected returnvalue from function: " & iStatus )
+ end select
+
+ else
+ warnlog( "Bad status returned, installation of extension failed" )
+ goto endsub
+ endif
+
+ next iCurrentExtension
+
+endcase
+
+
diff --git a/testautomation/extensions/optional/includes/publisher.inc b/testautomation/extensions/optional/includes/publisher.inc
new file mode 100644
index 000000000000..8df7f96724a9
--- /dev/null
+++ b/testautomation/extensions/optional/includes/publisher.inc
@@ -0,0 +1,286 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extension publisher and release notes
+'*
+'\******************************************************************************
+
+testcase tExtensionPublisher
+
+ printlog( "Extension Manager and Release Notes" )
+
+ if ( gISOLang <> "en-US" ) then
+ qaerrorlog( "Test does not handle translated strings, aborting" )
+ goto endsub
+ endif
+
+ ' Specification document
+ ' http://specs.openoffice.org/appwide/packagemanager/online_update_for_extensions.odt
+ ' http://specs.openoffice.org/appwide/packagemanager/online_update_for_extensions.odt
+
+ ' This is the path where the test-extensions and the info file are located
+ dim cBasePath as string
+ cBasePath = gTesttoolPath & "extensions/optional/input/publisher/"
+ cBasePath = convertpath( cBasePath )
+
+ ' Modify this file to add test cases or attributes
+ dim cInfoFile as string : cinfoFile = cBasePath & "extension.info"
+
+ ' The number of files to test. Information about this is stored in the file
+ ' specified by cInfoFile
+ dim iFileCount as integer
+ dim iCurrentFile as integer
+ dim iExtensionCount as integer
+ dim iExitCounter as integer
+ dim iCurrentExtensionCount as integer : iCurrentExtensionCount = 0
+ dim iTry as integer
+
+ ' This is the data we get from the configuration file
+ dim cCurrentFileName as string
+ dim cHasReleaseNotes as string
+ dim cReleaseNotes as string
+ dim cHasPublisher as string
+ dim cPublisher as string
+
+ ' This is where we store the configuration data. This array must have more
+ ' lines than cInfoFile contains.
+ dim cConfigArray( 60 ) as string
+
+ dim cTestString as string
+ dim bInstallationComplete as boolean : bInstallationComplete = false
+
+ iExtensionCount = hGetExtensionCount()
+
+
+ hGetDataFileSection( cInfoFile, cConfigArray(), "info", "", "" )
+ iFileCount = int( hGetValueForKeyAsString( cConfigArray() , "filecount" ) )
+ printlog( cInfoFile & " specifies " & iFileCount & " documents to load" )
+
+ iExtensionCount = iExtensionCount + iFileCount
+ printlog( "Expected number of extensions after installation: " & iExtensionCount )
+
+ printlog( "Installing extensions" )
+ for iCurrentFile = 1 to iFileCount
+
+ hGetDataFileSection( cInfoFile, cConfigArray(), iCurrentFile, "", "" )
+ cCurrentFileName = hGetValueForKeyAsString( cConfigArray() , "file" )
+ cCurrentFileName = cBasePath & cCurrentFileName
+ sExtensionCLI( "add" , cCurrentFileName )
+ wait 1000 ' This is required, sExtensionCLI is asynchronous.
+
+ next iCurrentFile
+ printlog( "Finished installing extensions, now verifying..." )
+
+ hNewDocument()
+ ToolsPackageManager
+
+ kontext "PackageManager"
+ if ( PackageManager.exists( 3 ) ) then
+
+ for iTry = 1 to 30
+
+ iCurrentExtensionCount = BrowsePackages.getItemCount()
+
+ if ( iCurrentExtensionCount = iExtensionCount ) then
+ printlog( "All extensions have been installed, good." )
+ bInstallationComplete = true
+ exit for
+ endif
+
+ printlog( "Waiting for listbox: Number of extensions: " & iCurrentExtensionCount )
+ wait( 1000 ) ' Required, the list takes considerable time to fill.
+
+ next iTry
+
+ ' If one or more extensions have not been added to the list we better abort the
+ ' test as the remaining parts need all extensions to be installed causing
+ ' lots of cryptig errors to appear in the log.
+ if ( not bInstallationComplete ) then
+ warnlog( "Not all extensions have been installed. Aborting test." )
+ kontext "PackageManager"
+ if ( PackageManager.exists() ) then
+ PackageManager.cancel()
+ PackageManager.notExists( 2 )
+ endif
+ goto endsub
+ endif
+ else
+ warnlog( "The Extension Manager did not open, Aborting test" )
+ goto endsub
+ endif
+
+
+ kontext "PackageManager"
+ printlog( "Going for the update-dialog" )
+ if ( Updates.isEnabled() ) then
+
+ printlog( "Updates-button is enabled" )
+ Updates.click()
+
+ kontext "ExtensionUpdate"
+ if ( ExtensionUpdate.exists( 2 ) ) then
+
+ iExitCounter = 0
+ do while ( AvailableUpdatesList.getItemCount() < iFileCount )
+ printlog( "Waiting for Updates List to populate..." )
+ wait( 1000 )
+ iExitCounter = iExitCounter + 1
+ if ( iExitCounter = 200 ) then
+ warnlog( "Update list for extensions is stalled (expected: 7), " & _
+ "found: " & AvailableUpdatesList.getItemCount() )
+ kontext "ExtensionUpdate"
+ ExtensionUpdate.close()
+ ExtensionUpdate.notExists( 2 )
+ kontext "PackageManager"
+ PackageManager.cancel()
+ PackageManager.notExists( 2 )
+ goto endsub
+ endif
+ loop
+
+ if ( ShowAllUpdates.exists() ) then
+ if ( ShowAllUpdates.isEnabled() ) then
+ warnlog( """Show all updates"" should be disabled" )
+ else
+ printlog( """Show all updates"" is disabled, good" )
+ endif
+ else
+ qaerrorlog( """Show all updates"" checkbox could not be accessed" )
+ endif
+
+ if ( AvailableUpdatesList.isEnabled() ) then
+
+ printlog( "Available updates list populated in " & iExitCounter & " seconds" )
+
+ if ( iExitCounter < 20 ) then
+
+ for iCurrentFile = 1 to iFileCount
+
+ hGetDataFileSection( cInfoFile, cConfigArray(), iCurrentFile, "", "" )
+ cCurrentFileName = hGetValueForKeyAsString( cConfigArray() , "display_name" )
+
+ cHasReleaseNotes = hGetValueForKeyAsString( cConfigArray() , "has_release_notes" )
+ cReleaseNotes = hGetValueForKeyAsString( cConfigArray() , "release_notes" )
+
+ cHasPublisher = hGetValueForKeyAsString( cConfigArray() , "has_publisher" )
+ cPublisher = hGetValueForKeyAsString( cConfigArray() , "publisher" )
+
+ AvailableUpdatesList.select( iCurrentFile )
+
+ if ( AvailableUpdatesList.getText() = cCurrentFileName ) then
+ printlog( "Testing extension: " & cCurrentFileName )
+
+ if ( lcase( cHasReleaseNotes ) = "yes" ) then
+ if ( ReleaseNotesText.isVisible() ) then
+ printlog( " - Release notes text is visible. Good." )
+ qaerrorlog( "#i84700# cannot read static text on extension update dialog" )
+ 'cTestString = ReleaseNotesText.getSelText()
+ 'if ( cTestString = cReleaseNotes ) then
+ ' printlog( " - Release notes text is ok." )
+ 'else
+ ' warnlog( "Incorrect release notes text" )
+ ' printlog( "Expected: " & cReleaseNotes )
+ ' printlog( "Found...: " & ctestString )
+ 'endif
+ else
+ warnlog( "Release notes text is not visible" )
+ endif
+ else
+ if ( ReleaseNotesText.isVisible() ) then
+ warnlog( "Release notes should not be visible" )
+ else
+ printlog( " - No release notes for this extension." )
+ endif
+ endif
+
+ if ( lcase( cHasPublisher ) = "yes" ) then
+ if ( UpdatePublisherText.isVisible() ) then
+ printlog( " - Publisher text is visible. Good." )
+ qaerrorlog( "#i84700# cannot read static text" )
+ 'cTestString = UpdatePublisherText.getText()
+ 'if ( cTestString = cPublisher ) then
+ ' printlog( " - Release notes text is ok." )
+ 'else
+ ' warnlog( "Incorrect release notes text" )
+ ' printlog( "Expected: " & cPublisher )
+ ' printlog( "Found...: " & ctestString )
+ 'endif
+ else
+ warnlog( "Publisher text is not visible." )
+ endif
+ else
+ if ( UpdatePublisherText.isVisible() ) then
+ warnlog( "Publisher should not be visible." )
+ else
+ printlog( " - No Publisher for this extension." )
+ endif
+ endif
+
+ else
+ printlog( "The extension is not at the expected position" )
+ printlog( "Expected: " & cCurrentFileName )
+ printlog( "Found...: " & AvailableUpdatesList.getText() )
+ exit for
+ endif
+
+ next iCurrentFile
+ else
+ warnlog( "Updates list not fully populated in 15 seconds -> fail" )
+ endif
+ else
+ warnlog( "No extensions available for update. Installation failed?" )
+ endif
+
+ kontext "ExtensionUpdate"
+ ExtensionUpdate.close()
+ ExtensionUpdate.notExists( 2 )
+ else
+ warnlog( "Extension Update dialog is not open" )
+ endif
+
+ else
+ warnlog( "Update-button on extension manager ui is disabled" )
+ endif
+
+ kontext "PackageManager"
+ PackageManager.close()
+ PackageManager.notExists( 2 )
+
+ printlog( "Removing extensions" )
+ for iCurrentFile = 1 to iFileCount
+ hGetDataFileSection( cInfoFile, cConfigArray(), iCurrentFile, "", "" )
+ cCurrentFileName = hGetValueForKeyAsString( cConfigArray() , "file" )
+ sExtensionCLI( "remove" , cCurrentFileName )
+ next iCurrentFile
+ printlog( "Finished removing extensions" )
+
+ hFileCloseAll()
+
+endcase
+
diff --git a/testautomation/extensions/optional/input/dependencies/broken-dependency.oxt b/testautomation/extensions/optional/input/dependencies/broken-dependency.oxt
new file mode 100755
index 000000000000..11bab0a95092
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/broken-dependency.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/double-dependencies.oxt b/testautomation/extensions/optional/input/dependencies/double-dependencies.oxt
new file mode 100755
index 000000000000..055c27ea53ba
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/double-dependencies.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/empty-dependencies.oxt b/testautomation/extensions/optional/input/dependencies/empty-dependencies.oxt
new file mode 100755
index 000000000000..ebb18dcbf51b
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/empty-dependencies.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/funny-dependency.oxt b/testautomation/extensions/optional/input/dependencies/funny-dependency.oxt
new file mode 100755
index 000000000000..9b683e6d1e4b
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/funny-dependency.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/license-dependency.oxt b/testautomation/extensions/optional/input/dependencies/license-dependency.oxt
new file mode 100755
index 000000000000..b01da4b5ca8a
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/license-dependency.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/many-dependencies.oxt b/testautomation/extensions/optional/input/dependencies/many-dependencies.oxt
new file mode 100755
index 000000000000..367568143778
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/many-dependencies.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/no-dependencies.oxt b/testautomation/extensions/optional/input/dependencies/no-dependencies.oxt
new file mode 100755
index 000000000000..6487eb66ae14
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/no-dependencies.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/no-description.oxt b/testautomation/extensions/optional/input/dependencies/no-description.oxt
new file mode 100755
index 000000000000..1e6579cd7dd4
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/no-description.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/unknown-dependency.oxt b/testautomation/extensions/optional/input/dependencies/unknown-dependency.oxt
new file mode 100755
index 000000000000..7c2a22c6d5da
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/unknown-dependency.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version10000.oxt b/testautomation/extensions/optional/input/dependencies/version10000.oxt
new file mode 100755
index 000000000000..c15b7a117c8c
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version10000.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version21.oxt b/testautomation/extensions/optional/input/dependencies/version21.oxt
new file mode 100755
index 000000000000..922b2795555c
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version21.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version21ns.oxt b/testautomation/extensions/optional/input/dependencies/version21ns.oxt
new file mode 100755
index 000000000000..5efb2ed90220
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version21ns.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version21other.oxt b/testautomation/extensions/optional/input/dependencies/version21other.oxt
new file mode 100755
index 000000000000..d88a8155af65
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version21other.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version25.oxt b/testautomation/extensions/optional/input/dependencies/version25.oxt
new file mode 100755
index 000000000000..07c71c3e5983
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version25.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version30.oxt b/testautomation/extensions/optional/input/dependencies/version30.oxt
new file mode 100644
index 000000000000..59b8dc545973
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version30.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version300.oxt b/testautomation/extensions/optional/input/dependencies/version300.oxt
new file mode 100644
index 000000000000..39840d84eeb1
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version300.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version301.oxt b/testautomation/extensions/optional/input/dependencies/version301.oxt
new file mode 100644
index 000000000000..6dfa188dddf0
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version301.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version31.oxt b/testautomation/extensions/optional/input/dependencies/version31.oxt
new file mode 100644
index 000000000000..843cb02f10ec
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version31.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version310.oxt b/testautomation/extensions/optional/input/dependencies/version310.oxt
new file mode 100644
index 000000000000..40b66db99b65
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version310.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version33.oxt b/testautomation/extensions/optional/input/dependencies/version33.oxt
new file mode 100644
index 000000000000..11525f5be3bd
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version33.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version330.oxt b/testautomation/extensions/optional/input/dependencies/version330.oxt
new file mode 100644
index 000000000000..abc13cdc07a2
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version330.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version34.oxt b/testautomation/extensions/optional/input/dependencies/version34.oxt
new file mode 100644
index 000000000000..772645635446
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version34.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/version937.oxt b/testautomation/extensions/optional/input/dependencies/version937.oxt
new file mode 100644
index 000000000000..11dda16cb48c
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/version937.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/versionempty.oxt b/testautomation/extensions/optional/input/dependencies/versionempty.oxt
new file mode 100755
index 000000000000..a06bb01294f4
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/versionempty.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/dependencies/versionnone.oxt b/testautomation/extensions/optional/input/dependencies/versionnone.oxt
new file mode 100755
index 000000000000..ace2a11651ff
--- /dev/null
+++ b/testautomation/extensions/optional/input/dependencies/versionnone.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/display_name/name1.oxt b/testautomation/extensions/optional/input/display_name/name1.oxt
new file mode 100755
index 000000000000..5a53690d6935
--- /dev/null
+++ b/testautomation/extensions/optional/input/display_name/name1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/display_name/name2.oxt b/testautomation/extensions/optional/input/display_name/name2.oxt
new file mode 100755
index 000000000000..f6cbcae3bcbd
--- /dev/null
+++ b/testautomation/extensions/optional/input/display_name/name2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/display_name/name3.oxt b/testautomation/extensions/optional/input/display_name/name3.oxt
new file mode 100755
index 000000000000..8df750ce62a5
--- /dev/null
+++ b/testautomation/extensions/optional/input/display_name/name3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/display_name/name4.oxt b/testautomation/extensions/optional/input/display_name/name4.oxt
new file mode 100755
index 000000000000..6ce4822e3701
--- /dev/null
+++ b/testautomation/extensions/optional/input/display_name/name4.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/display_name/name5.oxt b/testautomation/extensions/optional/input/display_name/name5.oxt
new file mode 100755
index 000000000000..56973be7817b
--- /dev/null
+++ b/testautomation/extensions/optional/input/display_name/name5.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/display_name/readme.txt b/testautomation/extensions/optional/input/display_name/readme.txt
new file mode 100755
index 000000000000..23173bde63dd
--- /dev/null
+++ b/testautomation/extensions/optional/input/display_name/readme.txt
@@ -0,0 +1,26 @@
+The folder contains extensions which use in the description.xml the following:
+-The <display-name> element
+The element contains localized child elements.
+
+To test the display name in the update dialog use the extensions in
+desktop/test/deployment/update/simple
+
+
+The following table shows what localized item is used, when the Office the locale
+en-US uses.
+
+
+Localization:
+
+Installed office: en-US
+ | publisher | release notes
+=============================================
+name1.oxt | en-US | en-US
+---------------------------------------------
+name2.oxt | en-US-region1 | en-US-region1
+---------------------------------------------
+name3.oxt | en | en
+---------------------------------------------
+name4.oxt | en-GB | en-GB
+---------------------------------------------
+name5.oxt | de | de
diff --git a/testautomation/extensions/optional/input/errors/i77436-README.txt b/testautomation/extensions/optional/input/errors/i77436-README.txt
new file mode 100755
index 000000000000..d98910a35192
--- /dev/null
+++ b/testautomation/extensions/optional/input/errors/i77436-README.txt
@@ -0,0 +1,21 @@
+This macro is used to verify the correct handling of the extension.
+Install the extension, copy the code to the basic-ide, run it. You should get two messageboxes listing some interfaces.
+This macro only works in conjunction with the sample extension in this directory.
+Note that the testtool uses the same macro from framework/tools/input/macros.txt otherwise we would have to implement yet
+another way of entering macros to the IDE.
+
+
+
+
+' The sample macro
+Sub Main
+'test service
+o= createUnoService("TestNamesComp")
+msgbox o.dbg_supportedInterfaces
+
+'test singleton
+ctx = getDefaultContext
+factory = ctx.getValueByName("org.openoffice.test.Names")
+msgbox o.dbg_supportedInterfaces
+
+End Sub
diff --git a/testautomation/extensions/optional/input/errors/i77436-extension.oxt b/testautomation/extensions/optional/input/errors/i77436-extension.oxt
new file mode 100755
index 000000000000..449014826a64
--- /dev/null
+++ b/testautomation/extensions/optional/input/errors/i77436-extension.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/errors/lowercasemetainf.oxt b/testautomation/extensions/optional/input/errors/lowercasemetainf.oxt
new file mode 100755
index 000000000000..117f27b3dc5f
--- /dev/null
+++ b/testautomation/extensions/optional/input/errors/lowercasemetainf.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/eventbinding/DialogComponent.odt b/testautomation/extensions/optional/input/eventbinding/DialogComponent.odt
new file mode 100755
index 000000000000..93909c631efa
--- /dev/null
+++ b/testautomation/extensions/optional/input/eventbinding/DialogComponent.odt
Binary files differ
diff --git a/testautomation/extensions/optional/input/eventbinding/DialogComponent.oxt b/testautomation/extensions/optional/input/eventbinding/DialogComponent.oxt
new file mode 100755
index 000000000000..04d8878c6f45
--- /dev/null
+++ b/testautomation/extensions/optional/input/eventbinding/DialogComponent.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/extensible_help/extensible_help_en.oxt b/testautomation/extensions/optional/input/extensible_help/extensible_help_en.oxt
new file mode 100755
index 000000000000..c113d59b6187
--- /dev/null
+++ b/testautomation/extensions/optional/input/extensible_help/extensible_help_en.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/extensible_help/extensible_help_en_de.oxt b/testautomation/extensions/optional/input/extensible_help/extensible_help_en_de.oxt
new file mode 100755
index 000000000000..73d43c2bce6c
--- /dev/null
+++ b/testautomation/extensions/optional/input/extensible_help/extensible_help_en_de.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/extensible_help/extension.info b/testautomation/extensions/optional/input/extensible_help/extension.info
new file mode 100755
index 000000000000..a88f6967d070
--- /dev/null
+++ b/testautomation/extensions/optional/input/extensible_help/extension.info
@@ -0,0 +1,59 @@
+# This file configures the tExtensionHelp test case found in the files
+# extension_help.bas and extension_help.inc.
+# It contains information about the extensions and the entries they create
+# within the help application
+# If you want to add more test files, just increase the "count=" entry and add
+# another section to the end of this file.
+
+# Note that - beginning with CWS jl76 we can have a display name for extensions
+# defined in the extension itself to be shown in the extension manager
+# The item "name=" was introduced to cope with this. Usually "file=" and "name="
+# are identical
+
+# The entries to search for in the help index are separated in three parts:
+# 1) the help index string (hindex) to be found in the index
+# 2) How many items to move down in the index to get the requested subpage
+# 3) the header of the content page (header)
+# both appended with an underscore and a unique, increasing number.
+
+[files]
+count=1
+
+[1]
+file=extensible_help_en.oxt
+name=extensible_help_en.oxt
+items=6
+
+hindex_1=ab38 test: All pages
+h_move_1=0
+header_1=Extension foo page1
+
+hindex_2=ab38 test: All pages
+h_move_2=1
+header_2=Extension foo page1
+
+hindex_3=ab38 test: All pages
+h_move_3=2
+header_3=Extension foo page2
+
+hindex_4=subfolder/anotherpage
+h_move_4=0
+header_4=Extension foo page2
+
+hindex_5=ab38 test: Single level entry page1
+h_move_5=0
+header_5=Extension foo page1
+
+hindex_6=ab38 test: Single level entry page1 for swriter and sdraw only
+h_move_6=0
+header_6=Extension foo page1
+
+
+[2]
+# This file is currently unconfigured.
+file=extensible_help_en_de.oxt
+name=extensible_help_en_de.oxt
+hindex_1=
+
+
+
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/build.xml b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/build.xml
new file mode 100755
index 000000000000..4428a95f551b
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/build.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<project name="TaskPaneComponent" default="default" basedir=".">
+ <description>Builds, tests, and runs the project extension project.</description>
+ <import file="nbproject/build-uno-impl.xml"/>
+ <!--
+
+ There exist several targets which are by default empty and which can be
+ used for execution of your tasks. These targets are usually executed
+ before and after some main targets. They are:
+
+ -pre-init: called before initialization of project properties
+ -post-init: called after initialization of project properties
+ -pre-compile: called before javac compilation
+ -post-compile: called after javac compilation
+ -pre-compile-single: called before javac compilation of single file
+ -post-compile-single: called after javac compilation of single file
+ -pre-compile-test: called before javac compilation of JUnit tests
+ -post-compile-test: called after javac compilation of JUnit tests
+ -pre-compile-test-single: called before javac compilation of single JUnit test
+ -post-compile-test-single: called after javac compilation of single JUunit test
+ -pre-jar: called before JAR building
+ -post-jar: called after JAR building
+ -pre-uno-package: called before OXT creation
+ -post-uno-package: called after OXT creation
+ -post-clean: called after cleaning build products
+
+ (Targets beginning with '-' are not intended to be called on their own.)
+
+ Example of inserting an obfuscator after compilation could look like this:
+
+ <target name="-post-compile">
+ <obfuscate>
+ <fileset dir="${build.classes.dir}"/>
+ </obfuscate>
+ </target>
+
+ For list of available properties check the imported
+ nbproject/build-impl.xml file.
+
+
+ Another way to customize the build is by overriding existing main targets.
+ The targets of interest are:
+
+ -init-macrodef-javac: defines macro for javac compilation
+ -init-macrodef-junit: defines macro for junit execution
+ -init-macrodef-debug: defines macro for class debugging
+ -init-macrodef-java: defines macro for class execution
+ -do-jar-with-manifest: JAR building (if you are using a manifest)
+ -do-jar-without-manifest: JAR building (if you are not using a manifest)
+ run: execution of project
+ -javadoc-build: Javadoc generation
+ test-report: JUnit report generation
+
+ An example of overriding the target for project execution could look like this:
+
+ <target name="run" depends="TypeBrowser2-impl.jar">
+ <exec dir="bin" executable="launcher.exe">
+ <arg file="${dist.jar}"/>
+ </exec>
+ </target>
+
+ Notice that the overridden target depends on the jar target and not only on
+ the compile target as the regular run target does. Again, for a list of available
+ properties which you can use, check the target you are overriding in the
+ nbproject/build-impl.xml file.
+
+ -->
+
+</project>
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-impl.xml b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-impl.xml
new file mode 100755
index 000000000000..f01ad79df06e
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-impl.xml
@@ -0,0 +1,794 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT ***
+*** EDIT ../build.xml INSTEAD ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+ - initialization
+ - compilation
+ - jar
+ - execution
+ - debugging
+ - javadoc
+ - junit compilation
+ - junit execution
+ - junit debugging
+ - applet
+ - cleanup
+
+ -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="TaskPaneComponent-impl">
+ <fail message="Please build using Ant 1.7.1 or higher.">
+ <condition>
+ <not>
+ <antversion atleast="1.7.1"/>
+ </not>
+ </condition>
+ </fail>
+ <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+ <!--
+ ======================
+ INITIALIZATION SECTION
+ ======================
+ -->
+ <target name="-pre-init">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="-pre-init" name="-init-private">
+ <property file="nbproject/private/config.properties"/>
+ <property file="nbproject/private/configs/${config}.properties"/>
+ <property file="nbproject/private/private.properties"/>
+ </target>
+ <target depends="-pre-init,-init-private" name="-init-user">
+ <property file="${user.properties.file}"/>
+ <!-- The two properties below are usually overridden -->
+ <!-- by the active platform. Just a fallback. -->
+ <property name="default.javac.source" value="1.4"/>
+ <property name="default.javac.target" value="1.4"/>
+ </target>
+ <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+ <property file="nbproject/configs/${config}.properties"/>
+ <property file="nbproject/project.properties"/>
+ </target>
+ <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+ <available file="${manifest.file}" property="manifest.available"/>
+ <condition property="main.class.available">
+ <and>
+ <isset property="main.class"/>
+ <not>
+ <equals arg1="${main.class}" arg2="" trim="true"/>
+ </not>
+ </and>
+ </condition>
+ <condition property="manifest.available+main.class">
+ <and>
+ <isset property="manifest.available"/>
+ <isset property="main.class.available"/>
+ </and>
+ </condition>
+ <condition property="do.mkdist">
+ <and>
+ <isset property="libs.CopyLibs.classpath"/>
+ <not>
+ <istrue value="${mkdist.disabled}"/>
+ </not>
+ </and>
+ </condition>
+ <condition property="manifest.available+main.class+mkdist.available">
+ <and>
+ <istrue value="${manifest.available+main.class}"/>
+ <isset property="do.mkdist"/>
+ </and>
+ </condition>
+ <condition property="manifest.available+mkdist.available">
+ <and>
+ <istrue value="${manifest.available}"/>
+ <isset property="do.mkdist"/>
+ </and>
+ </condition>
+ <condition property="manifest.available-mkdist.available">
+ <or>
+ <istrue value="${manifest.available}"/>
+ <isset property="do.mkdist"/>
+ </or>
+ </condition>
+ <condition property="manifest.available+main.class-mkdist.available">
+ <or>
+ <istrue value="${manifest.available+main.class}"/>
+ <isset property="do.mkdist"/>
+ </or>
+ </condition>
+ <condition property="have.tests">
+ <or/>
+ </condition>
+ <condition property="have.sources">
+ <or>
+ <available file="${src.dir}"/>
+ </or>
+ </condition>
+ <condition property="netbeans.home+have.tests">
+ <and>
+ <isset property="netbeans.home"/>
+ <isset property="have.tests"/>
+ </and>
+ </condition>
+ <condition property="no.javadoc.preview">
+ <and>
+ <isset property="javadoc.preview"/>
+ <isfalse value="${javadoc.preview}"/>
+ </and>
+ </condition>
+ <property name="run.jvmargs" value=""/>
+ <property name="javac.compilerargs" value=""/>
+ <property name="work.dir" value="${basedir}"/>
+ <condition property="no.deps">
+ <and>
+ <istrue value="${no.dependencies}"/>
+ </and>
+ </condition>
+ <property name="javac.debug" value="true"/>
+ <property name="javadoc.preview" value="true"/>
+ <property name="application.args" value=""/>
+ <property name="source.encoding" value="${file.encoding}"/>
+ <property name="runtime.encoding" value="${source.encoding}"/>
+ <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+ <and>
+ <isset property="javadoc.encoding"/>
+ <not>
+ <equals arg1="${javadoc.encoding}" arg2=""/>
+ </not>
+ </and>
+ </condition>
+ <property name="javadoc.encoding.used" value="${source.encoding}"/>
+ <property name="includes" value="**"/>
+ <property name="excludes" value=""/>
+ <property name="do.depend" value="false"/>
+ <condition property="do.depend.true">
+ <istrue value="${do.depend}"/>
+ </condition>
+ <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+ <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+ <length length="0" string="${endorsed.classpath}" when="greater"/>
+ </condition>
+ <property name="javac.fork" value="false"/>
+ </target>
+ <target name="-post-init">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+ <fail unless="src.dir">Must set src.dir</fail>
+ <fail unless="build.dir">Must set build.dir</fail>
+ <fail unless="dist.dir">Must set dist.dir</fail>
+ <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+ <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+ <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+ <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+ <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+ <fail unless="dist.jar">Must set dist.jar</fail>
+ </target>
+ <target name="-init-macrodef-property">
+ <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+ <attribute name="name"/>
+ <attribute name="value"/>
+ <sequential>
+ <property name="@{name}" value="${@{value}}"/>
+ </sequential>
+ </macrodef>
+ </target>
+ <target name="-init-macrodef-javac">
+ <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${src.dir}" name="srcdir"/>
+ <attribute default="${build.classes.dir}" name="destdir"/>
+ <attribute default="${javac.classpath}" name="classpath"/>
+ <attribute default="${includes}" name="includes"/>
+ <attribute default="${excludes}" name="excludes"/>
+ <attribute default="${javac.debug}" name="debug"/>
+ <attribute default="${empty.dir}" name="sourcepath"/>
+ <attribute default="${empty.dir}" name="gensrcdir"/>
+ <element name="customize" optional="true"/>
+ <sequential>
+ <property location="${build.dir}/empty" name="empty.dir"/>
+ <mkdir dir="${empty.dir}"/>
+ <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+ <src>
+ <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+ <include name="*"/>
+ </dirset>
+ </src>
+ <classpath>
+ <path path="@{classpath}"/>
+ </classpath>
+ <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <compilerarg line="${javac.compilerargs}"/>
+ <customize/>
+ </javac>
+ </sequential>
+ </macrodef>
+ <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${src.dir}" name="srcdir"/>
+ <attribute default="${build.classes.dir}" name="destdir"/>
+ <attribute default="${javac.classpath}" name="classpath"/>
+ <sequential>
+ <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+ <classpath>
+ <path path="@{classpath}"/>
+ </classpath>
+ </depend>
+ </sequential>
+ </macrodef>
+ <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${build.classes.dir}" name="destdir"/>
+ <sequential>
+ <fail unless="javac.includes">Must set javac.includes</fail>
+ <pathconvert pathsep="," property="javac.includes.binary">
+ <path>
+ <filelist dir="@{destdir}" files="${javac.includes}"/>
+ </path>
+ <globmapper from="*.java" to="*.class"/>
+ </pathconvert>
+ <delete>
+ <files includes="${javac.includes.binary}"/>
+ </delete>
+ </sequential>
+ </macrodef>
+ </target>
+ <target name="-init-macrodef-junit">
+ <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${includes}" name="includes"/>
+ <attribute default="${excludes}" name="excludes"/>
+ <attribute default="**" name="testincludes"/>
+ <sequential>
+ <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
+ <batchtest todir="${build.test.results.dir}"/>
+ <classpath>
+ <path path="${run.test.classpath}"/>
+ </classpath>
+ <syspropertyset>
+ <propertyref prefix="test-sys-prop."/>
+ <mapper from="test-sys-prop.*" to="*" type="glob"/>
+ </syspropertyset>
+ <formatter type="brief" usefile="false"/>
+ <formatter type="xml"/>
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg line="${run.jvmargs}"/>
+ </junit>
+ </sequential>
+ </macrodef>
+ </target>
+ <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+ <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+ <attribute default="${main.class}" name="name"/>
+ <attribute default="${debug.classpath}" name="classpath"/>
+ <attribute default="" name="stopclassname"/>
+ <sequential>
+ <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+ <classpath>
+ <path path="@{classpath}"/>
+ </classpath>
+ </nbjpdastart>
+ </sequential>
+ </macrodef>
+ <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+ <attribute default="${build.classes.dir}" name="dir"/>
+ <sequential>
+ <nbjpdareload>
+ <fileset dir="@{dir}" includes="${fix.classes}">
+ <include name="${fix.includes}*.class"/>
+ </fileset>
+ </nbjpdareload>
+ </sequential>
+ </macrodef>
+ </target>
+ <target name="-init-debug-args">
+ <property name="version-output" value="java version &quot;${ant.java.version}"/>
+ <condition property="have-jdk-older-than-1.4">
+ <or>
+ <contains string="${version-output}" substring="java version &quot;1.0"/>
+ <contains string="${version-output}" substring="java version &quot;1.1"/>
+ <contains string="${version-output}" substring="java version &quot;1.2"/>
+ <contains string="${version-output}" substring="java version &quot;1.3"/>
+ </or>
+ </condition>
+ <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+ <istrue value="${have-jdk-older-than-1.4}"/>
+ </condition>
+ <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+ <os family="windows"/>
+ </condition>
+ <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+ <isset property="debug.transport"/>
+ </condition>
+ </target>
+ <target depends="-init-debug-args" name="-init-macrodef-debug">
+ <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+ <attribute default="${main.class}" name="classname"/>
+ <attribute default="${debug.classpath}" name="classpath"/>
+ <element name="customize" optional="true"/>
+ <sequential>
+ <java classname="@{classname}" dir="${work.dir}" fork="true">
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg line="${debug-args-line}"/>
+ <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+ <jvmarg line="${run.jvmargs}"/>
+ <classpath>
+ <path path="@{classpath}"/>
+ </classpath>
+ <syspropertyset>
+ <propertyref prefix="run-sys-prop."/>
+ <mapper from="run-sys-prop.*" to="*" type="glob"/>
+ </syspropertyset>
+ <customize/>
+ </java>
+ </sequential>
+ </macrodef>
+ </target>
+ <target name="-init-macrodef-java">
+ <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+ <attribute default="${main.class}" name="classname"/>
+ <attribute default="${run.classpath}" name="classpath"/>
+ <element name="customize" optional="true"/>
+ <sequential>
+ <java classname="@{classname}" dir="${work.dir}" fork="true">
+ <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+ <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+ <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+ <jvmarg line="${run.jvmargs}"/>
+ <classpath>
+ <path path="@{classpath}"/>
+ </classpath>
+ <syspropertyset>
+ <propertyref prefix="run-sys-prop."/>
+ <mapper from="run-sys-prop.*" to="*" type="glob"/>
+ </syspropertyset>
+ <customize/>
+ </java>
+ </sequential>
+ </macrodef>
+ </target>
+ <target name="-init-presetdef-jar">
+ <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+ <jar compress="${jar.compress}" jarfile="${dist.jar}">
+ <j2seproject1:fileset dir="${build.classes.dir}"/>
+ </jar>
+ </presetdef>
+ </target>
+ <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
+ <!--
+ ===================
+ COMPILATION SECTION
+ ===================
+ -->
+ <target name="-deps-jar-init" unless="built-jar.properties">
+ <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+ <delete file="${built-jar.properties}" quiet="true"/>
+ </target>
+ <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+ <echo level="warn" message="Cycle detected: TaskPaneComponent was already built"/>
+ </target>
+ <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+ <mkdir dir="${build.dir}"/>
+ <touch file="${built-jar.properties}" verbose="false"/>
+ <property file="${built-jar.properties}" prefix="already.built.jar."/>
+ <antcall target="-warn-already-built-jar"/>
+ <propertyfile file="${built-jar.properties}">
+ <entry key="${basedir}" value=""/>
+ </propertyfile>
+ </target>
+ <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+ <target depends="init" name="-check-automatic-build">
+ <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+ </target>
+ <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+ <antcall target="clean"/>
+ </target>
+ <target depends="init,deps-jar" name="-pre-pre-compile">
+ <mkdir dir="${build.classes.dir}"/>
+ </target>
+ <target name="-pre-compile">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target if="do.depend.true" name="-compile-depend">
+ <pathconvert property="build.generated.subdirs">
+ <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+ <include name="*"/>
+ </dirset>
+ </pathconvert>
+ <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+ </target>
+ <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
+ <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+ <copy todir="${build.classes.dir}">
+ <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+ </copy>
+ </target>
+ <target name="-post-compile">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+ <target name="-pre-compile-single">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+ <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+ <j2seproject3:force-recompile/>
+ <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+ </target>
+ <target name="-post-compile-single">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+ <!--
+ ====================
+ JAR BUILDING SECTION
+ ====================
+ -->
+ <target depends="init" name="-pre-pre-jar">
+ <dirname file="${dist.jar}" property="dist.jar.dir"/>
+ <mkdir dir="${dist.jar.dir}"/>
+ </target>
+ <target name="-pre-jar">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available-mkdist.available">
+ <j2seproject1:jar/>
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class-mkdist.available">
+ <j2seproject1:jar manifest="${manifest.file}"/>
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
+ <j2seproject1:jar manifest="${manifest.file}">
+ <j2seproject1:manifest>
+ <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
+ </j2seproject1:manifest>
+ </j2seproject1:jar>
+ <echo>To run this application from the command line without Ant, try:</echo>
+ <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+ <property location="${dist.jar}" name="dist.jar.resolved"/>
+ <pathconvert property="run.classpath.with.dist.jar">
+ <path path="${run.classpath}"/>
+ <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+ </pathconvert>
+ <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
+ <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+ <pathconvert property="run.classpath.without.build.classes.dir">
+ <path path="${run.classpath}"/>
+ <map from="${build.classes.dir.resolved}" to=""/>
+ </pathconvert>
+ <pathconvert pathsep=" " property="jar.classpath">
+ <path path="${run.classpath.without.build.classes.dir}"/>
+ <chainedmapper>
+ <flattenmapper/>
+ <globmapper from="*" to="lib/*"/>
+ </chainedmapper>
+ </pathconvert>
+ <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+ <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+ <fileset dir="${build.classes.dir}"/>
+ <manifest>
+ <attribute name="Main-Class" value="${main.class}"/>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+ </manifest>
+ </copylibs>
+ <echo>To run this application from the command line without Ant, try:</echo>
+ <property location="${dist.jar}" name="dist.jar.resolved"/>
+ <echo>java -jar "${dist.jar.resolved}"</echo>
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+mkdist.available" name="-do-jar-with-libraries-without-mainclass" unless="main.class.available">
+ <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+ <pathconvert property="run.classpath.without.build.classes.dir">
+ <path path="${run.classpath}"/>
+ <map from="${build.classes.dir.resolved}" to=""/>
+ </pathconvert>
+ <pathconvert pathsep=" " property="jar.classpath">
+ <path path="${run.classpath.without.build.classes.dir}"/>
+ <chainedmapper>
+ <flattenmapper/>
+ <globmapper from="*" to="lib/*"/>
+ </chainedmapper>
+ </pathconvert>
+ <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+ <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+ <fileset dir="${build.classes.dir}"/>
+ <manifest>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+ </manifest>
+ </copylibs>
+ </target>
+ <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.mkdist" name="-do-jar-with-libraries-without-manifest" unless="manifest.available">
+ <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+ <pathconvert property="run.classpath.without.build.classes.dir">
+ <path path="${run.classpath}"/>
+ <map from="${build.classes.dir.resolved}" to=""/>
+ </pathconvert>
+ <pathconvert pathsep=" " property="jar.classpath">
+ <path path="${run.classpath.without.build.classes.dir}"/>
+ <chainedmapper>
+ <flattenmapper/>
+ <globmapper from="*" to="lib/*"/>
+ </chainedmapper>
+ </pathconvert>
+ <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+ <copylibs compress="${jar.compress}" jarfile="${dist.jar}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+ <fileset dir="${build.classes.dir}"/>
+ <manifest>
+ <attribute name="Class-Path" value="${jar.classpath}"/>
+ </manifest>
+ </copylibs>
+ </target>
+ <target name="-post-jar">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-jar-with-libraries-without-mainclass,-do-jar-with-libraries-without-manifest,-post-jar" description="Build JAR." name="jar"/>
+ <!--
+ =================
+ EXECUTION SECTION
+ =================
+ -->
+ <target depends="init,compile" description="Run a main class." name="run">
+ <j2seproject1:java>
+ <customize>
+ <arg line="${application.args}"/>
+ </customize>
+ </j2seproject1:java>
+ </target>
+ <target name="-do-not-recompile">
+ <property name="javac.includes.binary" value=""/>
+ </target>
+ <target depends="init,compile-single" name="run-single">
+ <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+ <j2seproject1:java classname="${run.class}"/>
+ </target>
+ <target depends="init,compile-test-single" name="run-test-with-main">
+ <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+ <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+ </target>
+ <!--
+ =================
+ DEBUGGING SECTION
+ =================
+ -->
+ <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+ <j2seproject1:nbjpdastart name="${debug.class}"/>
+ </target>
+ <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+ <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+ </target>
+ <target depends="init,compile" name="-debug-start-debuggee">
+ <j2seproject3:debug>
+ <customize>
+ <arg line="${application.args}"/>
+ </customize>
+ </j2seproject3:debug>
+ </target>
+ <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+ <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+ <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+ </target>
+ <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+ <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+ <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+ <j2seproject3:debug classname="${debug.class}"/>
+ </target>
+ <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+ <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+ <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+ <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+ </target>
+ <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+ <target depends="init" name="-pre-debug-fix">
+ <fail unless="fix.includes">Must set fix.includes</fail>
+ <property name="javac.includes" value="${fix.includes}.java"/>
+ </target>
+ <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+ <j2seproject1:nbjpdareload/>
+ </target>
+ <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+ <!--
+ ===============
+ JAVADOC SECTION
+ ===============
+ -->
+ <target depends="init" name="-javadoc-build">
+ <mkdir dir="${dist.javadoc.dir}"/>
+ <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+ <classpath>
+ <path path="${javac.classpath}"/>
+ </classpath>
+ <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+ <filename name="**/*.java"/>
+ </fileset>
+ <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+ <include name="**/*.java"/>
+ </fileset>
+ </javadoc>
+ </target>
+ <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+ <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+ </target>
+ <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+ <!--
+ =========================
+ JUNIT COMPILATION SECTION
+ =========================
+ -->
+ <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+ <mkdir dir="${build.test.classes.dir}"/>
+ </target>
+ <target name="-pre-compile-test">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target if="do.depend.true" name="-compile-test-depend">
+ <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir=""/>
+ </target>
+ <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+ <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir=""/>
+ <copy todir="${build.test.classes.dir}"/>
+ </target>
+ <target name="-post-compile-test">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+ <target name="-pre-compile-test-single">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+ <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+ <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+ <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="" srcdir=""/>
+ <copy todir="${build.test.classes.dir}"/>
+ </target>
+ <target name="-post-compile-test-single">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+ <!--
+ =======================
+ JUNIT EXECUTION SECTION
+ =======================
+ -->
+ <target depends="init" if="have.tests" name="-pre-test-run">
+ <mkdir dir="${build.test.results.dir}"/>
+ </target>
+ <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+ <j2seproject3:junit testincludes="**/*Test.java"/>
+ </target>
+ <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+ <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+ </target>
+ <target depends="init" if="have.tests" name="test-report"/>
+ <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+ <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+ <target depends="init" if="have.tests" name="-pre-test-run-single">
+ <mkdir dir="${build.test.results.dir}"/>
+ </target>
+ <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+ <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+ <j2seproject3:junit excludes="" includes="${test.includes}"/>
+ </target>
+ <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+ <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+ </target>
+ <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+ <!--
+ =======================
+ JUNIT DEBUGGING SECTION
+ =======================
+ -->
+ <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
+ <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+ <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
+ <delete file="${test.report.file}"/>
+ <mkdir dir="${build.test.results.dir}"/>
+ <j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
+ <customize>
+ <syspropertyset>
+ <propertyref prefix="test-sys-prop."/>
+ <mapper from="test-sys-prop.*" to="*" type="glob"/>
+ </syspropertyset>
+ <arg value="${test.class}"/>
+ <arg value="showoutput=true"/>
+ <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+ <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+ </customize>
+ </j2seproject3:debug>
+ </target>
+ <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+ <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+ </target>
+ <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+ <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+ <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+ </target>
+ <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+ <!--
+ =========================
+ APPLET EXECUTION SECTION
+ =========================
+ -->
+ <target depends="init,compile-single" name="run-applet">
+ <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+ <j2seproject1:java classname="sun.applet.AppletViewer">
+ <customize>
+ <arg value="${applet.url}"/>
+ </customize>
+ </j2seproject1:java>
+ </target>
+ <!--
+ =========================
+ APPLET DEBUGGING SECTION
+ =========================
+ -->
+ <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+ <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+ <j2seproject3:debug classname="sun.applet.AppletViewer">
+ <customize>
+ <arg value="${applet.url}"/>
+ </customize>
+ </j2seproject3:debug>
+ </target>
+ <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+ <!--
+ ===============
+ CLEANUP SECTION
+ ===============
+ -->
+ <target name="-deps-clean-init" unless="built-clean.properties">
+ <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+ <delete file="${built-clean.properties}" quiet="true"/>
+ </target>
+ <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+ <echo level="warn" message="Cycle detected: TaskPaneComponent was already built"/>
+ </target>
+ <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+ <mkdir dir="${build.dir}"/>
+ <touch file="${built-clean.properties}" verbose="false"/>
+ <property file="${built-clean.properties}" prefix="already.built.clean."/>
+ <antcall target="-warn-already-built-clean"/>
+ <propertyfile file="${built-clean.properties}">
+ <entry key="${basedir}" value=""/>
+ </propertyfile>
+ </target>
+ <target depends="init" name="-do-clean">
+ <delete dir="${build.dir}"/>
+ <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+ </target>
+ <target name="-post-clean">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+ <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+ <target name="-check-call-dep">
+ <property file="${call.built.properties}" prefix="already.built."/>
+ <condition property="should.call.dep">
+ <not>
+ <isset property="already.built.${call.subproject}"/>
+ </not>
+ </condition>
+ </target>
+ <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+ <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+ <propertyset>
+ <propertyref prefix="transfer."/>
+ <mapper from="transfer.*" to="*" type="glob"/>
+ </propertyset>
+ </ant>
+ </target>
+</project>
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-uno-impl.xml b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-uno-impl.xml
new file mode 100755
index 000000000000..25b3f25f86c7
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/build-uno-impl.xml
@@ -0,0 +1,462 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** AUTOMATICALLY GENERATED - DO NOT EDIT ***
+*** EDIT ../build.xml INSTEAD ***
+-->
+<project name="TaskPaneComponentuno-impl" default="netbeans" basedir="..">
+ <description>Builds, tests, and runs an UNO project.</description>
+
+ <import file="build-impl.xml"/>
+
+ <!-- ================================================================================== -->
+
+ <target name="-uno-project-init" depends="-do-init">
+ <property file="nbproject/project-uno.properties"/>
+ <property name="build.uno.version" value="2.0.6"/>
+
+ <!-- set variablers from SDK and Office -->
+ <echo message="setting up UNO environment ..."/>
+ <property name="office.unopkg" value="${office.program.dir}${file.separator}unopkg"/>
+ <property name="office.soffice" value="${office.program.dir}${file.separator}soffice"/>
+
+ <property name="sdk.idl.dir" location="${oo.sdk.dir}${file.separator}idl"/>
+ <property name="sdk.idlc" value="${sdk.bin.dir}${file.separator}idlc"/>
+ <property name="sdk.regmerge" value="${ure.bin.dir}${file.separator}regmerge"/>
+ <property name="sdk.javamaker" value="${sdk.bin.dir}${file.separator}javamaker"/>
+
+ <dirname property="project.dir" file="build.xml"/>
+ <property name="uno.package.name" value="${project.dir}${file.separator}${dist.dir}${file.separator}${project.name}.oxt"/>
+ <property name="src.dir.absolute" value="${project.dir}${file.separator}${src.dir}"/>
+
+ <property name="idl.out" value="${project.dir}${file.separator}${build.dir}${file.separator}idl"/>
+ <property name="idl.classes.dir" value="${project.dir}${file.separator}${build.classes.dir}"/>
+ <property name="idl.out.urd" value="${idl.out}/urd"/>
+ <property name="idl.out.rdb" value="${idl.out}/rdb"/>
+ <property name="idl.rdb.name" value="types.rdb"/>
+ <property name="idl.rdb.fullpath" value="${idl.out.rdb}/${idl.rdb.name}"/>
+
+ <property name="images.base.dir" value="${build.dir}/img"/>
+ <property name="build.registry.dir" value="${build.dir}/cpreg"/>
+
+ <mkdir dir="${idl.out}"/>
+ <mkdir dir="${idl.out.urd}"/>
+ <mkdir dir="${idl.out.rdb}"/>
+ <mkdir dir="${images.base.dir}"/>
+ <mkdir dir="${build.registry.dir}"/>
+
+ <condition property="oo.version.three">
+ <equals arg1="${oo.version.number}" arg2="three"/>
+ </condition>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- handle images -->
+ <target name="-uno-images-condition" description="check images" depends="-uno-project-init">
+ <available file="${images.dir}" type="dir" property="images.required"/>
+ </target>
+
+ <target name="images" description="copy images" depends="-uno-images-condition" if="images.required">
+ <mkdir dir="${images.base.dir}/${images.dir}"/>
+ <copy todir="${images.base.dir}/${images.dir}">
+ <fileset dir="${images.dir}"/>
+ </copy>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- handle xcu/xcs files with package names -->
+
+ <target name="-uno-registryfiles-condition" description="check xcu and xcs files" depends="-uno-project-init">
+ <available file="${registry.dir}" type="dir" property="xcuxcs.required"/>
+ </target>
+
+ <target name="registry" description="copy registry files" depends="-uno-registryfiles-condition" if="xcuxcs.required">
+ <mkdir dir="${build.registry.dir}/${registry.dir}"/>
+ <copy todir="${build.registry.dir}/${registry.dir}">
+ <fileset dir="${registry.dir}" includes="**/*.xcu,**/*.xcs"/>
+ </copy>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="-uno-idl-idlc-condition" description="check idlc dependencies" depends="-uno-project-init">
+ <uptodate property="idlc.notRequired" targetfile ="${build.dir}/idlc.compile">
+ <srcfiles dir= "${src.dir}" includes="**/*.idl"/>
+ </uptodate>
+ </target>
+
+ <!-- compile UNO idl files: execution -->
+ <target name="-uno-idl-idlc" description="Compile the IDL Conditionally" depends="-uno-idl-idlc-condition" unless="idlc.notRequired">
+ <apply executable="${sdk.idlc}" dir="${office.program.dir}" failonerror="true">
+ <env key="PATH" path="${office.tool.path}"/>
+ <env key="LD_LIBRARY_PATH" path="${office.tool.path}"/>
+ <env key="DYLD_LIBRARY_PATH" path="${office.tool.path}"/>
+ <arg value="-C"/>
+ <arg value="-O"/>
+ <arg value="${idl.out.urd}"/>
+ <arg value="-I"/>
+ <arg value="${src.dir.absolute}"/>
+ <arg value="-I"/>
+ <arg value="${sdk.idl.dir}"/>
+ <fileset dir="${src.dir}" includes="**/*.idl" casesensitive="yes" id="idl.list.id"/>
+ </apply>
+ <!-- list for copying idl files in own jar -->
+ <property name="idl.file" refid="idl.list.id"/>
+ <propertyfile file="${idl.out}/idl_list.properties">
+ <entry key="idl.file.list" value="${idl.file}"/>
+ </propertyfile>
+ <replace file="${idl.out}/idl_list.properties" token=".idl" value=".class"/>
+ <replace file="${idl.out}/idl_list.properties" token=";" value=","/>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <!-- merge urd files: execution -->
+ <target name="-uno-idl-regmerge" description="Merge urd Files Conditionally" depends="-uno-idl-idlc,-uno-idl-idlc-condition" unless="idlc.notRequired">
+ <!-- to only extract the new files, delete the old rdb -->
+ <delete file="${idl.rdb.fullpath}"/>
+ <apply executable="${sdk.regmerge}" dir="${office.program.dir}" failonerror="true">
+ <env key="PATH" path="${office.tool.path}"/>
+ <env key="LD_LIBRARY_PATH" path="${office.tool.path}"/>
+ <env key="DYLD_LIBRARY_PATH" path="${office.tool.path}"/>
+ <arg file="${idl.rdb.fullpath}"/>
+ <arg value="/UCR"/>
+ <fileset dir="${idl.out.urd}" includes="**/*.urd" casesensitive="yes"/>
+ </apply>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <!-- should javamaker be executed -->
+ <target name="-uno-idl-javamaker-condition" description="check if rdb was created" depends="-uno-idl-regmerge,-uno-idl-idlc-condition">
+ <available file="${idl.rdb.name}" filepath="${idl.out.rdb}" property="javamaker.Required"/>
+ </target>
+
+ <!-- generate Java class files from type library: execution -->
+ <target name="-uno-idl-javamaker" depends="-uno-idl-regmerge,-uno-idl-idlc-condition,-uno-idl-javamaker-condition" if="javamaker.Required" unless="idlc.notRequired">
+ <echo message="generating java class files from rdb..."/>
+ <exec executable="${sdk.javamaker}" dir="${office.program.dir}" failonerror="true">
+ <env key="PATH" path="${office.tool.path}"/>
+ <env key="LD_LIBRARY_PATH" path="${office.tool.path}"/>
+ <env key="DYLD_LIBRARY_PATH" path="${office.tool.path}"/>
+ <arg value="-BUCR"/>
+ <arg value="-O"/>
+ <arg value="${idl.classes.dir}"/>
+ <arg file="${idl.rdb.fullpath}"/>
+ <arg value="${oo.unotypes.rdb}"/> <!-- from ConfigurationSettings -->
+ <arg value="${oo.offapi.rdb}"/> <!-- from ConfigurationSettings -->
+ </exec>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="-uno-idl-result" depends="-uno-idl-javamaker">
+ <touch file="${build.dir}/idlc.compile"/>
+ <echo message="build UNO idl files finished"/>
+ </target>
+
+ <!-- the main target, called in recursive builds -->
+ <target name="uno-idl-compile" description="Compiles UNO idl files" depends="-uno-idl-result"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="jar" depends="-uno-project-init,uno-idl-compile,-jar-idl-types,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-do-openoffice-manifest,-post-jar">
+ <jar basedir="${build.classes.dir}" compress="true" filesonly="true" manifest="${build.dir}/MANIFEST.MF" jarfile="${dist.jar}" excludes="**/*.xml,**/*.txt,${idl.file.list},${build.classes.excludes}"/>
+ </target>
+
+ <target name="-jar-idl-types" depends="-do-uno-types" unless="no.idl.files">
+ <mkdir dir="${dist.dir}"/>
+ <jar basedir="${build.classes.dir}" compress="true" jarfile="${dist.dir}/${idl_types.jar}" includes="${idl.file.list}">
+ <manifest>
+ <attribute name="UNO-Type-Path" value="&lt;&gt;"/>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="-do-openoffice-manifest" depends="-copy-user-manifest,-external-jars,-do-registration,-do-class-path"/>
+
+ <!-- macro for checking manifest entries from a user manifest -->
+ <macrodef name="check-manifest-entry">
+ <attribute name="entry.name"/>
+ <attribute name="condition.property.name"/>
+ <sequential>
+ <condition property="@{condition.property.name}">
+ <and>
+ <!-- if file does not exist, "isfileselected" is not executed -->
+ <!-- necessary construct because available is not allowed here
+ but should be according to documentation -->
+ <istrue value="${build.manifest.exists}"/>
+ <!-- produces an error if file is not there -->
+ <isfileselected file="${build.dir}/MANIFEST.MF">
+ <contains text="@{entry.name}"/>
+ </isfileselected>
+ </and>
+ </condition>
+ </sequential>
+ </macrodef>
+
+ <!-- enter the class path with external jars, if external jars exit and the user did not enter his own -->
+ <target name="-do-class-path" depends="-external-jars,-check-class-path" unless="class.path.exists">
+ <manifest file="${build.dir}/MANIFEST.MF" mode="update">
+ <attribute name="Class-Path" value="${external.jars}"/>
+ </manifest>
+ </target>
+ <target name="-check-class-path">
+ <check-manifest-entry condition.property.name="class.path.exists" entry.name="Class-Path"/>
+ </target>
+
+ <!-- enter idl type definitions if it exists and if the user did not overwrite it -->
+ <target name="-do-uno-types" depends="-do-empty-unopath,-do-idl-unopath"/>
+ <target name="-do-idl-unopath" depends="-check-uno-types" if="own.idl.files" unless="uno.path.exists">
+ <manifest file="${build.dir}/MANIFEST.MF" mode="update">
+ <attribute name="UNO-Type-Path" value="${idl_types.jar}"/>
+ </manifest>
+ </target>
+ <target name="-do-empty-unopath" depends="-check-uno-types" if="no.idl.files" unless="uno.path.exists">
+ <manifest file="${build.dir}/MANIFEST.MF" mode="update">
+ <attribute name="UNO-Type-Path" value=""/>
+ </manifest>
+ </target>
+ <target name="-check-uno-types">
+ <property file="${idl.out}/idl_list.properties"/>
+ <check-manifest-entry condition.property.name="uno.path.exists" entry.name="UNO-Type-Path"/>
+ <condition property="no.idl.files">
+ <equals arg1="${idl.file.list}" arg2="" trim="true"/>
+ </condition>
+ <condition property="own.idl.files">
+ <not>
+ <istrue value="${no.idl.files}"/>
+ </not>
+ </condition>
+ </target>
+
+ <!-- enter the registration classes unless the user did not enter his own. Do nothing when the project is old -->
+ <target name="-do-registration" depends="-do-central-registration,-check-registration-classes-name"
+ if="new.project.registration" unless="do.no.registration">
+ <manifest file="${build.dir}/MANIFEST.MF" mode="update">
+ <section name="${slash.registration.class}">
+ <attribute name="RegistrationClasses" value="${registration.classname}"/>
+ </section>
+ </manifest>
+ </target>
+ <target name="-check-registration-classes-name">
+ <check-manifest-entry condition.property.name="registration.classes.exists" entry.name="RegistrationClasses"/>
+ <condition property="do.no.registration">
+ <or>
+ <istrue value="${registration.classes.exists}"/>
+ <istrue value="${registration.class.exists}"/>
+ </or>
+ </condition>
+ </target>
+
+ <!-- enter the registration class name unless the user did not enter his own. Do nothing when the project is old -->
+ <target name="-do-central-registration" depends="-check-registration-class-name,-do-old-project-registration" if="new.project.registration" unless="registration.class.exists">
+ <property name="regclass.properties" value="${build.dir}/regclass.properties"/>
+ <propertyfile file="${regclass.properties}">
+ <entry key="dot.registration" value="${slash.registration.class}"/>
+ </propertyfile>
+ <replace file="${regclass.properties}" token=".class" value=""/>
+ <replace file="${regclass.properties}" token="/" value="."/>
+ <property file="${regclass.properties}"/>
+ <manifest file="${build.dir}/MANIFEST.MF" mode="update">
+ <attribute name="RegistrationClassName" value="${dot.registration}"/>
+ </manifest>
+ </target>
+ <target name="-check-registration-class-name">
+ <check-manifest-entry condition.property.name="registration.class.exists" entry.name="RegistrationClassName"/>
+ </target>
+
+ <!-- Do the registration for older projects without a central registration class -->
+ <target name="-do-old-project-registration" depends="-check-for-old-project" if="old.project.registration" unless="registration.class.exists">
+ <manifest file="${build.dir}/MANIFEST.MF" mode="update">
+ <attribute name="RegistrationClassName" value="${registration.classname}"/>
+ </manifest>
+ </target>
+ <target name="-check-for-old-project">
+ <!-- central registration class in project -->
+ <fileset id="registration.class.name" dir="${build.dir}/classes">
+ <patternset>
+ <include name="**/CentralRegistrationClass.class"/>
+ </patternset>
+ </fileset>
+ <property name="systemslash.registration.class" refid="registration.class.name"/>
+ <!-- make forward slash from backslash on Windows -->
+ <property name="regclass.properties" value="${build.dir}/regclass.properties"/>
+ <propertyfile file="${regclass.properties}">
+ <entry key="slash.registration.class" value="${systemslash.registration.class}"/>
+ </propertyfile>
+ <replace file="${regclass.properties}" token="\\" value="/"/>
+ <property file="${regclass.properties}"/>
+ <!-- now slash is ok -->
+ <condition property="old.project.registration">
+ <equals trim="true" arg1="${slash.registration.class}" arg2=""/>
+ </condition>
+ <condition property="new.project.registration">
+ <isfalse value="${old.project.registration}"/>
+ </condition>
+ </target>
+
+ <!-- copy the user manifest if it exists -->
+ <target name="-copy-user-manifest" depends="-check-user-manifest" if="user.manifest.exists">
+ <copy file="manifest.mf" tofile="${build.dir}/MANIFEST.MF" overwrite="true"/>
+ <available file="${build.dir}/MANIFEST.MF" property="build.manifest.exists"/>
+ </target>
+ <target name="-check-user-manifest">
+ <available file="manifest.mf" property="user.manifest.exists"/>
+ </target>
+
+ <!-- handle the class path for external jar files unless there is a user overwrite -->
+ <target name="-external-jars" depends="-rm-external-jars,-add-external-jars"/>
+
+ <target name="-add-external-jars" depends="-external-jars-condition" if="do.externalJars">
+ <!-- get property external.jars for classpath from props file -->
+ <property file="${dist.dir}/${external.jar.dir}/jars.properties"/>
+ </target>
+
+ <target name="-rm-external-jars" depends="-external-jars-condition" unless="do.externalJars">
+ <!-- empty property, if no jars -->
+ <property name="external.jars" value=""/>
+ </target>
+
+ <target name="-external-jars-condition">
+ <available file="${dist.dir}/${external.jar.dir}" type="dir" property="do.externalJars"/>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="-delete-uno-package">
+ <delete failonerror="false" file="${uno.package.name}"/>
+ </target>
+
+ <target name="-pre-uno-package">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+
+ <target name="-license-exists">
+ <available file="${project.dir}/${licenses.dir}" type="dir" property="do.license"/>
+ </target>
+
+ <!-- test for licenses dir is necessary because zipfileset fails if dir not there -->
+ <target name="-uno-package-with-license" depends="-license-exists" if="do.license">
+ <zip update="true" destfile="${uno.package.name}">
+ <zipfileset dir="${project.dir}/${licenses.dir}" includes="**" casesensitive="yes" prefix="${licenses.dir}"/>
+ </zip>
+ </target>
+
+ <target name="-description-exists">
+ <available file="${project.dir}/${description.dir}" type="dir" property="do.description"/>
+ </target>
+
+ <!-- test for description dir is necessary because zipfileset fails if dir not there -->
+ <target name="-uno-package-with-description" depends="-description-exists" if="do.description">
+ <zip update="true" destfile="${uno.package.name}">
+ <zipfileset dir="${project.dir}/${description.dir}" includes="**" casesensitive="yes" prefix="${description.dir}"/>
+ </zip>
+ </target>
+
+ <target name="-help-exists">
+ <available file="${project.dir}/${help.dir}" type="dir" property="do.help"/>
+ </target>
+
+ <!-- test for help dir is necessary because zipfileset fails if dir not there -->
+ <target name="-uno-package-with-help" depends="-help-exists" if="do.help">
+ <zip update="true" destfile="${uno.package.name}">
+ <zipfileset dir="${help.dir}" includes="${help.content.extensions}" prefix="${help.dir}"/>
+ </zip>
+ </target>
+
+ <target name="-dialogs-exists">
+ <available file="${project.dir}/${dialogs.dir}" type="dir" property="do.dialogs"/>
+ </target>
+
+ <!-- test for dialogs dir is necessary because zipfileset fails if dir not there -->
+ <target name="-uno-package-with-dialogs" depends="-dialogs-exists" if="do.dialogs">
+ <zip update="true" destfile="${uno.package.name}">
+ <zipfileset dir="${dialogs.dir}" includes="${dialog.content.extensions}" prefix="dialogs"/>
+ </zip>
+ </target>
+
+ <target name="-do-uno-package" description="Creates UNO extension pacakge" depends="-uno-package-with-license,-uno-package-with-help,-uno-package-with-dialogs,-uno-package-with-description">
+ <echo message="creating UNO extension package ..."/>
+ <zip update="true" destfile="${uno.package.name}">
+ <fileset dir="${src.dir}" includes="${manifest.package.extensions}" casesensitive="yes"/>
+ <fileset dir="${build.registry.dir}" casesensitive="yes"/>
+ <fileset dir="${src.dir}" includes="description.xml" casesensitive="yes"/>
+ <fileset dir="${dist.dir}" includes="**/*.jar" casesensitive="yes"/>
+ <fileset dir="${images.base.dir}" includes="**" casesensitive="yes"/>
+ <fileset dir="${idl.out.rdb}" includes="**/*.rdb" casesensitive="yes"/>
+ <zipfileset dir="${src.dir}" includes="uno-extension-manifest.xml" fullpath="META-INF/manifest.xml"/>
+ </zip>
+ </target>
+
+ <target name="-post-uno-package">
+ <!-- Empty placeholder for easier customization. -->
+ <!-- You can override this target in the ../build.xml file. -->
+ </target>
+
+ <target name="uno-package" description="Creates UNO extension pacakge" depends="jar,images,registry,-delete-uno-package,-pre-uno-package,-do-uno-package,-post-uno-package"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<!-- <target name="uno-deploy" description="Deploys UNO extension package" depends="uno-package">
+ <echo message="deploying UNO extension package ..."/>
+ <echo message="${office.unopkg} gui -f ${uno.package.name}"/>
+ <echo message="${office.soffice} ${uno.package.name}"/>
+ <exec executable="${office.soffice}" dir="${office.program.dir}" failonerror="true">
+ <arg file="${uno.package.name}"/>
+ </exec>
+ </target> -->
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="uno-run" description="Run OpenOffice.org" depends="uno-package,-run-oo"/>
+
+ <!-- subtargets for different office versions -->
+ <target name="-run-oo">
+ <echo message="${office.unopkg} gui -f ${uno.package.name}"/>
+ <exec dir="${office.program.dir}" executable="${office.unopkg}" failonerror="true">
+ <arg value="gui"/>
+ <arg value="-f"/>
+ <arg file="${uno.package.name}"/>
+ </exec>
+ <echo message="${office.soffice}"/>
+ <exec executable="${office.soffice}" dir="${office.program.dir}" failonerror="true">
+ <arg value="${office.startup.options}"/>
+ </exec>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="uno-debug" description="Debugss UNO extension package in Target Office" depends="uno-package,-oo-debug"/>
+
+ <target name="-oo-debug">
+ <!-- security fail for executing this without netbeans -->
+ <fail unless="netbeans.home">This target can only run inside the NetBeans IDE.</fail>
+ <!-- start debugger and get connection address jpda.address -->
+ <nbjpdastart name="Debug Office" addressproperty="jpda.address" transport="dt_socket">
+ <classpath path="${build.classes.dir}"/>
+ <sourcepath path="${src.dir}"/>
+ </nbjpdastart>
+ <!-- register component in temporary user installation -->
+ <echo message="debugging UNO extension package ..."/>
+ <echo message="${office.unopkg} gui -f ${uno.package.name}"/>
+ <exec dir="${office.program.dir}" executable="${office.unopkg}">
+ <arg value="gui"/>
+ <arg value="-f"/>
+ <arg file="${uno.package.name}"/>
+ <env key="UserInstallation" value="${office.debug.user.directory}"/>
+ </exec>
+ <!-- start Office with debug Java and user installation -->
+ <echo message="starting the Office with ..."/>
+ <echo message="user installation: ${office.debug.user.directory}"/>
+ <echo message="debug options: &quot;-Xdebug&quot; &quot;-Xrunjdwp:transport=dt_socket,address=${jpda.address}&quot;"/>
+ <echo message="${office.soffice}"/>
+ <exec dir="${office.program.dir}" executable="${office.soffice}" failonerror="true">
+ <arg value="-nofirststartwizard"/>
+ <arg value="${office.startup.options}"/>
+ <env key="UserInstallation" value="${office.debug.user.directory}"/>
+ <env key="JAVA_TOOL_OPTIONS" value="&quot;-Xdebug&quot; &quot;-Xrunjdwp:transport=dt_socket,address=${jpda.address}&quot;"/>
+ </exec>
+ </target>
+
+</project>
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/genfiles.properties b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/genfiles.properties
new file mode 100644
index 000000000000..2f144fe1f264
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/genfiles.properties
@@ -0,0 +1,9 @@
+# x-no-translate
+build.xml.data.CRC32=2b754fcd
+build.xml.script.CRC32=0a20deac
+build.xml.stylesheet.CRC32=d5b6853a
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=54a58ff4
+nbproject/build-impl.xml.script.CRC32=25927849
+nbproject/build-impl.xml.stylesheet.CRC32=576378a2@1.32.1.45
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/config.properties b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/config.properties
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/config.properties
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/private.properties b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/private.properties
new file mode 100644
index 000000000000..1b26762e782d
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/private/private.properties
@@ -0,0 +1,7 @@
+# x-no-translate
+compile.on.save=false
+do.depend=false
+do.jar=true
+javac.debug=true
+javadoc.preview=true
+user.properties.file=/localuser/qamsc/.netbeans/6.8/build.properties
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project-uno.properties b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project-uno.properties
new file mode 100644
index 000000000000..8abadd201d42
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project-uno.properties
@@ -0,0 +1,19 @@
+# x-no-translate
+uno.project.type=office.component.project
+project.name=TaskPaneComponent
+registration.classname=com.example.TaskPaneComponent
+external.jar.dir=lib
+idl_types.jar=TaskPaneComponent_IDL_types.jar
+central.registration.class=com.example.CentralRegistrationClass
+# extensions for files that go into the .oxt package; some are also referenced in the manifest
+manifest.package.extensions=**/*.xcu,**/*.xcs,**/*.xdl,**/*.xlb,**/*.xba,**/*.properties,**/*.default
+imgae.extensions=**/*.png,**/*.jpg,**/*.jpeg,**/*.gif
+help.content.extensions=**/*.xhp,**/*.tree,${image.extensions}
+dialog.content.extensions=**/*.xdl,**/*.properties,**/*.default,${image.extensions}
+office.startup.options=
+images.dir=images
+registry.dir=registry
+help.dir=help
+dialogs.dir=dialogs
+licenses.dir=licenses
+description.dir=description
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.properties b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.properties
new file mode 100644
index 000000000000..7ca12dec0468
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.properties
@@ -0,0 +1,68 @@
+# x-no-translate
+application.args=
+application.title=TaskPaneComponent
+application.vendor=qamsc
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form,**/*.xcu,**/*.xcs,**/*.idl,**/*manifest.xml
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/TaskPaneComponent.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.juh.jar=../../office/slidecopy/openoffice.org/ure/share/java/juh.jar
+file.reference.jurt.jar=../../office/slidecopy/openoffice.org/ure/share/java/jurt.jar
+file.reference.ridl.jar=../../office/slidecopy/openoffice.org/ure/share/java/ridl.jar
+file.reference.unoil.jar=../../office/slidecopy/openoffice.org/basis3.3/program/classes/unoil.jar
+includes=**
+jar.compress=false
+javac.classpath=\
+ ${file.reference.unoil.jar}:\
+ ${file.reference.juh.jar}:\
+ ${file.reference.jurt.jar}:\
+ ${file.reference.ridl.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}:\
+ ${libs.junit.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+run.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+src.dir=src
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.xml b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.xml
new file mode 100755
index 000000000000..43c253f3c7e5
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/nbproject/project.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+ <type>org.netbeans.modules.java.j2seproject</type>
+ <configuration>
+ <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+ <name>TaskPaneComponent</name>
+ <minimum-ant-version>1.6.5</minimum-ant-version>
+ <source-roots>
+ <root id="src.dir"/>
+ </source-roots>
+ <test-roots/>
+ </data>
+ </configuration>
+</project>
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/CalcWindowState.xcu b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/CalcWindowState.xcu
new file mode 100755
index 000000000000..367281d0deaf
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/CalcWindowState.xcu
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data oor:name="CalcWindowState" oor:package="org.openoffice.Office.UI" xmlns:install="http://openoffice.org/2004/installation" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="UIElements">
+ <node oor:name="States">
+ <node oor:name="private:resource/toolpanel/com.example.TestPanel1" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>ein Panel</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ <node oor:name="private:resource/toolpanel/com.example.TestPanel2" oor:op="replace">
+ <prop oor:name="UIName" oor:type="xs:string">
+ <value>noch ein Panel</value>
+ </prop>
+ <prop oor:name="Visible" oor:type="xs:boolean">
+ <value>true</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/Factories.xcu b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/Factories.xcu
new file mode 100755
index 000000000000..90dce8595a1b
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/registry/data/org/openoffice/Office/UI/Factories.xcu
@@ -0,0 +1,35 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<oor:component-data oor:name="Factories" oor:package="org.openoffice.Office.UI" xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <node oor:name="Registered">
+ <node oor:name="UIElementFactories">
+ <node oor:name="com.example.TaskPaneComponent1" oor:op="replace">
+ <prop oor:name="Type">
+ <value>toolpanel</value>
+ </prop>
+ <prop oor:name="Name">
+ <value>com.example.TestPanel1</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="FactoryImplementation">
+ <value>com.example.TaskPaneComponent</value>
+ </prop>
+ </node>
+ <node oor:name="com.example.TaskPaneComponent2" oor:op="replace">
+ <prop oor:name="Type">
+ <value>toolpanel</value>
+ </prop>
+ <prop oor:name="Name">
+ <value>com.example.TestPanel2</value>
+ </prop>
+ <prop oor:name="Module">
+ <value/>
+ </prop>
+ <prop oor:name="FactoryImplementation">
+ <value>com.example.TaskPaneComponent</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data>
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/CentralRegistrationClass.java b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/CentralRegistrationClass.java
new file mode 100755
index 000000000000..5276f584aa3e
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/CentralRegistrationClass.java
@@ -0,0 +1,140 @@
+/*************************************************************************
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.example;
+
+import com.sun.star.lang.XSingleComponentFactory;
+import com.sun.star.registry.XRegistryKey;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.net.JarURLConnection;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.StringTokenizer;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+
+/**
+ *
+ * @author Marc Neumann
+ */
+public class CentralRegistrationClass
+{
+
+ public static XSingleComponentFactory __getComponentFactory(String sImplementationName)
+ {
+ String regClassesList = getRegistrationClasses();
+ StringTokenizer t = new StringTokenizer(regClassesList, " ");
+ while (t.hasMoreTokens())
+ {
+ String className = t.nextToken();
+ if (className != null && className.length() != 0)
+ {
+ try
+ {
+ Class regClass = Class.forName(className);
+ Method writeRegInfo = regClass.getDeclaredMethod("__getComponentFactory", new Class[]
+ {
+ String.class
+ });
+ Object result = writeRegInfo.invoke(regClass, sImplementationName);
+ if (result != null)
+ {
+ return (XSingleComponentFactory) result;
+ }
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+ return null;
+ }
+
+ public static boolean __writeRegistryServiceInfo(XRegistryKey xRegistryKey)
+ {
+ boolean bResult = true;
+ String regClassesList = getRegistrationClasses();
+ StringTokenizer t = new StringTokenizer(regClassesList, " ");
+ while (t.hasMoreTokens())
+ {
+ String className = t.nextToken();
+ if (className != null && className.length() != 0)
+ {
+ try
+ {
+ Class regClass = Class.forName(className);
+ Method writeRegInfo = regClass.getDeclaredMethod("__writeRegistryServiceInfo", new Class[]
+ {
+ XRegistryKey.class
+ });
+ Object result = writeRegInfo.invoke(regClass, xRegistryKey);
+ bResult &= ((Boolean) result).booleanValue();
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ }
+ return bResult;
+ }
+
+ private static String getRegistrationClasses()
+ {
+ CentralRegistrationClass c = new CentralRegistrationClass();
+ String name = c.getClass().getCanonicalName().replace('.', '/').concat(".class");
+ try
+ {
+ Enumeration<URL> urlEnum = c.getClass().getClassLoader().getResources("META-INF/MANIFEST.MF");
+ while (urlEnum.hasMoreElements())
+ {
+ URL url = urlEnum.nextElement();
+ String file = url.getFile();
+ JarURLConnection jarConnection = (JarURLConnection) url.openConnection();
+ Manifest mf = jarConnection.getManifest();
+
+ Attributes attrs = (Attributes) mf.getAttributes(name);
+ if (attrs != null)
+ {
+ String classes = attrs.getValue("RegistrationClasses");
+ return classes;
+ }
+ }
+ }
+ catch (IOException ex)
+ {
+ ex.printStackTrace();
+ }
+
+ return "";
+ }
+
+ /** Creates a new instance of CentralRegistrationClass */
+ private CentralRegistrationClass()
+ {
+ }
+}
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/TaskPaneComponent.java b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/TaskPaneComponent.java
new file mode 100755
index 000000000000..0c5fdb782fad
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/TaskPaneComponent.java
@@ -0,0 +1,116 @@
+/*************************************************************************
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.example;
+
+import com.sun.star.awt.XWindow;
+import com.sun.star.frame.XFrame;
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.lib.uno.helper.Factory;
+import com.sun.star.lang.XSingleComponentFactory;
+import com.sun.star.registry.XRegistryKey;
+import com.sun.star.lib.uno.helper.WeakBase;
+import com.sun.star.uno.UnoRuntime;
+
+public final class TaskPaneComponent extends WeakBase
+ implements com.sun.star.ui.XUIElementFactory,
+ com.sun.star.lang.XServiceInfo
+{
+
+ private final XComponentContext m_xContext;
+ private static final String m_implementationName = TaskPaneComponent.class.getName();
+ private static final String[] m_serviceNames =
+ {
+ "com.sun.star.ui.UIElementFactory"
+ };
+
+ public TaskPaneComponent(XComponentContext context)
+ {
+ m_xContext = context;
+ }
+
+ public static XSingleComponentFactory __getComponentFactory(String sImplementationName)
+ {
+ XSingleComponentFactory xFactory = null;
+
+ if (sImplementationName.equals(m_implementationName))
+ {
+ xFactory = Factory.createComponentFactory(TaskPaneComponent.class, m_serviceNames);
+ }
+ return xFactory;
+ }
+
+ public static boolean __writeRegistryServiceInfo(XRegistryKey xRegistryKey)
+ {
+ return Factory.writeRegistryServiceInfo(m_implementationName,
+ m_serviceNames,
+ xRegistryKey);
+ }
+
+ public com.sun.star.ui.XUIElement createUIElement(String ResourceURL, com.sun.star.beans.PropertyValue[] creationArgs) throws com.sun.star.container.NoSuchElementException, com.sun.star.lang.IllegalArgumentException
+ {
+
+ XFrame docFrame = null;
+ XWindow panelParentWindow = null;
+ for (int i = 0; i < creationArgs.length; ++i)
+ {
+ if (creationArgs[i].Name.equals("Frame"))
+ {
+ docFrame = UnoRuntime.queryInterface(XFrame.class, creationArgs[i].Value);
+ } else if (creationArgs[i].Name.equals("ParentWindow"))
+ {
+ panelParentWindow = UnoRuntime.queryInterface(XWindow.class, creationArgs[i].Value);
+ }
+ }
+
+ return new ToolPanelUIElement(m_xContext, docFrame, panelParentWindow);
+
+ }
+
+ // com.sun.star.lang.XServiceInfo:
+ public String getImplementationName()
+ {
+ return m_implementationName;
+ }
+
+ public boolean supportsService(String sService)
+ {
+ int len = m_serviceNames.length;
+
+ for (int i = 0; i < len; i++)
+ {
+ if (sService.equals(m_serviceNames[i]))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public String[] getSupportedServiceNames()
+ {
+ return m_serviceNames;
+ }
+}
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanel.java b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanel.java
new file mode 100755
index 000000000000..fcebd804ec1f
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanel.java
@@ -0,0 +1,56 @@
+/*************************************************************************
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.example;
+
+import com.sun.star.accessibility.XAccessible;
+import com.sun.star.awt.XWindow;
+import com.sun.star.ui.XToolPanel;
+import com.sun.star.uno.UnoRuntime;
+
+/**
+ *
+ * @author frank.schoenheit@oracle.com
+ */
+public class ToolPanel implements XToolPanel
+{
+ ToolPanel( final XWindow i_panelWindow )
+ {
+ m_panelWindow = i_panelWindow;
+ }
+
+ public XWindow getWindow()
+ {
+ return m_panelWindow;
+ }
+
+ public XAccessible createAccessible( XAccessible i_parentAccessible )
+ {
+ return UnoRuntime.queryInterface( XAccessible.class, m_panelWindow );
+ }
+
+ private XWindow m_panelWindow;
+}
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanelUIElement.java b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanelUIElement.java
new file mode 100755
index 000000000000..599850e00ef1
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/com/example/ToolPanelUIElement.java
@@ -0,0 +1,153 @@
+/*************************************************************************
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.example;
+
+import com.sun.star.awt.XContainerWindowProvider;
+import com.sun.star.awt.XWindow;
+import com.sun.star.awt.XWindowPeer;
+import com.sun.star.deployment.PackageInformationProvider;
+import com.sun.star.deployment.XPackageInformationProvider;
+import com.sun.star.frame.XFrame;
+import com.sun.star.lang.DisposedException;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lib.uno.helper.ComponentBase;
+import com.sun.star.ui.UIElementType;
+import com.sun.star.ui.XUIElement;
+import com.sun.star.uno.UnoRuntime;
+import com.sun.star.uno.XComponentContext;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author frank.schoenheit@oracle.com
+ */
+public class ToolPanelUIElement extends ComponentBase implements XUIElement
+{
+
+ protected final XFrame m_docFrame;
+ protected final XWindow m_parentWindow;
+ private XWindow m_panelRootWindow = null;
+ private Object m_toolPanel = null;
+ XComponentContext context = null;
+
+
+ protected ToolPanelUIElement( XComponentContext _context, final XFrame i_docFrame, final XWindow i_parentWindow )
+ {
+ context = _context;
+ m_docFrame = i_docFrame;
+ m_parentWindow = i_parentWindow;
+ }
+
+ public static String getResourceURLBase()
+ {
+ return "private:resource/toolpanel/com.example.TaskPaneComponent/";
+ }
+
+ // XUIElement overridables
+ public XFrame getFrame() { return m_docFrame; }
+ public short getType() { return UIElementType.TOOLPANEL; }
+ public String getResourceURL() { return getResourceURLBase() + getPanelResourceURLSuffix(); }
+
+ public Object getRealInterface()
+ {
+ synchronized( this )
+ {
+ if ( this.bDisposed || this.bInDispose )
+ throw new DisposedException( new String(), this );
+
+ if ( m_toolPanel == null )
+ m_toolPanel = new ToolPanel( getOrCreatePanelRootWindow() );
+ }
+ return m_toolPanel;
+ }
+
+ // own overridables
+ /** returns the name of the dialog description file of the tool panel, without .xdl suffix
+ */
+ protected String getPanelResourceLocation()
+ {
+ return "TaskPaneComponentUI";
+
+ }
+
+ /** returns the resource URL suffix to use for the tool panel
+ * @return
+ */
+ protected String getPanelResourceURLSuffix()
+ {
+ return "TaskPaneComponentUI";
+ }
+
+
+ // ComponentBase overridables
+ protected void postDisposing()
+ {
+ super.postDisposing();
+ synchronized ( this )
+ {
+ if ( m_panelRootWindow != null )
+ {
+ XComponent panelWindowComp = UnoRuntime.queryInterface( XComponent.class, m_panelRootWindow );
+ panelWindowComp.dispose();
+ m_panelRootWindow = null;
+
+ }
+ m_toolPanel = null;
+ }
+ }
+
+ // helpers
+ synchronized private XWindow getOrCreatePanelRootWindow()
+ {
+ try
+ {
+ XPackageInformationProvider pip = PackageInformationProvider.get(context);
+ String s = pip.getPackageLocation("com.example.TaskPaneComponent");
+
+ String dialogUrl = s + "/toolpanels/" + getPanelResourceLocation() + ".xdl";
+
+ XContainerWindowProvider provider = UnoRuntime.queryInterface(
+ XContainerWindowProvider.class,
+ context.getServiceManager().createInstanceWithContext("com.sun.star.awt.ContainerWindowProvider",context)
+ );
+
+ m_panelRootWindow = provider.createContainerWindow(
+ dialogUrl,
+ "",
+ UnoRuntime.queryInterface( XWindowPeer.class, m_parentWindow ),
+ null
+ );
+
+ }
+ catch ( final Exception e )
+ {
+ Logger.getLogger( ToolPanelUIElement.class.getName() ).log( Level.SEVERE, null, e );
+ }
+ return m_panelRootWindow;
+ }
+}
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/description.xml b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/description.xml
new file mode 100755
index 000000000000..9e32a6e8bfed
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/description.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description xmlns="http://openoffice.org/extensions/description/2006" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <version value="0.0.1"/>
+ <identifier value="com.example.TaskPaneComponent"/>
+</description>
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/toolpanels/TaskPaneComponentUI.xdl b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/toolpanels/TaskPaneComponentUI.xdl
new file mode 100755
index 000000000000..75e1ceb1e019
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/toolpanels/TaskPaneComponentUI.xdl
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Dialog1" dlg:left="192" dlg:top="127" dlg:width="174" dlg:height="147" dlg:closeable="true" dlg:moveable="true" dlg:help-url="customcontrol1" dlg:withtitlebar="false">
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="CommandButton1" dlg:tab-index="0" dlg:left="6" dlg:top="8" dlg:width="64" dlg:height="20" dlg:value="a wonderful button"/>
+ <dlg:textfield dlg:id="TextField1" dlg:textarea-vertical-align="top" dlg:tab-index="1" dlg:left="6" dlg:top="38" dlg:width="64" dlg:height="59" dlg:value="a wonderful text"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/uno-extension-manifest.xml b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/uno-extension-manifest.xml
new file mode 100755
index 000000000000..d49fe3d726ee
--- /dev/null
+++ b/testautomation/extensions/optional/input/extension_sources/TaskPaneComponent/src/uno-extension-manifest.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.uno-component;type=Java"
+ manifest:full-path="TaskPaneComponent.jar"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/UI/Factories.xcu"/>
+ <manifest:file-entry manifest:media-type="application/vnd.sun.star.configuration-data"
+ manifest:full-path="registry/data/org/openoffice/Office/UI/CalcWindowState.xcu"/>
+</manifest:manifest> \ No newline at end of file
diff --git a/testautomation/extensions/optional/input/extensions/TaskPaneComponent/TaskPaneComponent.oxt b/testautomation/extensions/optional/input/extensions/TaskPaneComponent/TaskPaneComponent.oxt
new file mode 100755
index 000000000000..5c826dd3541d
--- /dev/null
+++ b/testautomation/extensions/optional/input/extensions/TaskPaneComponent/TaskPaneComponent.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/files.txt b/testautomation/extensions/optional/input/files.txt
new file mode 100755
index 000000000000..369cb99b74d2
--- /dev/null
+++ b/testautomation/extensions/optional/input/files.txt
@@ -0,0 +1,50 @@
+simpleLicense\BadDesc.oxt;0,0,0,1,0
+simpleLicense\BadNamespace.oxt;0,0,0,1,0
+simpleLicense\BadRoot.oxt;0,0,0,1,0
+simpleLicense\IncompAttr1.oxt;0,1,1,0,0
+simpleLicense\IncompAttr2.oxt;0,1,1,0,0
+simpleLicense\LongLic.oxt;0,2,1,0,0
+simpleLicense\MissingLic.oxt;0,0,0,1,0
+simpleLicense\MissingLicRef.oxt;0,0,0,1,0
+simpleLicense\NoDesc.oxt;0,0,1,0,0
+simpleLicense\NoLangNoDefault.oxt;0,1,1,0,0
+simpleLicense\OnlyDefault.oxt;0,1,1,0,0
+simpleLicense\ShortLicense.oxt;0,1,1,0,0
+simpleLicense\CancelLicense.oxt;0,3,0,0,0
+simpleLicense\ShortLicenseShared.oxt;0,1,1,0,0
+dependencies\broken-dependency.oxt;0,0,0,1,0
+dependencies\double-dependencies.oxt;2,0,0,0,0
+dependencies\empty-dependencies.oxt;0,0,1,0,0
+dependencies\funny-dependency.oxt;1,0,0,0,0
+dependencies\license-dependency.oxt;1,0,0,0,0
+dependencies\many-dependencies.oxt;20,0,0,0,0
+dependencies\no-dependencies.oxt;0,0,1,0,0
+dependencies\no-description.oxt;0,0,1,0,0
+dependencies\unknown-dependency.oxt;1,0,0,0,0
+dependencies\version21.oxt;0,0,1,0,0
+dependencies\version10000.oxt;1,0,0,0,0
+dependencies\version21ns.oxt;0,0,1,0,0
+dependencies\version21other.oxt;1,0,0,0,0
+dependencies\version25.oxt;0,0,1,0,0
+dependencies\version30.oxt;0,0,1,0,0
+dependencies\version300.oxt;0,0,1,0,0
+dependencies\version301.oxt;0,0,1,0,0
+dependencies\version310.oxt;0,0,1,0,0
+dependencies\version330.oxt;0,0,1,0,0
+dependencies\versionempty.oxt;0,0,1,0,0
+dependencies\version31.oxt;0,0,1,0,0
+dependencies\version33.oxt;0,0,1,0,0
+dependencies\version34.oxt;1,0,0,0,0
+dependencies\version937.oxt;1,0,0,0,0
+dependencies\versionnone.oxt;0,0,1,0,0
+versions/plain.oxt;0,0,1,0,0
+versions/plain.oxt;0,0,1,0,1
+versions/version_none/plain.oxt;0,0,1,0,2
+versions/version_1.2.3/plain.oxt;0,0,1,0,2
+versions/version_1.2.3/plain.oxt;0,0,1,0,1
+versions/version_0.0/plain.oxt;0,0,1,0,2
+versions/version_1.2.4.7/plain.oxt;0,0,1,0,2
+versions/version_1.02.4.7.0/plain.oxt;0,0,1,0,1
+versions/version_1.2.3/plain.oxt;0,0,1,0,2
+versions/version_1.2.15.3/plain.oxt;0,0,1,0,2
+issues/111434.oxt;0,1,1,0,0
diff --git a/testautomation/extensions/optional/input/identifier/explicit/identifier.oxt b/testautomation/extensions/optional/input/identifier/explicit/identifier.oxt
new file mode 100755
index 000000000000..3851e291c970
--- /dev/null
+++ b/testautomation/extensions/optional/input/identifier/explicit/identifier.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/identifier/legacy/identifier.oxt b/testautomation/extensions/optional/input/identifier/legacy/identifier.oxt
new file mode 100755
index 000000000000..df8bb8449241
--- /dev/null
+++ b/testautomation/extensions/optional/input/identifier/legacy/identifier.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/identifier/readme.txt b/testautomation/extensions/optional/input/identifier/readme.txt
new file mode 100755
index 000000000000..3588de21feb4
--- /dev/null
+++ b/testautomation/extensions/optional/input/identifier/readme.txt
@@ -0,0 +1,16 @@
+Extension identifiers
+
+Extension identifiers have been introduced because of the new filename-
+extension (.oxt) might lead to conflicts with older extensions of the same name.
+Previously extensions were identified by their filenames only which is
+insufficient. Old extensions get an automatic legacy identifier and from now on
+an identifier can be explicitly set.
+
+This directory contains two extensions, one being the legacy and the other one
+having the identifier explicitly set. You should be able to install them both
+at the same time.
+
+This feature is tested by framework\basic\f_basic_extension_identifiers.bas.
+The spec can be found here:
+http://specs.openoffice.org/appwide/packagemanager/extensionidentifiers.odt
+The feature was brought in by CWS sb66, the issue is #i69910
diff --git a/testautomation/extensions/optional/input/issues/111434.oxt b/testautomation/extensions/optional/input/issues/111434.oxt
new file mode 100644
index 000000000000..d88965e803f1
--- /dev/null
+++ b/testautomation/extensions/optional/input/issues/111434.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/issues/Logging.xcu b/testautomation/extensions/optional/input/issues/Logging.xcu
new file mode 100644
index 000000000000..8bf0f34b6f1b
--- /dev/null
+++ b/testautomation/extensions/optional/input/issues/Logging.xcu
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<oor:component-data xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" oor:name="Logging" oor:package="org.openoffice.Office">
+ <node oor:name="Settings">
+ <node oor:name="bw.stv.tvs.logging.DefaultLogger" oor:op="replace">
+ <prop oor:name="DefaultFormatter" oor:type="xs:string">
+ <value>com.sun.star.logging.PlainTextFormatter</value>
+ </prop>
+ <prop oor:name="DefaultHandler" oor:type="xs:string">
+ <value>bw.stv.tvs.logging.UILogHandler</value>
+ </prop>
+ <prop oor:name="LogLevel" oor:type="xs:int">
+ <value>2147483647</value>
+ </prop>
+ <node oor:name="HandlerSettings">
+ <prop oor:name="UIId" oor:type="xs:string">
+ <value>tvs.ui</value>
+ </prop>
+ <prop oor:name="UITitle" oor:type="xs:string">
+ <value>TVS-Logger (bw.stv.tvs.logging.DefaultLogger)</value>
+ </prop>
+ </node>
+ </node>
+ </node>
+</oor:component-data> \ No newline at end of file
diff --git a/testautomation/extensions/optional/input/issues/LoggingOptions.xcs b/testautomation/extensions/optional/input/issues/LoggingOptions.xcs
new file mode 100644
index 000000000000..ca1ee9a4b6cb
--- /dev/null
+++ b/testautomation/extensions/optional/input/issues/LoggingOptions.xcs
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:name="Logging" oor:package="org.openoffice.Office">
+ <templates>
+ <group oor:name="LoggerSettings">
+ <group oor:name="HandlerSettings" oor:extensible="true">
+ <info>
+ <desc>Enthält zusätzliche Optionen für den TVS-UILogHandler</desc>
+ </info>
+ <prop oor:name="UITitle" oor:type="xs:string">
+ <value/>
+ </prop>
+ <prop oor:name="UIId" oor:type="xs:string">
+ <value/>
+ </prop>
+ </group>
+ </group>
+ </templates>
+ <component/>
+</oor:component-schema>
diff --git a/testautomation/extensions/optional/input/options/leaf1.oxt b/testautomation/extensions/optional/input/options/leaf1.oxt
new file mode 100755
index 000000000000..9c3ff86985b6
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/leaf1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/leaf2.oxt b/testautomation/extensions/optional/input/options/leaf2.oxt
new file mode 100755
index 000000000000..b95628900c40
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/leaf2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/leaves1.oxt b/testautomation/extensions/optional/input/options/leaves1.oxt
new file mode 100755
index 000000000000..037389a018b8
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/leaves1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/leaves2.oxt b/testautomation/extensions/optional/input/options/leaves2.oxt
new file mode 100755
index 000000000000..531b38566352
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/leaves2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/leaves3.oxt b/testautomation/extensions/optional/input/options/leaves3.oxt
new file mode 100755
index 000000000000..f5bb0f226239
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/leaves3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/modules1.oxt b/testautomation/extensions/optional/input/options/modules1.oxt
new file mode 100755
index 000000000000..bae652ffbc39
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/modules1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/modules2.oxt b/testautomation/extensions/optional/input/options/modules2.oxt
new file mode 100755
index 000000000000..d6d7956d459c
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/modules2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/nodes1.oxt b/testautomation/extensions/optional/input/options/nodes1.oxt
new file mode 100755
index 000000000000..b1dfa18d3efa
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/nodes1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/nodes2.oxt b/testautomation/extensions/optional/input/options/nodes2.oxt
new file mode 100755
index 000000000000..a35cfaba9dc8
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/nodes2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/nodes3.oxt b/testautomation/extensions/optional/input/options/nodes3.oxt
new file mode 100755
index 000000000000..db0bc49da522
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/nodes3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/nodes4.oxt b/testautomation/extensions/optional/input/options/nodes4.oxt
new file mode 100755
index 000000000000..fe0550fdc655
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/nodes4.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/nodes5.oxt b/testautomation/extensions/optional/input/options/nodes5.oxt
new file mode 100755
index 000000000000..893e9ee3e216
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/nodes5.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/options/readme.txt b/testautomation/extensions/optional/input/options/readme.txt
new file mode 100755
index 000000000000..da576203972d
--- /dev/null
+++ b/testautomation/extensions/optional/input/options/readme.txt
@@ -0,0 +1,195 @@
+Important: The hander component extensionoptions.jar in the extensions may not
+contain exactly the same sources as the one build in the handler directory. To
+make sure that debugging works build the handler directory and put the
+extensionoptions.jar into the extension.
+
+
+
+leaf1.oxt: Defines a leaf under the node WriterNode
+================================================================================
+
+leaf2.oxt: Defines a leaf under a node that has a name which requires special
+"xml encoding". The name is "My Writer's & Settings". The node is not assigned
+to a Module and the Node/AllModules property is not true. This is a typical
+scenario when a Node had been added to an existing Module and later the Module
+was removed. This is a situation which actually should not occur. In this case
+DO NOT show the Node in the OOo's options dialog, because it shows only nodes
+for a particular module and in this case the Module for the Node is unknown.
+In the Extension Manager's
+options dialog this Node can be shown because the Module is irrelevant.
+See also nodes5.oxt.
+================================================================================
+
+leaves1.oxt: multiple ordered leaves under available nodes. The leaves Lables are
+localized for en-US and de. The following leaves should appear:
+
+Writer:
+-leaves1 Writer 1 en-US
+-leaves1 Writer 2 en-US
+-leaves1 Writer 3 en-US
+
+Calc:
+-leaves1 Calc 3 en-US
+-leaves1 Calc 3 en-US
+-leaves1 Calc 3 en-US
+
+Draw:
+-leaves1 Draw 3 en-US
+-leaves1 Draw 3 en-US
+-leaves1 Draw 3 en-US
+
+If a german office is used then the strings contain "de" instead of "en-US".
+================================================================================
+
+leaves2.oxt: Same as leaves1.oxt. Use together with leaves1.oxt to test the
+grouping of leaves.
+================================================================================
+
+leaves3.oxt: Same as leaves1.oxt, but the leaves are not ordered.
+================================================================================
+
+nodes1.oxt: Defines one node which has AllModules set and which has
+no children. Therefore this node should not be displayed.
+================================================================================
+
+nodes2.oxt: Defines 3 nodes which use AllModules and which form an
+ordered group. Every node defines also 3 nodes which have a determined order.
+
+-nodes2 node 1 en-US
+ -nodes2 node 1 leaf 1 en-US
+ -nodes2 node 1 leaf 2 en-US
+ -nodes2 node 1 leaf 3 en-US
+
+-nodes2 node 2 en-US
+ -nodes2 node 2 leaf 1 en-US
+ -nodes2 node 2 leaf 2 en-US
+ -nodes2 node 2 leaf 3 en-US
+
+-nodes2 node 3 en-US
+ -nodes2 node 3 leaf 1 en-US
+ -nodes2 node 3 leaf 2 en-US
+ -nodes2 node 3 leaf 3 en-US
+
+================================================================================
+
+nodes3.oxt: Defines 3 nodes which are placed under different existing Modules.
+The nodes and there leaves are ordered.
+
+Context Writer:
+- nodes3 node 1
+ nodes3 node 1 leaf 1 en-US
+ nodes3 node 1 leaf 2 en-US
+ nodes3 node 1 leaf 3 en-US
+
+- nodes3 node 2
+ nodes3 node 2 leaf 1 en-US
+ nodes3 node 2 leaf 2 en-US
+ nodes3 node 2 leaf 3 en-US
+
+- nodes3 node 3
+ nodes3 node 3 leaf 1 en-US
+ nodes3 node 3 leaf 2 en-US
+ nodes3 node 3 leaf 3 en-US
+
+Context Calc:
+- nodes3 node 1
+ nodes3 node 1 leaf 1 en-US
+ nodes3 node 1 leaf 2 en-US
+ nodes3 node 1 leaf 3 en-US
+
+- nodes3 node 3
+ nodes3 node 3 leaf 1 en-US
+ nodes3 node 3 leaf 2 en-US
+ nodes3 node 3 leaf 3 en-US
+
+Context Draw:
+- nodes3 node 2
+ nodes3 node 2 leaf 1 en-US
+ nodes3 node 2 leaf 2 en-US
+ nodes3 node 2 leaf 3 en-US
+
+================================================================================
+
+nodes4.oxt: Same as nodes3.oxt. Use together with nodes3.txt to test the
+grouping of nodes.
+================================================================================
+
+nodes5.oxt: Defines a node which in turn defines 3 leaves. The Node
+is not assigned to a Module and the AllModule property is false (which is the
+default).This may happen when a node
+had been added to an already existing Module and then this Module was removed. For
+example, an extension adds a node to the "Writer Module" and the
+next office update removes the "Writer Module" (which is rather inconceivable).
+Then the node and its leaves MUST NOT be displayed in OOo's options dialog,
+because the Module is not known. However, it can be displayed in the
+options dialog of the Extension Manager. See also the description for leaf2.oxt.
+================================================================================
+
+modules1.oxt: Defines two Modules and three Nodes. The Nodes may not
+be displayed in OOo's options dialog because there is currently no application
+which uses this Module. However the Nodes are displayed in the options dialog
+of the Extension Manager.
+There are three Nodes defined. The relation ship is this:
+
+-module1
+ -node 1
+ -leaf 1
+ -leaf 2
+ -leaf 3
+ -node 2
+ -leaf 1
+ -leaf 2
+ -leaf 3
+ -node 3
+ -leaf 1
+ -leaf 2
+ -leaf 3
+
+-module2
+ -node1
+ -leaf 1
+ -leaf 2
+ -leaf 3
+ -node3
+ -leaf 1
+ -leaf 2
+ -leaf 3
+
+The options dialog of the Extension Manager shall display only three nodes:
+
+ -node 1
+ -leaf 1
+ -leaf 2
+ -leaf 3
+ -node 2
+ -leaf 1
+ -leaf 2
+ -leaf 3
+ -node 3
+ -leaf 1
+ -leaf 2
+ -leaf 3
+
+or
+
+ -node 1
+ -leaf 1
+ -leaf 2
+ -leaf 3
+ -node 3
+ -leaf 1
+ -leaf 2
+ -leaf 3
+ -node 2
+ -leaf 1
+ -leaf 2
+ -leaf 3
+
+Since the order of Module|s is not defined, the dialog may display first the
+Nodes from module2 and then from module1. If a node is already displayed then
+it is not shown again.
+
+================================================================================
+
+modules2.oxt: Same as modules1, except that the order of nodes and leaves
+is not defined.
diff --git a/testautomation/extensions/optional/input/path_to_extension/LocationTest.odt b/testautomation/extensions/optional/input/path_to_extension/LocationTest.odt
new file mode 100755
index 000000000000..c28acb26511a
--- /dev/null
+++ b/testautomation/extensions/optional/input/path_to_extension/LocationTest.odt
Binary files differ
diff --git a/testautomation/extensions/optional/input/path_to_extension/locationtest.oxt b/testautomation/extensions/optional/input/path_to_extension/locationtest.oxt
new file mode 100755
index 000000000000..33ec6af039a0
--- /dev/null
+++ b/testautomation/extensions/optional/input/path_to_extension/locationtest.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/all1.oxt b/testautomation/extensions/optional/input/platform/all1.oxt
new file mode 100755
index 000000000000..ad9662a7c226
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/all1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/all2.oxt b/testautomation/extensions/optional/input/platform/all2.oxt
new file mode 100755
index 000000000000..632d11b42938
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/all2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/all3.oxt b/testautomation/extensions/optional/input/platform/all3.oxt
new file mode 100755
index 000000000000..ab781552a5aa
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/all3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/extensions.info b/testautomation/extensions/optional/input/platform/extensions.info
new file mode 100755
index 000000000000..fdcda07205aa
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/extensions.info
@@ -0,0 +1,146 @@
+# This is a list of extensions with their respective platforms that they run on.
+# Note that Platfom=none does not necessarily mean that they do not run at all
+# but merely states that this platform is not tested on a regular basis by
+# Sun QA.
+# Note that we have no means to distinguish between system architectures so
+# this test does - for now - exclusively work on i386 based systems (no 64 bit)
+
+[general]
+ExtensionCount=26
+
+[1]
+File=all1.oxt
+Platform=all
+Name=All Platforms 1
+
+[2]
+File=all2.oxt
+Platform=all
+Name=All Platforms 2
+
+[3]
+File=all3.oxt
+Platform=all
+Name=all3.oxt
+
+[4]
+File=freebsd_x86.oxt
+Platform=none
+Name=Single Platform: freebsd_x86
+
+[5]
+File=freebsd_x86_64.oxt
+Platform=none
+Name=Single Platform: freebsd_x86_64
+
+[6]
+File=invalid1.oxt
+Platform=none
+Name=Invalid 1
+
+[7]
+File=invalid2.oxt
+Platform=none
+Name=Invalid 2
+
+[8]
+File=invalid3.oxt
+Platform=none
+Name=Invalid 3
+
+[9]
+File=linux_arm_eabi.oxt
+Platform=none
+Name=Single Platform: linux_arm_eabi
+
+[10]
+File=linux_arm_oabi.oxt
+Platform=none
+Name=Single Platform: linux_arm_oabi
+
+[11]
+File=linux_ia64.oxt
+Platform=none
+Name=Single Platform: linux_ia64
+
+[12]
+File=linux_mips_eb.oxt
+Platform=none
+Name=Single Platform: linux_mips_eb
+
+[13]
+File=linux_mips_el.oxt
+Platform=none
+Name=Single Platform: linux_mips_el
+
+[14]
+File=linux_powerpc.oxt
+Platform=none
+Name=Single Platform: linux_powerpc
+
+[15]
+File=linux_powerpc64.oxt
+Platform=none
+Name=Single Platform: linux_powerpc64
+
+[16]
+File=linux_s390.oxt
+Platform=none
+Name=Single Platform: linux_s390
+
+[17]
+File=linux_s390x.oxt
+Platform=none
+Name=Single Platform: linux_s390x
+
+[18]
+File=linux_sparc.oxt
+Platform=none
+Name=Single Platform: linux_sparc
+
+[19]
+File=linux_x86.oxt
+Platform=Linux
+Name=Single Platform: linux_x86
+
+[20]
+File=linux_x86_64.oxt
+Platform=none
+Name=Single Platform: linux_x86_64
+
+[21]
+File=macosx_powerpc.oxt
+Platform=none
+Name=Single Platform: macosx_powerpc
+
+[22]
+File=macosx_x86.oxt
+Platform=osx
+Name=Single Platform: macosx_x86
+
+[23]
+File=os2_x86.oxt
+Platform=eComStation
+Name=Single Platform: os2_x86
+
+[24]
+File=solaris_sparc.oxt
+Platform=Solaris SPARC
+Name=Single Platform: solaris_sparc
+
+[25]
+File=solaris_x86.oxt
+Platform=Solaris x86
+Name=Single Platform: solaris_x86
+
+[26]
+File=windows_x86.oxt
+Platform=w95
+Name=Single Platform: windows_x86
+
+#[23]
+#File=mul1.oxt
+#Platform=all
+#Name=Multiple Platforms 1
+
+
diff --git a/testautomation/extensions/optional/input/platform/freebsd_x86.oxt b/testautomation/extensions/optional/input/platform/freebsd_x86.oxt
new file mode 100755
index 000000000000..338f5761deb1
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/freebsd_x86.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/freebsd_x86_64.oxt b/testautomation/extensions/optional/input/platform/freebsd_x86_64.oxt
new file mode 100755
index 000000000000..39fee6de1a77
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/freebsd_x86_64.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/invalid1.oxt b/testautomation/extensions/optional/input/platform/invalid1.oxt
new file mode 100755
index 000000000000..13d709f438fc
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/invalid1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/invalid2.oxt b/testautomation/extensions/optional/input/platform/invalid2.oxt
new file mode 100755
index 000000000000..f14257191b81
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/invalid2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/invalid3.oxt b/testautomation/extensions/optional/input/platform/invalid3.oxt
new file mode 100755
index 000000000000..cadffa4f2ac1
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/invalid3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_arm_eabi.oxt b/testautomation/extensions/optional/input/platform/linux_arm_eabi.oxt
new file mode 100755
index 000000000000..9c504e841b98
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_arm_eabi.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_arm_oabi.oxt b/testautomation/extensions/optional/input/platform/linux_arm_oabi.oxt
new file mode 100755
index 000000000000..f2c987f645a7
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_arm_oabi.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_ia64.oxt b/testautomation/extensions/optional/input/platform/linux_ia64.oxt
new file mode 100755
index 000000000000..f579a18ab90d
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_ia64.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_mips_eb.oxt b/testautomation/extensions/optional/input/platform/linux_mips_eb.oxt
new file mode 100755
index 000000000000..bf0bd942332b
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_mips_eb.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_mips_el.oxt b/testautomation/extensions/optional/input/platform/linux_mips_el.oxt
new file mode 100755
index 000000000000..6bd56446831b
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_mips_el.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_powerpc.oxt b/testautomation/extensions/optional/input/platform/linux_powerpc.oxt
new file mode 100755
index 000000000000..e301a3fb3ad1
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_powerpc.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_powerpc64.oxt b/testautomation/extensions/optional/input/platform/linux_powerpc64.oxt
new file mode 100755
index 000000000000..e5f3ae063923
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_powerpc64.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_s390.oxt b/testautomation/extensions/optional/input/platform/linux_s390.oxt
new file mode 100755
index 000000000000..199702ebf056
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_s390.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_s390x.oxt b/testautomation/extensions/optional/input/platform/linux_s390x.oxt
new file mode 100755
index 000000000000..2ed250833fb1
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_s390x.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_sparc.oxt b/testautomation/extensions/optional/input/platform/linux_sparc.oxt
new file mode 100755
index 000000000000..53dfc71e0c4e
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_sparc.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_x86.oxt b/testautomation/extensions/optional/input/platform/linux_x86.oxt
new file mode 100755
index 000000000000..8379539cad34
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_x86.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/linux_x86_64.oxt b/testautomation/extensions/optional/input/platform/linux_x86_64.oxt
new file mode 100755
index 000000000000..0fb18227522f
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/linux_x86_64.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/macosx_powerpc.oxt b/testautomation/extensions/optional/input/platform/macosx_powerpc.oxt
new file mode 100755
index 000000000000..7c146347127a
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/macosx_powerpc.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/macosx_x86.oxt b/testautomation/extensions/optional/input/platform/macosx_x86.oxt
new file mode 100755
index 000000000000..a20aadfefffd
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/macosx_x86.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/mul1.oxt b/testautomation/extensions/optional/input/platform/mul1.oxt
new file mode 100755
index 000000000000..b3b555969bdf
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/mul1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/os2_x86.oxt b/testautomation/extensions/optional/input/platform/os2_x86.oxt
new file mode 100755
index 000000000000..1c7fd40bef9f
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/os2_x86.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/readme.txt b/testautomation/extensions/optional/input/platform/readme.txt
new file mode 100755
index 000000000000..2ab102a27d3c
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/readme.txt
@@ -0,0 +1,49 @@
+Extension which only support one platform
+========================================================
+
+freebsd_x86.oxt: freebsd_x86
+freebsd_x86_86.oxt: freebsd_x86_64
+linux_arm_eabi.oxt: linux_arm_eabi
+linux_arm_oabi.oxt: linux_arm_oabi
+linux_ia64.oxt: linux_ia64
+linux_mips_eb.oxt: linux_mips_eb
+linux_mips_el.oxt: linux_mips_el
+linux_powerpc64.oxt: linux_powerpc64
+linux_powerpc.oxt: linux_powerpc
+linux_s390.oxt: linux_s390
+linux_s390x.oxt: linux_s390x
+linux_sparc.oxt: linux_sparc
+linux_x86.oxt: linux_x86
+linux_x86_64.oxt: linux_x86_64
+macos_powerpc.oxt: macos_powerpc
+macos_x86.oxt: macos_x86
+solaris_sparc.oxt: solaris_sparc
+solaris_x86.oxt: solaris_x86
+windows_x86.oxt: windows_x86
+os2_x86.oxt: os/2_x86
+
+Extensions which support multiple platforms
+=======================================================
+mul1.oxt: windows_x86, linux_x86, solaris_x86
+
+
+All platforms
+=========================================================
+all1.oxt: all, The <platform> element is missing. Default is "all".
+
+all2.oxt: all, <platform value="all" />
+
+all3.oxt: all, no description.xml
+
+
+
+Invalid platforms
+=========================================================
+The following extensions cannot be installed because the platform element
+is not correct. We assume that no valid platform is defined.
+
+invalid1.oxt: <platform />
+
+invalid2.oxt: <platform value=""/>
+
+invalid3.oxt: <platform value="," />
diff --git a/testautomation/extensions/optional/input/platform/solaris_sparc.oxt b/testautomation/extensions/optional/input/platform/solaris_sparc.oxt
new file mode 100755
index 000000000000..a61f81f43942
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/solaris_sparc.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/solaris_x86.oxt b/testautomation/extensions/optional/input/platform/solaris_x86.oxt
new file mode 100755
index 000000000000..44d43df69184
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/solaris_x86.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/platform/windows_x86.oxt b/testautomation/extensions/optional/input/platform/windows_x86.oxt
new file mode 100755
index 000000000000..c66a9b1418fa
--- /dev/null
+++ b/testautomation/extensions/optional/input/platform/windows_x86.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/publisher/extension.info b/testautomation/extensions/optional/input/publisher/extension.info
new file mode 100755
index 000000000000..4750cad09c1f
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/extension.info
@@ -0,0 +1,58 @@
+[info]
+filecount=7
+
+[1]
+file=pub1.oxt
+display_name=pub1.oxt Version 2.0
+publisher=My OpenOffice en-US
+has_publisher=yes
+release_notes=Release Notes
+has_release_notes=yes
+
+[2]
+file=pub2.oxt
+display_name=pub2.oxt Version 2.0
+publisher=My OpenOffice en-US-region1
+has_publisher=yes
+release_notes=Release Notes
+has_release_notes=yes
+
+[3]
+file=pub3.oxt
+display_name=pub3.oxt Version 2.0
+publisher=My OpenOffice en
+has_publisher=yes
+release_notes=Release Notes
+has_release_notes=yes
+
+[4]
+file=pub4.oxt
+display_name=pub4.oxt Version 2.0
+publisher=My OpenOffice en-GB
+has_publisher=yes
+release_notes=Release Notes
+has_release_notes=yes
+
+[5]
+file=pub5.oxt
+display_name=pub5.oxt Version 2.0
+publisher=My OpenOffice de
+has_publisher=yes
+release_notes=Release Notes
+has_release_notes=yes
+
+[6]
+file=pub6.oxt
+display_name=pub6.oxt Version 2.0
+publisher=My OpenOffice en-US
+has_publisher=yes
+release_notes=Release Notes
+has_release_notes=no
+
+[7]
+file=pub7.oxt
+display_name=pub7.oxt Version 2.0
+publisher=
+has_publisher=no
+release_notes=Release Notes
+has_release_notes=yes
diff --git a/testautomation/extensions/optional/input/publisher/pub1.oxt b/testautomation/extensions/optional/input/publisher/pub1.oxt
new file mode 100755
index 000000000000..c44ee9f3bc56
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/pub1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/publisher/pub2.oxt b/testautomation/extensions/optional/input/publisher/pub2.oxt
new file mode 100755
index 000000000000..438bcae830a3
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/pub2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/publisher/pub3.oxt b/testautomation/extensions/optional/input/publisher/pub3.oxt
new file mode 100755
index 000000000000..62fd69f5595a
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/pub3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/publisher/pub4.oxt b/testautomation/extensions/optional/input/publisher/pub4.oxt
new file mode 100755
index 000000000000..4f6224f780cd
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/pub4.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/publisher/pub5.oxt b/testautomation/extensions/optional/input/publisher/pub5.oxt
new file mode 100755
index 000000000000..1774e6cd35c3
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/pub5.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/publisher/pub6.oxt b/testautomation/extensions/optional/input/publisher/pub6.oxt
new file mode 100755
index 000000000000..791a37f8e710
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/pub6.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/publisher/pub7.oxt b/testautomation/extensions/optional/input/publisher/pub7.oxt
new file mode 100755
index 000000000000..96e96887d0b1
--- /dev/null
+++ b/testautomation/extensions/optional/input/publisher/pub7.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/BadDesc.oxt b/testautomation/extensions/optional/input/simpleLicense/BadDesc.oxt
new file mode 100755
index 000000000000..436778d54dd4
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/BadDesc.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/BadNamespace.oxt b/testautomation/extensions/optional/input/simpleLicense/BadNamespace.oxt
new file mode 100755
index 000000000000..252115348ff6
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/BadNamespace.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/BadRoot.oxt b/testautomation/extensions/optional/input/simpleLicense/BadRoot.oxt
new file mode 100755
index 000000000000..1cda25643afb
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/BadRoot.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/CancelLicense.oxt b/testautomation/extensions/optional/input/simpleLicense/CancelLicense.oxt
new file mode 100755
index 000000000000..7e1998843254
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/CancelLicense.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/IncompAttr1.oxt b/testautomation/extensions/optional/input/simpleLicense/IncompAttr1.oxt
new file mode 100755
index 000000000000..c2cb36b55b1d
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/IncompAttr1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/IncompAttr2.oxt b/testautomation/extensions/optional/input/simpleLicense/IncompAttr2.oxt
new file mode 100755
index 000000000000..fa2235ef7b4c
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/IncompAttr2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/LongLic.oxt b/testautomation/extensions/optional/input/simpleLicense/LongLic.oxt
new file mode 100755
index 000000000000..cb22c91ed576
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/LongLic.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/MissingLic.oxt b/testautomation/extensions/optional/input/simpleLicense/MissingLic.oxt
new file mode 100755
index 000000000000..7bfb4b62c551
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/MissingLic.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/MissingLicRef.oxt b/testautomation/extensions/optional/input/simpleLicense/MissingLicRef.oxt
new file mode 100755
index 000000000000..a5a0982974ad
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/MissingLicRef.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/NoDesc.oxt b/testautomation/extensions/optional/input/simpleLicense/NoDesc.oxt
new file mode 100755
index 000000000000..ac83dac97eba
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/NoDesc.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/NoLangNoDefault.oxt b/testautomation/extensions/optional/input/simpleLicense/NoLangNoDefault.oxt
new file mode 100755
index 000000000000..17f125b30f63
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/NoLangNoDefault.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/OnlyDefault.oxt b/testautomation/extensions/optional/input/simpleLicense/OnlyDefault.oxt
new file mode 100755
index 000000000000..3b6e4b9fd74a
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/OnlyDefault.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/ShortLicense.oxt b/testautomation/extensions/optional/input/simpleLicense/ShortLicense.oxt
new file mode 100755
index 000000000000..7e1998843254
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/ShortLicense.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/simpleLicense/ShortLicenseShared.oxt b/testautomation/extensions/optional/input/simpleLicense/ShortLicenseShared.oxt
new file mode 100755
index 000000000000..c0b0950fb133
--- /dev/null
+++ b/testautomation/extensions/optional/input/simpleLicense/ShortLicenseShared.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/update/plain1.oxt b/testautomation/extensions/optional/input/update/plain1.oxt
new file mode 100755
index 000000000000..ef3edc023c5f
--- /dev/null
+++ b/testautomation/extensions/optional/input/update/plain1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/update/plain2.oxt b/testautomation/extensions/optional/input/update/plain2.oxt
new file mode 100755
index 000000000000..242ea8bfa6f2
--- /dev/null
+++ b/testautomation/extensions/optional/input/update/plain2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/update/plain3.oxt b/testautomation/extensions/optional/input/update/plain3.oxt
new file mode 100755
index 000000000000..7dd56d0314df
--- /dev/null
+++ b/testautomation/extensions/optional/input/update/plain3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/update/readme.txt b/testautomation/extensions/optional/input/update/readme.txt
new file mode 100755
index 000000000000..e48fa3db5ff3
--- /dev/null
+++ b/testautomation/extensions/optional/input/update/readme.txt
@@ -0,0 +1,26 @@
+The folder contains only simple extension. That is, they only contain
+- META-INF
+-t.rdb
+-description.xml
+
+The description.xml contains only a version and one URL to the update data
+
+For example:
+
+
+<?xml version="1.0" encoding="UTF-8"?>
+<description xmlns="http://openoffice.org/extensions/description/2006"
+ xmlns:xlink="http://www.w3.org/1999/xlink">
+ <version value="1.0" />
+
+ <update-information>
+ <src xlink:href="http://extensions.openoffice.org/testarea/desktop/simple/plain1.update.xml" />
+ </update-information>
+</description>
+
+
+The update information which is referenced in the update-information and the update is committed in the extensions/www project. To modify them get the project:
+
+cvs co extensions/wwww
+
+the files can be found under extensions/www/testarea/desktop
diff --git a/testautomation/extensions/optional/input/versions/plain.oxt b/testautomation/extensions/optional/input/versions/plain.oxt
new file mode 100755
index 000000000000..c0cb381edf62
--- /dev/null
+++ b/testautomation/extensions/optional/input/versions/plain.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/versions/version_0.0/plain.oxt b/testautomation/extensions/optional/input/versions/version_0.0/plain.oxt
new file mode 100755
index 000000000000..f156014eb8c3
--- /dev/null
+++ b/testautomation/extensions/optional/input/versions/version_0.0/plain.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/versions/version_1.02.4.7.0/plain.oxt b/testautomation/extensions/optional/input/versions/version_1.02.4.7.0/plain.oxt
new file mode 100755
index 000000000000..521a2b6c77a8
--- /dev/null
+++ b/testautomation/extensions/optional/input/versions/version_1.02.4.7.0/plain.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/versions/version_1.2.15.3/plain.oxt b/testautomation/extensions/optional/input/versions/version_1.2.15.3/plain.oxt
new file mode 100755
index 000000000000..000f3a144fbd
--- /dev/null
+++ b/testautomation/extensions/optional/input/versions/version_1.2.15.3/plain.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/versions/version_1.2.3/plain.oxt b/testautomation/extensions/optional/input/versions/version_1.2.3/plain.oxt
new file mode 100755
index 000000000000..e34264591c58
--- /dev/null
+++ b/testautomation/extensions/optional/input/versions/version_1.2.3/plain.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/versions/version_1.2.4.7/plain.oxt b/testautomation/extensions/optional/input/versions/version_1.2.4.7/plain.oxt
new file mode 100755
index 000000000000..d63c79a734b6
--- /dev/null
+++ b/testautomation/extensions/optional/input/versions/version_1.2.4.7/plain.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/versions/version_none/plain.oxt b/testautomation/extensions/optional/input/versions/version_none/plain.oxt
new file mode 100755
index 000000000000..fc227b099ec8
--- /dev/null
+++ b/testautomation/extensions/optional/input/versions/version_none/plain.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/web_update/readme.txt b/testautomation/extensions/optional/input/web_update/readme.txt
new file mode 100755
index 000000000000..4ae5ddd9182f
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/readme.txt
@@ -0,0 +1,133 @@
+The folder contains extensions which need to be updated through a web site.
+The "Updates dialog" of the Extension Manager will mark the updates for these
+extensions as "browser based update". The Extension Manager will open a browser
+for each of the extensions and navigate to the respective website.
+
+================================================================================
+web1.oxt - web5.oxt:
+================================================================================
+They contain <update-information>. That is they reference directly the respective
+webX.update.xml (for example, web1.update.xml) files which are available at
+http://extensions.openoffice.org/testarea/desktop/website_update/update/...
+For example:
+http://extensions.openoffice.org/testarea/desktop/website_update/update/web2.update.xml
+
+The update information contain multiple URLs to "localized" web sites. Each URL is
+assigned to a particular local. For example:
+
+<src xlink:href="http://extensions.openoffice.org/testarea/desktop/website_update/update/web1_de.html" lang="de"/>
+
+The Extension Manager will choose the URLs where the lang attribute matches most
+closely the locale of the office.
+
+The following table shows what localized web site is used, when the office uses the locale
+en-US. The web page will display the locale used. See update/web1_de.html, etc.
+
+
+Localization:
+
+Installed office en-US
+ | publisher | release notes
+=============================================
+web1.oxt | en-US | en-US
+---------------------------------------------
+web2.oxt | en-US-region1 | en-US-region1
+---------------------------------------------
+web3.oxt | en | en
+---------------------------------------------
+web4.oxt | en-GB | en-GB
+---------------------------------------------
+web5.oxt | de | de
+
+
+================================================================================
+web6.oxt
+================================================================================
+Need not be committed in extensions/www/testarea/desktop.
+
+web6.oxt is intended for tests with extensions.services.openoffice.org.
+It does not contain <update-information>. That is, the Extension Manager will obtain
+the update information from the repository as feed:
+
+http://updateext.services.openoffice.org/ProductUpdateService/check.Update
+
+Test
+----
+Repository:
+
+-Create the new extension in the repository.
+-Provide a company name and a URL to the company website. In our case this should be
+ http://extensions.openoffice.org/testarea/desktop/website_update/update/web1_en-US.html
+
+-Create a new release for the extension. Upload the description.xml of version 2.0
+(update/web6/description.xml). Provide a download URL for the web site (field
+ "Download from page / Open follow up page URL", which should be
+ http://extensions.openoffice.org/testarea/desktop/website_update/update/web1_en-US.html
+ Provide release notes.
+
+
+Office:
+-Install version 1.0 of the extension:
+ desktop/test/deployment/update/website_update/web6.oxt
+
+-Run the update in the Extension Manager
+
+
+Result:
+The Update Dialog should show the publisher name as provided in "Provider URL" field
+of the extension edit page (not release).
+
+A release notes link is displayed with an URL to the release notes as provided in
+the "Provider Title" field of the extension release edit page.
+
+When running the update then the web browser should navigate to
+http://extensions.openoffice.org/testarea/desktop/website_update/update/web1_en-US.html
+
+
+================================================================================
+web7.oxt
+================================================================================
+Need not be committed in extensions/www/testarea/desktop
+
+web7.oxt is intended for tests with extensions.services.openoffice.org.
+It does not contain <update-information>. That is, the Extension Manager will obtain
+the update information from the repository as feed:
+
+http://updateext.services.openoffice.org/ProductUpdateService/check.Update
+
+The description.xml which will be uploaded contains URLs for release notes and publisher
+names/ URLs. That is, these information are not generated from the information of the
+repository web site.
+
+Test
+-----------
+Repository:
+
+-Create the new extension in the repository.
+-Provide a company name and a URL to the company website. In our case these should be different
+ to those provided in the description.xml. These should NOT go into the update feed.
+ Choose for example as "Provider Title": FOO and as "Provider URL" some valid URL but NOT
+ http://extensions.openoffice.org/testarea/desktop/website_update/update/web1_en-US.html
+
+-Create a new release for the extension. Upload the description.xml of version 2.0
+(update/web7/description.xml). Provide a download URL for the web site (field
+ "Download from page / Open follow up page URL", which should be
+ http://extensions.openoffice.org/testarea/desktop/website_update/update/web1_en-US.html
+ Provide release notes.
+
+Office:
+-Install version 1.0 of the extension:
+ desktop/test/deployment/update/website_update/web7.oxt
+
+-Run the update in the Extension Manager
+
+Result:
+The Update Dialog should show the publisher name as provided in the description.xml.
+That is: My OpenOffice en-US and NOT "FOO".
+
+A release notes link is displayed with an URL to the release notes as provided in
+the description.xml. That is:
+http://extensions.openoffice.org/testarea/desktop/publisher/release-notes_xxx.html
+
+When running the update then the web browser should navigate to
+http://extensions.openoffice.org/testarea/desktop/website_update/update/web1_en-US.html
diff --git a/testautomation/extensions/optional/input/web_update/web1.oxt b/testautomation/extensions/optional/input/web_update/web1.oxt
new file mode 100755
index 000000000000..7c17586e0454
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/web1.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/web_update/web2.oxt b/testautomation/extensions/optional/input/web_update/web2.oxt
new file mode 100755
index 000000000000..705e70a7533f
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/web2.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/web_update/web3.oxt b/testautomation/extensions/optional/input/web_update/web3.oxt
new file mode 100755
index 000000000000..4e63a75f0cbf
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/web3.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/web_update/web4.oxt b/testautomation/extensions/optional/input/web_update/web4.oxt
new file mode 100755
index 000000000000..e66513e68384
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/web4.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/web_update/web5.oxt b/testautomation/extensions/optional/input/web_update/web5.oxt
new file mode 100755
index 000000000000..65b02db9347d
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/web5.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/web_update/web6.oxt b/testautomation/extensions/optional/input/web_update/web6.oxt
new file mode 100755
index 000000000000..98416edfa583
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/web6.oxt
Binary files differ
diff --git a/testautomation/extensions/optional/input/web_update/web7.oxt b/testautomation/extensions/optional/input/web_update/web7.oxt
new file mode 100755
index 000000000000..31ba45f032d5
--- /dev/null
+++ b/testautomation/extensions/optional/input/web_update/web7.oxt
Binary files differ
diff --git a/testautomation/extensions/required/e_update.bas b/testautomation/extensions/required/e_update.bas
new file mode 100755
index 000000000000..7761fae5ebe2
--- /dev/null
+++ b/testautomation/extensions/required/e_update.bas
@@ -0,0 +1,58 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extension Update Test
+'*
+'\******************************************************************************
+
+sub main
+
+ use "extensions\required\includes\e_update.inc"
+
+ call hStatusIn( "extensions" , "e_update.bas" )
+ call tExtensionManagerResources()
+ call hStatusOut()
+
+end sub
+
+'*******************************************************************************
+
+sub LoadIncludeFiles
+
+ use "global\system\includes\gvariabl.inc"
+ use "global\system\includes\master.inc"
+
+ use "global\tools\includes\optional\t_user_info.inc"
+ use "global\tools\includes\optional\t_filetools.inc"
+
+ gApplication = "WRITER"
+ call GetUseFiles()
+
+end sub
+
diff --git a/testautomation/extensions/required/includes/e_update.inc b/testautomation/extensions/required/includes/e_update.inc
new file mode 100644
index 000000000000..3f63beab2ff0
--- /dev/null
+++ b/testautomation/extensions/required/includes/e_update.inc
@@ -0,0 +1,166 @@
+'encoding UTF-8 Do not remove or change this line!
+'**************************************************************************
+' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+'
+' Copyright 2000, 2010 Oracle and/or its affiliates.
+'
+' OpenOffice.org - a multi-platform office productivity suite
+'
+' This file is part of OpenOffice.org.
+'
+' OpenOffice.org is free software: you can redistribute it and/or modify
+' it under the terms of the GNU Lesser General Public License version 3
+' only, as published by the Free Software Foundation.
+'
+' OpenOffice.org is distributed in the hope that it will be useful,
+' but WITHOUT ANY WARRANTY; without even the implied warranty of
+' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+' GNU Lesser General Public License version 3 for more details
+' (a copy is included in the LICENSE file that accompanied this code).
+'
+' You should have received a copy of the GNU Lesser General Public License
+' version 3 along with OpenOffice.org. If not, see
+' <http://www.openoffice.org/license.html>
+' for a copy of the LGPLv3 License.
+'
+'/******************************************************************************
+'*
+'* owner : gregor.hartmann@oracle.com
+'*
+'* short description : Extension Update Test
+'*
+'\******************************************************************************
+
+testcase tExtensionManagerResources()
+
+ ' Test is based on issue #i86913 and the common rules for update tests (QA)
+
+ ' We need to know if the user may change extension parameters. This is the case
+ ' when a) the user is root/Administrator or b) the office was installed
+ ' for the current user only
+
+ dim bUserIsAdmin as boolean : bUserIsAdmin = hCheckForAdministratorPermissions()
+ dim iBreakCounter as integer : iBreakCounter = 0
+ dim iFilterItems as integer
+
+ const MAX_ITERATIONS = 50
+ const FILTER_ITEMS = 10 ' This is the number of filters/extension types we know
+
+ printlog( "Ressource test for the Extension Manager UI" )
+ ToolsPackageManager
+
+ kontext "PackageManager"
+ if ( PackageManager.exists( 1 ) ) then
+
+ ' OOo comes with a few preinstalled, shared - extensions. We need at least one.
+ ' This test is bound to fail if we have a user-installed extension at the
+ ' first position of the Extension Manager UI list. There is no way we can
+ ' check that for now. However, this is hardly ever the case.
+
+ if ( BrowsePackages.getItemCount() = 0 ) then
+ warnlog( "This test requires at least one extension to be installed." )
+ printlog( "Some of the controls are not available or disabled." )
+ goto endsub
+ endif
+
+ call dialogtest( PackageManager )
+
+ kontext "PackgeManager"
+ printlog( "Add..." )
+ Add.click()
+
+ kontext "OeffnenDlg"
+ if ( OeffnenDlg.exists( 1 ) ) then
+ iFilterItems = DateiTyp.getItemCount
+ if ( iFilterItems <> FILTER_ITEMS ) then
+ warnlog( "The file type filter list is incorrect" )
+ printlog( "Expected: " & FILTER_ITEMS )
+ printlog( "Found...: " & iFilterItems )
+ '0: All files (*.*)
+ '1: Configuration Data
+ '2: Configuration Schema
+ '3: Extension
+ '4: UNO Components
+ '5: UNO Dynamic Library Component
+ '6: UNO Java Component
+ '7: UNO Java Type Library
+ '8: UNO Python Component
+ '9: UNO RDB Type Library
+ else
+ printlog( "The number of filters in Add Extensions Dialog is ok" )
+ endif
+ Oeffnendlg.cancel()
+ else
+ warnlog( "File Open dialog did not open" )
+ endif
+
+ kontext "PackageManager"
+ printlog( "Check for updates..." )
+ updates.click()
+
+ kontext "ExtensionUpdate"
+ if ( ExtensionUpdate.exists( 2 ) ) then
+ call dialogtest( ExtensionUpdate )
+ ExtensionUpdate.close()
+ ExtensionUpdate.notExists( 3 )
+ else
+ warnlog( "Extenson Update dialog did not open" )
+ endif
+
+ kontext "PackageManager"
+ printlog( "Controls belonging to extensions" )
+
+ BrowsePackages.select( 1 )
+ printlog( "Extension name.......: " & BrowsePackages.getItemText( 1 , 1 ) )
+ printlog( "Extension version....: " & BrowsePackages.getItemText( 1 , 2 ) )
+ printlog( "Extension description: " & BrowsePackages.getItemText( 1 , 3 ) )
+
+ if ( options.exists() ) then
+ if ( options.isEnabled() ) then
+ printlog( "Extension has options" )
+ options.click()
+
+ kontext "OptionenDlg"
+ OptionenDLg.close()
+ WaitSlot()
+ else
+ warnlog( "Extension Options button visible but disabled" )
+ endif
+ else
+ printlog( "Extension Options button does not exist, no options available" )
+ endif
+
+ kontext "PackageManager"
+ BrowsePackages.select( 1 )
+
+ printlog( "Check visibility of some controls, many are hidden for bundled extensions" )
+ if ( disable.exists() ) then
+ if ( disable.isVisible() ) then
+ warnlog( "Button <Disable> should not be visible for shared extensions" )
+ else
+ printlog( "Button <Disable> is hidden" )
+ endif
+ else
+ printlog( "The control <Disable> is not defined in this context" )
+ endif
+
+ if ( remove.exists() ) then
+ if ( remove.isVisible() ) then
+ warnlog( "Button <Remove> should not be visible for shared extensions" )
+ else
+ printlog( "Button <Remove> is hidden" )
+ endif
+ else
+ printlog( "The control <Remove> is not defined in this context" )
+ endif
+
+ kontext "PackageManager"
+ PackageManager.close()
+
+ else
+ warnlog( "Extension Manager UI did not open" )
+ endif
+
+endcase
+
+