• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 package org.chromium.net;
5 
6 import java.util.Collections;
7 import java.util.Date;
8 import java.util.Set;
9 
10 /**
11  * Defines methods that the actual implementation of {@link CronetEngine.Builder} has to implement.
12  * {@code CronetEngine.Builder} uses this interface to delegate the calls. For the documentation of
13  * individual methods, please see the identically named methods in {@link
14  * org.chromium.net.CronetEngine.Builder} and {@link
15  * org.chromium.net.ExperimentalCronetEngine.Builder}.
16  *
17  * <p>{@hide internal class}
18  */
19 public abstract class ICronetEngineBuilder {
20     // The fields below list values which are known to getSupportedConfigOptions().
21     //
22     // Given the fields are final the constant value associated with them is compiled into
23     // class using them. This makes it safe for all implementation to use the field in their code
24     // and not worry about version skew (new implementation aware of values the old API is not),
25     // as long as the values don't change meaning. This isn't true of enums and other dynamic
26     // structures, hence we resort to plain old good ints.
27     public static final int CONNECTION_MIGRATION_OPTIONS = 1;
28     public static final int DNS_OPTIONS = 2;
29     public static final int QUIC_OPTIONS = 3;
30 
31     // Public API methods.
addPublicKeyPins( String hostName, Set<byte[]> pinsSha256, boolean includeSubdomains, Date expirationDate)32     public abstract ICronetEngineBuilder addPublicKeyPins(
33             String hostName,
34             Set<byte[]> pinsSha256,
35             boolean includeSubdomains,
36             Date expirationDate);
37 
addQuicHint(String host, int port, int alternatePort)38     public abstract ICronetEngineBuilder addQuicHint(String host, int port, int alternatePort);
39 
enableHttp2(boolean value)40     public abstract ICronetEngineBuilder enableHttp2(boolean value);
41 
enableHttpCache(int cacheMode, long maxSize)42     public abstract ICronetEngineBuilder enableHttpCache(int cacheMode, long maxSize);
43 
enablePublicKeyPinningBypassForLocalTrustAnchors( boolean value)44     public abstract ICronetEngineBuilder enablePublicKeyPinningBypassForLocalTrustAnchors(
45             boolean value);
46 
enableQuic(boolean value)47     public abstract ICronetEngineBuilder enableQuic(boolean value);
48 
enableSdch(boolean value)49     public abstract ICronetEngineBuilder enableSdch(boolean value);
50 
enableBrotli(boolean value)51     public ICronetEngineBuilder enableBrotli(boolean value) {
52         // Do nothing for older implementations.
53         return this;
54     }
55 
setQuicOptions(QuicOptions quicOptions)56     public ICronetEngineBuilder setQuicOptions(QuicOptions quicOptions) {
57         return this;
58     }
59 
setDnsOptions(DnsOptions dnsOptions)60     public ICronetEngineBuilder setDnsOptions(DnsOptions dnsOptions) {
61         return this;
62     }
63 
setConnectionMigrationOptions( ConnectionMigrationOptions connectionMigrationOptions)64     public ICronetEngineBuilder setConnectionMigrationOptions(
65             ConnectionMigrationOptions connectionMigrationOptions) {
66         return this;
67     }
68 
setExperimentalOptions(String options)69     public abstract ICronetEngineBuilder setExperimentalOptions(String options);
70 
setLibraryLoader( CronetEngine.Builder.LibraryLoader loader)71     public abstract ICronetEngineBuilder setLibraryLoader(
72             CronetEngine.Builder.LibraryLoader loader);
73 
setStoragePath(String value)74     public abstract ICronetEngineBuilder setStoragePath(String value);
75 
setUserAgent(String userAgent)76     public abstract ICronetEngineBuilder setUserAgent(String userAgent);
77 
getDefaultUserAgent()78     public abstract String getDefaultUserAgent();
79 
build()80     public abstract ExperimentalCronetEngine build();
81 
82     /**
83      * Returns the set of configuration options the builder is able to support natively. This is
84      * used internally to emulate newly added functionality using older APIs where possible.
85      *
86      * <p>The default implementation returns an empty set. Subclasses should override this method to
87      * reflect the supported options that are applicable to them.
88      */
getSupportedConfigOptions()89     protected Set<Integer> getSupportedConfigOptions() {
90         return Collections.emptySet();
91     }
92 
93     // Experimental API methods.
94     //
95     // Note: all experimental API methods should have default implementation. This will allow
96     // removing the experimental methods from the implementation layer without breaking
97     // the client.
98 
enableNetworkQualityEstimator(boolean value)99     public ICronetEngineBuilder enableNetworkQualityEstimator(boolean value) {
100         return this;
101     }
102 
setThreadPriority(int priority)103     public ICronetEngineBuilder setThreadPriority(int priority) {
104         return this;
105     }
106 }
107