diff options
author | Paolo Angelelli <[email protected]> | 2019-10-28 17:05:20 +0100 |
---|---|---|
committer | paolo <[email protected]> | 2019-10-31 11:17:16 +0100 |
commit | 8613865fb9fc4ba0bd03d43c72dc6ca9498e7f8f (patch) | |
tree | 1271ecf0b15004cd6b3ce52abecea56fb573a7c7 | |
parent | 9f227c54605a2cfea23886532173896fa992ae57 (diff) |
Implement QtAndroidWebViewController.getUserAgent
Commit 0a8a69d51042b95649dbdf471acb3c96228f372e introduced the
httpUserAgent property, with implementations for apple, winrt, webengine
and android.
However, the android implementation is missing a piece of
implementation.
Additionally, use semaphores to make sure that, on return, the setter
has completed setting the user agent, and therefore the emitted signal
is fired with the correct value.
Task-number: QTBUG-68746
Change-Id: Ic8f2a398297c8cd7d87ef4946ef26399167aeba9
Reviewed-by: Eskil Abrahamsen Blomfeldt <[email protected]>
Reviewed-by: Christian Strømme <[email protected]>
-rw-r--r-- | src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java b/src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java index a4feca5..0bb36de 100644 --- a/src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java +++ b/src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java @@ -250,18 +250,43 @@ public class QtAndroidWebViewController } } - public void setUserAgent(final String userAgent) + public String getUserAgent() { - if (userAgent == null){ - return; + final String[] ua = {""}; + final Semaphore sem = new Semaphore(0); + m_activity.runOnUiThread(new Runnable() { + @Override + public void run() { + ua[0] = m_webView.getSettings().getUserAgentString(); + sem.release(); + } + }); + + try { + sem.tryAcquire(BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS); + } catch (Exception e) { + e.printStackTrace(); } - resetLoadingState(STARTED_STATE); - c_onPageStarted(m_id, null, null); + return ua[0]; + } + + public void setUserAgent(final String uaString) + { + final Semaphore sem = new Semaphore(0); m_activity.runOnUiThread(new Runnable() { @Override - public void run() { m_webView.getSettings().setUserAgentString(userAgent); } + public void run() { + m_webView.getSettings().setUserAgentString(uaString); + sem.release(); + } }); + + try { + sem.tryAcquire(BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS); + } catch (Exception e) { + e.printStackTrace(); + } } public void loadUrl(final String url) |