87557ee0b3235bea0af855d132c3d0979e0cbd1a
[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.XWalkClient;
20 import org.xwalk.core.XWalkContent;
21 import org.xwalk.core.XWalkSettings;
22 import org.xwalk.core.XWalkView;
23
24 /**
25  * Test suite for setUserAgentString() and getUserAgentString().
26  */
27 public class UserAgentTest extends XWalkViewTestBase {
28     @Override
29     public void setUp() throws Exception {
30         super.setUp();
31
32         setXWalkClient(new XWalkViewTestBase.TestXWalkClient());
33     }
34
35     protected XWalkSettings getXWalkSettingsOnUiThread(
36             ) throws Exception {
37         return runTestOnUiThreadAndGetResult(new Callable<XWalkSettings>() {
38             @Override
39             public XWalkSettings call() throws Exception {
40                 return getXWalkView().getXWalkViewContentForTest().getSettings();
41             }
42         });
43     }
44
45     @SmallTest
46     @Feature({"UserAgent"})
47     public void testUserAgent() throws Throwable {
48         XWalkSettings settings = getXWalkSettingsOnUiThread();
49         final String defaultUserAgentString = settings.getUserAgentString();
50
51         // Check that an attempt to set the default UA string to null or "" has no effect.
52         settings.setUserAgentString(null);
53         assertEquals(defaultUserAgentString, settings.getUserAgentString());
54         settings.setUserAgentString("");
55         assertEquals(defaultUserAgentString, settings.getUserAgentString());
56
57         // Check that we can also set the default value.
58         settings.setUserAgentString(defaultUserAgentString);
59         assertEquals(defaultUserAgentString, settings.getUserAgentString());
60
61         // Set a custom UA string, verify that it can be reset back to default.
62         final String customUserAgentString = "XWalkUserAgentTest";
63         settings.setUserAgentString(customUserAgentString);
64         assertEquals(customUserAgentString, settings.getUserAgentString());
65         settings.setUserAgentString(null);
66         assertEquals(defaultUserAgentString, settings.getUserAgentString());
67     }
68
69     @MediumTest
70     @Feature({"UserAgent"})
71     public void testUserAgentWithTestServer() throws Throwable {
72         XWalkSettings settings = getXWalkSettingsOnUiThread();
73         final String customUserAgentString =
74                 "testUserAgentWithTestServerUserAgent";
75
76         TestWebServer webServer = null;
77         String fileName = null;
78         try {
79             webServer = new TestWebServer(false);
80             final String httpPath = "/testUserAgentWithTestServer.html";
81             final String url = webServer.setResponse(httpPath, "foo", null);
82
83             settings.setUserAgentString(customUserAgentString);
84             loadUrlSync(url);
85
86             assertEquals(1, webServer.getRequestCount(httpPath));
87             HttpRequest request = webServer.getLastRequest(httpPath);
88             Header[] matchingHeaders  = request.getHeaders("User-Agent");
89             assertEquals(1, matchingHeaders.length);
90
91             Header header = matchingHeaders[0];
92             assertEquals(customUserAgentString, header.getValue());
93         } finally {
94             if (webServer != null) webServer.shutdown();
95         }
96     }
97 }