Yuvipanda has uploaded a new change for review.
https://gerrit.wikimedia.org/r/125985
Change subject: Fix crash when loading unreachable image
......................................................................
Fix crash when loading unreachable image
Also fixes crashes that happen when using Saved Pages with
images that are not in the WebView cache
Bug: 63890
Change-Id: Ia1b0f534b0c07c0fd584db31c4354d67ed703576
---
M wikipedia/assets/bundle-test.js
M wikipedia/assets/bundle.js
M wikipedia/src/main/java/org/wikipedia/Utils.java
M wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
M www/js/main.js
M www/js/transforms.js
6 files changed, 36 insertions(+), 7 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/85/125985/1
diff --git a/wikipedia/assets/bundle-test.js b/wikipedia/assets/bundle-test.js
index 18114f7..d459a6a 100644
--- a/wikipedia/assets/bundle-test.js
+++ b/wikipedia/assets/bundle-test.js
@@ -50,7 +50,7 @@
licenseText.innerHTML = payload.licenseHTML;
});
-bridge.registerListener( "requestImagesList", function () {
+bridge.registerListener( "requestImagesList", function() {
var imageURLs = [];
var images = document.querySelectorAll( "img" );
for ( var i = 0; i < images.length; i++ ) {
@@ -59,6 +59,12 @@
bridge.sendMessage( "imagesListResponse", { "images": imageURLs });
} );
+bridge.registerListener( "replaceImageSrc", function( payload ) {
+ var img = document.querySelector( "img[src='" + payload.originalURL + "']"
);
+ img.setAttribute( "src", payload.newURL );
+ img.setAttribute( "data-old-src", payload.originalURL );
+} );
+
bridge.registerListener( "hideEditButtons", function() {
document.getElementsByTagName( "html" )[0].classList.add( "no-editing" );
} );
diff --git a/wikipedia/assets/bundle.js b/wikipedia/assets/bundle.js
index 40a1a11..47a6185 100644
--- a/wikipedia/assets/bundle.js
+++ b/wikipedia/assets/bundle.js
@@ -98,13 +98,19 @@
licenseText.innerHTML = payload.licenseHTML;
});
-bridge.registerListener( "requestImagesList", function () {
+bridge.registerListener( "requestImagesList", function() {
var imageURLs = [];
var images = document.querySelectorAll( "img" );
for ( var i = 0; i < images.length; i++ ) {
imageURLs.push( images[i].src );
}
bridge.sendMessage( "imagesListResponse", { "images": imageURLs });
+} );
+
+bridge.registerListener( "replaceImageSrc", function( payload ) {
+ var img = document.querySelector( "img[src='" + payload.originalURL + "']"
);
+ img.setAttribute( "src", payload.newURL );
+ img.setAttribute( "data-old-src", payload.originalURL );
} );
bridge.registerListener( "hideEditButtons", function() {
@@ -287,6 +293,8 @@
var resp = bridge.sendMessage( "imageUrlToFilePath", { "imageUrl":
img.src } );
console.log( "new filepath is " + resp.filePath );
img.src = "file://" + resp.filePath;
+ } else {
+ // If it *is* a file URL and also failed to load, just do nothing
}
}
for ( var i = 0; i < images.length; i++ ) {
diff --git a/wikipedia/src/main/java/org/wikipedia/Utils.java
b/wikipedia/src/main/java/org/wikipedia/Utils.java
index bec0eca..ea7ed45 100644
--- a/wikipedia/src/main/java/org/wikipedia/Utils.java
+++ b/wikipedia/src/main/java/org/wikipedia/Utils.java
@@ -137,7 +137,7 @@
/**
* Add some utility methods to a communuication bridge, that can be called
synchronously from JS
*/
- public static void addUtilityMethodsToBridge(final Context context,
CommunicationBridge bridge) {
+ public static void addUtilityMethodsToBridge(final Context context, final
CommunicationBridge bridge) {
bridge.addListener("imageUrlToFilePath", new
CommunicationBridge.JSEventListener() {
@Override
public void onMessage(String messageType, JSONObject
messagePayload) {
@@ -145,9 +145,9 @@
JSONObject ret = new JSONObject();
try {
File imageFile = new File(context.getFilesDir(),
imageUrlToFileName(imageUrl));
- ret.put("filePath", imageFile.getAbsolutePath());
- // FIXME: THIS IS BROKEN NOW!!!1
- throw new RuntimeException("FIX THIS YUVI!");
+ ret.put("originalURL", imageUrl);
+ ret.put("newURL", imageFile.getAbsolutePath());
+ bridge.sendMessage("replaceImageSrc", ret);
} catch (JSONException e) {
// stupid, stupid, stupid
throw new RuntimeException(e);
diff --git a/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
b/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
index 1531961..dba56bc 100644
--- a/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
@@ -62,6 +62,13 @@
imagesDownloadedLatch.countDown();
Log.d("Wikipedia", "Downloaded image " +
imageUrl);
}
+
+ @Override
+ public void onCatch(Throwable caught) {
+ // Do nothing for now. An image failed to
download, but that is usually OK
+ // FIXME: Make this more robust
+ imagesDownloadedLatch.countDown();
+ }
}.execute();
} else {
imagesDownloadedLatch.countDown();
diff --git a/www/js/main.js b/www/js/main.js
index a8f5464..9bce75a 100644
--- a/www/js/main.js
+++ b/www/js/main.js
@@ -11,7 +11,7 @@
licenseText.innerHTML = payload.licenseHTML;
});
-bridge.registerListener( "requestImagesList", function () {
+bridge.registerListener( "requestImagesList", function() {
var imageURLs = [];
var images = document.querySelectorAll( "img" );
for ( var i = 0; i < images.length; i++ ) {
@@ -20,6 +20,12 @@
bridge.sendMessage( "imagesListResponse", { "images": imageURLs });
} );
+bridge.registerListener( "replaceImageSrc", function( payload ) {
+ var img = document.querySelector( "img[src='" + payload.originalURL + "']"
);
+ img.setAttribute( "src", payload.newURL );
+ img.setAttribute( "data-old-src", payload.originalURL );
+} );
+
bridge.registerListener( "hideEditButtons", function() {
document.getElementsByTagName( "html" )[0].classList.add( "no-editing" );
} );
diff --git a/www/js/transforms.js b/www/js/transforms.js
index 89d4817..a3ceb33 100644
--- a/www/js/transforms.js
+++ b/www/js/transforms.js
@@ -27,6 +27,8 @@
var resp = bridge.sendMessage( "imageUrlToFilePath", { "imageUrl":
img.src } );
console.log( "new filepath is " + resp.filePath );
img.src = "file://" + resp.filePath;
+ } else {
+ // If it *is* a file URL and also failed to load, just do nothing
}
}
for ( var i = 0; i < images.length; i++ ) {
--
To view, visit https://gerrit.wikimedia.org/r/125985
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia1b0f534b0c07c0fd584db31c4354d67ed703576
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits