Upstream version 8.37.186.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
30     abstract class XWalkViewSettingsTestHelper<T> {
31         XWalkViewSettingsTestHelper(boolean requiresJsEnabled) throws Throwable {
32             if (requiresJsEnabled) {
33                 getInstrumentation().runOnMainSync(new Runnable() {
34                     @Override
35                     public void run() {
36                         getXWalkView().getSettings().setJavaScriptEnabled(true);
37                     }
38                 });
39             }
40         }
41
42         void ensureSettingHasAlteredValue() throws Throwable {
43             ensureSettingHasValue(getAlteredValue());
44         }
45
46         void ensureSettingHasInitialValue() throws Throwable {
47             ensureSettingHasValue(getInitialValue());
48         }
49
50         void setAlteredSettingValue() throws Throwable {
51             setCurrentValue(getAlteredValue());
52         }
53
54         void setInitialSettingValue() throws Throwable {
55             setCurrentValue(getInitialValue());
56         }
57
58         protected abstract T getAlteredValue();
59
60         protected abstract T getInitialValue();
61
62         protected abstract T getCurrentValue();
63
64         protected abstract void setCurrentValue(T value) throws Throwable;
65
66         protected abstract void doEnsureSettingHasValue(T value) throws Throwable;
67
68         private void ensureSettingHasValue(T value) throws Throwable {
69             assertEquals(value, getCurrentValue());
70             doEnsureSettingHasValue(value);
71         }
72     }
73
74     class XWalkViewSettingsDatabaseTestHelper extends XWalkViewSettingsTestHelper<Boolean> {
75         private static final String NO_DATABASE = "No database";
76         private static final String HAS_DATABASE = "Has database";
77         private Boolean enabled;
78
79         XWalkViewSettingsDatabaseTestHelper() throws Throwable {
80             super(true);
81         }
82
83         @Override
84         protected Boolean getAlteredValue() {
85             return ENABLED;
86         }
87
88         @Override
89         protected Boolean getInitialValue() {
90             return DISABLED;
91         }
92
93         @Override
94         protected Boolean getCurrentValue() {
95             getInstrumentation().runOnMainSync(new Runnable() {
96                 @Override
97                 public void run() {
98                     enabled = getXWalkView().getSettings().getDatabaseEnabled();
99                 }
100             });
101             return enabled;
102         }
103
104         @Override
105         protected void setCurrentValue(Boolean value) {
106             final Boolean enabled = value;
107             getInstrumentation().runOnMainSync(new Runnable() {
108                 @Override
109                 public void run() {
110                     getXWalkView().getSettings().setDatabaseEnabled(enabled);
111                 }
112             });
113         }
114
115         @Override
116         protected void doEnsureSettingHasValue(Boolean value) throws Throwable {
117             // It seems accessing the database through a data scheme is not
118             // supported, and fails with a DOM exception (likely a cross-domain
119             // violation).
120             loadUrlSync(UrlUtils.getTestFileUrl("xwalkview/database_access.html"));
121             assertEquals(
122                 value == ENABLED ? HAS_DATABASE : NO_DATABASE,
123                 getTitleOnUiThread());
124         }
125     }
126
127     @SmallTest
128     @Feature({"XWalkView", "Preferences"})
129     public void testDatabaseEnabled() throws Throwable {
130         XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
131         helper.setAlteredSettingValue();
132         helper.ensureSettingHasAlteredValue();
133     }
134
135     @SmallTest
136     @Feature({"XWalkView", "Preferences"})
137     public void testDatabaseDisabled() throws Throwable {
138         XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
139         helper.setInitialSettingValue();
140         helper.ensureSettingHasInitialValue();
141     }
142 }