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

Reply via email to