1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5package org.chromium.net; 6 7import android.content.Context; 8import android.os.Build; 9 10import java.nio.channels.WritableByteChannel; 11import java.util.Map; 12 13/** 14 * Network request factory using the native http stack implementation. 15 */ 16@UsedByReflection("HttpUrlRequestFactory.java") 17class ChromiumUrlRequestFactory extends HttpUrlRequestFactory { 18 private UrlRequestContext mRequestContext; 19 20 @UsedByReflection("HttpUrlRequestFactory.java") 21 public ChromiumUrlRequestFactory( 22 Context context, HttpUrlRequestFactoryConfig config) { 23 if (isEnabled()) { 24 System.loadLibrary("cronet"); 25 mRequestContext = new UrlRequestContext( 26 context.getApplicationContext(), UserAgent.from(context), 27 config.toString()); 28 } 29 } 30 31 @Override 32 public boolean isEnabled() { 33 return Build.VERSION.SDK_INT >= 14; 34 } 35 36 @Override 37 public String getName() { 38 return "Chromium/" + UrlRequestContext.getVersion(); 39 } 40 41 @Override 42 public HttpUrlRequest createRequest(String url, int requestPriority, 43 Map<String, String> headers, HttpUrlRequestListener listener) { 44 return new ChromiumUrlRequest(mRequestContext, url, requestPriority, 45 headers, listener); 46 } 47 48 @Override 49 public HttpUrlRequest createRequest(String url, int requestPriority, 50 Map<String, String> headers, WritableByteChannel channel, 51 HttpUrlRequestListener listener) { 52 return new ChromiumUrlRequest(mRequestContext, url, requestPriority, 53 headers, channel, listener); 54 } 55} 56