On Tue, 5 Nov 2019 09:26:56 GMT, Arun Joseph <github.com+24428922+arun-jos...@openjdk.org> wrote:
> 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 (""). Applying this patch creates a new bug: Selecting text with multiple fonts in HTMLEditor sets the text to a single font. Steps to reproduce: Run the same sample program. Type "Hello world". Set "Hello" to FontA and "world" to FontB Select all (or right to left) using keyboard Expectation: "Hello world" is selected Observation: "Hello world" is selected and font changed to FontA PR: https://git.openjdk.java.net/jfx/pull/12