jenkins-bot has submitted this change and it was merged. Change subject: Decouple JsonPageLoadStrategy from MainActivity. ......................................................................
Decouple JsonPageLoadStrategy from MainActivity. ...so that we can plug PageFragment into a clean new Activity (to come). Bug: T141131 Change-Id: I57b5e05c2efeff0b70af50b567e40dd1dddcf828 --- M app/src/main/java/org/wikipedia/MainActivity.java M app/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java M app/src/main/java/org/wikipedia/page/PageFragment.java 3 files changed, 28 insertions(+), 12 deletions(-) Approvals: BearND: Looks good to me, approved jenkins-bot: Verified diff --git a/app/src/main/java/org/wikipedia/MainActivity.java b/app/src/main/java/org/wikipedia/MainActivity.java index b445a5e..7a769ee 100644 --- a/app/src/main/java/org/wikipedia/MainActivity.java +++ b/app/src/main/java/org/wikipedia/MainActivity.java @@ -1063,6 +1063,11 @@ } @Override + public void onPageInvalidateOptionsMenu() { + supportInvalidateOptionsMenu(); + } + + @Override public void onSearchSelectPage(@NonNull HistoryEntry entry, boolean inNewTab) { loadPage(entry.getTitle(), entry, inNewTab ? TabsProvider.TabPosition.NEW_TAB_BACKGROUND : TabsProvider.TabPosition.CURRENT_TAB, false); diff --git a/app/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java b/app/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java index 7315720..49fe1ce 100644 --- a/app/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java +++ b/app/src/main/java/org/wikipedia/page/JsonPageLoadStrategy.java @@ -104,7 +104,6 @@ private PageViewModel model; private PageFragment fragment; private CommunicationBridge bridge; - private MainActivity activity; private ObservableWebView webView; private SwipeRefreshLayoutWithScroll refreshView; @NonNull private final WikipediaApp app = WikipediaApp.getInstance(); @@ -126,7 +125,6 @@ @NonNull List<PageBackStackItem> backStack) { this.model = model; this.fragment = fragment; - activity = (MainActivity) fragment.getActivity(); this.refreshView = refreshView; this.webView = webView; this.bridge = bridge; @@ -298,7 +296,9 @@ networkErrorCallback = null; cacheOnComplete = false; state = STATE_COMPLETE_FETCH; - activity.supportInvalidateOptionsMenu(); + if (fragment.callback() != null) { + fragment.callback().onPageInvalidateOptionsMenu(); + } if (!sequenceNumber.inSync(startSequenceNum)) { return; } @@ -363,7 +363,9 @@ @Override public void onMessage(JSONObject payload) { // Do any other stuff that should happen upon page load completion... - activity.updateProgressBar(false, true, 0); + if (fragment.callback() != null) { + fragment.callback().onPageUpdateProgressBar(false, true, 0); + } // trigger layout of the bottom content // Check to see if the page title has changed (e.g. due to following a redirect), @@ -391,7 +393,9 @@ } switch (forState) { case STATE_NO_FETCH: - activity.updateProgressBar(true, true, 0); + if (fragment.callback() != null) { + fragment.callback().onPageUpdateProgressBar(true, true, 0); + } loadLeadSection(sequenceNumber.get()); break; case STATE_INITIAL_FETCH: @@ -416,7 +420,9 @@ return; } this.state = state; - activity.supportInvalidateOptionsMenu(); + if (fragment.callback() != null) { + fragment.callback().onPageInvalidateOptionsMenu(); + } // FIXME: Move this out into a PageComplete event of sorts if (state == STATE_COMPLETE_FETCH) { @@ -585,7 +591,9 @@ } refreshView.setRefreshing(false); - activity.updateProgressBar(true, true, 0); + if (fragment.callback() != null) { + fragment.callback().onPageUpdateProgressBar(true, true, 0); + } leadImagesHandler.updateNavigate(page.getPageProperties().getGeo()); } @@ -640,7 +648,7 @@ private SparseArray<String> localizedStrings(Page page) { return getStringsForArticleLanguage(page.getTitle(), - ResourceUtil.getIdArray(activity, R.array.page_localized_string_ids)); + ResourceUtil.getIdArray(fragment.getContext(), R.array.page_localized_string_ids)); } @@ -682,9 +690,11 @@ } private void displayNonLeadSection(int index, boolean savedPage) { - activity.updateProgressBar(true, false, - MainActivity.PROGRESS_BAR_MAX_VALUE / model.getPage() - .getSections().size() * index); + if (fragment.callback() != null) { + fragment.callback().onPageUpdateProgressBar(true, false, + MainActivity.PROGRESS_BAR_MAX_VALUE / model.getPage() + .getSections().size() * index); + } try { final Page page = model.getPage(); JSONObject wrapper = new JSONObject(); @@ -822,7 +832,7 @@ } private Resources getResources() { - return activity.getResources(); + return fragment.getResources(); } private class LeadImageLayoutListener implements LeadImagesHandler.OnLeadImageLayoutListener { diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java b/app/src/main/java/org/wikipedia/page/PageFragment.java index f95461e..804c24e 100755 --- a/app/src/main/java/org/wikipedia/page/PageFragment.java +++ b/app/src/main/java/org/wikipedia/page/PageFragment.java @@ -117,6 +117,7 @@ void onPagePopFragment(); @Nullable AppCompatActivity getActivity(); void onPageUpdateNavDrawerSelection(@NonNull Fragment fragment); + void onPageInvalidateOptionsMenu(); } public static final int TOC_ACTION_SHOW = 0; -- To view, visit https://gerrit.wikimedia.org/r/304294 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I57b5e05c2efeff0b70af50b567e40dd1dddcf828 Gerrit-PatchSet: 3 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: BearND <bsitzm...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Mholloway <mhollo...@wikimedia.org> Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits