jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/325326 )
Change subject: Copy CentralAuth tokens for www.wikidata.org requests ...................................................................... Copy CentralAuth tokens for www.wikidata.org requests Copy CentralAuth tokens for www.wikidata.org requests from wikipedia.org if the user is logged in. There are tokens that start with "centralauth_". Examples: * centralauth_Token * centralauth_User * centralauth_Session Gergo mentioned that this would create the local session on the fly. This would allow us to skip CentralAuthClient implementation we had added earlier and reduce the number of requests per description edit. This happens independent of the data client. It's all contained in the SharedPreferenceCookieManager. The one thing added to the data client is to now add the assert=user if a user is logged in. Bug: T150705 Change-Id: Ic3e05370d9bb028bac80446acf8b184c49b479a7 (cherry picked from commit c5400639bb916e44b50b32e66113464db2bfa821) --- M app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java M app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java 2 files changed, 20 insertions(+), 4 deletions(-) Approvals: Dbrant: Looks good to me, approved Niedzielski: Looks good to me, approved jenkins-bot: Verified diff --git a/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java b/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java index bc314b9..31da327 100644 --- a/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java +++ b/app/src/main/java/org/wikipedia/dataclient/SharedPreferenceCookieManager.java @@ -3,6 +3,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import org.wikipedia.login.User; import org.wikipedia.settings.Prefs; import org.wikipedia.util.StringUtil; @@ -20,6 +21,7 @@ public final class SharedPreferenceCookieManager extends CookieManager { private static final String DELIMITER = ";"; + private static final String CENTRALAUTH_PREFIX = "centralauth_"; private final Map<String, Map<String, String>> cookieJar = new HashMap<>(); private static SharedPreferenceCookieManager INSTANCE; @@ -52,6 +54,13 @@ String domain = uri.getAuthority(); for (String domainSpec: cookieJar.keySet()) { + // For sites outside the wikipedia.org domain, like wikidata.org, + // transfer the centralauth cookies from wikipedia.org, too, if the user is logged in + if (User.isLoggedIn() + && domain.equals("www.wikidata.org") && domainSpec.equals("wikipedia.org")) { + cookiesList.addAll(makeCookieList(cookieJar.get(domainSpec), CENTRALAUTH_PREFIX)); + } + // Very weak domain matching. // Primarily to make sure that cookies set for .wikipedia.org are sent for // en.wikipedia.org and *.wikimedia.org @@ -161,15 +170,22 @@ return cookiesMap; } - private List<String> makeCookieList(Map<String, String> cookies) { + private List<String> makeCookieList(@NonNull Map<String, String> cookies) { + return makeCookieList(cookies, null); + } + + private List<String> makeCookieList(@NonNull Map<String, String> cookies, + @Nullable String prefixFilter) { List<String> cookiesList = new ArrayList<>(); for (Map.Entry<String, String> entry: cookies.entrySet()) { - cookiesList.add(entry.getKey() + "=" + entry.getValue()); + if (prefixFilter == null || entry.getKey().startsWith(prefixFilter)) { + cookiesList.add(entry.getKey() + "=" + entry.getValue()); + } } return cookiesList; } - private String makeString(Iterable<String> list) { + private String makeString(@NonNull Iterable<String> list) { return StringUtil.listToDelimitedString(list, DELIMITER); } } diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java index 8bad189..90368c0 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditClient.java @@ -63,7 +63,7 @@ Call<DescriptionEdit> call = service.edit(languageCode, languageCode, languageCode + "wiki", pageTitle.getPrefixedText(), description, editToken, - /* TODO: loggedIn ? "user" : */ null); + loggedIn ? "user" : null); call.enqueue(new retrofit2.Callback<DescriptionEdit>() { @Override public void onResponse(Call<DescriptionEdit> call, -- To view, visit https://gerrit.wikimedia.org/r/325326 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic3e05370d9bb028bac80446acf8b184c49b479a7 Gerrit-PatchSet: 4 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: BearND <bsitzm...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Dbrant <dbr...@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