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

Reply via email to