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.
6 package org.xwalk.core.xwview.test;
8 import android.graphics.Bitmap;
9 import android.test.suitebuilder.annotation.SmallTest;
10 import android.util.Log;
11 import android.webkit.WebResourceResponse;
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;
19 * Test suite for setDatabaseEnabled().
21 public class SetDatabaseEnabledTest extends XWalkViewTestBase {
22 private static final boolean ENABLED = true;
23 private static final boolean DISABLED = false;
26 public void setUp() throws Exception {
29 setXWalkClient(new XWalkViewTestBase.TestXWalkClient());
30 setXWalkWebChromeClient(new XWalkViewTestBase.TestXWalkWebChromeClient());
31 setResourceClient(new XWalkViewTestBase.TestXWalkResourceClient());
34 abstract class XWalkViewSettingsTestHelper<T> {
35 XWalkViewSettingsTestHelper(boolean requiresJsEnabled) throws Throwable {
36 if (requiresJsEnabled) {
37 getInstrumentation().runOnMainSync(new Runnable() {
40 getXWalkView().getSettings().setJavaScriptEnabled(true);
46 void ensureSettingHasAlteredValue() throws Throwable {
47 ensureSettingHasValue(getAlteredValue());
50 void ensureSettingHasInitialValue() throws Throwable {
51 ensureSettingHasValue(getInitialValue());
54 void setAlteredSettingValue() throws Throwable {
55 setCurrentValue(getAlteredValue());
58 void setInitialSettingValue() throws Throwable {
59 setCurrentValue(getInitialValue());
62 protected abstract T getAlteredValue();
64 protected abstract T getInitialValue();
66 protected abstract T getCurrentValue();
68 protected abstract void setCurrentValue(T value) throws Throwable;
70 protected abstract void doEnsureSettingHasValue(T value) throws Throwable;
72 private void ensureSettingHasValue(T value) throws Throwable {
73 assertEquals(value, getCurrentValue());
74 doEnsureSettingHasValue(value);
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;
83 XWalkViewSettingsDatabaseTestHelper() throws Throwable {
88 protected Boolean getAlteredValue() {
93 protected Boolean getInitialValue() {
98 protected Boolean getCurrentValue() {
99 getInstrumentation().runOnMainSync(new Runnable() {
102 enabled = getXWalkView().getSettings().getDatabaseEnabled();
109 protected void setCurrentValue(Boolean value) {
110 final Boolean enabled = value;
111 getInstrumentation().runOnMainSync(new Runnable() {
114 getXWalkView().getSettings().setDatabaseEnabled(enabled);
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
124 loadUrlSync(UrlUtils.getTestFileUrl("xwalkview/database_access.html"));
126 value == ENABLED ? HAS_DATABASE : NO_DATABASE,
127 getTitleOnUiThread());
132 @Feature({"XWalkView", "Preferences"})
133 public void testDatabaseEnabled() throws Throwable {
134 XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
135 helper.setAlteredSettingValue();
136 helper.ensureSettingHasAlteredValue();
140 @Feature({"XWalkView", "Preferences"})
141 public void testDatabaseDisabled() throws Throwable {
142 XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
143 helper.setInitialSettingValue();
144 helper.ensureSettingHasInitialValue();