-
Bug
-
Resolution: Incomplete
-
P4
-
None
-
openjdk8u312
-
generic
-
generic
ADDITIONAL SYSTEM INFORMATION :
System - Windows 10 OS.
Java - openjdk- <link> (openjdk-8u322 - zulu distribution)
A DESCRIPTION OF THE PROBLEM :
Openjdk - 8.0.312 - Onwards - Webview not working as Javascript is not able to see the member function which is set by Java via setMember() method.
Because of this the initial communication between Java and Javascript breaks due to which Library is loading which empty data ie no values populated.
NOTE: This was working fine till Openjdk - 8.0.302 and broke after that.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Steps
1. Setup the usual webengine
webEngine.setJavaScriptEnabled(true);
webEngine.load(url.toExternalForm());
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("javaCallback", callbackFromJS);
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState) {
if (newState == Worker.State.SUCCEEDED && (null != callback)) {
}
}
});
webEngine.setOnAlert(event -> showAlert(event.getData()));
2. In the Javascript layer
try {
javaCallback.onJSReady();
} catch (ex) { };
This call gives the error that javaCallback is undefined.
This was working fine till openjdk-8u302.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The javaCallback should be visible to Javascript layer as its correctly set by Java via setMember().
ACTUAL -
gives the error that javaCallback is undefined.
This was working fine till openjdk-8u302.
---------- BEGIN SOURCE ----------
webEngine.setJavaScriptEnabled(true);
webEngine.load(url.toExternalForm());
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("javaCallback", callbackFromJS);
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState) {
if (newState == Worker.State.SUCCEEDED && (null != callback)) {
}
}
});
webEngine.setOnAlert(event -> showAlert(event.getData()));
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
No workaround
FREQUENCY : always
System - Windows 10 OS.
Java - openjdk- <link> (openjdk-8u322 - zulu distribution)
A DESCRIPTION OF THE PROBLEM :
Openjdk - 8.0.312 - Onwards - Webview not working as Javascript is not able to see the member function which is set by Java via setMember() method.
Because of this the initial communication between Java and Javascript breaks due to which Library is loading which empty data ie no values populated.
NOTE: This was working fine till Openjdk - 8.0.302 and broke after that.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Steps
1. Setup the usual webengine
webEngine.setJavaScriptEnabled(true);
webEngine.load(url.toExternalForm());
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("javaCallback", callbackFromJS);
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState) {
if (newState == Worker.State.SUCCEEDED && (null != callback)) {
}
}
});
webEngine.setOnAlert(event -> showAlert(event.getData()));
2. In the Javascript layer
try {
javaCallback.onJSReady();
} catch (ex) { };
This call gives the error that javaCallback is undefined.
This was working fine till openjdk-8u302.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The javaCallback should be visible to Javascript layer as its correctly set by Java via setMember().
ACTUAL -
gives the error that javaCallback is undefined.
This was working fine till openjdk-8u302.
---------- BEGIN SOURCE ----------
webEngine.setJavaScriptEnabled(true);
webEngine.load(url.toExternalForm());
JSObject jsobj = (JSObject) webEngine.executeScript("window");
jsobj.setMember("javaCallback", callbackFromJS);
webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>() {
@Override
public void changed(ObservableValue<? extends Worker.State> ov, Worker.State oldState, Worker.State newState) {
if (newState == Worker.State.SUCCEEDED && (null != callback)) {
}
}
});
webEngine.setOnAlert(event -> showAlert(event.getData()));
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
No workaround
FREQUENCY : always