Upstream version 8.36.161.0
[platform/framework/web/crosswalk.git] / src / xwalk / test / android / core / javatests / src / org / xwalk / core / xwview / test / SetDatabaseEnabledTest.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.test.suitebuilder.annotation.SmallTest;
10 import android.util.Log;
11 import android.webkit.WebResourceResponse;
12
13 import org.chromium.base.test.util.Feature;
14 import org.chromium.base.test.util.UrlUtils;
15 import org.xwalk.core.XWalkView;
16 import org.xwalk.core.internal.XWalkClient;
17
18 /**
19  * Test suite for setDatabaseEnabled().
20  */
21 public class SetDatabaseEnabledTest extends XWalkViewTestBase {
22     private static final boolean ENABLED = true;
23     private static final boolean DISABLED = false;
24
25     @Override
26     public void setUp() throws Exception {
27         super.setUp();
28
29         setXWalkClient(new XWalkViewTestBase.TestXWalkClient());
30         setXWalkWebChromeClient(new XWalkViewTestBase.TestXWalkWebChromeClient());
31         setResourceClient(new XWalkViewTestBase.TestXWalkResourceClient());
32     }
33
34     abstract class XWalkViewSettingsTestHelper<T> {
35         XWalkViewSettingsTestHelper(boolean requiresJsEnabled) throws Throwable {
36             if (requiresJsEnabled) {
37                 getInstrumentation().runOnMainSync(new Runnable() {
38                     @Override
39                     public void run() {
40                         getXWalkView().getSettings().setJavaScriptEnabled(true);
41                     }
42                 });
43             }
44         }
45
46         void ensureSettingHasAlteredValue() throws Throwable {
47             ensureSettingHasValue(getAlteredValue());
48         }
49
50         void ensureSettingHasInitialValue() throws Throwable {
51             ensureSettingHasValue(getInitialValue());
52         }
53
54         void setAlteredSettingValue() throws Throwable {
55             setCurrentValue(getAlteredValue());
56         }
57
58         void setInitialSettingValue() throws Throwable {
59             setCurrentValue(getInitialValue());
60         }
61
62         protected abstract T getAlteredValue();
63
64         protected abstract T getInitialValue();
65
66         protected abstract T getCurrentValue();
67
68         protected abstract void setCurrentValue(T value) throws Throwable;
69
70         protected abstract void doEnsureSettingHasValue(T value) throws Throwable;
71
72         private void ensureSettingHasValue(T value) throws Throwable {
73             assertEquals(value, getCurrentValue());
74             doEnsureSettingHasValue(value);
75         }
76     }
77
78     class XWalkViewSettingsDatabaseTestHelper extends XWalkViewSettingsTestHelper<Boolean> {
79         private static final String NO_DATABASE = "No database";
80         private static final String HAS_DATABASE = "Has database";
81         private Boolean enabled;
82
83         XWalkViewSettingsDatabaseTestHelper() throws Throwable {
84             super(true);
85         }
86
87         @Override
88         protected Boolean getAlteredValue() {
89             return ENABLED;
90         }
91
92         @Override
93         protected Boolean getInitialValue() {
94             return DISABLED;
95         }
96
97         @Override
98         protected Boolean getCurrentValue() {
99             getInstrumentation().runOnMainSync(new Runnable() {
100                 @Override
101                 public void run() {
102                     enabled = getXWalkView().getSettings().getDatabaseEnabled();
103                 }
104             });
105             return enabled;
106         }
107
108         @Override
109         protected void setCurrentValue(Boolean value) {
110             final Boolean enabled = value;
111             getInstrumentation().runOnMainSync(new Runnable() {
112                 @Override
113                 public void run() {
114                     getXWalkView().getSettings().setDatabaseEnabled(enabled);
115                 }
116             });
117         }
118
119         @Override
120         protected void doEnsureSettingHasValue(Boolean value) throws Throwable {
121             // It seems accessing the database through a data scheme is not
122             // supported, and fails with a DOM exception (likely a cross-domain
123             // violation).
124             loadUrlSync(UrlUtils.getTestFileUrl("xwalkview/database_access.html"));
125             assertEquals(
126                 value == ENABLED ? HAS_DATABASE : NO_DATABASE,
127                 getTitleOnUiThread());
128         }
129     }
130
131     @SmallTest
132     @Feature({"XWalkView", "Preferences"})
133     public void testDatabaseEnabled() throws Throwable {
134         XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
135         helper.setAlteredSettingValue();
136         helper.ensureSettingHasAlteredValue();
137     }
138
139     @SmallTest
140     @Feature({"XWalkView", "Preferences"})
141     public void testDatabaseDisabled() throws Throwable {
142         XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
143         helper.setInitialSettingValue();
144         helper.ensureSettingHasInitialValue();
145     }
146 }