BearND has uploaded a new change for review.

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

Change subject: Hygiene: Change SectionsFetchTask parameters
......................................................................

Hygiene: Change SectionsFetchTask parameters

The first step of multiple refactors to get to swappable SectionsFetchTasks.
Pass in the app instead of a context.

Renamed pageSequenceNum to currentSequenceNum.
Renamed sequenceNum to startSequenceNum.

Extract method loadPageFromCache().

Change-Id: I227e6c28bcdc5572908022507e8f0a8782b331e6
---
M wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
M wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
M wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
M wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
M wikipedia/src/main/java/org/wikipedia/savedpages/RefreshPagesHandler.java
M wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
M wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
M wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
8 files changed, 103 insertions(+), 97 deletions(-)


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

diff --git 
a/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java 
b/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
index cc03df0..35b0543 100644
--- a/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
+++ b/wikipedia/src/androidTest/java/org/wikipedia/test/PageFetchTaskTests.java
@@ -1,8 +1,9 @@
 package org.wikipedia.test;
 
-import android.content.Context;
 import android.content.Intent;
 import android.test.ActivityUnitTestCase;
+
+import org.wikipedia.WikipediaApp;
 import org.wikipedia.page.PageTitle;
 import org.wikipedia.Site;
 import org.wikipedia.page.Section;
@@ -38,8 +39,9 @@
         runTestOnUiThread(new Runnable() {
             @Override
             public void run() {
-                final Context ctx = getInstrumentation().getTargetContext();
-                new SectionsFetchTask(ctx, new PageTitle(null, title, new 
Site("test.wikipedia.org")), "all") {
+                final WikipediaApp app = (WikipediaApp)
+                        
getInstrumentation().getTargetContext().getApplicationContext();
+                new SectionsFetchTask(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/page/JsonPageLoadStrategy.java 
b/wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
index 036b206..689eced 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java
@@ -74,7 +74,7 @@
      * Sequence number to maintain synchronization when loading page content 
asynchronously
      * between the Java and Javascript layers, as well as between async tasks 
and the UI thread.
      */
-    private int pageSequenceNum;
+    private int currentSequenceNum;
 
     /**
      * The y-offset position to which the page will be scrolled once it's 
fully loaded
@@ -132,7 +132,7 @@
     public void onActivityCreated(Bundle savedInstanceState) {
         setupSpecificMessageHandlers();
 
-        pageSequenceNum = 0;
+        currentSequenceNum = 0;
 
         if (savedInstanceState != null) {
             ArrayList<PageBackStackItem> tmpBackStack
@@ -156,7 +156,7 @@
                     return;
                 }
                 try {
-                    if (messagePayload.getInt("sequence") != pageSequenceNum) {
+                    if (messagePayload.getInt("sequence") != 
currentSequenceNum) {
                         return;
                     }
                     stagedScrollY = messagePayload.getInt("stagedScrollY");
@@ -173,7 +173,7 @@
                     return;
                 }
                 try {
-                    if (messagePayload.getInt("sequence") != pageSequenceNum) {
+                    if (messagePayload.getInt("sequence") != 
currentSequenceNum) {
                         return;
                     }
                     displayNonLeadSection(messagePayload.getInt("index"));
@@ -189,7 +189,7 @@
                     return;
                 }
                 try {
-                    if (messagePayload.getInt("sequence") != pageSequenceNum) {
+                    if (messagePayload.getInt("sequence") != 
currentSequenceNum) {
                         return;
                     }
                 } catch (JSONException e) {
@@ -242,7 +242,7 @@
 
         // increment our sequence number, so that any async tasks that depend 
on the sequence
         // will invalidate themselves upon completion.
-        pageSequenceNum++;
+        currentSequenceNum++;
 
         // kick off an event to the WebView that will cause it to clear its 
contents,
         // and then report back to us when the clearing is complete, so that 
we can synchronize
@@ -252,7 +252,7 @@
         try {
             JSONObject wrapper = new JSONObject();
             // whatever we pass to this event will be passed back to us by the 
WebView!
-            wrapper.put("sequence", pageSequenceNum);
+            wrapper.put("sequence", currentSequenceNum);
             wrapper.put("tryFromCache", tryFromCache);
             wrapper.put("stagedScrollY", stagedScrollY);
             bridge.sendMessage("beginNewPage", wrapper);
@@ -272,10 +272,10 @@
                 leadImagesHandler.hide();
                 bottomContentHandler.hide();
                 activity.getSearchBarHideHandler().setFadeEnabled(false);
-                new LeadSectionFetchTask(pageSequenceNum).execute();
+                new LeadSectionFetchTask(currentSequenceNum).execute();
                 break;
             case STATE_INITIAL_FETCH:
-                new RestSectionsFetchTask(pageSequenceNum).execute();
+                new RestSectionsFetchTask(currentSequenceNum).execute();
                 break;
             case STATE_COMPLETE_FETCH:
                 editHandler.setPage(model.getPage());
@@ -366,45 +366,49 @@
             loadSavedPage();
         } else if (tryFromCache) {
             //is this page in cache??
-            app.getPageCache()
-                    .get(model.getTitleOriginal(), pageSequenceNum, new 
PageCache.CacheGetListener() {
-                        @Override
-                        public void onGetComplete(Page page, int sequence) {
-                            if (sequence != pageSequenceNum) {
-                                return;
-                            }
-                            if (page != null) {
-                                Log.d(TAG, "Using page from cache: " + 
model.getTitleOriginal().getDisplayText());
-                                model.setPage(page);
-                                model.setTitle(page.getTitle());
-                                // load the current title's thumbnail from 
sqlite
-                                
updateThumbnail(PageImage.PERSISTENCE_HELPER.getImageUrlForTitle(app, 
model.getTitle()));
-                                // Save history entry...
-                                new SaveHistoryTask(model.getCurEntry(), 
app).execute();
-                                // don't re-cache the page after loading.
-                                cacheOnComplete = false;
-                                state = STATE_COMPLETE_FETCH;
-                                setState(state);
-                                performActionForState(state);
-                            } else {
-                                // page isn't in cache, so fetch it from the 
network...
-                                loadPageFromNetwork();
-                            }
-                        }
-
-                        @Override
-                        public void onGetError(Throwable e, int sequence) {
-                            Log.e(TAG, "Failed to get page from cache.", e);
-                            if (sequence != pageSequenceNum) {
-                                return;
-                            }
-                            // something failed when loading it from cache, so 
fetch it from network...
-                            loadPageFromNetwork();
-                        }
-                    });
+            loadPageFromCache();
         } else {
             loadPageFromNetwork();
         }
+    }
+
+    private void loadPageFromCache() {
+        app.getPageCache()
+                .get(model.getTitleOriginal(), currentSequenceNum, new 
PageCache.CacheGetListener() {
+                    @Override
+                    public void onGetComplete(Page page, int sequence) {
+                        if (sequence != currentSequenceNum) {
+                            return;
+                        }
+                        if (page != null) {
+                            Log.d(TAG, "Using page from cache: " + 
model.getTitleOriginal().getDisplayText());
+                            model.setPage(page);
+                            model.setTitle(page.getTitle());
+                            // load the current title's thumbnail from sqlite
+                            
updateThumbnail(PageImage.PERSISTENCE_HELPER.getImageUrlForTitle(app, 
model.getTitle()));
+                            // Save history entry...
+                            new SaveHistoryTask(model.getCurEntry(), 
app).execute();
+                            // don't re-cache the page after loading.
+                            cacheOnComplete = false;
+                            state = STATE_COMPLETE_FETCH;
+                            setState(state);
+                            performActionForState(state);
+                        } else {
+                            // page isn't in cache, so fetch it from the 
network...
+                            loadPageFromNetwork();
+                        }
+                    }
+
+                    @Override
+                    public void onGetError(Throwable e, int sequence) {
+                        Log.e(TAG, "Failed to get page from cache.", e);
+                        if (sequence != currentSequenceNum) {
+                            return;
+                        }
+                        // something failed when loading it from cache, so 
fetch it from network...
+                        loadPageFromNetwork();
+                    }
+                });
     }
 
     private void loadPageFromNetwork() {
@@ -536,7 +540,7 @@
             bridge.sendMessage("setMargins", marginPayload);
 
             JSONObject leadSectionPayload = new JSONObject();
-            leadSectionPayload.put("sequence", pageSequenceNum);
+            leadSectionPayload.put("sequence", currentSequenceNum);
             leadSectionPayload.put("title", page.getDisplayTitle());
             leadSectionPayload.put("section", 
page.getSections().get(0).toJSON());
             leadSectionPayload.put("string_page_similar_titles", 
activity.getString(R.string.page_similar_titles));
@@ -583,7 +587,7 @@
         try {
             final Page page = model.getPage();
             JSONObject wrapper = new JSONObject();
-            wrapper.put("sequence", pageSequenceNum);
+            wrapper.put("sequence", currentSequenceNum);
             if (index < page.getSections().size()) {
                 JSONObject section = page.getSections().get(index).toJSON();
                 wrapper.put("section", section);
@@ -611,9 +615,12 @@
 
 
     private class LeadSectionFetchTask extends SectionsFetchTask {
-        public LeadSectionFetchTask(int sequenceNum) {
-            super(activity, model.getTitle(), "0");
-            this.sequenceNum = sequenceNum;
+        private final int startSequenceNum;
+        private PageProperties pageProperties;
+
+        public LeadSectionFetchTask(int startSequenceNum) {
+            super(app, model.getTitle(), "0");
+            this.startSequenceNum = startSequenceNum;
         }
 
         @Override
@@ -622,19 +629,16 @@
             builder.param("prop", builder.getParams().get("prop")
                     + "|thumb|image|id|revision|description|"
                     + Page.API_REQUEST_PROPS);
-            Resources res = activity.getResources();
+            Resources res = app.getResources();
             builder.param("thumbsize",
                     Integer.toString((int) 
(res.getDimension(R.dimen.leadImageWidth)
                             / res.getDisplayMetrics().density)));
             return builder;
         }
 
-        private final int sequenceNum;
-        private PageProperties pageProperties;
-
         @Override
         public List<Section> processResult(ApiResult result) throws Throwable {
-            if (sequenceNum != pageSequenceNum) {
+            if (startSequenceNum != currentSequenceNum) {
                 return super.processResult(result);
             }
             JSONObject mobileView = 
result.asObject().optJSONObject("mobileview");
@@ -647,7 +651,7 @@
 
         @Override
         public void onFinish(List<Section> result) {
-            if (!fragment.isAdded() || sequenceNum != pageSequenceNum) {
+            if (!fragment.isAdded() || startSequenceNum != currentSequenceNum) 
{
                 return;
             }
 
@@ -698,21 +702,21 @@
 
         @Override
         public void onCatch(Throwable caught) {
-            commonSectionFetchOnCatch(caught, sequenceNum);
+            commonSectionFetchOnCatch(caught, startSequenceNum);
         }
     }
 
     private class RestSectionsFetchTask extends SectionsFetchTask {
-        private final int sequenceNum;
+        private final int startSequenceNum;
 
-        public RestSectionsFetchTask(int sequenceNum) {
-            super(activity, model.getTitle(), "1-");
-            this.sequenceNum = sequenceNum;
+        public RestSectionsFetchTask(int startSequenceNum) {
+            super(app, model.getTitle(), "1-");
+            this.startSequenceNum = startSequenceNum;
         }
 
         @Override
         public void onFinish(List<Section> result) {
-            if (!fragment.isAdded() || sequenceNum != pageSequenceNum) {
+            if (!fragment.isAdded() || startSequenceNum != currentSequenceNum) 
{
                 return;
             }
 
@@ -727,12 +731,12 @@
 
         @Override
         public void onCatch(Throwable caught) {
-            commonSectionFetchOnCatch(caught, sequenceNum);
+            commonSectionFetchOnCatch(caught, startSequenceNum);
         }
     }
 
-    private void commonSectionFetchOnCatch(Throwable caught, int sequenceNum) {
-        if (sequenceNum != pageSequenceNum) {
+    private void commonSectionFetchOnCatch(Throwable caught, int 
startSequenceNum) {
+        if (startSequenceNum != currentSequenceNum) {
             return;
         }
         fragment.commonSectionFetchOnCatch(caught);
diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java 
b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
index 2fffa76..1432ee5 100755
--- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
@@ -883,7 +883,7 @@
         }
 
         FeedbackUtil.showMessage(getActivity(), R.string.toast_saving_page);
-        new SavePageTask(getActivity(), model.getTitle(), model.getPage()) {
+        new SavePageTask(app, model.getTitle(), model.getPage()) {
             @Override
             public void onFinish(Boolean success) {
                 if (!isAdded()) {
diff --git a/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java 
b/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
index fcab611..96de58b 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/SectionsFetchTask.java
@@ -1,6 +1,5 @@
 package org.wikipedia.page;
 
-import android.content.Context;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.mediawiki.api.json.Api;
@@ -14,18 +13,18 @@
 import java.util.List;
 
 public class SectionsFetchTask extends ApiTask<List<Section>> {
+    private final WikipediaApp app;
     private final PageTitle title;
     private final String sectionsRequested;
-    private final WikipediaApp app;
 
-    public SectionsFetchTask(Context context, PageTitle title, String 
sectionsRequested) {
+    public SectionsFetchTask(WikipediaApp app, PageTitle title, String 
sectionsRequested) {
         super(
                 SINGLE_THREAD,
-                
((WikipediaApp)context.getApplicationContext()).getAPIForSite(title.getSite())
+                app.getAPIForSite(title.getSite())
         );
+        this.app = app;
         this.title = title;
         this.sectionsRequested = sectionsRequested;
-        this.app = (WikipediaApp)context.getApplicationContext();
     }
 
     @Override
diff --git 
a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshPagesHandler.java 
b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshPagesHandler.java
index b42f403..57d4145 100644
--- a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshPagesHandler.java
+++ b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshPagesHandler.java
@@ -6,6 +6,7 @@
 import android.support.v7.app.AlertDialog;
 import android.util.Log;
 import org.wikipedia.R;
+import org.wikipedia.WikipediaApp;
 import org.wikipedia.page.Section;
 
 import java.util.List;
@@ -63,7 +64,7 @@
         progressDialog.show();
         for (int i = 0; i < savedPages.size(); i++) {
             final SavedPage savedPage = savedPages.get(i);
-                new RefreshSavedPageTask(context, savedPage) {
+                new RefreshSavedPageTask((WikipediaApp) 
context.getApplicationContext(), savedPage) {
                     @Override
                     public void onBeforeExecute() {
                         if (isRefreshCancelled) {
diff --git 
a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java 
b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
index 5aadaff..30fad46 100644
--- a/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/savedpages/RefreshSavedPageTask.java
@@ -1,6 +1,5 @@
 package org.wikipedia.savedpages;
 
-import android.content.Context;
 import android.os.Handler;
 import android.os.Looper;
 import org.json.JSONObject;
@@ -21,10 +20,10 @@
     private final SavedPage savedPage;
     private final WikipediaApp app;
 
-    public RefreshSavedPageTask(Context context, SavedPage savedPage) {
-        super(context, savedPage.getTitle(), "all");
+    public RefreshSavedPageTask(WikipediaApp app, SavedPage savedPage) {
+        super(app, savedPage.getTitle(), "all");
         this.savedPage = savedPage;
-        this.app = WikipediaApp.getInstance();
+        this.app = app;
     }
 
     @Override
diff --git a/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java 
b/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
index 6abcac1..79376cb 100644
--- a/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
+++ b/wikipedia/src/main/java/org/wikipedia/savedpages/SavePageTask.java
@@ -20,9 +20,9 @@
 
     private CountDownLatch imagesDownloadedLatch;
 
-    public SavePageTask(Context context, PageTitle title, Page page) {
+    public SavePageTask(WikipediaApp app, PageTitle title, Page page) {
         super(SINGLE_THREAD);
-        app = (WikipediaApp) context.getApplicationContext();
+        this.app = app;
         this.title = title;
         this.page = page;
     }
diff --git 
a/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java 
b/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
index 5c8eddd..1ac1363 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
@@ -1,17 +1,5 @@
 package org.wikipedia.widgets;
 
-import org.mediawiki.api.json.Api;
-import org.mediawiki.api.json.RequestBuilder;
-import org.wikipedia.page.PageTitle;
-import org.wikipedia.R;
-import org.wikipedia.Utils;
-import org.wikipedia.WikipediaApp;
-import org.wikipedia.page.Page;
-import org.wikipedia.page.PageActivity;
-import org.wikipedia.page.Section;
-import org.wikipedia.page.SectionsFetchTask;
-import org.wikipedia.staticdata.MainPageNameData;
-
 import android.app.PendingIntent;
 import android.appwidget.AppWidgetManager;
 import android.appwidget.AppWidgetProvider;
@@ -24,6 +12,18 @@
 import android.text.style.URLSpan;
 import android.util.Log;
 import android.widget.RemoteViews;
+
+import org.mediawiki.api.json.Api;
+import org.mediawiki.api.json.RequestBuilder;
+import org.wikipedia.R;
+import org.wikipedia.Utils;
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.page.Page;
+import org.wikipedia.page.PageActivity;
+import org.wikipedia.page.PageTitle;
+import org.wikipedia.page.Section;
+import org.wikipedia.page.SectionsFetchTask;
+import org.wikipedia.staticdata.MainPageNameData;
 
 import java.util.List;
 
@@ -38,7 +38,7 @@
             Log.d(TAG, "updating widget...");
             final RemoteViews remoteViews = new 
RemoteViews(context.getPackageName(), R.layout.widget_featured_page);
 
-            (new FetchMainPageTask(context) {
+            (new FetchMainPageTask((WikipediaApp) 
context.getApplicationContext()) {
                 @Override
                 public void onFinish(List<Section> result) {
                     if (result.size() == 0) {
@@ -93,9 +93,10 @@
     }
 
     private class FetchMainPageTask extends SectionsFetchTask {
-        public FetchMainPageTask(Context context) {
-            super(context, new 
PageTitle(MainPageNameData.valueFor(WikipediaApp.getInstance().getAppOrSystemLanguageCode()),
-                    WikipediaApp.getInstance().getPrimarySite()), "all");
+        public FetchMainPageTask(WikipediaApp app) {
+            super(app,
+                    new 
PageTitle(MainPageNameData.valueFor(app.getAppOrSystemLanguageCode()),
+                            app.getPrimarySite()), "all");
         }
 
         @Override

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I227e6c28bcdc5572908022507e8f0a8782b331e6
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