BearND has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/226675

Change subject: Split off page content loading into two versions
......................................................................

Split off page content loading into two versions

Currently they are using the same code. Will update in future patch to be 
different.

Bug: T104714
Change-Id: I3dfa7b0e964bf8cdd9fc93b891debd7a00c82776
---
M wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
M wikipedia/src/main/java/org/wikipedia/ApiTask.java
M wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/Fetcher.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcher.java
A 
wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherFactory.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV1.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV2.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/OldSectionsFetchTask.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcher.java
A 
wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherFactory.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV1.java
A wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV2.java
R wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV1.java
C wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV2.java
M wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
M wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
17 files changed, 266 insertions(+), 49 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/75/226675/1

diff --git 
a/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java 
b/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
index 35b0543..f63df00 100644
--- a/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
+++ b/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
@@ -7,7 +7,7 @@
 import org.wikipedia.page.PageTitle;
 import org.wikipedia.Site;
 import org.wikipedia.page.Section;
-import org.wikipedia.page.SectionsFetchTask;
+import org.wikipedia.page.fetch.OldSectionsFetchTask;
 
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -41,7 +41,7 @@
             public void run() {
                 final WikipediaApp app = (WikipediaApp)
                         
getInstrumentation().getTargetContext().getApplicationContext();
-                new SectionsFetchTask(app, new PageTitle(null, title, new 
Site("test.wikipedia.org")), "all") {
+                new OldSectionsFetchTask(app, new PageTitle(null, title, new 
Site("test.wikipedia.org")), "all") {
                     @Override
                     public void onFinish(List<Section> result) {
                         assertNotNull(result);
diff --git a/wikipedia/src/main/java/org/wikipedia/ApiTask.java 
b/wikipedia/src/main/java/org/wikipedia/ApiTask.java
index 92240b0..6888a17 100644
--- a/wikipedia/src/main/java/org/wikipedia/ApiTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/ApiTask.java
@@ -8,6 +8,7 @@
 import org.mediawiki.api.json.ApiException;
 import org.mediawiki.api.json.ApiResult;
 import org.mediawiki.api.json.RequestBuilder;
+import org.wikipedia.page.fetch.Fetcher;
 import org.wikipedia.concurrency.SaneAsyncTask;
 import org.wikipedia.util.NetworkUtils;
 import org.wikipedia.util.ThrowableUtil;
@@ -19,7 +20,7 @@
 
 import javax.net.ssl.SSLException;
 
-public abstract class ApiTask<T> extends SaneAsyncTask<T> {
+public abstract class ApiTask<T> extends SaneAsyncTask<T> implements 
Fetcher<T> {
     private static final boolean VERBOSE = 
WikipediaApp.getInstance().isDevRelease();
     private final Api api;
 
@@ -73,10 +74,6 @@
     protected ApiResult makeRequest(RequestBuilder builder) throws 
ApiException {
         return builder.get();
     }
-
-    public abstract RequestBuilder buildRequest(Api api);
-    public abstract T processResult(ApiResult result) throws Throwable;
-
 
     private String buildUrl(String url, Map<String, String> params) {
         Uri.Builder builder = new Uri.Builder().encodedPath(url);
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java 
b/wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
index 692f927..8917d41 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
@@ -1,7 +1,9 @@
 package org.wikipedia.page;
 
 import org.acra.ACRA;
+import org.wikipedia.ApiTask;
 import org.wikipedia.R;
+import org.wikipedia.Site;
 import org.wikipedia.Utils;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.bridge.CommunicationBridge;
@@ -10,6 +12,10 @@
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.page.bottomcontent.BottomContentHandler;
 import org.wikipedia.page.bottomcontent.BottomContentInterface;
+import org.wikipedia.page.fetch.LeadSectionFetcher;
+import org.wikipedia.page.fetch.LeadSectionFetcherFactory;
+import org.wikipedia.page.fetch.RestSectionFetcher;
+import org.wikipedia.page.fetch.RestSectionFetcherFactory;
 import org.wikipedia.page.leadimages.LeadImagesHandler;
 import org.wikipedia.pageimages.PageImage;
 import org.wikipedia.pageimages.PageImagesTask;
@@ -613,38 +619,38 @@
         }
     }
 
+    private Api getAPIForSite(Site site) {
+        return WikipediaApp.getInstance().getAPIForSite(site);
+    }
 
-    private class LeadSectionFetchTask extends SectionsFetchTask {
+    private class LeadSectionFetchTask extends ApiTask<List<Section>> {
         private final int startSequenceNum;
         private PageProperties pageProperties;
-        private String pagePropsResponseName = "mobileview";
+        private LeadSectionFetcher sectionsFetcher;
 
         public LeadSectionFetchTask(int startSequenceNum) {
-            super(app, model.getTitle(), "0");
+            super(SINGLE_THREAD, getAPIForSite(model.getTitle().getSite()));
+            this.sectionsFetcher = LeadSectionFetcherFactory.create(app, 
model.getTitle());
             this.startSequenceNum = startSequenceNum;
         }
 
         @Override
         public RequestBuilder buildRequest(Api api) {
-            RequestBuilder builder = super.buildRequest(api);
-            builder.param("prop", builder.getParams().get("prop")
-                    + "|thumb|image|id|revision|description|"
-                    + Page.API_REQUEST_PROPS);
-            builder.param("thumbsize", 
Integer.toString(calculateLeadImageWidth()));
-            return builder;
+            return sectionsFetcher.buildRequest(api, 
calculateLeadImageWidth());
         }
 
         @Override
         public List<Section> processResult(ApiResult result) throws Throwable {
             if (startSequenceNum != currentSequenceNum) {
-                return super.processResult(result);
+                return sectionsFetcher.processResult(result);
             }
-            JSONObject metadata = 
result.asObject().optJSONObject(pagePropsResponseName);
+            JSONObject metadata
+                    = 
result.asObject().optJSONObject(sectionsFetcher.getPagePropsResponseName());
             if (metadata != null) {
                 pageProperties = new PageProperties(metadata);
                 
model.setTitle(fragment.adjustPageTitleFromMobileview(model.getTitle(), 
metadata));
             }
-            return super.processResult(result);
+            return sectionsFetcher.processResult(result);
         }
 
         @Override
@@ -710,15 +716,27 @@
                 / res.getDisplayMetrics().density);
     }
 
-    private class RestSectionsFetchTask extends SectionsFetchTask {
+    private class RestSectionsFetchTask extends ApiTask<List<Section>> {
         private final int startSequenceNum;
+        private RestSectionFetcher sectionsFetcher;
 
         public RestSectionsFetchTask(int startSequenceNum) {
-            super(app, model.getTitle(), "1-");
+            super(SINGLE_THREAD, getAPIForSite(model.getTitle().getSite()));
+            this.sectionsFetcher = RestSectionFetcherFactory.create(app, 
model.getTitle());
             this.startSequenceNum = startSequenceNum;
         }
 
         @Override
+        public RequestBuilder buildRequest(Api api) {
+            return sectionsFetcher.buildRequest(api);
+        }
+
+        @Override
+        public List<Section> processResult(ApiResult result) throws Throwable {
+            return sectionsFetcher.processResult(result);
+        }
+
+        @Override
         public void onFinish(List<Section> result) {
             if (!fragment.isAdded() || startSequenceNum != currentSequenceNum) 
{
                 return;
diff --git a/wikipedia/src/main/java/org/wikipedia/page/fetch/Fetcher.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/Fetcher.java
new file mode 100644
index 0000000..2c4fcf1
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/Fetcher.java
@@ -0,0 +1,14 @@
+package org.wikipedia.page.fetch;
+
+import org.mediawiki.api.json.Api;
+import org.mediawiki.api.json.ApiResult;
+import org.mediawiki.api.json.RequestBuilder;
+
+/**
+ * Fetches something from the server synchronously; i.e. no AsyncTask.
+ */
+public interface Fetcher<T>  {
+    RequestBuilder buildRequest(Api api);
+
+    T processResult(ApiResult result) throws Throwable;
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcher.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcher.java
new file mode 100644
index 0000000..bc06e02
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcher.java
@@ -0,0 +1,21 @@
+package org.wikipedia.page.fetch;
+
+import org.mediawiki.api.json.Api;
+import org.mediawiki.api.json.ApiResult;
+import org.mediawiki.api.json.RequestBuilder;
+import org.wikipedia.page.Section;
+
+import java.util.List;
+
+/**
+ * Retrieve the first section, general page metadata, and whatever we need to 
show below the fold.
+ */
+public interface LeadSectionFetcher {
+    RequestBuilder buildRequest(Api api, int leadImageWidth);
+
+    List<Section> processResult(ApiResult result) throws Throwable;
+
+    /** @return the JSONObject key for a child JSONObject which contains the 
metadata for
+     * PageProperties */
+    String getPagePropsResponseName();
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherFactory.java
 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherFactory.java
new file mode 100644
index 0000000..ea89dcf
--- /dev/null
+++ 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherFactory.java
@@ -0,0 +1,19 @@
+package org.wikipedia.page.fetch;
+
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.page.PageTitle;
+import org.wikipedia.settings.Prefs;
+
+/**
+ * Chooses between different variants of page loading mechanisms for the lead 
section.
+ */
+public class LeadSectionFetcherFactory {
+    public static LeadSectionFetcher create(WikipediaApp app, PageTitle title) 
{
+        boolean downloadImages = app.isImageDownloadEnabled();
+        if (Prefs.isExperimentalJsonPageLoadEnabled()) {
+            return new LeadSectionFetcherV2(title, "0", downloadImages);
+        } else {
+            return new LeadSectionFetcherV1(title, "0", downloadImages);
+        }
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV1.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV1.java
new file mode 100644
index 0000000..f22425b
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV1.java
@@ -0,0 +1,25 @@
+package org.wikipedia.page.fetch;
+
+import org.mediawiki.api.json.Api;
+import org.mediawiki.api.json.RequestBuilder;
+import org.wikipedia.page.Page;
+import org.wikipedia.page.PageTitle;
+
+/**
+ * @see SectionsFetcherV1
+ */
+public class LeadSectionFetcherV1 extends SectionsFetcherV1 implements 
LeadSectionFetcher {
+    public LeadSectionFetcherV1(PageTitle title, String sectionsRequested, 
boolean downloadImages) {
+        super(title, sectionsRequested, downloadImages);
+    }
+
+    @Override
+    public RequestBuilder buildRequest(Api api, int leadImageWidth) {
+        RequestBuilder builder = super.buildRequest(api);
+        builder.param("prop", builder.getParams().get("prop")
+                + "|thumb|image|id|revision|description|"
+                + Page.API_REQUEST_PROPS);
+        builder.param("thumbsize", Integer.toString(leadImageWidth));
+        return builder;
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV2.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV2.java
new file mode 100644
index 0000000..b9ccefc
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/LeadSectionFetcherV2.java
@@ -0,0 +1,25 @@
+package org.wikipedia.page.fetch;
+
+import org.mediawiki.api.json.Api;
+import org.mediawiki.api.json.RequestBuilder;
+import org.wikipedia.page.Page;
+import org.wikipedia.page.PageTitle;
+
+/**
+ * @see SectionsFetcherV2
+ */
+public class LeadSectionFetcherV2 extends SectionsFetcherV2 implements 
LeadSectionFetcher {
+    public LeadSectionFetcherV2(PageTitle title, String sectionsRequested, 
boolean downloadImages) {
+        super(title, sectionsRequested, downloadImages);
+    }
+
+    @Override
+    public RequestBuilder buildRequest(Api api, int leadImageWidth) {
+        RequestBuilder builder = super.buildRequest(api);
+        builder.param("prop", builder.getParams().get("prop")
+                + "|thumb|image|id|revision|description|"
+                + Page.API_REQUEST_PROPS);
+        builder.param("thumbsize", Integer.toString(leadImageWidth));
+        return builder;
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/OldSectionsFetchTask.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/OldSectionsFetchTask.java
new file mode 100644
index 0000000..de7af8b
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/OldSectionsFetchTask.java
@@ -0,0 +1,35 @@
+package org.wikipedia.page.fetch;
+
+import org.mediawiki.api.json.Api;
+import org.mediawiki.api.json.ApiResult;
+import org.mediawiki.api.json.RequestBuilder;
+import org.wikipedia.ApiTask;
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.page.PageTitle;
+import org.wikipedia.page.Section;
+
+import java.util.List;
+
+/** For code that has not been moved to swappable page load mechanisms yet. */
+public class OldSectionsFetchTask extends ApiTask<List<Section>> {
+    private final SectionsFetcherV1 sectionsFetcher;
+
+    public OldSectionsFetchTask(WikipediaApp app, PageTitle title, String 
sectionsRequested) {
+        super(
+                SINGLE_THREAD,
+                app.getAPIForSite(title.getSite())
+        );
+        sectionsFetcher = new SectionsFetcherV1(title, sectionsRequested,
+                app.isImageDownloadEnabled());
+    }
+
+    @Override
+    public RequestBuilder buildRequest(Api api) {
+        return sectionsFetcher.buildRequest(api);
+    }
+
+    @Override
+    public List<Section> processResult(ApiResult result) throws Throwable {
+        return sectionsFetcher.processResult(result);
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcher.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcher.java
new file mode 100644
index 0000000..a26d663
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcher.java
@@ -0,0 +1,17 @@
+package org.wikipedia.page.fetch;
+
+import org.mediawiki.api.json.Api;
+import org.mediawiki.api.json.ApiResult;
+import org.mediawiki.api.json.RequestBuilder;
+import org.wikipedia.page.Section;
+
+import java.util.List;
+
+/**
+ * Retrieve the remaining page content and metadata not already covered by the
+ * {@link LeadSectionFetcher}.
+ */
+public interface RestSectionFetcher {
+    RequestBuilder buildRequest(Api api);
+    List<Section> processResult(ApiResult result) throws Throwable;
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherFactory.java
 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherFactory.java
new file mode 100644
index 0000000..9a1608e
--- /dev/null
+++ 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherFactory.java
@@ -0,0 +1,19 @@
+package org.wikipedia.page.fetch;
+
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.page.PageTitle;
+import org.wikipedia.settings.Prefs;
+
+/**
+ * Chooses between different variants of page loading mechanisms for the 
remaining sections.
+ */
+public class RestSectionFetcherFactory {
+    public static RestSectionFetcher create(WikipediaApp app, PageTitle title) 
{
+        boolean downloadImages = app.isImageDownloadEnabled();
+        if (Prefs.isExperimentalJsonPageLoadEnabled()) {
+            return new RestSectionFetcherV2(title, "1-", downloadImages);
+        } else {
+            return new RestSectionFetcherV1(title, "1-", downloadImages);
+        }
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV1.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV1.java
new file mode 100644
index 0000000..188abc7
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV1.java
@@ -0,0 +1,12 @@
+package org.wikipedia.page.fetch;
+
+import org.wikipedia.page.PageTitle;
+
+/**
+ * @see org.wikipedia.page.fetch.SectionsFetcherV1
+ */
+public class RestSectionFetcherV1 extends SectionsFetcherV1 implements 
RestSectionFetcher {
+    public RestSectionFetcherV1(PageTitle title, String sectionsRequested, 
boolean downloadImages) {
+        super(title, sectionsRequested, downloadImages);
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV2.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV2.java
new file mode 100644
index 0000000..6f873b4
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/RestSectionFetcherV2.java
@@ -0,0 +1,12 @@
+package org.wikipedia.page.fetch;
+
+import org.wikipedia.page.PageTitle;
+
+/**
+ * @see SectionsFetcherV2
+ */
+public class RestSectionFetcherV2 extends SectionsFetcherV2 implements 
RestSectionFetcher {
+    public RestSectionFetcherV2(PageTitle title, String sectionsRequested, 
boolean downloadImages) {
+        super(title, sectionsRequested, downloadImages);
+    }
+}
diff --git a/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV1.java
similarity index 75%
rename from wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
rename to 
wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV1.java
index 96de58b..f26a0af 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV1.java
@@ -1,4 +1,4 @@
-package org.wikipedia.page;
+package org.wikipedia.page.fetch;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -6,23 +6,20 @@
 import org.mediawiki.api.json.ApiException;
 import org.mediawiki.api.json.ApiResult;
 import org.mediawiki.api.json.RequestBuilder;
-import org.wikipedia.ApiTask;
-import org.wikipedia.WikipediaApp;
+import org.wikipedia.page.PageTitle;
+import org.wikipedia.page.Section;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class SectionsFetchTask extends ApiTask<List<Section>> {
-    private final WikipediaApp app;
+/** Using traditional api.php endpoints */
+public class SectionsFetcherV1 implements Fetcher<List<Section>> {
     private final PageTitle title;
     private final String sectionsRequested;
+    private final boolean downloadImages;
 
-    public SectionsFetchTask(WikipediaApp app, PageTitle title, String 
sectionsRequested) {
-        super(
-                SINGLE_THREAD,
-                app.getAPIForSite(title.getSite())
-        );
-        this.app = app;
+    public SectionsFetcherV1(PageTitle title, String sectionsRequested, 
boolean downloadImages) {
+        this.downloadImages = downloadImages;
         this.title = title;
         this.sectionsRequested = sectionsRequested;
     }
@@ -36,11 +33,12 @@
                 .param("sections", sectionsRequested)
                 .param("sectionprop", "toclevel|line|anchor")
                 .param("noheadings", "true");
-        if (!app.isImageDownloadEnabled()) {
+        if (!downloadImages) {
             builder.param("noimages", "true");
         }
         return builder;
     }
+
 
     @Override
     public List<Section> processResult(ApiResult result) throws Throwable {
@@ -57,4 +55,8 @@
 
         return sections;
     }
+
+    public String getPagePropsResponseName() {
+        return "mobileview";
+    }
 }
diff --git a/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java 
b/wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV2.java
similarity index 75%
copy from wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
copy to wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV2.java
index 96de58b..58d675b 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/fetch/SectionsFetcherV2.java
@@ -1,4 +1,4 @@
-package org.wikipedia.page;
+package org.wikipedia.page.fetch;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -6,23 +6,20 @@
 import org.mediawiki.api.json.ApiException;
 import org.mediawiki.api.json.ApiResult;
 import org.mediawiki.api.json.RequestBuilder;
-import org.wikipedia.ApiTask;
-import org.wikipedia.WikipediaApp;
+import org.wikipedia.page.PageTitle;
+import org.wikipedia.page.Section;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class SectionsFetchTask extends ApiTask<List<Section>> {
-    private final WikipediaApp app;
+/** TODO: Using nodejs/RESTBase endpoints */
+public class SectionsFetcherV2 implements Fetcher<List<Section>> {
     private final PageTitle title;
     private final String sectionsRequested;
+    private final boolean downloadImages;
 
-    public SectionsFetchTask(WikipediaApp app, PageTitle title, String 
sectionsRequested) {
-        super(
-                SINGLE_THREAD,
-                app.getAPIForSite(title.getSite())
-        );
-        this.app = app;
+    public SectionsFetcherV2(PageTitle title, String sectionsRequested, 
boolean downloadImages) {
+        this.downloadImages = downloadImages;
         this.title = title;
         this.sectionsRequested = sectionsRequested;
     }
@@ -36,7 +33,7 @@
                 .param("sections", sectionsRequested)
                 .param("sectionprop", "toclevel|line|anchor")
                 .param("noheadings", "true");
-        if (!app.isImageDownloadEnabled()) {
+        if (!downloadImages) {
             builder.param("noimages", "true");
         }
         return builder;
@@ -57,4 +54,8 @@
 
         return sections;
     }
+
+    public String getPagePropsResponseName() {
+        return "mobileview";
+    }
 }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java 
b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
index 30fad46..d692429 100644
--- a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
@@ -10,13 +10,13 @@
 import org.wikipedia.page.Page;
 import org.wikipedia.page.PageProperties;
 import org.wikipedia.page.Section;
-import org.wikipedia.page.SectionsFetchTask;
+import org.wikipedia.page.fetch.OldSectionsFetchTask;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 
-public class RefreshSavedPageTask extends SectionsFetchTask {
+public class RefreshSavedPageTask extends OldSectionsFetchTask {
     private final SavedPage savedPage;
     private final WikipediaApp app;
 
diff --git 
a/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java 
b/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
index 1ac1363..e9da8c5 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
@@ -22,7 +22,7 @@
 import org.wikipedia.page.PageActivity;
 import org.wikipedia.page.PageTitle;
 import org.wikipedia.page.Section;
-import org.wikipedia.page.SectionsFetchTask;
+import org.wikipedia.page.fetch.OldSectionsFetchTask;
 import org.wikipedia.staticdata.MainPageNameData;
 
 import java.util.List;
@@ -92,7 +92,7 @@
         }
     }
 
-    private class FetchMainPageTask extends SectionsFetchTask {
+    private class FetchMainPageTask extends OldSectionsFetchTask {
         public FetchMainPageTask(WikipediaApp app) {
             super(app,
                     new 
PageTitle(MainPageNameData.valueFor(app.getAppOrSystemLanguageCode()),

-- 
To view, visit https://gerrit.wikimedia.org/r/226675
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3dfa7b0e964bf8cdd9fc93b891debd7a00c82776
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to