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 {
30 abstract class XWalkViewSettingsTestHelper<T> {
31 XWalkViewSettingsTestHelper(boolean requiresJsEnabled) throws Throwable {
32 if (requiresJsEnabled) {
33 getInstrumentation().runOnMainSync(new Runnable() {
36 getXWalkView().getSettings().setJavaScriptEnabled(true);
42 void ensureSettingHasAlteredValue() throws Throwable {
43 ensureSettingHasValue(getAlteredValue());
46 void ensureSettingHasInitialValue() throws Throwable {
47 ensureSettingHasValue(getInitialValue());
50 void setAlteredSettingValue() throws Throwable {
51 setCurrentValue(getAlteredValue());
54 void setInitialSettingValue() throws Throwable {
55 setCurrentValue(getInitialValue());
58 protected abstract T getAlteredValue();
60 protected abstract T getInitialValue();
62 protected abstract T getCurrentValue();
64 protected abstract void setCurrentValue(T value) throws Throwable;
66 protected abstract void doEnsureSettingHasValue(T value) throws Throwable;
68 private void ensureSettingHasValue(T value) throws Throwable {
69 assertEquals(value, getCurrentValue());
70 doEnsureSettingHasValue(value);
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;
79 XWalkViewSettingsDatabaseTestHelper() throws Throwable {
84 protected Boolean getAlteredValue() {
89 protected Boolean getInitialValue() {
94 protected Boolean getCurrentValue() {
95 getInstrumentation().runOnMainSync(new Runnable() {
98 enabled = getXWalkView().getSettings().getDatabaseEnabled();
105 protected void setCurrentValue(Boolean value) {
106 final Boolean enabled = value;
107 getInstrumentation().runOnMainSync(new Runnable() {
110 getXWalkView().getSettings().setDatabaseEnabled(enabled);
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
120 loadUrlSync(UrlUtils.getTestFileUrl("xwalkview/database_access.html"));
122 value == ENABLED ? HAS_DATABASE : NO_DATABASE,
123 getTitleOnUiThread());
128 @Feature({"XWalkView", "Preferences"})
129 public void testDatabaseEnabled() throws Throwable {
130 XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
131 helper.setAlteredSettingValue();
132 helper.ensureSettingHasAlteredValue();
136 @Feature({"XWalkView", "Preferences"})
137 public void testDatabaseDisabled() throws Throwable {
138 XWalkViewSettingsDatabaseTestHelper helper = new XWalkViewSettingsDatabaseTestHelper();
139 helper.setInitialSettingValue();
140 helper.ensureSettingHasInitialValue();