OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 android.test.suitebuilder.annotation.SmallTest; | 7 import android.test.suitebuilder.annotation.SmallTest; |
8 | 8 |
9 import org.chromium.base.test.util.Feature; | 9 import org.chromium.base.test.util.Feature; |
10 import org.chromium.net.test.util.CertTestUtil; | 10 import org.chromium.net.test.util.CertTestUtil; |
(...skipping 16 matching lines...) Expand all Loading... |
27 private static final String[] CERTS_USED = {CERT_USED}; | 27 private static final String[] CERTS_USED = {CERT_USED}; |
28 private static final int DISTANT_FUTURE = Integer.MAX_VALUE; | 28 private static final int DISTANT_FUTURE = Integer.MAX_VALUE; |
29 private static final boolean INCLUDE_SUBDOMAINS = true; | 29 private static final boolean INCLUDE_SUBDOMAINS = true; |
30 private static final boolean EXCLUDE_SUBDOMAINS = false; | 30 private static final boolean EXCLUDE_SUBDOMAINS = false; |
31 private static final boolean KNOWN_ROOT = true; | 31 private static final boolean KNOWN_ROOT = true; |
32 private static final boolean UNKNOWN_ROOT = false; | 32 private static final boolean UNKNOWN_ROOT = false; |
33 private static final boolean ENABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = true; | 33 private static final boolean ENABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = true; |
34 private static final boolean DISABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = fals
e; | 34 private static final boolean DISABLE_PINNING_BYPASS_FOR_LOCAL_ANCHORS = fals
e; |
35 | 35 |
36 private CronetTestFramework mTestFramework; | 36 private CronetTestFramework mTestFramework; |
37 private CronetEngine.Builder mBuilder; | 37 private ExperimentalCronetEngine.Builder mBuilder; |
38 private TestUrlRequestCallback mListener; | 38 private TestUrlRequestCallback mListener; |
39 private String mServerUrl; // https://test.example.com:6121 | 39 private String mServerUrl; // https://test.example.com:6121 |
40 private String mServerHost; // test.example.com | 40 private String mServerHost; // test.example.com |
41 private String mDomain; // example.com | 41 private String mDomain; // example.com |
42 | 42 |
43 @Override | 43 @Override |
44 protected void setUp() throws Exception { | 44 protected void setUp() throws Exception { |
45 super.setUp(); | 45 super.setUp(); |
46 // Start QUIC Test Server | 46 // Start QUIC Test Server |
47 System.loadLibrary("cronet_tests"); | 47 System.loadLibrary("cronet_tests"); |
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 fail("Did not expect an error but got error code " | 380 fail("Did not expect an error but got error code " |
381 + mListener.mError.getCronetInternalErrorCode()); | 381 + mListener.mError.getCronetInternalErrorCode()); |
382 } | 382 } |
383 assertNotNull("Expected non-null response from the server", mListener.mR
esponseInfo); | 383 assertNotNull("Expected non-null response from the server", mListener.mR
esponseInfo); |
384 assertEquals(200, mListener.mResponseInfo.getHttpStatusCode()); | 384 assertEquals(200, mListener.mResponseInfo.getHttpStatusCode()); |
385 } | 385 } |
386 | 386 |
387 private void createCronetEngineBuilder(boolean bypassPinningForLocalAnchors,
boolean knownRoot) | 387 private void createCronetEngineBuilder(boolean bypassPinningForLocalAnchors,
boolean knownRoot) |
388 throws Exception { | 388 throws Exception { |
389 // Set common CronetEngine parameters | 389 // Set common CronetEngine parameters |
390 mBuilder = new CronetEngine.Builder(getContext()); | 390 mBuilder = new ExperimentalCronetEngine.Builder(getContext()); |
391 mBuilder.enablePublicKeyPinningBypassForLocalTrustAnchors(bypassPinningF
orLocalAnchors); | 391 mBuilder.enablePublicKeyPinningBypassForLocalTrustAnchors(bypassPinningF
orLocalAnchors); |
392 mBuilder.enableQuic(true); | 392 mBuilder.enableQuic(true); |
393 mBuilder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getS
erverPort(), | 393 mBuilder.addQuicHint(QuicTestServer.getServerHost(), QuicTestServer.getS
erverPort(), |
394 QuicTestServer.getServerPort()); | 394 QuicTestServer.getServerPort()); |
395 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa
mple.com"); | 395 JSONObject quicParams = new JSONObject().put("host_whitelist", "test.exa
mple.com"); |
396 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules
(); | 396 JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules
(); |
397 JSONObject experimentalOptions = new JSONObject() | 397 JSONObject experimentalOptions = new JSONObject() |
398 .put("QUIC", quicParams) | 398 .put("QUIC", quicParams) |
399 .put("HostResolverRules", hostR
esolverParams); | 399 .put("HostResolverRules", hostR
esolverParams); |
400 mBuilder.setExperimentalOptions(experimentalOptions.toString()); | 400 mBuilder.setExperimentalOptions(experimentalOptions.toString()); |
401 mBuilder.setStoragePath(CronetTestFramework.getTestStorage(getContext())
); | 401 mBuilder.setStoragePath(CronetTestFramework.getTestStorage(getContext())
); |
402 mBuilder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP, 1
000 * 1024); | 402 mBuilder.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_DISK_NO_HTTP, 1
000 * 1024); |
403 mBuilder.setMockCertVerifierForTesting( | 403 CronetTestUtil.setMockCertVerifierForTesting( |
404 MockCertVerifier.createMockCertVerifier(CERTS_USED, knownRoot)); | 404 mBuilder, MockCertVerifier.createMockCertVerifier(CERTS_USED, kn
ownRoot)); |
405 } | 405 } |
406 | 406 |
407 private void startCronetFramework() { | 407 private void startCronetFramework() { |
408 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n
ull, mBuilder); | 408 mTestFramework = startCronetTestFrameworkWithUrlAndCronetEngineBuilder(n
ull, mBuilder); |
409 } | 409 } |
410 | 410 |
411 private void shutdownCronetEngine() { | 411 private void shutdownCronetEngine() { |
412 if (mTestFramework != null && mTestFramework.mCronetEngine != null) { | 412 if (mTestFramework != null && mTestFramework.mCronetEngine != null) { |
413 mTestFramework.mCronetEngine.shutdown(); | 413 mTestFramework.mCronetEngine.shutdown(); |
414 } | 414 } |
415 } | 415 } |
416 | 416 |
417 private byte[] generateSomeSha256() { | 417 private byte[] generateSomeSha256() { |
418 byte[] sha256 = new byte[32]; | 418 byte[] sha256 = new byte[32]; |
419 Arrays.fill(sha256, (byte) 58); | 419 Arrays.fill(sha256, (byte) 58); |
420 return sha256; | 420 return sha256; |
421 } | 421 } |
422 | 422 |
423 private void addPkpSha256( | 423 private void addPkpSha256( |
424 String host, byte[] pinHashValue, boolean includeSubdomain, int maxA
geInSec) { | 424 String host, byte[] pinHashValue, boolean includeSubdomain, int maxA
geInSec) { |
425 Set<byte[]> hashes = new HashSet<>(); | 425 Set<byte[]> hashes = new HashSet<>(); |
426 hashes.add(pinHashValue); | 426 hashes.add(pinHashValue); |
427 mBuilder.addPublicKeyPins(host, hashes, includeSubdomain, dateInFuture(m
axAgeInSec)); | 427 mBuilder.addPublicKeyPins(host, hashes, includeSubdomain, dateInFuture(m
axAgeInSec)); |
428 } | 428 } |
429 | 429 |
430 private void sendRequestAndWaitForResult() { | 430 private void sendRequestAndWaitForResult() { |
431 mListener = new TestUrlRequestCallback(); | 431 mListener = new TestUrlRequestCallback(); |
432 | 432 |
433 String quicURL = mServerUrl + "/simple.txt"; | 433 String quicURL = mServerUrl + "/simple.txt"; |
434 UrlRequest.Builder requestBuilder = new UrlRequest.Builder( | 434 UrlRequest.Builder requestBuilder = mTestFramework.mCronetEngine.newUrlR
equestBuilder( |
435 quicURL, mListener, mListener.getExecutor(), mTestFramework.mCro
netEngine); | 435 quicURL, mListener, mListener.getExecutor()); |
436 requestBuilder.build().start(); | 436 requestBuilder.build().start(); |
437 mListener.blockForDone(); | 437 mListener.blockForDone(); |
438 } | 438 } |
439 | 439 |
440 private X509Certificate readCertFromFileInPemFormat(String certFileName) thr
ows Exception { | 440 private X509Certificate readCertFromFileInPemFormat(String certFileName) thr
ows Exception { |
441 byte[] certDer = CertTestUtil.pemToDer(CertTestUtil.CERTS_DIRECTORY + ce
rtFileName); | 441 byte[] certDer = CertTestUtil.pemToDer(CertTestUtil.CERTS_DIRECTORY + ce
rtFileName); |
442 CertificateFactory certFactory = CertificateFactory.getInstance("X.509")
; | 442 CertificateFactory certFactory = CertificateFactory.getInstance("X.509")
; |
443 return (X509Certificate) certFactory.generateCertificate(new ByteArrayIn
putStream(certDer)); | 443 return (X509Certificate) certFactory.generateCertificate(new ByteArrayIn
putStream(certDer)); |
444 } | 444 } |
445 | 445 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 if (!shouldThrowNpe) { | 481 if (!shouldThrowNpe) { |
482 fail("Null pointer exception was not expected: " + ex.toString()
); | 482 fail("Null pointer exception was not expected: " + ex.toString()
); |
483 } | 483 } |
484 return; | 484 return; |
485 } | 485 } |
486 if (shouldThrowNpe) { | 486 if (shouldThrowNpe) { |
487 fail("NullPointerException was expected"); | 487 fail("NullPointerException was expected"); |
488 } | 488 } |
489 } | 489 } |
490 } | 490 } |
OLD | NEW |