summaryrefslogtreecommitdiffstats
path: root/core/java/android/webkit/StreamLoader.java
diff options
context:
space:
mode:
authorPatrick Scott <phanna@android.com>2009-04-29 10:21:57 -0400
committerPatrick Scott <phanna@android.com>2009-04-29 14:11:27 -0400
commite82dc4205285a40d6c2227e362c30ce24c96a552 (patch)
tree7f0d1c0d21365274aa379c8cd226a80aeb2330e0 /core/java/android/webkit/StreamLoader.java
parent42fba356cf90612986fb4d0627d1f8c349cf8db7 (diff)
downloadframeworks_base-e82dc4205285a40d6c2227e362c30ce24c96a552.zip
frameworks_base-e82dc4205285a40d6c2227e362c30ce24c96a552.tar.gz
frameworks_base-e82dc4205285a40d6c2227e362c30ce24c96a552.tar.bz2
Parse the base64 data before creating the data stream.
This will ensure that we do not parse the data in chunks when passing it to the LoadListener. Decoding in chunks can lead to incomplete sequences which will lead to a failed decode. Check for a cancelled LoadListener in StreamLoader and stop the load. This is just a shortcut for downloaded or failed resources. Cleanup some of the LoadListener code around resetting a few member variables. Reset them in the status callback since that indicates a new response from the server (or StreamLoader).
Diffstat (limited to 'core/java/android/webkit/StreamLoader.java')
-rw-r--r--core/java/android/webkit/StreamLoader.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/java/android/webkit/StreamLoader.java b/core/java/android/webkit/StreamLoader.java
index 705157c..7d6d7cc 100644
--- a/core/java/android/webkit/StreamLoader.java
+++ b/core/java/android/webkit/StreamLoader.java
@@ -102,7 +102,7 @@ abstract class StreamLoader extends Handler {
// to pass data to the loader
mData = new byte[8192];
sendHeaders();
- while (!sendData());
+ while (!sendData() && !mHandler.cancelled());
closeStreamAndSendEndData();
mHandler.loadSynchronousMessages();
}
@@ -116,6 +116,10 @@ abstract class StreamLoader extends Handler {
if (WebView.DEBUG && mHandler.isSynchronous()) {
throw new AssertionError();
}
+ if (mHandler.cancelled()) {
+ closeStreamAndSendEndData();
+ return;
+ }
switch(msg.what) {
case MSG_STATUS:
if (setupStreamAndSendStatus()) {