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