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.

PR: https://git.openjdk.java.net/jfx/pull/12

Reply via email to