Mholloway has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/358138 )

Change subject: Update okhttp to 3.8.0
......................................................................

Update okhttp to 3.8.0

N.B. Involves a change to a modified bit of CacheDelegateInterceptor!
Please review carefully and test well!  Here's the relevant okhttp commit:

Invalidate the cache even if the response has no body.
https://github.com/square/okhttp/commit/c9496d350c0c3bb4b9d9571c3ab97181726561e2

Also of note:

Version 3.8.0

New: The response message is now non-null. This is the "Not Found" in the
status line "HTTP 404 Not Found". If you are building responses programma-
tically (with new Response.Builder()) you must now always supply a
message. An empty string "" is permitted. This value was never null on
responses returned by OkHttp itself, and it was an old mistake to permit
application code to omit a message.

Version 3.7.0

New: Connection coalescing. OkHttp may reuse HTTP/2 connections across
calls that share an IP address and HTTPS certificate, even if their domain
names are different.

New: MockWebServer's RecordedRequest exposes the requested HttpUrl with
getRequestUrl().

Change-Id: Ie2cc3bf806b7a6c45bc31a068fa4c64cecad51de
---
M app/build.gradle
M app/src/main/java/okhttp3/internal/cache/CacheDelegateInterceptor.java
2 files changed, 29 insertions(+), 36 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/38/358138/1

diff --git a/app/build.gradle b/app/build.gradle
index 98e1948..ccc4796 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -162,7 +162,7 @@
     // use http://gradleplease.appspot.com/ or http://search.maven.org/.
     // Debug with ./gradlew -q app:dependencies --configuration compile
 
-    String okHttpVersion = '3.6.0' // When updating this version, resync file 
copies under
+    String okHttpVersion = '3.8.0' // When updating this version, resync file 
copies under
                                    // app/src/main/java/okhttp3
     String retrofitVersion = '2.2.0'
     String supportVersion = '25.3.1'
diff --git 
a/app/src/main/java/okhttp3/internal/cache/CacheDelegateInterceptor.java 
b/app/src/main/java/okhttp3/internal/cache/CacheDelegateInterceptor.java
index 2e70b70..df27cdd 100644
--- a/app/src/main/java/okhttp3/internal/cache/CacheDelegateInterceptor.java
+++ b/app/src/main/java/okhttp3/internal/cache/CacheDelegateInterceptor.java
@@ -44,9 +44,15 @@
 import static okhttp3.internal.Util.closeQuietly;
 import static okhttp3.internal.Util.discard;
 
-/** Serves requests from the cache and writes responses to the cache. Copied 
from
- 
https://github.com/square/okhttp/blob/a27afaf/okhttp/src/main/java/okhttp3/internal/cache/CacheInterceptor.java
- to allow a custom cache strategy. Deviations are marked with "Change:". */
+/** Serves requests from the cache and writes responses to the cache. Copied 
from the OkHttp
+ repository (https://github.com/square/okhttp) to allow a custom cache 
strategy.
+
+ Last synchronized with OkHttp at the "parent-3.8.0" tag (last change: 
"Invalidate the cache even if
+ the response has no body." (c9496d3))
+
+ 
https://github.com/square/okhttp/blob/parent-3.8.0/okhttp/src/main/java/okhttp3/internal/cache/CacheInterceptor.java
+
+ Deviations are marked with "Change:". */
 public final class CacheDelegateInterceptor implements Interceptor {
   final InternalCache cache;
   // Change: add secondaryCache member variable
@@ -152,10 +158,23 @@
         .networkResponse(stripBody(networkResponse))
         .build();
 
-    if (HttpHeaders.hasBody(response)) {
-      // Change: add cacheCandidate parameter
-      CacheRequest cacheRequest = maybeCache(cacheCandidate, response, 
networkResponse.request(), cache);
-      response = cacheWritingResponse(cacheRequest, response);
+    if (cache != null) {
+      // Change: do not permit cache writes unless the page has been cached 
previously or the
+      // request is cacheable
+      if (HttpHeaders.hasBody(response) && CacheStrategy.isCacheable(response, 
networkRequest)
+              && !(cacheCandidate == null && 
!CacheDelegateStrategy.isCacheable(networkRequest))) {
+        // Offer this request to the cache.
+        CacheRequest cacheRequest = cache.put(response);
+        return cacheWritingResponse(cacheRequest, response);
+      }
+
+      if (HttpMethod.invalidatesCache(networkRequest.method())) {
+        try {
+          cache.remove(networkRequest);
+        } catch (IOException ignored) {
+          // The cache cannot be written.
+        }
+      }
     }
 
     return response;
@@ -163,35 +182,9 @@
 
   private static Response stripBody(Response response) {
     return response != null && response.body() != null
-        ? response.newBuilder().body(null).build()
-        : response;
-  }
+            ? response.newBuilder().body(null).build()
+            : response;
 
-  // Change: add cacheCandidate parameter
-  private CacheRequest maybeCache(Response cacheCandidate, Response 
userResponse, Request networkRequest,
-      InternalCache responseCache) throws IOException {
-    if (responseCache == null) return null;
-
-    // Should we cache this response for this request?
-    if (!CacheStrategy.isCacheable(userResponse, networkRequest)) {
-      if (HttpMethod.invalidatesCache(networkRequest.method())) {
-        try {
-          responseCache.remove(networkRequest);
-        } catch (IOException ignored) {
-          // The cache cannot be written.
-        }
-      }
-      return null;
-    }
-
-    // Change: do not permit cache writes unless the page has been cached 
previously or the request
-    // is cacheable
-    if (cacheCandidate == null && 
!CacheDelegateStrategy.isCacheable(networkRequest)) {
-      return null;
-    }
-
-    // Offer this request to the cache.
-    return responseCache.put(userResponse);
   }
 
   /**

-- 
To view, visit https://gerrit.wikimedia.org/r/358138
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie2cc3bf806b7a6c45bc31a068fa4c64cecad51de
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <mhollo...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to