jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/371118 )
Change subject: Fix saving pages for offline use (convincingly). ...................................................................... Fix saving pages for offline use (convincingly). An enormous thanks to Rita for continuing to test offline reading lists, and managing to hit upon a reproducible failure mode. The failure mode: Disable RestBase in settings! That's right. This means that the offline feature hasn't been working for any users in China, or for any other user for whom the fallback mechanism was triggered from Rb to Mw, for whatever reason. The bug is that the SavedPageSyncService has a line of code where it baseically expects the response to be a RestBase reply, instead of a MobileView reply. This has now been fixed. So... when can we officially deprecate support for MobileView, again? ;) Bug: T171939 Bug: T172900 Bug: T169819 Change-Id: I4b888923de48affa837d6c33fb1eae1a74738ff9 --- M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java M app/src/main/java/org/wikipedia/dataclient/page/PageLead.java M app/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java M app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java M app/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java M app/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java 7 files changed, 13 insertions(+), 7 deletions(-) Approvals: jenkins-bot: Verified Mholloway: Looks good to me, approved diff --git a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java index 255a854..2ecc42a 100644 --- a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java +++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLead.java @@ -96,6 +96,10 @@ return mobileview == null ? null : mobileview.getThumbUrl(); } + @Nullable @Override public String getDescription() { + return mobileview == null ? null : mobileview.getDescription(); + } + @Nullable @Override public Location getGeo() { @@ -190,7 +194,6 @@ return normalizedtitle; } - @Override @Nullable public String getDescription() { return description; diff --git a/app/src/main/java/org/wikipedia/dataclient/page/PageLead.java b/app/src/main/java/org/wikipedia/dataclient/page/PageLead.java index ac9bec0..6d4c18c 100644 --- a/app/src/main/java/org/wikipedia/dataclient/page/PageLead.java +++ b/app/src/main/java/org/wikipedia/dataclient/page/PageLead.java @@ -26,6 +26,7 @@ @Nullable String getTitlePronunciationUrl(); @Nullable String getLeadImageUrl(int leadImageWidth); @Nullable String getThumbUrl(); + @Nullable String getDescription(); @Nullable Location getGeo(); } diff --git a/app/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java b/app/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java index 39932ee..5cf84b2 100644 --- a/app/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java +++ b/app/src/main/java/org/wikipedia/dataclient/page/PageLeadProperties.java @@ -44,9 +44,6 @@ @Nullable String getWikiBaseItem(); - @Nullable - String getDescription(); - /** * @return Nullable URL with no scheme. For example, foo.bar.com/ instead of * http://foo.bar.com/. diff --git a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java index c43f996..c4ab2bb 100644 --- a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java +++ b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java @@ -15,7 +15,6 @@ import org.wikipedia.dataclient.page.PageClient; import org.wikipedia.dataclient.page.PageClientFactory; import org.wikipedia.dataclient.page.PageLead; -import org.wikipedia.dataclient.page.PageLeadProperties; import org.wikipedia.dataclient.page.PageRemaining; import org.wikipedia.html.ImageTagParser; import org.wikipedia.html.PixelDensityDescriptorParser; @@ -143,6 +142,11 @@ // This can be an IOException from the storage media, or several types // of network exceptions from malformed URLs, timeouts, etc. e.printStackTrace(); + if (!ThrowableUtil.isOffline(e)) { + // If it's anything but a transient network error, let's log it aggressively, + // to make sure we've fixed any other errors with saving pages. + L.logRemoteError(e); + } dao.failDiskTransaction(row); continue; } @@ -171,7 +175,7 @@ row.dat().setThumbnailUrl(UriUtil.resolveProtocolRelativeUrl(pageTitle.getWikiSite(), leadRsp.body().getThumbUrl())); } - row.dat().setDescription(((PageLeadProperties) leadRsp.body()).getDescription()); + row.dat().setDescription(leadRsp.body().getDescription()); Set<String> imageUrls = new HashSet<>(pageImageUrlParser.parse(leadRsp.body())); imageUrls.addAll(pageImageUrlParser.parse(sectionsRsp.body())); diff --git a/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java b/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java index a8ccb5f..f61cfb9 100644 --- a/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java +++ b/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java @@ -63,6 +63,7 @@ public void onResponse(@NonNull Call<PageLead> call, @NonNull Response<PageLead> response) { assertThat(response.body().getLeadImageUrl(640).contains("640px"), is(true)); assertThat(response.body().getThumbUrl().contains(preferredThumbSizeString()), is(true)); + assertThat(response.body().getDescription(), is("Mexican boxer")); latch.countDown(); } diff --git a/app/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java b/app/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java index be79d34..9d34819 100644 --- a/app/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java +++ b/app/src/test/java/org/wikipedia/dataclient/page/BasePageLeadTest.java @@ -43,7 +43,6 @@ assertThat(props.getLastModified(), is(LAST_MODIFIED_DATE)); assertThat(props.getDisplayTitle(), is(MAIN_PAGE)); assertThat(props.getLanguageCount(), is(LANGUAGE_COUNT)); - assertThat(props.getDescription(), is("main page of a Wikimedia project")); assertThat(props.getLeadImageUrl(0), equalTo(null)); assertThat(props.getLeadImageFileName(), equalTo(null)); assertThat(props.getSections().size(), is(1)); diff --git a/app/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java b/app/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java index 027ecde..4262ee3 100644 --- a/app/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java +++ b/app/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java @@ -58,6 +58,7 @@ public void onResponse(@NonNull Call<PageLead> call, @NonNull Response<PageLead> response) { assertThat(response.body().getLeadImageUrl(640).contains("640px"), is(true)); assertThat(response.body().getThumbUrl().contains(preferredThumbSizeString()), is(true)); + assertThat(response.body().getDescription(), is("Mexican boxer")); latch.countDown(); } -- To view, visit https://gerrit.wikimedia.org/r/371118 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I4b888923de48affa837d6c33fb1eae1a74738ff9 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits