summaryrefslogtreecommitdiffstats
path: root/src/jar
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@theqtcompany.com>2015-06-19 19:05:56 +0200
committerChristian Stromme <christian.stromme@theqtcompany.com>2015-06-22 11:23:21 +0000
commita16d10dbc2cd4eabdd9cdc837dfaea51212e0eb2 (patch)
tree8c0d0770d41fdb2d1abbe0f224c74fd3869aaf3f /src/jar
parent4a317ec9de74d4e6f4afff404f97617b6a353e7c (diff)
Android: Fix load request state tracking.
Fixes problems were isLoading() would return the wrong value. Change-Id: I0e0876551f9dcbd41523731dd51dce806680c10e Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Diffstat (limited to 'src/jar')
-rw-r--r--src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java37
1 files changed, 22 insertions, 15 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 5afaf18..0f04ecb 100644
--- a/src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java
+++ b/src/jar/src/org/qtproject/qt5/android/view/QtAndroidWebViewController.java
@@ -58,7 +58,12 @@ public class QtAndroidWebViewController
private final long m_id;
private WebView m_webView = null;
private static final String TAG = "QtAndroidWebViewController";
- private volatile boolean m_onPageFinishedCalled = false;
+ private final int INIT_STATE = 0;
+ private final int STARTED_STATE = 1;
+ private final int LOADING_STATE = 2;
+ private final int FINISHED_STATE = 3;
+
+ private volatile int m_loadingState = INIT_STATE;
private volatile int m_progress = 0;
private volatile int m_frameCount = 0;
@@ -85,10 +90,11 @@ public class QtAndroidWebViewController
// then 200ms somethings off...).
private final long BLOCKING_TIMEOUT = 250;
- private void resetLoadingState()
+ private void resetLoadingState(final int state)
{
m_progress = 0;
- m_onPageFinishedCalled = false;
+ m_frameCount = 0;
+ m_loadingState = state;
}
private class QtAndroidWebViewClient extends WebViewClient
@@ -105,11 +111,12 @@ public class QtAndroidWebViewController
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
- m_onPageFinishedCalled = true;
- if (m_progress == 100) { // onProgressChanged() will notify Qt if we didn't finish here.
- m_frameCount = 0;
- c_onPageFinished(m_id, url);
- }
+ m_loadingState = FINISHED_STATE;
+ if (m_progress != 100) // onProgressChanged() will notify Qt if we didn't finish here.
+ return;
+
+ m_frameCount = 0;
+ c_onPageFinished(m_id, url);
}
@Override
@@ -117,7 +124,7 @@ public class QtAndroidWebViewController
{
super.onPageStarted(view, url, favicon);
if (++m_frameCount == 1) { // Only call onPageStarted for the first frame.
- m_onPageFinishedCalled = false;
+ m_loadingState = LOADING_STATE;
c_onPageStarted(m_id, url, favicon);
}
}
@@ -129,7 +136,7 @@ public class QtAndroidWebViewController
String url)
{
super.onReceivedError(view, errorCode, description, url);
- resetLoadingState();
+ resetLoadingState(INIT_STATE);
c_onReceivedError(m_id, errorCode, description, url);
}
}
@@ -143,7 +150,7 @@ public class QtAndroidWebViewController
super.onProgressChanged(view, newProgress);
m_progress = newProgress;
c_onProgressChanged(m_id, newProgress);
- if (m_onPageFinishedCalled && m_progress == 100) { // Did we finish?
+ if (m_loadingState == FINISHED_STATE && m_progress == 100) { // Did we finish?
m_frameCount = 0;
c_onPageFinished(m_id, view.getUrl());
}
@@ -213,7 +220,7 @@ public class QtAndroidWebViewController
return;
}
- resetLoadingState();
+ resetLoadingState(STARTED_STATE);
m_activity.runOnUiThread(new Runnable() {
@Override
public void run() { m_webView.loadUrl(url); }
@@ -225,7 +232,7 @@ public class QtAndroidWebViewController
if (data == null)
return;
- resetLoadingState();
+ resetLoadingState(STARTED_STATE);
m_activity.runOnUiThread(new Runnable() {
@Override
public void run() { m_webView.loadData(data, mimeType, encoding); }
@@ -241,7 +248,7 @@ public class QtAndroidWebViewController
if (data == null)
return;
- resetLoadingState();
+ resetLoadingState(STARTED_STATE);
m_activity.runOnUiThread(new Runnable() {
@Override
public void run() { m_webView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl); }
@@ -341,7 +348,7 @@ public class QtAndroidWebViewController
public boolean isLoading()
{
- return (m_progress != 100 && !m_onPageFinishedCalled);
+ return m_loadingState == LOADING_STATE || m_loadingState == STARTED_STATE || (m_progress > 0 && m_progress < 100);
}
public void runJavaScript(final String script, final long callbackId)