On Thu, 10 Oct 2019 14:56:19 GMT, Hadzic Samir <shad...@openjdk.org> wrote:
> On Thu, 10 Oct 2019 12:19:18 GMT, Kevin Rushforth <k...@openjdk.org> wrote: > >> On Thu, 10 Oct 2019 09:12:57 GMT, Hadzic Samir <shad...@openjdk.org> wrote: >> >>> On Wed, 9 Oct 2019 20:09:58 GMT, Kevin Rushforth <k...@openjdk.org> wrote: >>> >>>> On Wed, 9 Oct 2019 16:09:58 GMT, Hadzic Samir <shad...@openjdk.org> wrote: >>>> >>>>> On Wed, 9 Oct 2019 16:09:07 GMT, Kevin Rushforth <k...@openjdk.org> wrote: >>>>> >>>>>> On Wed, 9 Oct 2019 16:09:06 GMT, Hadzic Samir <shad...@openjdk.org> >>>>>> wrote: >>>>>> >>>>>>> Fix for https://github.com/javafxports/openjdk-jfx/issues/573 >>>>>>> >>>>>>> Issue on JDK bug tracking : >>>>>>> https://bugs.openjdk.java.net/browse/JDK-8230231 >>>>>>> >>>>>>> I tried to add a test but I do not succeed at even running the existing >>>>>>> Web tests.. I will need some help on that side.. >>>>>>> >>>>>>> ---------------- >>>>>>> >>>>>>> Commits: >>>>>>> - e9df9db5: Adding double-quote for HTMLEditorSkin font-family >>>>>>> >>>>>>> Changes: https://git.openjdk.java.net/jfx/pull/12/files >>>>>>> Webrev: https://webrevs.openjdk.java.net/jfx/12/webrev.00 >>>>>>> Issue: https://bugs.openjdk.java.net/browse/JDK-8230231 >>>>>>> Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 mod >>>>>>> Patch: https://git.openjdk.java.net/jfx/pull/12.diff >>>>>>> Fetch: git fetch https://git.openjdk.java.net/jfx pull/12/head:pull/12 >>>>>> >>>>>> @Maxoudela please edit the title as follows: >>>>>> >>>>>> 1. Remove the space before the `:` (that extra space is why jcheck >>>>>> failed) >>>>>> 2. Change the text of the title to match the JBS bug summary exactly. >>>>>> You can edit the JBS bug summary if you feel it needs to be changed, but >>>>>> in this case, the JBS bug has a title that is more in line with our >>>>>> usual practice of having the bug title be descriptive of what the >>>>>> problem is and not what the solution happens to be. >>>>>> >>>>>> As for unit tests, you will very likely need to add this as a system >>>>>> test under `tests/system/src/main/test`. See >>>>>> [tests/system/src/test/java/test/javafx/scene/web/HTMLEditorTest.java](https://github.com/openjdk/jfx/blob/master/tests/system/src/test/java/test/javafx/scene/web/HTMLEditorTest.java). >>>>>> Presuming that you can add your test to that existing class, you would >>>>>> run it as follows: >>>>>> >>>>>> gradle -PFULL_TEST=true :systemTests:test --tests HTMLEditorTest >>>>> >>>>> Thanks @kevinrushforth . I'm sorry for posting the Pull request like >>>>> that, I will thoroughly read the contributing guidelines and updates my >>>>> PR accordingly. >>>>> >>>>> I'll try to add a test asap, thanks for the pointer. >>>> >>>>> I'm sorry for posting the Pull request like that >>>> >>>> No problem. I mainly wanted to make sure that you knew why the RFR wasn't >>>> sent. As for the note about the title matching, the contributing >>>> guidelines don't mention that and I now realize that they should -- I'll >>>> add that along with some other improvements I'll be making. >>>> >>>>> I'll try to add a test asap, thanks for the pointer. >>>> >>>> Great, thanks. >>> >>> Hum I do not succeed in running the existing test either. Here is my log. >>> Apparently, the tests are failing because the WebView is null and not >>> initialized. Do you have any clue of what I've been doing wrong? >>> >>> Should I try to update my gradle version and JDK version maybe? >>> gradle -PFULL_TEST=true :systemTests:test --tests HTMLEditorTest >>> Starting a Gradle Daemon (subsequent builds will be faster) >>> >>>> Configure project : >>> MACOSX_MIN_VERSION = 10.9 >>> MACOSX_SDK_PATH = >>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk >>> ***************************************************************** >>> Unsupported gradle version 4.8 in use. >>> Only version 5.3 is supported. Use this version at your own risk >>> ***************************************************************** >>> gradle.gradleVersion: 4.8 >>> OS_NAME: mac os x >>> OS_ARCH: x86_64 >>> JAVA_HOME: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home >>> JDK_HOME: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home >>> java.runtime.version: 11.0.1+13 >>> java version: 11.0.1 >>> java build number: 13 >>> jdk.runtime.version: 11.0.1+13 >>> jdk version: 11.0.1 >>> jdk build number: 13 >>> minimum jdk version: 11 >>> minimum jdk build number: 28 >>> XCODE version: Xcode10.1-MacOSX10.14+1.0 >>> cmake version: 3.13.3 >>> ninja version: 1.8.2 >>> ant version: 1.10.5 >>> HAS_JAVAFX_MODULES: false >>> STUB_RUNTIME: /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home >>> CONF: Debug >>> NUM_COMPILE_THREADS: 1 >>> COMPILE_TARGETS: mac >>> COMPILE_FLAGS_FILES: buildSrc/mac.gradle >>> HUDSON_JOB_NAME: not_hudson >>> HUDSON_BUILD_NUMBER: 0000 >>> PROMOTED_BUILD_NUMBER: 0 >>> PRODUCT_NAME: OpenJFX >>> RELEASE_VERSION: 14 >>> RELEASE_SUFFIX: -internal >>> RELEASE_VERSION_SHORT: 14-internal >>> RELEASE_VERSION_LONG: 14-internal+0-2019-10-10-110056 >>> RELEASE_VERSION_PADDED: 14.0.0.0 >>> MAVEN_VERSION: 14-internal+0-2019-10-10-110056 >>> UPDATE_STUB_CACHE: false >>> Building Webkit configuration /Release/ into >>> /Users/shadzic/jfx/modules/javafx.web/build/mac >>> module: project ':apps' (buildModule=NO) >>> module: project ':base' (buildModule=YES) >>> module: project ':controls' (buildModule=YES) >>> module: project ':fxml' (buildModule=YES) >>> module: project ':graphics' (buildModule=YES) >>> module: project ':media' (buildModule=YES) >>> module: project ':swing' (buildModule=YES) >>> module: project ':swt' (buildModule=NO) >>> module: project ':systemTests' (buildModule=NO) >>> module: project ':web' (buildModule=YES) >>> >>>> Task :web:compileJava >>> Note: Some input files use or override a deprecated API. >>> Note: Recompile with -Xlint:deprecation for details. >>> Note: Some input files use unchecked or unsafe operations. >>> Note: Recompile with -Xlint:unchecked for details. >>> >>>> Task :web:compileShimsJava >>> Note: Some input files use or override a deprecated API. >>> Note: Recompile with -Xlint:deprecation for details. >>> Note: Some input files use unchecked or unsafe operations. >>> Note: Recompile with -Xlint:unchecked for details. >>> >>>> Task :web:compileTestJava >>> Note: Some input files use unchecked or unsafe operations. >>> Note: Recompile with -Xlint:unchecked for details. >>> >>>> Task :systemTests:compileTestJava >>> Note: Some input files use or override a deprecated API. >>> Note: Recompile with -Xlint:deprecation for details. >>> Note: Some input files use unchecked or unsafe operations. >>> Note: Recompile with -Xlint:unchecked for details. >>> >>>> Task :systemTests:test >>> >>> test.javafx.scene.web.HTMLEditorTest > checkStyleWithCSS FAILED >>> java.lang.NullPointerException >>> at >>> test.javafx.scene.web.HTMLEditorTest.lambda$checkStyleWithCSS$7(HTMLEditorTest.java:192) >>> >>> test.javafx.scene.web.HTMLEditorTest > checkStyleProperty FAILED >>> java.lang.NullPointerException >>> at >>> test.javafx.scene.web.HTMLEditorTest.lambda$checkStyleProperty$11(HTMLEditorTest.java:266) >>> >>> 3 tests completed, 2 failed, 1 skipped >>> >>>> Task :systemTests:test FAILED >> >> The test failure is almost certainly due to not having the native WebKit >> libraries. Two options: >> >> 1. You can build WebKit yourself (it's fairly painless on Mac) by running >> gradle with `-PCOMPILE_WEBKIT=true` >> 2. You can download libjfxwebkit.dylib from the openjfx14+1 EA build and put >> it in `../caches/modular-sdk/modules_libs/javafx.web/libjfxwebkit.dylib` > > Allright, I've been able to build the WebKit. > > I am now trying to add my test. I took some snippets from MiscellaneousTest > and add my method to HTMLEditorTest: > > /** > * @test > * @bug 8230231 > * FIXME > */ > @Test > public void checkFontFamily() throws Exception { > final FontFaceTestHelper fontFaceHelper = new > FontFaceTestHelper("src/test/resources/test/javafx/scene/web/Ahem.ttf"); > > > final CountDownLatch editorStateLatch = new CountDownLatch(1); > final AtomicReference<String> result = new AtomicReference<>(); > Util.runAndWait(() -> { > webView.getEngine().loadContent("<body>\n" + > "<span id='probe1' style='font-size: 100px;'>Toto</span> > Tutu\n" + > "</body>\n", "text/html"); > > final JSObject window = (JSObject) > webView.getEngine().executeScript("window"); > assertNotNull(window); > assertEquals("undefined", window.getMember("fontFaceHelper")); > window.setMember("fontFaceHelper", fontFaceHelper); > assertTrue(window.getMember("fontFaceHelper") instanceof > FontFaceTestHelper); > // Create font-face object from byte[] > webView.getEngine().executeScript( > "var byteArray = new > Uint8Array(fontFaceHelper.ttfFileContent);\n" + > "var arrayBuffer = byteArray.buffer;\n" + > "window.fontFace1 = new FontFace('WebFont test', > arrayBuffer, {});" > ); > > webView.getEngine().executeScript("document.execCommand('selectAll', false, > 'true');"); > assertEquals("loaded", > webView.getEngine().executeScript("fontFace1.status")); > // Add font-face to Document, so that it could be usable on styles > //webView.getEngine().executeScript( > // "document.fonts.add(fontFace1);\n" + > // > "document.getElementById('probe1').style.fontFamily = 'WebFont test';\n" > //); > // webView.getEngine().getLoadWorker().stateProperty(). > // addListener((observable, oldValue, newValue) -> { > // if (newValue == SUCCEEDED) { > // htmlEditor.requestFocus(); > // } > // }); > > assertNotNull(fontFamilyComboBox); > assertFalse(fontFamilyComboBox.getItems().isEmpty()); > String theChosenOne = null; > for(String fontFamily: fontFamilyComboBox.getItems()){ > if(fontFamily.contains(" ")){ > theChosenOne = fontFamily; > break; > } > } > assertNotNull(theChosenOne); > //Select the font > fontFamilyComboBox.getSelectionModel().select(theChosenOne); > assertEquals(theChosenOne, > fontFamilyComboBox.getSelectionModel().getSelectedItem()); > > > webView.getEngine().executeScript("document.execCommand('selectAll', false, > 'true');"); > > assertEquals(theChosenOne, > fontFamilyComboBox.getSelectionModel().getSelectedItem()); > > > > editorStateLatch.countDown(); > }); > > assertTrue("Timeout when waiting for focus change ", > Util.await(editorStateLatch)); > } > > where fontFamilyComboBox is retrieved like that : > fontFamilyComboBox = (ComboBox<String>) > htmlEditor.lookup(".font-menu-button"); > assertNotNull(fontFamilyComboBox); > > This idea is to add a Font family with a space in it, then apply it on the > text. But I'm struggling to select a text portion, apply the font, then > select elsewhere, and select back the text to demonstrate that the ComboBox > is not updated. I tried to trigger some selectAll command but it's not > working. > > If anyone has some ideas, I'm all ears. This bug still exists when the caret is placed on a text with the default font (""). PR: https://git.openjdk.java.net/jfx/pull/12