Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8173250

WebView displays garbled character on some websites.

XMLWordPrintable

    • web
    • x86
    • os_x

      FULL PRODUCT VERSION :
      java version "1.8.0_121"
      Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
      Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      macOS Siera ver 10.12.1 (16B2555)

      A DESCRIPTION OF THE PROBLEM :
      Some websites such as blogs from http://www.wordpress.com will attempt to render web page, but many of the characters aren't readable. I believe the webkit crashes and doesn't finish rendering html.

      Go to any blog from wordpress such as mine below:
      https://carlfx.wordpress.com

      When rendered in any browser the html renders fine.


      REGRESSION. Last worked in version 8u112

      ADDITIONAL REGRESSION INFORMATION:
      This can be reproduced in update 112 also.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Create a JavaFX application with a WebView control to load a WordPress blog such as http://fxexperience.com or http://carlfx.wordpress.com

      I've attached code to test this issue.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The WordPress blog website's html pages render incorrectly and the text is readable.
      ACTUAL -
      The WebKit crashes, and the html page renders incorrectly and the text is unreadable.

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      java.lang.StringIndexOutOfBoundsException: String index out of range: 4
      at java.lang.String.substring(String.java:1963)
      at com.sun.javafx.webkit.prism.WCGraphicsPrismContext.drawString(WCGraphicsPrismContext.java:960)
      at com.sun.webkit.graphics.GraphicsDecoder.decode(GraphicsDecoder.java:290)
      at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:91)
      at com.sun.webkit.graphics.WCRenderQueue.decode(WCRenderQueue.java:102)
      at com.sun.webkit.graphics.WCImage.flushRQ(WCImage.java:52)
      at com.sun.javafx.webkit.prism.RTImage.lambda$getPixelBuffer$77(RTImage.java:163)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
      at com.sun.javafx.tk.RenderJob.run(RenderJob.java:58)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125)
      at java.lang.Thread.run(Thread.java:745)

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      public class Main extends Application{

          public static void main(String[] args) {
              //System.setProperty("jsse.enableSNIExtension", "false");
              Application.launch(args);
          }

          @Override
          public void start(Stage primaryStage) throws Exception {
              // Create the root pane and scene
              primaryStage.setTitle("WebView Test");
              BorderPane root = new BorderPane();
              Scene scene = new Scene(root, 551, 400, Color.WHITE);
              primaryStage.setScene(scene);
              WebView browser = new WebView();
              WebEngine webEngine = browser.getEngine();
              
              webEngine.getLoadWorker()
                      .stateProperty()
                      .addListener( (obsValue, oldState, newState) -> {
                          if (newState == Worker.State.SUCCEEDED) {
                              System.out.println("finished loading");
                          }
                      });


              TextField urlAddressField = new TextField();
              urlAddressField.setPromptText("Enter URL of a page to print");
              urlAddressField.setOnAction( actionEvent -> webEngine.load(urlAddressField.getText()));
              
              root.setTop(urlAddressField);
              root.setCenter(browser);
              primaryStage.show();
          }
      }
      ---------- END SOURCE ----------

            mbilla Murali Billa
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: