// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.cronet_sample_apk;
import android.app.Application;
import androidx.annotation.OptIn;
import org.chromium.net.ConnectionMigrationOptions;
import org.chromium.net.CronetEngine;
import org.chromium.net.DnsOptions;
import org.chromium.net.QuicOptions;
/** Application for managing the Cronet Sample. */
public class CronetSampleApplication extends Application {
private CronetEngine mCronetEngine;
@Override
public void onCreate() {
super.onCreate();
CronetEngine.Builder myBuilder = new CronetEngine.Builder(this);
myBuilder
.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 100 * 1024)
.enableHttp2(true)
.enableQuic(true);
mCronetEngine = myBuilder.build();
}
public CronetEngine getCronetEngine() {
return mCronetEngine;
}
@OptIn(
markerClass = {
org.chromium.net.QuicOptions.Experimental.class,
org.chromium.net.ConnectionMigrationOptions.Experimental.class
})
public void restartCronetEngine() {
mCronetEngine.shutdown();
CronetEngine.Builder myBuilder = new CronetEngine.Builder(this);
ConnectionMigrationOptions.Builder connecMigrationBuilder =
ConnectionMigrationOptions.builder();
QuicOptions.Builder quicOptionsBuilder = QuicOptions.builder();
DnsOptions.Builder dnsOptionsBuilder = DnsOptions.builder();
ActionData actionData =
(new ActionData.Builder())
.setCronetEngineBuilder(myBuilder)
.setMigrationBuilder(connecMigrationBuilder)
.setQuicBuilder(quicOptionsBuilder)
.setDnsBuilder(dnsOptionsBuilder)
.build();
for (Options.Option<?> option : Options.getOptions()) {
option.configure(actionData);
}
mCronetEngine =
myBuilder
.setConnectionMigrationOptions(connecMigrationBuilder)
.setQuicOptions(quicOptionsBuilder)
.setDnsOptions(dnsOptionsBuilder)
.enableHttpCache(CronetEngine.Builder.HTTP_CACHE_IN_MEMORY, 100 * 1024)
.enableHttp2(true)
.enableQuic(true)
.build();
}
}