Mholloway has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/326033 )
Change subject: Standardize caching on the canonical page title
......................................................................
Standardize caching on the canonical page title
Currently we cache pages using their "original" titles to construct a key.
This might be the article's canonical title or it might be a redirect
title, depending on how we got to the page. This can lead to multiple,
potentially differing copies of an article being cached, with the copy
retrieved when loading from cache depending on the title in the link
followed.
This patch removes the "originalTitle" logic from PageViewModel so that
the correct, canonical article title is always used to construct the cache
key. This way, we can be sure we are obtaining the correct, up-to-date
copy of the content we want from the cache.
A downside of this is that following a redirect link will result in a
cache miss even if the page is cached. Still, this is small price to pay
for correct, predictable cache behavior.
N.B. I am not sure what purpose the "originalTitle" logic was intended to
fulfill, but removing it fixes caching and doesn't obviously break anything
else.
Bug: T152720
Change-Id: I345eb043c0ef616f236914580fa60f9122381bf1
---
M app/src/main/java/org/wikipedia/page/PageDataClient.java
M app/src/main/java/org/wikipedia/page/PageFragment.java
M app/src/main/java/org/wikipedia/page/PageViewModel.java
M app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
4 files changed, 9 insertions(+), 24 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/33/326033/1
diff --git a/app/src/main/java/org/wikipedia/page/PageDataClient.java
b/app/src/main/java/org/wikipedia/page/PageDataClient.java
index ae3fc9e..b309a03 100644
--- a/app/src/main/java/org/wikipedia/page/PageDataClient.java
+++ b/app/src/main/java/org/wikipedia/page/PageDataClient.java
@@ -415,7 +415,7 @@
//add the page to cache!
if (cacheOnComplete) {
- app.getPageCache().put(model.getTitleOriginal(),
model.getPage());
+ app.getPageCache().put(model.getTitle(), model.getPage());
}
}
}
@@ -472,14 +472,14 @@
private void loadFromCache(final ErrorCallback errorCallback) {
app.getPageCache()
- .get(model.getTitleOriginal(), sequenceNumber.get(), new
PageCache.CacheGetListener() {
+ .get(model.getTitle(), sequenceNumber.get(), new
PageCache.CacheGetListener() {
@Override
public void onGetComplete(Page page, int sequence) {
if (!sequenceNumber.inSync(sequence)) {
return;
}
if (page != null) {
- L.d("Using page from cache: " +
model.getTitleOriginal().getDisplayText());
+ L.d("Using page from cache: " +
model.getTitle().getDisplayText());
model.setPage(page);
model.setTitle(page.getTitle());
// Update our history entry, in case the Title was
changed (i.e. normalized)
@@ -522,7 +522,6 @@
private void updateThumbnail(String thumbUrl) {
model.getTitle().setThumbUrl(thumbUrl);
- model.getTitleOriginal().setThumbUrl(thumbUrl);
fragment.invalidateTabs();
}
@@ -534,7 +533,7 @@
* Push the current page title onto the backstack.
*/
private void pushBackStack() {
- PageBackStackItem item = new
PageBackStackItem(model.getTitleOriginal(), model.getCurEntry());
+ PageBackStackItem item = new PageBackStackItem(model.getTitle(),
model.getCurEntry());
backStack.add(item);
}
diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.java
b/app/src/main/java/org/wikipedia/page/PageFragment.java
index 1324def..e07849a 100755
--- a/app/src/main/java/org/wikipedia/page/PageFragment.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragment.java
@@ -234,10 +234,6 @@
return model.getTitle();
}
- public PageTitle getTitleOriginal() {
- return model.getTitleOriginal();
- }
-
@NonNull public ShareHandler getShareHandler() {
return shareHandler;
}
@@ -636,7 +632,6 @@
errorView.setVisibility(View.GONE);
model.setTitle(title);
- model.setTitleOriginal(title);
model.setCurEntry(entry);
updateProgressBar(true, true, 0);
@@ -699,7 +694,7 @@
pageDataClient.backFromEditing(data);
FeedbackUtil.showMessage(getActivity(),
R.string.edit_saved_successfully);
// and reload the page...
- loadPage(model.getTitleOriginal(), model.getCurEntry(),
PageLoadStrategy.Cache.FALLBACK, false);
+ loadPage(model.getTitle(), model.getCurEntry(),
PageLoadStrategy.Cache.FALLBACK, false);
}
}
@@ -1074,7 +1069,7 @@
String filename =
UriUtil.removeInternalLinkPrefix(href);
WikiSite wiki = model.getTitle().getWikiSite();
startActivityForResult(GalleryActivity.newIntent(getContext(),
- model.getTitleOriginal(), filename, wiki,
+ model.getTitle(), filename, wiki,
GalleryFunnel.SOURCE_NON_LEAD_IMAGE),
Constants.ACTIVITY_REQUEST_GALLERY);
} else {
@@ -1093,7 +1088,7 @@
String filename =
StringUtil.removeUnderscores(UriUtil.removeInternalLinkPrefix(href));
WikiSite wiki = model.getTitle().getWikiSite();
startActivityForResult(GalleryActivity.newIntent(getContext(),
- model.getTitleOriginal(), filename, wiki,
+ model.getTitle(), filename, wiki,
GalleryFunnel.SOURCE_NON_LEAD_IMAGE),
Constants.ACTIVITY_REQUEST_GALLERY);
} catch (JSONException e) {
@@ -1213,7 +1208,7 @@
@Override
public WikiSite getWikiSite() {
- return model.getTitleOriginal().getWikiSite();
+ return model.getTitle().getWikiSite();
}
}
diff --git a/app/src/main/java/org/wikipedia/page/PageViewModel.java
b/app/src/main/java/org/wikipedia/page/PageViewModel.java
index 7411168..5b20fab 100644
--- a/app/src/main/java/org/wikipedia/page/PageViewModel.java
+++ b/app/src/main/java/org/wikipedia/page/PageViewModel.java
@@ -10,7 +10,6 @@
class PageViewModel {
@Nullable private Page page;
@Nullable private PageTitle title;
- @Nullable private PageTitle titleOriginal;
@Nullable private HistoryEntry curEntry;
@Nullable public Page getPage() {
@@ -27,14 +26,6 @@
public void setTitle(@Nullable PageTitle title) {
this.title = title;
- }
-
- @Nullable public PageTitle getTitleOriginal() {
- return titleOriginal;
- }
-
- public void setTitleOriginal(@Nullable PageTitle titleOriginal) {
- this.titleOriginal = titleOriginal;
}
@Nullable public HistoryEntry getCurEntry() {
diff --git
a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
index d4be8ca..2b2b104 100755
--- a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
+++ b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
@@ -278,7 +278,7 @@
String filename = "File:" + imageName;
WikiSite wiki = getTitle().getWikiSite();
getActivity().startActivityForResult(GalleryActivity.newIntent(getActivity(),
- parentFragment.getTitleOriginal(), filename,
wiki,
+ parentFragment.getTitle(), filename, wiki,
GalleryFunnel.SOURCE_LEAD_IMAGE),
Constants.ACTIVITY_REQUEST_GALLERY);
}
--
To view, visit https://gerrit.wikimedia.org/r/326033
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I345eb043c0ef616f236914580fa60f9122381bf1
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits