1dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski/*
2dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * Copyright (C) 2010 The Android Open Source Project
3dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski *
4dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * Licensed under the Apache License, Version 2.0 (the "License");
5dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * you may not use this file except in compliance with the License.
6dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * You may obtain a copy of the License at
7dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski *
8dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski *      http://www.apache.org/licenses/LICENSE-2.0
9dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski *
10dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * Unless required by applicable law or agreed to in writing, software
11dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * distributed under the License is distributed on an "AS IS" BASIS,
12dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * See the License for the specific language governing permissions and
14dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * limitations under the License.
15dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski */
16dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
17dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskipackage com.android.dumprendertree2;
18dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
19dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport android.net.Uri;
20dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport android.util.Log;
2138f28fac14d5ce4e5924226e734ecd10d228b783Maksymilian Osowskiimport android.webkit.MockGeolocation;
22dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport android.webkit.WebStorage;
23dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
24dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskiimport java.io.File;
25dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
26dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski/**
27dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski * A class that is registered as JS interface for webview in LayoutTestExecutor
28dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski */
29dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowskipublic class LayoutTestController {
30dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    private static final String LOG_TAG = "LayoutTestController";
31dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
32dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    LayoutTestsExecutor mLayoutTestsExecutor;
33dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
34dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    public LayoutTestController(LayoutTestsExecutor layoutTestsExecutor) {
35dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski        mLayoutTestsExecutor = layoutTestsExecutor;
36dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
37dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
385de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    public void clearAllDatabases() {
395de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block        Log.i(LOG_TAG, "clearAllDatabases() called");
405de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block        WebStorage.getInstance().deleteAllData();
41dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
42dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
43dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    public void dumpAsText() {
44dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski        dumpAsText(false);
45dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
46dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
47dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    public void dumpAsText(boolean enablePixelTest) {
48dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski        mLayoutTestsExecutor.dumpAsText(enablePixelTest);
49dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
50dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
51dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    public void dumpChildFramesAsText() {
52dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski        mLayoutTestsExecutor.dumpChildFramesAsText();
53dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
54dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
555de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    public void dumpDatabaseCallbacks() {
565de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block        mLayoutTestsExecutor.dumpDatabaseCallbacks();
57dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
58dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
595de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    public void notifyDone() {
605de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block        mLayoutTestsExecutor.notifyDone();
61dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
62dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
635de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    public void overridePreference(String key, boolean value) {
645de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block        mLayoutTestsExecutor.overridePreference(key, value);
655de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    }
665de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block
67757dcbb80371ad9211e288faf02bad91bae4a717Steve Block    public void setAppCacheMaximumSize(long size) {
68757dcbb80371ad9211e288faf02bad91bae4a717Steve Block        Log.i(LOG_TAG, "setAppCacheMaximumSize() called with: " + size);
69d3101b1d300f5942fdb7dfa323dc8830c4edc007Jonathan Dixon        android.webkit.WebStorageClassic.getInstance().setAppCacheMaximumSize(size);
70757dcbb80371ad9211e288faf02bad91bae4a717Steve Block    }
71757dcbb80371ad9211e288faf02bad91bae4a717Steve Block
725de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    public void setCanOpenWindows() {
735de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block        mLayoutTestsExecutor.setCanOpenWindows();
74dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
75dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski
76dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    public void setDatabaseQuota(long quota) {
77dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski        /** TODO: Reset this before every test! */
782e5982a55ac031110ed39515a76f7a5ec9ff2c14Maksymilian Osowski        Log.i(LOG_TAG, "setDatabaseQuota() called with: " + quota);
79dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski        WebStorage.getInstance().setQuotaForOrigin(Uri.fromFile(new File("")).toString(),
80dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski                quota);
81dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski    }
8238f28fac14d5ce4e5924226e734ecd10d228b783Maksymilian Osowski
83b56ed30666596e70b577c9b937362e246f229a11Steve Block    public void setMockGeolocationPosition(double latitude, double longitude, double accuracy) {
84f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block        Log.i(LOG_TAG, "setMockGeolocationPosition(): " + "latitude=" + latitude +
85f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block                " longitude=" + longitude + " accuracy=" + accuracy);
86b56ed30666596e70b577c9b937362e246f229a11Steve Block        mLayoutTestsExecutor.setMockGeolocationPosition(latitude, longitude, accuracy);
87f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block    }
88f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block
89f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block    public void setMockGeolocationError(int code, String message) {
90f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block        Log.i(LOG_TAG, "setMockGeolocationError(): " + "code=" + code + " message=" + message);
91f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block        mLayoutTestsExecutor.setMockGeolocationError(code, message);
92b56ed30666596e70b577c9b937362e246f229a11Steve Block    }
93f3f60d9328d8acfedf987a73631fc90c39bf5447Steve Block
9438f28fac14d5ce4e5924226e734ecd10d228b783Maksymilian Osowski    public void setGeolocationPermission(boolean allow) {
9538f28fac14d5ce4e5924226e734ecd10d228b783Maksymilian Osowski        mLayoutTestsExecutor.setGeolocationPermission(allow);
9638f28fac14d5ce4e5924226e734ecd10d228b783Maksymilian Osowski    }
9738f28fac14d5ce4e5924226e734ecd10d228b783Maksymilian Osowski
9868dede3d6664d91302d727531d13f7f5862d3a50Steve Block    public void setMockDeviceOrientation(boolean canProvideAlpha, double alpha,
9968dede3d6664d91302d727531d13f7f5862d3a50Steve Block            boolean canProvideBeta, double beta, boolean canProvideGamma, double gamma) {
10068dede3d6664d91302d727531d13f7f5862d3a50Steve Block        // Configuration is in WebKit, so stay on WebCore thread, but go via LayoutTestsExecutor
10168dede3d6664d91302d727531d13f7f5862d3a50Steve Block        // as we need access to the Webview.
1022e5982a55ac031110ed39515a76f7a5ec9ff2c14Maksymilian Osowski        Log.i(LOG_TAG, "setMockDeviceOrientation(" + canProvideAlpha +
1032e5982a55ac031110ed39515a76f7a5ec9ff2c14Maksymilian Osowski                ", " + alpha + ", " + canProvideBeta + ", " + beta + ", " + canProvideGamma +
1042e5982a55ac031110ed39515a76f7a5ec9ff2c14Maksymilian Osowski                ", " + gamma + ")");
10568dede3d6664d91302d727531d13f7f5862d3a50Steve Block        mLayoutTestsExecutor.setMockDeviceOrientation(
10668dede3d6664d91302d727531d13f7f5862d3a50Steve Block                canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma);
10768dede3d6664d91302d727531d13f7f5862d3a50Steve Block    }
1085de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block
109d96c5e0cb31f486fb30dc836f0e74b2216f2ccc2Maksymilian Osowski    public void setXSSAuditorEnabled(boolean flag) {
110d96c5e0cb31f486fb30dc836f0e74b2216f2ccc2Maksymilian Osowski        mLayoutTestsExecutor.setXSSAuditorEnabled(flag);
111d96c5e0cb31f486fb30dc836f0e74b2216f2ccc2Maksymilian Osowski    }
112d96c5e0cb31f486fb30dc836f0e74b2216f2ccc2Maksymilian Osowski
1135de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    public void waitUntilDone() {
1145de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block        mLayoutTestsExecutor.waitUntilDone();
1155de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block    }
1165de8b998f571b4318104ec9a3e2f780459ce09e2Steve Block}
117