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.cronet_test_apk;
6
7import android.test.suitebuilder.annotation.SmallTest;
8
9import org.chromium.base.test.util.Feature;
10import org.chromium.net.HttpUrlRequestFactory;
11import org.chromium.net.HttpUrlRequestFactoryConfig;
12
13import java.util.regex.Pattern;
14
15/**
16 * Tests for {@link HttpUrlRequestFactory}
17 */
18public class HttpUrlRequestFactoryTest extends CronetTestBase {
19    // URL used for base tests.
20    private static final String URL = "http://127.0.0.1:8000";
21
22    @SmallTest
23    @Feature({"Cronet"})
24    public void testCreateFactory() throws Throwable {
25        HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig();
26        config.enableQUIC(true);
27        config.addQuicHint("www.google.com", 443, 443);
28        config.addQuicHint("www.youtube.com", 443, 443);
29        config.setLibraryName("cronet_tests");
30        String[] commandLineArgs = {
31                CronetTestActivity.CONFIG_KEY, config.toString() };
32        CronetTestActivity activity =
33                launchCronetTestAppWithUrlAndCommandLineArgs(URL,
34                                                             commandLineArgs);
35        // Make sure the activity was created as expected.
36        assertNotNull(activity);
37        waitForActiveShellToBeDoneLoading();
38        HttpUrlRequestFactory factory = activity.mRequestFactory;
39        assertNotNull("Factory should be created", factory);
40        assertTrue("Factory should be Chromium/n.n.n.n@r but is " +
41                           factory.getName(),
42                   Pattern.matches("Chromium/\\d+\\.\\d+\\.\\d+\\.\\d+@\\w+",
43                           factory.getName()));
44    }
45
46    @SmallTest
47    @Feature({"Cronet"})
48    public void testCreateLegacyFactory() {
49        HttpUrlRequestFactoryConfig config = new HttpUrlRequestFactoryConfig();
50        config.enableLegacyMode(true);
51
52        HttpUrlRequestFactory factory = HttpUrlRequestFactory.createFactory(
53                getInstrumentation().getContext(), config);
54        assertNotNull("Factory should be created", factory);
55        assertTrue("Factory should be HttpUrlConnection/n.n.n.n@r but is " +
56                           factory.getName(),
57                   Pattern.matches(
58                           "HttpUrlConnection/\\d+\\.\\d+\\.\\d+\\.\\d+@\\w+",
59                           factory.getName()));
60    }
61}
62