diff --git a/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF b/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF index 7b905f69ddc..5d2302991e9 100644 --- a/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.swt.svg/META-INF/MANIFEST.MF @@ -3,13 +3,16 @@ Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.swt.svg Bundle-Version: 3.132.100.qualifier Automatic-Module-Name: org.eclipse.swt.svg -Bundle-Name: %fragmentName +Bundle-ActivationPolicy: lazy +Bundle-Name: %pluginName Bundle-Vendor: %providerName -Bundle-Localization: fragment +Bundle-Localization: plugin Bundle-RequiredExecutionEnvironment: JavaSE-21 -Fragment-Host: org.eclipse.swt +Require-Bundle: org.eclipse.swt Import-Package: com.github.weisj.jsvg;version="[2.0.0,3.0.0)", com.github.weisj.jsvg.parser;version="[2.0.0,3.0.0)", com.github.weisj.jsvg.view;version="[2.0.0,3.0.0)" Export-Package: org.eclipse.swt.svg;x-internal:=true -Provide-Capability: eclipse.swt;image.format="svg";version:Version="1.0" +Provide-Capability: osgi.serviceloader;osgi.serviceloader="org.eclipse.swt.internal.image.SVGRasterizer", + eclipse.swt;image.format="svg";version:Version="1.0" +Require-Capability: osgi.extender;filter:="(osgi.extender=osgi.serviceloader.registrar)" diff --git a/bundles/org.eclipse.swt.svg/META-INF/p2.inf b/bundles/org.eclipse.swt.svg/META-INF/p2.inf deleted file mode 100644 index 9818f97c079..00000000000 --- a/bundles/org.eclipse.swt.svg/META-INF/p2.inf +++ /dev/null @@ -1,32 +0,0 @@ -# ensure that the applicable implementation fragment gets installed (https://github.com/eclipse-platform/eclipse.platform.releng.aggregator/issues/3006) -requires.1.namespace = org.eclipse.equinox.p2.iu -requires.1.name = org.eclipse.swt.win32.win32.x86_64 -requires.1.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=x86_64)) - -requires.2.namespace = org.eclipse.equinox.p2.iu -requires.2.name = org.eclipse.swt.cocoa.macosx.x86_64 -requires.2.filter = (&(osgi.os=macosx)(osgi.ws=cocoa)(osgi.arch=x86_64)) - -requires.3.namespace = org.eclipse.equinox.p2.iu -requires.3.name = org.eclipse.swt.gtk.linux.x86_64 -requires.3.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=x86_64)) - -requires.4.namespace = org.eclipse.equinox.p2.iu -requires.4.name = org.eclipse.swt.gtk.linux.ppc64le -requires.4.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=ppc64le)) - -requires.5.namespace = org.eclipse.equinox.p2.iu -requires.5.name = org.eclipse.swt.gtk.linux.aarch64 -requires.5.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=aarch64)) - -requires.6.namespace = org.eclipse.equinox.p2.iu -requires.6.name = org.eclipse.swt.cocoa.macosx.aarch64 -requires.6.filter = (&(osgi.os=macosx)(osgi.ws=cocoa)(osgi.arch=aarch64)) - -requires.7.namespace = org.eclipse.equinox.p2.iu -requires.7.name = org.eclipse.swt.win32.win32.aarch64 -requires.7.filter = (&(osgi.os=win32)(osgi.ws=win32)(osgi.arch=aarch64)) - -requires.8.namespace = org.eclipse.equinox.p2.iu -requires.8.name = org.eclipse.swt.gtk.linux.riscv64 -requires.8.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=riscv64)) diff --git a/bundles/org.eclipse.swt.svg/build.properties b/bundles/org.eclipse.swt.svg/build.properties index 5c42651be32..816374508f3 100644 --- a/bundles/org.eclipse.swt.svg/build.properties +++ b/bundles/org.eclipse.swt.svg/build.properties @@ -17,15 +17,6 @@ source.. = src/,\ output.. = bin/ bin.includes = META-INF/,\ .,\ - fragment.properties,\ + plugin.properties,\ about.html src.includes = about.html - -jars.extra.classpath = platform:/plugin/org.eclipse.swt.cocoa.macosx.aarch64,\ - platform:/plugin/org.eclipse.swt.cocoa.macosx.x86_64,\ - platform:/plugin/org.eclipse.swt.gtk.linux.aarch64,\ - platform:/plugin/org.eclipse.swt.gtk.linux.ppc64le,\ - platform:/plugin/org.eclipse.swt.gtk.linux.riscv64,\ - platform:/plugin/org.eclipse.swt.gtk.linux.x86_64,\ - platform:/plugin/org.eclipse.swt.win32.win32.aarch64,\ - platform:/plugin/org.eclipse.swt.win32.win32.x86_64 diff --git a/bundles/org.eclipse.swt.svg/fragment.properties b/bundles/org.eclipse.swt.svg/plugin.properties similarity index 93% rename from bundles/org.eclipse.swt.svg/fragment.properties rename to bundles/org.eclipse.swt.svg/plugin.properties index 1ae8d5b50da..aca08332f56 100644 --- a/bundles/org.eclipse.swt.svg/fragment.properties +++ b/bundles/org.eclipse.swt.svg/plugin.properties @@ -10,5 +10,5 @@ # Contributors: # Michael Bangas (Vector Informatik GmbH) - initial API and implementation ############################################################################### -fragmentName = SWT SVG Rendering Support +pluginName = SWT SVG Rendering Support providerName = Eclipse.org diff --git a/bundles/org.eclipse.swt/META-INF/MANIFEST.MF b/bundles/org.eclipse.swt/META-INF/MANIFEST.MF index 2210f931765..6c4a5921d7b 100644 --- a/bundles/org.eclipse.swt/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.swt/META-INF/MANIFEST.MF @@ -16,7 +16,7 @@ Export-Package: org.eclipse.swt.events, org.eclipse.swt.graphics, org.eclipse.swt.internal;x-internal:=true, - org.eclipse.swt.internal.image;x-internal:=true, + org.eclipse.swt.internal.image;x-friends:="org.eclipse.swt.svg", org.eclipse.swt.layout, org.eclipse.swt.opengl, org.eclipse.swt.printing, @@ -25,3 +25,5 @@ Export-Package: Eclipse-ExtensibleAPI: true Bundle-RequiredExecutionEnvironment: JavaSE-21 Automatic-Module-Name: org.eclipse.swt +Require-Capability: osgi.extender;filter:="(&(osgi.extender=osgi.serviceloader.processor)(version>=1.0.0)(!(version>=2.0.0)))", + osgi.serviceloader;filter:="(osgi.serviceloader=org.eclipse.swt.internal.image.SVGRasterizer)";resolution:=optional diff --git a/pom.xml b/pom.xml index 65542e6862f..a3f362591c2 100644 --- a/pom.xml +++ b/pom.xml @@ -236,6 +236,7 @@ examples/org.eclipse.swt.examples.ole.win32 examples/org.eclipse.swt.examples.views tests/org.eclipse.swt.tests + tests/org.eclipse.swt.svg.tests features/org.eclipse.swt.tools.feature diff --git a/tests/org.eclipse.swt.svg.tests/.classpath b/tests/org.eclipse.swt.svg.tests/.classpath new file mode 100644 index 00000000000..1aa9eca95a0 --- /dev/null +++ b/tests/org.eclipse.swt.svg.tests/.classpath @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tests/org.eclipse.swt.svg.tests/.project b/tests/org.eclipse.swt.svg.tests/.project new file mode 100644 index 00000000000..4362fd58090 --- /dev/null +++ b/tests/org.eclipse.swt.svg.tests/.project @@ -0,0 +1,41 @@ + + + org.eclipse.swt.svg.tests + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + + + .settings/org.eclipse.jdt.core.prefs + 1 + SHARED_SETTINGS/org.eclipse.jdt.core.prefs + + + + + SHARED_SETTINGS + $%7BPARENT-2-PROJECT_LOC%7D/examples/.settings_shared + + + diff --git a/tests/org.eclipse.swt.svg.tests/.settings/org.eclipse.core.resources.prefs b/tests/org.eclipse.swt.svg.tests/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..99f26c0203a --- /dev/null +++ b/tests/org.eclipse.swt.svg.tests/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/tests/org.eclipse.swt.svg.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.swt.svg.tests/META-INF/MANIFEST.MF new file mode 100644 index 00000000000..84b5294b599 --- /dev/null +++ b/tests/org.eclipse.swt.svg.tests/META-INF/MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Eclipse SWT Tests SVG +Fragment-Host: org.eclipse.swt.svg +Bundle-SymbolicName: org.eclipse.swt.svg.tests +Bundle-Version: 3.0.0.qualifier +Automatic-Module-Name: org.eclipse.swt.svg.tests +Bundle-RequiredExecutionEnvironment: JavaSE-21 +Import-Package: org.junit.jupiter.api;version="[5.14.0,6.0.0)", + org.junit.jupiter.api.function;version="[5.14.0,6.0.0)", + org.junit.platform.suite.api;version="[1.14.0,2.0.0)" + diff --git a/tests/org.eclipse.swt.svg.tests/build.properties b/tests/org.eclipse.swt.svg.tests/build.properties new file mode 100644 index 00000000000..46e29c2929a --- /dev/null +++ b/tests/org.eclipse.swt.svg.tests/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . + +pom.model.packaging = eclipse-test-plugin +pom.model.property.testClass = org.eclipse.swt.svg.AllSVGTests diff --git a/tests/org.eclipse.swt.svg.tests/src/org/eclipse/swt/svg/AllSVGTests.java b/tests/org.eclipse.swt.svg.tests/src/org/eclipse/swt/svg/AllSVGTests.java new file mode 100644 index 00000000000..a8b9e4f241a --- /dev/null +++ b/tests/org.eclipse.swt.svg.tests/src/org/eclipse/swt/svg/AllSVGTests.java @@ -0,0 +1,21 @@ +/******************************************************************************* + * Copyright (c) 2026 Vector Informatik GmbH and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.swt.svg; + +import org.junit.platform.suite.api.SelectClasses; +import org.junit.platform.suite.api.Suite; + +@Suite +@SelectClasses({ // + JSVGRasterizerTest.class, // +}) +public class AllSVGTests { +} diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/JSVGRasterizerTest.java b/tests/org.eclipse.swt.svg.tests/src/org/eclipse/swt/svg/JSVGRasterizerTest.java similarity index 86% rename from tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/JSVGRasterizerTest.java rename to tests/org.eclipse.swt.svg.tests/src/org/eclipse/swt/svg/JSVGRasterizerTest.java index 995b4fa9327..3305ca87527 100644 --- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/JSVGRasterizerTest.java +++ b/tests/org.eclipse.swt.svg.tests/src/org/eclipse/swt/svg/JSVGRasterizerTest.java @@ -11,9 +11,8 @@ * Contributors: * Yatta Solutions - initial API and implementation *******************************************************************************/ -package org.eclipse.swt.tests.junit; +package org.eclipse.swt.svg; -import static org.eclipse.swt.tests.junit.SwtTestUtil.assertSWTProblem; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -23,10 +22,8 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; import org.eclipse.swt.graphics.ImageData; -import org.eclipse.swt.svg.JSVGRasterizer; import org.junit.jupiter.api.Test; -@SuppressWarnings("restriction") class JSVGRasterizerTest { private final JSVGRasterizer rasterizer = new JSVGRasterizer(); @@ -51,13 +48,7 @@ void testRasterizeWithZoom() { @Test void testRasterizeWithZoomNegative() { - try { - rasterizer.rasterizeSVG(svgStream(svgString), -100); - - } catch (IllegalArgumentException e) { - assertSWTProblem("Incorrect exception thrown for negative zoom", SWT.ERROR_INVALID_ARGUMENT, e); - } - + assertThrows(IllegalArgumentException.class, () -> rasterizer.rasterizeSVG(svgStream(svgString), -100)); } @Test diff --git a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java index 6a1b0f41fac..06adef5fac4 100644 --- a/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java +++ b/tests/org.eclipse.swt.tests/JUnit Tests/org/eclipse/swt/tests/junit/AllNonBrowserTests.java @@ -48,7 +48,6 @@ public class AllNonBrowserTests { AllWidgetTests.class, // // Rest of tests alphabetically DPIUtilTests.class, // - JSVGRasterizerTest.class, // Test_org_eclipse_swt_accessibility_Accessible.class, // Test_org_eclipse_swt_accessibility_AccessibleControlEvent.class, // Test_org_eclipse_swt_accessibility_AccessibleEvent.class, //