1 // Copyright 2017 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.net.impl; 6 7 import android.content.Context; 8 9 import org.chromium.build.annotations.UsedByReflection; 10 import org.chromium.net.CronetEngine; 11 import org.chromium.net.CronetProvider; 12 import org.chromium.net.ExperimentalCronetEngine; 13 import org.chromium.net.ICronetEngineBuilder; 14 15 import java.util.Arrays; 16 17 /** 18 * Implementation of {@link CronetProvider} that creates {@link CronetEngine.Builder} 19 * for building the native implementation of {@link CronetEngine}. 20 */ 21 public class NativeCronetProvider extends CronetProvider { 22 /** 23 * Constructor. 24 * 25 * @param context Android context to use. 26 */ 27 @UsedByReflection("CronetProvider.java") NativeCronetProvider(Context context)28 public NativeCronetProvider(Context context) { 29 super(context); 30 } 31 32 @Override createBuilder()33 public CronetEngine.Builder createBuilder() { 34 ICronetEngineBuilder impl = new NativeCronetEngineBuilderWithLibraryLoaderImpl(mContext); 35 return new ExperimentalCronetEngine.Builder(impl); 36 } 37 38 @Override getName()39 public String getName() { 40 return CronetProvider.PROVIDER_NAME_APP_PACKAGED; 41 } 42 43 @Override getVersion()44 public String getVersion() { 45 return ImplVersion.getCronetVersion(); 46 } 47 48 @Override isEnabled()49 public boolean isEnabled() { 50 return true; 51 } 52 53 @Override hashCode()54 public int hashCode() { 55 return Arrays.hashCode(new Object[] {NativeCronetProvider.class, mContext}); 56 } 57 58 @Override equals(Object other)59 public boolean equals(Object other) { 60 return other == this 61 || (other instanceof NativeCronetProvider 62 && this.mContext.equals(((NativeCronetProvider) other).mContext)); 63 } 64 } 65