1 // Copyright 2014 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 
5 package org.chromium.cronet_sample_apk;
6 
7 import android.app.Application;
8 
9 import androidx.annotation.OptIn;
10 
11 import org.chromium.net.ConnectionMigrationOptions;
12 import org.chromium.net.CronetEngine;
13 import org.chromium.net.DnsOptions;
14 import org.chromium.net.QuicOptions;
15 
16 /** Application for managing the Cronet Sample. */
17 public class CronetSampleApplication extends Application {
18     private CronetEngine mCronetEngine;
19 
20     @Override
onCreate()21     public void onCreate() {
22         super.onCreate();
23         CronetEngine.Builder myBuilder = new CronetEngine.Builder(this);
24         myBuilder
25                 .enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 100 * 1024)
26                 .enableHttp2(true)
27                 .enableQuic(true);
28         mCronetEngine = myBuilder.build();
29     }
30 
getCronetEngine()31     public CronetEngine getCronetEngine() {
32         return mCronetEngine;
33     }
34 
35     @OptIn(
36             markerClass = {
37                 org.chromium.net.QuicOptions.Experimental.class,
38                 org.chromium.net.ConnectionMigrationOptions.Experimental.class
39             })
restartCronetEngine()40     public void restartCronetEngine() {
41         mCronetEngine.shutdown();
42         CronetEngine.Builder myBuilder = new CronetEngine.Builder(this);
43         ConnectionMigrationOptions.Builder connecMigrationBuilder =
44                 ConnectionMigrationOptions.builder();
45         QuicOptions.Builder quicOptionsBuilder = QuicOptions.builder();
46         DnsOptions.Builder dnsOptionsBuilder = DnsOptions.builder();
47         ActionData actionData =
48                 (new ActionData.Builder())
49                         .setCronetEngineBuilder(myBuilder)
50                         .setMigrationBuilder(connecMigrationBuilder)
51                         .setQuicBuilder(quicOptionsBuilder)
52                         .setDnsBuilder(dnsOptionsBuilder)
53                         .build();
54         for (Options.Option<?> option : Options.getOptions()) {
55             option.configure(actionData);
56         }
57         mCronetEngine =
58                 myBuilder
59                         .setConnectionMigrationOptions(connecMigrationBuilder)
60                         .setQuicOptions(quicOptionsBuilder)
61                         .setDnsOptions(dnsOptionsBuilder)
62                         .enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 100 * 1024)
63                         .enableHttp2(true)
64                         .enableQuic(true)
65                         .build();
66     }
67 }
68