Cooltey has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/379455 )
Change subject: Fix incorrect variant issues in Chinese articles
......................................................................
Fix incorrect variant issues in Chinese articles
In this update:
- Adds a "uselang" parameter to the MwPageService for setting up the app
language code
Also noticed that we can add "Accept-Language" to the Header in
CommonHeaderRequestInterceptor, but it is not totally accurate based on certain
conditions (e.g. Links inside the translated articles)
Bug: T176374
Change-Id: Id8b452cc5e5ce8b3f286b0901f44f1bfbeaead90
---
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
M app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
M app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
M app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
M app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
M app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
M app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
M
app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwMobileViewPageLeadTest.java
M app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java
M app/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java
M app/src/test/java/org/wikipedia/dataclient/restbase/page/RbPageLeadTest.java
11 files changed, 47 insertions(+), 31 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/55/379455/1
diff --git
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
index c676331..65bf77e 100644
--- a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
+++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageClient.java
@@ -10,6 +10,7 @@
import okhttp3.CacheControl;
import retrofit2.Call;
+import retrofit2.http.Query;
/**
* Retrofit web service client for MediaWiki PHP API.
@@ -31,18 +32,20 @@
@NonNull
CacheOption cacheOption,
@NonNull String
title,
int leadImageWidth,
- boolean noImages) {
+ boolean noImages,
+ @Nullable String
useLang) {
return service.lead(cacheControl == null ? null :
cacheControl.toString(),
- optional(cacheOption.save()), title, leadImageWidth,
optional(noImages));
+ optional(cacheOption.save()), title, leadImageWidth,
optional(noImages), useLang);
}
@SuppressWarnings("unchecked")
@NonNull @Override public Call<? extends PageRemaining> sections(@Nullable
CacheControl cacheControl,
@NonNull
CacheOption cacheOption,
@NonNull
String title,
- boolean
noImages) {
+ boolean
noImages,
+ @Nullable
String useLang) {
return service.sections(cacheControl == null ? null :
cacheControl.toString(),
- optional(cacheOption.save()), title, optional(noImages));
+ optional(cacheOption.save()), title, optional(noImages),
useLang);
}
/**
diff --git
a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
index f0884e5..cbf6a73 100644
--- a/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
+++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/page/MwPageService.java
@@ -58,7 +58,8 @@
@Header(SaveHeader.FIELD) Boolean
save,
@NonNull @Query("page") String
title,
@Query("thumbwidth") int
leadImageWidth,
- @Nullable @Query("noimages")
Boolean noImages);
+ @Nullable @Query("noimages")
Boolean noImages,
+ @Nullable @Query("uselang")
String useLang);
/**
* Gets the remaining sections of a given title.
@@ -72,5 +73,6 @@
@NonNull Call<MwMobileViewPageRemaining> sections(@Nullable
@Header("Cache-Control") String cacheControl,
@Header(SaveHeader.FIELD) Boolean save,
@NonNull @Query("page")
String title,
- @Nullable
@Query("noimages") Boolean noImages);
+ @Nullable
@Query("noimages") Boolean noImages,
+ @Nullable
@Query("uselang") String useLang);
}
diff --git a/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
b/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
index cd257b3..cb6c805 100644
--- a/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
+++ b/app/src/main/java/org/wikipedia/dataclient/page/PageClient.java
@@ -44,7 +44,8 @@
@NonNull CacheOption
cacheOption,
@NonNull String title,
int leadThumbnailWidth,
- boolean noImages);
+ boolean noImages,
+ @Nullable String useLang);
/**
* Gets the remaining sections of a given title.
@@ -55,5 +56,6 @@
@NonNull <T extends PageRemaining> Call<T> sections(@Nullable CacheControl
cacheControl,
@NonNull CacheOption
cacheOption,
@NonNull String title,
- boolean noImages);
+ boolean noImages,
+ @Nullable String
useLang);
}
diff --git
a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
index eb78b4a..8e061c3 100644
--- a/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
+++ b/app/src/main/java/org/wikipedia/dataclient/restbase/page/RbPageClient.java
@@ -52,7 +52,8 @@
@NonNull
CacheOption cacheOption,
@NonNull String
title,
int
leadThumbnailWidth,
- boolean noImages) {
+ boolean noImages,
+ @Nullable String
useLang) {
return service.lead(cacheControl == null ? null :
cacheControl.toString(),
optional(cacheOption.save()), title, optional(noImages));
}
@@ -61,7 +62,8 @@
@NonNull @Override public Call<? extends PageRemaining> sections(@Nullable
CacheControl cacheControl,
@NonNull
CacheOption cacheOption,
@NonNull
String title,
- boolean
noImages) {
+ boolean
noImages,
+ @Nullable
String useLang) {
return service.sections(cacheControl == null ? null :
cacheControl.toString(),
optional(cacheOption.save()), title, optional(noImages));
}
diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
index 279cb00..1e48425 100644
--- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
+++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.java
@@ -432,7 +432,8 @@
PageClientFactory
.create(model.getTitle().getWikiSite(),
model.getTitle().namespace())
.lead(null, model.shouldSaveOffline() ?
PageClient.CacheOption.SAVE : PageClient.CacheOption.CACHE,
- model.getTitle().getPrefixedText(),
calculateLeadImageWidth(), !isImageDownloadEnabled())
+ model.getTitle().getPrefixedText(),
calculateLeadImageWidth(), !isImageDownloadEnabled(),
+ app.getAppLanguageCode())
.enqueue(new retrofit2.Callback<PageLead>() {
@Override public void onResponse(@NonNull Call<PageLead>
call, @NonNull Response<PageLead> rsp) {
app.getSessionFunnel().leadSectionFetchEnd();
@@ -763,7 +764,8 @@
Request request = PageClientFactory
.create(model.getTitle().getWikiSite(),
model.getTitle().namespace())
.sections(null, model.shouldSaveOffline() ?
PageClient.CacheOption.SAVE : PageClient.CacheOption.CACHE,
- model.getTitle().getPrefixedText(),
!isImageDownloadEnabled())
+ model.getTitle().getPrefixedText(),
!isImageDownloadEnabled(),
+ app.getAppLanguageCode())
.request();
queueRemainingSections(request);
diff --git
a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
index 8d862d0..3a6c772 100644
--- a/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
+++ b/app/src/main/java/org/wikipedia/savedpages/SavedPageSyncService.java
@@ -199,7 +199,7 @@
boolean noImages = !isImageDownloadEnabled();
PageClient.CacheOption cacheOption = PageClient.CacheOption.SAVE;
- return client.lead(cacheControl, cacheOption, title, thumbnailWidth,
noImages);
+ return client.lead(cacheControl, cacheOption, title, thumbnailWidth,
noImages, WikipediaApp.getInstance().getAppLanguageCode());
}
@NonNull private Call<PageRemaining> reqPageSections(@Nullable
CacheControl cacheControl,
@@ -210,7 +210,7 @@
boolean noImages = !isImageDownloadEnabled();
PageClient.CacheOption cacheOption = PageClient.CacheOption.SAVE;
- return client.sections(cacheControl, cacheOption, title, noImages);
+ return client.sections(cacheControl, cacheOption, title, noImages,
WikipediaApp.getInstance().getAppLanguageCode());
}
private AggregatedResponseSize reqSaveImage(@NonNull WikiSite wiki,
@NonNull Iterable<String> urls) throws IOException {
diff --git
a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
index ac1285b..6eb3db1 100644
--- a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
+++ b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.java
@@ -82,7 +82,8 @@
getApiService(title)
.lead(null, PageClient.CacheOption.CACHE,
title.getPrefixedText(),
DimenUtil.calculateLeadImageWidth(),
- !isImageDownloadEnabled())
+ !isImageDownloadEnabled(),
+ app.getAppLanguageCode())
.enqueue(new retrofit2.Callback<PageLead>() {
@Override public void onResponse(Call<PageLead> call,
Response<PageLead> rsp) {
PageLead lead = rsp.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 f61cfb9..cf4ba05 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
@@ -5,6 +5,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.page.BasePageLeadTest;
import org.wikipedia.dataclient.page.PageClient;
import org.wikipedia.dataclient.page.PageLead;
@@ -57,7 +58,7 @@
@Test @SuppressWarnings("checkstyle:magicnumber") public void
testThumbUrls() throws Throwable {
enqueueFromFile("page_lead_mw.json");
final TestLatch latch = new TestLatch();
- subject.lead(CacheControl.FORCE_NETWORK, PageClient.CacheOption.CACHE,
"foo", 640, false)
+ subject.lead(CacheControl.FORCE_NETWORK, PageClient.CacheOption.CACHE,
"foo", 640, false, WikipediaApp.getInstance().getAppLanguageCode())
.enqueue(new Callback<PageLead>() {
@Override
public void onResponse(@NonNull Call<PageLead> call,
@NonNull Response<PageLead> response) {
diff --git
a/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java
b/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java
index 60324c1..5e8df19 100644
---
a/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java
+++
b/app/src/test/java/org/wikipedia/dataclient/mwapi/page/MwPageClientTest.java
@@ -4,6 +4,7 @@
import org.junit.Before;
import org.junit.Test;
+import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.page.BasePageClientTest;
import org.wikipedia.dataclient.page.PageClient;
@@ -21,7 +22,7 @@
}
@Test public void testLeadThumbnailWidth() throws Throwable {
- Call<?> call = subject.lead(null, PageClient.CacheOption.CACHE, "",
10, false);
+ Call<?> call = subject.lead(null, PageClient.CacheOption.CACHE, "",
10, false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().url().toString(), containsString("10"));
}
diff --git
a/app/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java
b/app/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java
index ddfa014..14c52d1 100644
--- a/app/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java
+++ b/app/src/test/java/org/wikipedia/dataclient/page/BasePageClientTest.java
@@ -4,6 +4,7 @@
import org.junit.Test;
import org.wikipedia.Constants;
+import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.okhttp.cache.SaveHeader;
import org.wikipedia.test.MockWebServerTest;
@@ -18,68 +19,68 @@
public abstract class BasePageClientTest extends MockWebServerTest {
@Test public void testLeadCacheControl() throws Throwable {
Call<?> call = subject().lead(CacheControl.FORCE_NETWORK,
PageClient.CacheOption.CACHE, "", 0,
- false);
+ false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header("Cache-Control"),
containsString("no-cache"));
}
@Test public void testLeadNoCacheControl() throws Throwable {
- Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, false);
+ Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header("Cache-Control"), nullValue());
}
@Test public void testLeadCacheOptionCache() throws Throwable {
- Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, false);
+ Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header(SaveHeader.FIELD), nullValue());
}
@Test public void testLeadCacheOptionSave() throws Throwable {
- Call<?> call = subject().lead(null, PageClient.CacheOption.SAVE, "",
0, false);
+ Call<?> call = subject().lead(null, PageClient.CacheOption.SAVE, "",
0, false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header(SaveHeader.FIELD),
is(SaveHeader.VAL_ENABLED));
}
@Test public void testLeadTitle() throws Throwable {
- Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE,
"title", 0, false);
+ Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE,
"title", 0, false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().url().toString(), containsString("title"));
}
@Test public void testLeadImages() throws Throwable {
- Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, false);
+ Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().url().queryParameter("noimages"),
nullValue());
}
@Test public void testLeadNoImages() throws Throwable {
- Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, true);
+ Call<?> call = subject().lead(null, PageClient.CacheOption.CACHE, "",
0, true, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().url().queryParameter("noimages"),
is("true"));
}
@Test public void testSectionsCacheControl() throws Throwable {
Call<?> call = subject().sections(CacheControl.FORCE_NETWORK,
PageClient.CacheOption.CACHE, "",
- false);
+ false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header("Cache-Control"),
containsString("no-cache"));
}
@Test public void testSectionsNoCacheControl() throws Throwable {
- Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"", false);
+ Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"", false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header("Cache-Control"), nullValue());
}
@Test public void testSectionsCacheOptionCache() throws Throwable {
- Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"", false);
+ Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"", false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header(SaveHeader.FIELD), nullValue());
}
@Test public void testSectionsCacheOptionSave() throws Throwable {
- Call<?> call = subject().sections(null, PageClient.CacheOption.SAVE,
"", false);
+ Call<?> call = subject().sections(null, PageClient.CacheOption.SAVE,
"", false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().header(SaveHeader.FIELD),
is(SaveHeader.VAL_ENABLED));
}
@Test public void testSectionsTitle() throws Throwable {
- Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"title", false);
+ Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"title", false, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().url().toString(), containsString("title"));
}
@Test public void testSectionsNoImages() throws Throwable {
- Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"", true);
+ Call<?> call = subject().sections(null, PageClient.CacheOption.CACHE,
"", true, WikipediaApp.getInstance().getAppLanguageCode());
assertThat(call.request().url().queryParameter("noimages"),
is("true"));
}
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 4262ee3..c89aa97 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
@@ -5,6 +5,7 @@
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.mwapi.page.MwMobileViewPageLead;
import org.wikipedia.dataclient.page.BasePageLeadTest;
import org.wikipedia.dataclient.page.PageClient;
@@ -52,7 +53,7 @@
@Test @SuppressWarnings("checkstyle:magicnumber") public void
testThumbUrls() throws Throwable {
enqueueFromFile("page_lead_rb.json");
final TestLatch latch = new TestLatch();
- subject.lead(CacheControl.FORCE_NETWORK, PageClient.CacheOption.CACHE,
"foo", 640, false)
+ subject.lead(CacheControl.FORCE_NETWORK, PageClient.CacheOption.CACHE,
"foo", 640, false, WikipediaApp.getInstance().getAppLanguageCode())
.enqueue(new Callback<PageLead>() {
@Override
public void onResponse(@NonNull Call<PageLead> call,
@NonNull Response<PageLead> response) {
--
To view, visit https://gerrit.wikimedia.org/r/379455
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id8b452cc5e5ce8b3f286b0901f44f1bfbeaead90
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Cooltey <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits