Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.
/ jfx11u Public archive

Commit d9c0729

Browse files
8275138: WebView: UserAgent string is empty for first request
Backport-of: d6f78e27a698925f029126b8d62a3e88d4d6f868
1 parent acab9b3 commit d9c0729

File tree

4 files changed

+51
-18
lines changed

4 files changed

+51
-18
lines changed

modules/javafx.web/src/main/native/Source/WebKitLegacy/java/WebCoreSupport/FrameLoaderClientJava.cpp

+7
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ void FrameLoaderClientJava::dispatchDidNavigateWithinPage()
220220
1.0 /* progress */);
221221
}
222222

223+
// Called from twkInit to initialize the client. This will ensure that
224+
// the page field is initialized before any operation that needs it
225+
void FrameLoaderClientJava::init()
226+
{
227+
(void)page();
228+
}
229+
223230
Page* FrameLoaderClientJava::page()
224231
{
225232
if (!m_page) {

modules/javafx.web/src/main/native/Source/WebKitLegacy/java/WebCoreSupport/FrameLoaderClientJava.h

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ class FrameLoaderClientJava final : public FrameLoaderClient {
4646
FrameLoaderClientJava(const JLObject &webPage);
4747
~FrameLoaderClientJava();
4848

49+
void init();
50+
4951
bool hasWebView() const override;
5052

5153
void makeRepresentation(DocumentLoader*) override;

modules/javafx.web/src/main/native/Source/WebKitLegacy/java/WebCoreSupport/WebPage.cpp

+5-2
Original file line numberDiff line numberDiff line change
@@ -924,8 +924,11 @@ JNIEXPORT void JNICALL Java_com_sun_webkit_WebPage_twkInit
924924
page->setDeviceScaleFactor(devicePixelScale);
925925

926926
settings.setLinkPrefetchEnabled(true);
927-
static_cast<FrameLoaderClientJava&>(page->mainFrame().loader().client())
928-
.setFrame(&page->mainFrame());
927+
928+
FrameLoaderClientJava& client =
929+
static_cast<FrameLoaderClientJava&>(page->mainFrame().loader().client());
930+
client.init();
931+
client.setFrame(&page->mainFrame());
929932

930933
page->mainFrame().init();
931934

modules/javafx.web/src/test/java/test/javafx/scene/web/MiscellaneousTest.java

+37-16
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,25 @@ void waitForCompletion() {
445445
}
446446
}
447447

448+
private void verifyUserAgentString(String userAgentString) {
449+
final String fxVersion = System.getProperty("javafx.runtime.version");
450+
final String numericStr = fxVersion.split("[^0-9]")[0];
451+
final String fxVersionString = "JavaFX/" + numericStr;
452+
assertTrue("UserAgentString does not contain " + fxVersionString, userAgentString.contains(fxVersionString));
453+
454+
File webkitLicense = new File("src/main/legal/webkit.md");
455+
assertTrue("File does not exist: " + webkitLicense, webkitLicense.exists());
456+
457+
try (final BufferedReader licenseText = new BufferedReader(new FileReader(webkitLicense))) {
458+
final String firstLine = licenseText.readLine().trim();
459+
final String webkitVersion = firstLine.substring(firstLine.lastIndexOf(" ") + 2);
460+
assertTrue("webkitVersion should not be empty", webkitVersion.length() > 0);
461+
assertTrue("UserAgentString does not contain: " + webkitVersion, userAgentString.contains(webkitVersion));
462+
} catch (IOException ex){
463+
throw new AssertionError(ex);
464+
}
465+
}
466+
448467
/**
449468
* @test
450469
* @bug 8193207
@@ -453,22 +472,24 @@ void waitForCompletion() {
453472
@Test public void testUserAgentString() {
454473
submit(() -> {
455474
final String userAgentString = getEngine().getUserAgent();
456-
final String fxVersion = System.getProperty("javafx.runtime.version");
457-
final String numericStr = fxVersion.split("[^0-9]")[0];
458-
final String fxVersionString = "JavaFX/" + numericStr;
459-
assertTrue("UserAgentString does not contain " + fxVersionString, userAgentString.contains(fxVersionString));
460-
461-
File webkitLicense = new File("src/main/legal/webkit.md");
462-
assertTrue("File does not exist: " + webkitLicense, webkitLicense.exists());
463-
464-
try (final BufferedReader licenseText = new BufferedReader(new FileReader(webkitLicense))) {
465-
final String firstLine = licenseText.readLine().trim();
466-
final String webkitVersion = firstLine.substring(firstLine.lastIndexOf(" ") + 2);
467-
assertTrue("webkitVersion should not be empty", webkitVersion.length() > 0);
468-
assertTrue("UserAgentString does not contain: " + webkitVersion, userAgentString.contains(webkitVersion));
469-
} catch (IOException ex){
470-
throw new AssertionError(ex);
471-
}
475+
verifyUserAgentString(userAgentString);
476+
});
477+
}
478+
479+
/**
480+
* @test
481+
* @bug 8275138
482+
* Check UserAgentString from JavaScript for javafx runtime version and webkit version
483+
*/
484+
@Test public void testUserAgentStringJS() {
485+
final WebEngine webEngine = createWebEngine();
486+
submit(() -> {
487+
final JSObject window = (JSObject) webEngine.executeScript("window");
488+
assertNotNull(window);
489+
webEngine.executeScript("var userAgent = navigator.userAgent");
490+
String userAgentString = (String)window.getMember("userAgent");
491+
assertNotNull(userAgentString);
492+
verifyUserAgentString(userAgentString);
472493
});
473494
}
474495

0 commit comments

Comments
 (0)