summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2019-10-28 17:05:20 +0100
committerpaolo <paolo.angelelli@qt.io>2019-10-31 11:17:16 +0100
commit8613865fb9fc4ba0bd03d43c72dc6ca9498e7f8f (patch)
tree1271ecf0b15004cd6b3ce52abecea56fb573a7c7 /src
parent9f227c54605a2cfea23886532173896fa992ae57 (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 <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: Christian Strømme <christian.stromme@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java37
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)