Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Side by Side Diff: components/cronet/android/java/src/org/chromium/net/UrlRequest.java

Issue 423163007: Add method getAllHeaders to HttpUrlRequest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import org.apache.http.conn.ConnectTimeoutException; 7 import org.apache.http.conn.ConnectTimeoutException;
8 import org.chromium.base.CalledByNative; 8 import org.chromium.base.CalledByNative;
9 import org.chromium.base.JNINamespace; 9 import org.chromium.base.JNINamespace;
10 10
11 import java.io.IOException; 11 import java.io.IOException;
12 import java.net.MalformedURLException; 12 import java.net.MalformedURLException;
13 import java.net.URL; 13 import java.net.URL;
14 import java.net.UnknownHostException; 14 import java.net.UnknownHostException;
15 import java.nio.ByteBuffer; 15 import java.nio.ByteBuffer;
16 import java.nio.channels.ReadableByteChannel; 16 import java.nio.channels.ReadableByteChannel;
17 import java.nio.channels.WritableByteChannel; 17 import java.nio.channels.WritableByteChannel;
18 import java.util.ArrayList;
18 import java.util.HashMap; 19 import java.util.HashMap;
20 import java.util.List;
19 import java.util.Map; 21 import java.util.Map;
20 import java.util.Map.Entry; 22 import java.util.Map.Entry;
21 23
22 /** 24 /**
23 * Network request using the native http stack implementation. 25 * Network request using the native http stack implementation.
24 */ 26 */
25 @JNINamespace("cronet") 27 @JNINamespace("cronet")
26 public class UrlRequest { 28 public class UrlRequest {
27 private static final class ContextLock { 29 private static final class ContextLock {
28 } 30 }
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 271
270 public String getContentType() { 272 public String getContentType() {
271 return mContentType; 273 return mContentType;
272 } 274 }
273 275
274 public String getHeader(String name) { 276 public String getHeader(String name) {
275 validateHeadersAvailable(); 277 validateHeadersAvailable();
276 return nativeGetHeader(mUrlRequestPeer, name); 278 return nativeGetHeader(mUrlRequestPeer, name);
277 } 279 }
278 280
281 // All response headers.
282 public Map<String, List<String>> getAllHeaders() {
mmenke 2014/08/05 17:34:05 Do you mind merging ChromiumUrlRequest and UrlRequ
mef 2014/08/05 17:55:08 sgtm
283 validateHeadersAvailable();
284 ResponseHeadersMap result = new ResponseHeadersMap();
285 nativeGetAllHeaders(mUrlRequestPeer, result);
286 return result;
287 }
288
279 /** 289 /**
280 * A callback invoked when the first chunk of the response has arrived. 290 * A callback invoked when the first chunk of the response has arrived.
281 */ 291 */
282 @CalledByNative 292 @CalledByNative
283 protected void onResponseStarted() { 293 protected void onResponseStarted() {
284 mContentType = nativeGetContentType(mUrlRequestPeer); 294 mContentType = nativeGetContentType(mUrlRequestPeer);
285 mContentLength = nativeGetContentLength(mUrlRequestPeer); 295 mContentLength = nativeGetContentLength(mUrlRequestPeer);
286 mHeadersAvailable = true; 296 mHeadersAvailable = true;
287 } 297 }
288 298
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 } catch (IOException e) { 338 } catch (IOException e) {
329 // Ignore 339 // Ignore
330 } 340 }
331 onRequestComplete(); 341 onRequestComplete();
332 nativeDestroyRequestPeer(mUrlRequestPeer); 342 nativeDestroyRequestPeer(mUrlRequestPeer);
333 mUrlRequestPeer = 0; 343 mUrlRequestPeer = 0;
334 mRecycled = true; 344 mRecycled = true;
335 } 345 }
336 } 346 }
337 347
348 /**
349 * Appends header |name| with value |value| to |headersMap|.
350 */
351 @SuppressWarnings("unused")
352 @CalledByNative
353 private void onAppendResponseHeader(ResponseHeadersMap headersMap,
354 String name, String value) {
355 if (!headersMap.containsKey(name)) {
356 headersMap.put(name, new ArrayList<String>());
357 }
358 headersMap.get(name).add(value);
359 }
360
338 private void validateNotRecycled() { 361 private void validateNotRecycled() {
339 if (mRecycled) { 362 if (mRecycled) {
340 throw new IllegalStateException("Accessing recycled request"); 363 throw new IllegalStateException("Accessing recycled request");
341 } 364 }
342 } 365 }
343 366
344 private void validateNotStarted() { 367 private void validateNotStarted() {
345 if (mStarted) { 368 if (mStarted) {
346 throw new IllegalStateException("Request already started"); 369 throw new IllegalStateException("Request already started");
347 } 370 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 405
383 private native int nativeGetHttpStatusCode(long urlRequestPeer); 406 private native int nativeGetHttpStatusCode(long urlRequestPeer);
384 407
385 private native String nativeGetErrorString(long urlRequestPeer); 408 private native String nativeGetErrorString(long urlRequestPeer);
386 409
387 private native String nativeGetContentType(long urlRequestPeer); 410 private native String nativeGetContentType(long urlRequestPeer);
388 411
389 private native long nativeGetContentLength(long urlRequestPeer); 412 private native long nativeGetContentLength(long urlRequestPeer);
390 413
391 private native String nativeGetHeader(long urlRequestPeer, String name); 414 private native String nativeGetHeader(long urlRequestPeer, String name);
415
416 private native void nativeGetAllHeaders(long urlRequestPeer,
417 ResponseHeadersMap headers);
418
419 // Explicit class to work around JNI-generator generics confusion.
420 private class ResponseHeadersMap extends HashMap<String, List<String> > {
mmenke 2014/08/05 17:34:05 nit: Is the space between the two ">" needed? It
mef 2014/08/05 17:55:08 Done.
421 }
392 } 422 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698