7b5a4551f37221b1aba3ff89aa5558590dac51e9
[platform/framework/web/crosswalk.git] / src / xwalk / test / android / core / javatests / src / org / xwalk / core / xwview / test / UserAgentTest.java
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Copyright (c) 2013 Intel Corporation. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5
6 package org.xwalk.core.xwview.test;
7
8 import android.graphics.Bitmap;
9 import android.content.Context;
10 import android.test.suitebuilder.annotation.SmallTest;
11 import android.test.suitebuilder.annotation.MediumTest;
12
13 import java.util.concurrent.Callable;
14
15 import org.apache.http.Header;
16 import org.apache.http.HttpRequest;
17 import org.chromium.base.test.util.Feature;
18 import org.chromium.net.test.util.TestWebServer;
19 import org.xwalk.core.XWalkView;
20 import org.xwalk.core.internal.XWalkClient;
21 import org.xwalk.core.internal.XWalkSettings;
22
23 /**
24  * Test suite for setUserAgentString() and getUserAgentString().
25  */
26 public class UserAgentTest extends XWalkViewTestBase {
27     @Override
28     public void setUp() throws Exception {
29         super.setUp();
30     }
31
32     protected XWalkSettings getXWalkSettingsOnUiThread(
33             ) throws Exception {
34         return runTestOnUiThreadAndGetResult(new Callable<XWalkSettings>() {
35             @Override
36             public XWalkSettings call() throws Exception {
37                 return getXWalkView().getSettings();
38             }
39         });
40     }
41
42     @SmallTest
43     @Feature({"UserAgent"})
44     public void testUserAgent() throws Throwable {
45         XWalkSettings settings = getXWalkSettingsOnUiThread();
46         final String defaultUserAgentString = settings.getUserAgentString();
47
48         // Check that an attempt to set the default UA string to null or "" has no effect.
49         settings.setUserAgentString(null);
50         assertEquals(defaultUserAgentString, settings.getUserAgentString());
51         settings.setUserAgentString("");
52         assertEquals(defaultUserAgentString, settings.getUserAgentString());
53
54         // Check that we can also set the default value.
55         settings.setUserAgentString(defaultUserAgentString);
56         assertEquals(defaultUserAgentString, settings.getUserAgentString());
57
58         // Set a custom UA string, verify that it can be reset back to default.
59         final String customUserAgentString = "XWalkUserAgentTest";
60         settings.setUserAgentString(customUserAgentString);
61         assertEquals(customUserAgentString, settings.getUserAgentString());
62         settings.setUserAgentString(null);
63         assertEquals(defaultUserAgentString, settings.getUserAgentString());
64     }
65
66     @MediumTest
67     @Feature({"UserAgent"})
68     public void testUserAgentWithTestServer() throws Throwable {
69         XWalkSettings settings = getXWalkSettingsOnUiThread();
70         final String customUserAgentString =
71                 "testUserAgentWithTestServerUserAgent";
72
73         TestWebServer webServer = null;
74         String fileName = null;
75         try {
76             webServer = new TestWebServer(false);
77             final String httpPath = "/testUserAgentWithTestServer.html";
78             final String url = webServer.setResponse(httpPath, "foo", null);
79
80             settings.setUserAgentString(customUserAgentString);
81             loadUrlSync(url);
82
83             assertEquals(1, webServer.getRequestCount(httpPath));
84             HttpRequest request = webServer.getLastRequest(httpPath);
85             Header[] matchingHeaders  = request.getHeaders("User-Agent");
86             assertEquals(1, matchingHeaders.length);
87
88             Header header = matchingHeaders[0];
89             assertEquals(customUserAgentString, header.getValue());
90         } finally {
91             if (webServer != null) webServer.shutdown();
92         }
93     }
94 }