Skip to content

Commit 75a2f44

Browse files
8275138: WebView: UserAgent string is empty for first request
Backport-of: d6f78e2
1 parent 7b9e7ee commit 75a2f44

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
@@ -404,6 +404,25 @@ void waitForCompletion() {
404404
}
405405
}
406406

407+
private void verifyUserAgentString(String userAgentString) {
408+
final String fxVersion = System.getProperty("javafx.runtime.version");
409+
final String numericStr = fxVersion.split("[^0-9]")[0];
410+
final String fxVersionString = "JavaFX/" + numericStr;
411+
assertTrue("UserAgentString does not contain " + fxVersionString, userAgentString.contains(fxVersionString));
412+
413+
File webkitLicense = new File("src/main/legal/webkit.md");
414+
assertTrue("File does not exist: " + webkitLicense, webkitLicense.exists());
415+
416+
try (final BufferedReader licenseText = new BufferedReader(new FileReader(webkitLicense))) {
417+
final String firstLine = licenseText.readLine().trim();
418+
final String webkitVersion = firstLine.substring(firstLine.lastIndexOf(" ") + 2);
419+
assertTrue("webkitVersion should not be empty", webkitVersion.length() > 0);
420+
assertTrue("UserAgentString does not contain: " + webkitVersion, userAgentString.contains(webkitVersion));
421+
} catch (IOException ex){
422+
throw new AssertionError(ex);
423+
}
424+
}
425+
407426
/**
408427
* @test
409428
* @bug 8193207
@@ -412,22 +431,24 @@ void waitForCompletion() {
412431
@Test public void testUserAgentString() {
413432
submit(() -> {
414433
final String userAgentString = getEngine().getUserAgent();
415-
final String fxVersion = System.getProperty("javafx.runtime.version");
416-
final String numericStr = fxVersion.split("[^0-9]")[0];
417-
final String fxVersionString = "JavaFX/" + numericStr;
418-
assertTrue("UserAgentString does not contain " + fxVersionString, userAgentString.contains(fxVersionString));
419-
420-
File webkitLicense = new File("src/main/legal/webkit.md");
421-
assertTrue("File does not exist: " + webkitLicense, webkitLicense.exists());
422-
423-
try (final BufferedReader licenseText = new BufferedReader(new FileReader(webkitLicense))) {
424-
final String firstLine = licenseText.readLine().trim();
425-
final String webkitVersion = firstLine.substring(firstLine.lastIndexOf(" ") + 2);
426-
assertTrue("webkitVersion should not be empty", webkitVersion.length() > 0);
427-
assertTrue("UserAgentString does not contain: " + webkitVersion, userAgentString.contains(webkitVersion));
428-
} catch (IOException ex){
429-
throw new AssertionError(ex);
430-
}
434+
verifyUserAgentString(userAgentString);
435+
});
436+
}
437+
438+
/**
439+
* @test
440+
* @bug 8275138
441+
* Check UserAgentString from JavaScript for javafx runtime version and webkit version
442+
*/
443+
@Test public void testUserAgentStringJS() {
444+
final WebEngine webEngine = createWebEngine();
445+
submit(() -> {
446+
final JSObject window = (JSObject) webEngine.executeScript("window");
447+
assertNotNull(window);
448+
webEngine.executeScript("var userAgent = navigator.userAgent");
449+
String userAgentString = (String)window.getMember("userAgent");
450+
assertNotNull(userAgentString);
451+
verifyUserAgentString(userAgentString);
431452
});
432453
}
433454

0 commit comments

Comments
 (0)