summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJonathan Dixon <joth@google.com>2012-02-28 18:45:06 +0000
committerJonathan Dixon <joth@google.com>2012-03-02 11:17:47 +0000
commit3c90952036a5ff7ddb2946c643f1a0bf1c31d53a (patch)
tree974ef2a94c60a2c72b8fbd804613792480a9c3e5 /tests
parent0dc0da67d9775b2364a38d015e0610492708a02e (diff)
downloadframeworks_base-3c90952036a5ff7ddb2946c643f1a0bf1c31d53a.zip
frameworks_base-3c90952036a5ff7ddb2946c643f1a0bf1c31d53a.tar.gz
frameworks_base-3c90952036a5ff7ddb2946c643f1a0bf1c31d53a.tar.bz2
Refactor WebView to be a thin proxy class
Splits interface and implementation; all client calls are forwarded to an abstract WebViewProvider interface, and the existing implementation moved into the WebViewClassic implementor of this interface. Originally taken from a snapshot from the development branch, by: git diff HEAD 9a4c328a54cc05e5 | git apply - but then rebased to keep up to date with master Interdepends on webkit and Browser changes: https://android-git.corp.google.com/g/158979 https://android-git.corp.google.com/g/167911 Change-Id: I91403f32654ff308934e95c832d17b292a7d9b2e
Diffstat (limited to 'tests')
-rw-r--r--tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java29
-rw-r--r--tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java24
-rw-r--r--tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java3
-rw-r--r--tests/TileBenchmark/src/com/test/tilebenchmark/ProfiledWebView.java52
4 files changed, 62 insertions, 46 deletions
diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java b/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
index 83c9c3d..856ebcc 100644
--- a/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
+++ b/tests/DumpRenderTree/src/com/android/dumprendertree/TestShellActivity.java
@@ -45,8 +45,10 @@ import android.webkit.JsResult;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
+import android.webkit.WebSettingsClassic;
import android.webkit.WebStorage;
import android.webkit.WebView;
+import android.webkit.WebViewClassic;
import android.webkit.WebViewClient;
import android.widget.LinearLayout;
@@ -112,10 +114,10 @@ public class TestShellActivity extends Activity implements LayoutTestController
case DUMP_AS_TEXT:
callback.arg1 = mDumpTopFrameAsText ? 1 : 0;
callback.arg2 = mDumpChildFramesAsText ? 1 : 0;
- mWebView.documentAsText(callback);
+ mWebViewClassic.documentAsText(callback);
break;
case EXT_REPR:
- mWebView.externalRepresentation(callback);
+ mWebViewClassic.externalRepresentation(callback);
break;
default:
finished();
@@ -144,6 +146,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
CookieManager.setAcceptFileSchemeCookies(true);
mWebView = new WebView(this);
+ mWebViewClassic = WebViewClassic.fromWebView(mWebView);
mEventSender = new WebViewEventSender(mWebView);
mCallbackProxy = new CallbackProxy(mEventSender, this);
@@ -158,7 +161,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
// Expose window.gc function to JavaScript. JSC build exposes
// this function by default, but V8 requires the flag to turn it on.
// WebView::setJsFlags is noop in JSC build.
- mWebView.setJsFlags("--expose_gc");
+ mWebViewClassic.setJsFlags("--expose_gc");
mHandler = new AsyncHandler();
@@ -168,7 +171,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
}
// This is asynchronous, but it gets processed by WebCore before it starts loading pages.
- mWebView.useMockDeviceOrientation();
+ mWebViewClassic.useMockDeviceOrientation();
}
@Override
@@ -290,6 +293,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
super.onDestroy();
mWebView.destroy();
mWebView = null;
+ mWebViewClassic = null;
}
@Override
@@ -531,8 +535,8 @@ public class TestShellActivity extends Activity implements LayoutTestController
public void setMockDeviceOrientation(boolean canProvideAlpha, double alpha,
boolean canProvideBeta, double beta, boolean canProvideGamma, double gamma) {
- mWebView.setMockDeviceOrientation(canProvideAlpha, alpha, canProvideBeta, beta,
- canProvideGamma, gamma);
+ WebViewClassic.fromWebView(mWebView).setMockDeviceOrientation(canProvideAlpha, alpha,
+ canProvideBeta, beta, canProvideGamma, gamma);
}
public void overridePreference(String key, boolean value) {
@@ -541,10 +545,10 @@ public class TestShellActivity extends Activity implements LayoutTestController
// WebView for the main frame. EventSender suffers from the same
// problem.
if (WEBKIT_OFFLINE_WEB_APPLICATION_CACHE_ENABLED.equals(key)) {
- mWebView.getSettings().setAppCacheEnabled(value);
+ mWebViewClassic.getSettings().setAppCacheEnabled(value);
} else if (WEBKIT_USES_PAGE_CACHE_PREFERENCE_KEY.equals(key)) {
// Cache the maximum possible number of pages.
- mWebView.getSettings().setPageCacheCapacity(Integer.MAX_VALUE);
+ mWebViewClassic.getSettings().setPageCacheCapacity(Integer.MAX_VALUE);
} else {
Log.w(LOGTAG, "LayoutTestController.overridePreference(): " +
"Unsupported preference '" + key + "'");
@@ -552,7 +556,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
}
public void setXSSAuditorEnabled (boolean flag) {
- mWebView.getSettings().setXSSAuditorEnabled(flag);
+ mWebViewClassic.getSettings().setXSSAuditorEnabled(flag);
}
private final WebViewClient mViewClient = new WebViewClient(){
@@ -855,7 +859,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
Bitmap bitmap = Bitmap.createBitmap(view.getContentWidth(), view.getContentHeight(),
Config.ARGB_8888);
canvas.setBitmap(bitmap);
- view.drawPage(canvas);
+ WebViewClassic.fromWebView(view).drawPage(canvas);
try {
FileOutputStream fos = new FileOutputStream(fileName);
if(!bitmap.compress(CompressFormat.PNG, 90, fos)) {
@@ -885,11 +889,11 @@ public class TestShellActivity extends Activity implements LayoutTestController
// single event rather than a stream of events (like what would generally happen in
// a real use of touch events in a WebView) and so if the WebView drops the event,
// the test will fail as the test expects one callback for every touch it synthesizes.
- webview.setTouchInterval(-1);
+ WebViewClassic.fromWebView(webview).setTouchInterval(-1);
}
public void setDefaultWebSettings(WebView webview) {
- WebSettings settings = webview.getSettings();
+ WebSettingsClassic settings = WebViewClassic.fromWebView(webview).getSettings();
settings.setAppCacheEnabled(true);
settings.setAppCachePath(getApplicationContext().getCacheDir().getPath());
settings.setAppCacheMaxSize(Long.MAX_VALUE);
@@ -906,6 +910,7 @@ public class TestShellActivity extends Activity implements LayoutTestController
settings.setProperty("use_minimal_memory", "false");
}
+ private WebViewClassic mWebViewClassic;
private WebView mWebView;
private WebViewEventSender mEventSender;
private AsyncHandler mHandler;
diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java
index f59da37..fc22472 100644
--- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java
+++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/LayoutTestsExecutor.java
@@ -41,9 +41,11 @@ import android.webkit.JsResult;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
+import android.webkit.WebSettingsClassic;
import android.webkit.WebStorage;
import android.webkit.WebStorage.QuotaUpdater;
import android.webkit.WebView;
+import android.webkit.WebViewClassic;
import android.webkit.WebViewClient;
import java.lang.Thread.UncaughtExceptionHandler;
@@ -369,11 +371,12 @@ public class LayoutTestsExecutor extends Activity {
* a real use of touch events in a WebView) and so if the WebView drops the event,
* the test will fail as the test expects one callback for every touch it synthesizes.
*/
- webView.setTouchInterval(-1);
+ WebViewClassic webViewClassic = WebViewClassic.fromWebView(webView);
+ webViewClassic.setTouchInterval(-1);
- webView.clearCache(true);
+ webViewClassic.clearCache(true);
- WebSettings webViewSettings = webView.getSettings();
+ WebSettingsClassic webViewSettings = webViewClassic.getSettings();
webViewSettings.setAppCacheEnabled(true);
webViewSettings.setAppCachePath(getApplicationContext().getCacheDir().getPath());
// Use of larger values causes unexplained AppCache database corruption.
@@ -391,7 +394,7 @@ public class LayoutTestsExecutor extends Activity {
webViewSettings.setPageCacheCapacity(0);
// This is asynchronous, but it gets processed by WebCore before it starts loading pages.
- mCurrentWebView.useMockDeviceOrientation();
+ WebViewClassic.fromWebView(mCurrentWebView).useMockDeviceOrientation();
// Must do this after setting the AppCache path.
WebStorage.getInstance().deleteAllData();
@@ -625,10 +628,12 @@ public class LayoutTestsExecutor extends Activity {
String key = msg.getData().getString("key");
boolean value = msg.getData().getBoolean("value");
if (WEBKIT_OFFLINE_WEB_APPLICATION_CACHE_ENABLED.equals(key)) {
- mCurrentWebView.getSettings().setAppCacheEnabled(value);
+ WebViewClassic.fromWebView(mCurrentWebView).getSettings().
+ setAppCacheEnabled(value);
} else if (WEBKIT_USES_PAGE_CACHE_PREFERENCE_KEY.equals(key)) {
// Cache the maximum possible number of pages.
- mCurrentWebView.getSettings().setPageCacheCapacity(Integer.MAX_VALUE);
+ WebViewClassic.fromWebView(mCurrentWebView).getSettings().
+ setPageCacheCapacity(Integer.MAX_VALUE);
} else {
Log.w(LOG_TAG, "LayoutTestController.overridePreference(): " +
"Unsupported preference '" + key + "'");
@@ -656,7 +661,8 @@ public class LayoutTestsExecutor extends Activity {
break;
case MSG_SET_XSS_AUDITOR_ENABLED:
- mCurrentWebView.getSettings().setXSSAuditorEnabled(msg.arg1 == 1);
+ WebViewClassic.fromWebView(mCurrentWebView).getSettings().
+ setXSSAuditorEnabled(msg.arg1 == 1);
break;
case MSG_WAIT_UNTIL_DONE:
@@ -728,8 +734,8 @@ public class LayoutTestsExecutor extends Activity {
Log.i(LOG_TAG, mCurrentTestRelativePath + ": setMockDeviceOrientation(" + canProvideAlpha +
", " + alpha + ", " + canProvideBeta + ", " + beta + ", " + canProvideGamma +
", " + gamma + ")");
- mCurrentWebView.setMockDeviceOrientation(canProvideAlpha, alpha, canProvideBeta, beta,
- canProvideGamma, gamma);
+ WebViewClassic.fromWebView(mCurrentWebView).setMockDeviceOrientation(canProvideAlpha,
+ alpha, canProvideBeta, beta, canProvideGamma, gamma);
}
public void setXSSAuditorEnabled(boolean flag) {
diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java
index 3d2b98b..fd1c0ad 100644
--- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java
+++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java
@@ -20,6 +20,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.webkit.WebView;
+import android.webkit.WebViewClassic;
import name.fraser.neil.plaintext.diff_match_patch;
@@ -233,7 +234,7 @@ public class TextResult extends AbstractResult {
*/
msg.arg1 = 1;
msg.arg2 = mDumpChildFramesAsText ? 1 : 0;
- webview.documentAsText(msg);
+ WebViewClassic.fromWebView(webview).documentAsText(msg);
}
@Override
diff --git a/tests/TileBenchmark/src/com/test/tilebenchmark/ProfiledWebView.java b/tests/TileBenchmark/src/com/test/tilebenchmark/ProfiledWebView.java
index a38ac25..87baf76 100644
--- a/tests/TileBenchmark/src/com/test/tilebenchmark/ProfiledWebView.java
+++ b/tests/TileBenchmark/src/com/test/tilebenchmark/ProfiledWebView.java
@@ -20,8 +20,9 @@ import android.content.Context;
import android.os.CountDownTimer;
import android.util.AttributeSet;
import android.util.Log;
-import android.webkit.WebSettings;
+import android.webkit.WebSettingsClassic;
import android.webkit.WebView;
+import android.webkit.WebViewClassic;
import android.widget.Toast;
import java.util.ArrayList;
@@ -29,7 +30,7 @@ import java.util.ArrayList;
import com.test.tilebenchmark.ProfileActivity.ProfileCallback;
import com.test.tilebenchmark.RunData.TileData;
-public class ProfiledWebView extends WebView {
+public class ProfiledWebView extends WebView implements WebViewClassic.PageSwapDelegate {
private static final String LOGTAG = "ProfiledWebView";
private int mSpeed;
@@ -80,7 +81,7 @@ public class ProfiledWebView extends WebView {
}
public void init(Context c) {
- WebSettings settings = getSettings();
+ WebSettingsClassic settings = getWebViewClassic().getSettings();
settings.setJavaScriptEnabled(true);
settings.setSupportZoom(true);
settings.setEnableSmoothTransition(true);
@@ -118,7 +119,7 @@ public class ProfiledWebView extends WebView {
mCallback = callback;
mIsTesting = false;
mIsScrolling = false;
- WebSettings settings = getSettings();
+ WebSettingsClassic settings = getWebViewClassic().getSettings();
settings.setProperty("tree_updates", "0");
@@ -134,7 +135,7 @@ public class ProfiledWebView extends WebView {
// invalidate all content, and kick off redraw
Log.d("ProfiledWebView",
"kicking off test with callback registration, and tile discard...");
- discardAllTextures();
+ getWebViewClassic().discardAllTextures();
invalidate();
mIsScrolling = true;
mContentInvalMillis = System.currentTimeMillis();
@@ -142,30 +143,29 @@ public class ProfiledWebView extends WebView {
}.start();
} else {
mIsTesting = true;
- tileProfilingStart();
+ getWebViewClassic().tileProfilingStart();
}
}
/*
* Called after the manual contentInvalidateAll, after the tiles have all
* been redrawn.
+ * From PageSwapDelegate.
*/
@Override
- protected void pageSwapCallback(boolean startAnim) {
- super.pageSwapCallback(startAnim);
-
+ public void onPageSwapOccurred(boolean startAnim) {
if (!mIsTesting && mIsScrolling) {
// kick off testing
mContentInvalMillis = System.currentTimeMillis() - mContentInvalMillis;
Log.d("ProfiledWebView", "REDRAW TOOK " + mContentInvalMillis + "millis");
mIsTesting = true;
invalidate(); // ensure a redraw so that auto-scrolling can occur
- tileProfilingStart();
+ getWebViewClassic().tileProfilingStart();
}
}
private double animFramerate() {
- WebSettings settings = getSettings();
+ WebSettingsClassic settings = getWebViewClassic().getSettings();
String updatesString = settings.getProperty("tree_updates");
int updates = (updatesString == null) ? -1 : Integer.parseInt(updatesString);
@@ -180,7 +180,7 @@ public class ProfiledWebView extends WebView {
}
public void setDoubleBuffering(boolean useDoubleBuffering) {
- WebSettings settings = getSettings();
+ WebSettingsClassic settings = getWebViewClassic().getSettings();
settings.setProperty("use_double_buffering", useDoubleBuffering ? "true" : "false");
}
@@ -188,15 +188,15 @@ public class ProfiledWebView extends WebView {
* Called once the page has stopped scrolling
*/
public void stopScrollTest() {
- tileProfilingStop();
+ getWebViewClassic().tileProfilingStop();
mIsTesting = false;
if (mCallback == null) {
- tileProfilingClear();
+ getWebViewClassic().tileProfilingClear();
return;
}
- RunData data = new RunData(super.tileProfilingNumFrames());
+ RunData data = new RunData(getWebViewClassic().tileProfilingNumFrames());
// record the time spent (before scrolling) rendering the page
data.singleStats.put(getResources().getString(R.string.render_millis),
(double)mContentInvalMillis);
@@ -209,24 +209,24 @@ public class ProfiledWebView extends WebView {
for (int frame = 0; frame < data.frames.length; frame++) {
data.frames[frame] = new TileData[
- tileProfilingNumTilesInFrame(frame)];
+ getWebViewClassic().tileProfilingNumTilesInFrame(frame)];
for (int tile = 0; tile < data.frames[frame].length; tile++) {
- int left = tileProfilingGetInt(frame, tile, "left");
- int top = tileProfilingGetInt(frame, tile, "top");
- int right = tileProfilingGetInt(frame, tile, "right");
- int bottom = tileProfilingGetInt(frame, tile, "bottom");
+ int left = getWebViewClassic().tileProfilingGetInt(frame, tile, "left");
+ int top = getWebViewClassic().tileProfilingGetInt(frame, tile, "top");
+ int right = getWebViewClassic().tileProfilingGetInt(frame, tile, "right");
+ int bottom = getWebViewClassic().tileProfilingGetInt(frame, tile, "bottom");
- boolean isReady = super.tileProfilingGetInt(
+ boolean isReady = getWebViewClassic().tileProfilingGetInt(
frame, tile, "isReady") == 1;
- int level = tileProfilingGetInt(frame, tile, "level");
+ int level = getWebViewClassic().tileProfilingGetInt(frame, tile, "level");
- float scale = tileProfilingGetFloat(frame, tile, "scale");
+ float scale = getWebViewClassic().tileProfilingGetFloat(frame, tile, "scale");
data.frames[frame][tile] = data.new TileData(left, top, right, bottom,
isReady, level, scale);
}
}
- tileProfilingClear();
+ getWebViewClassic().tileProfilingClear();
mCallback.profileCallback(data);
}
@@ -244,4 +244,8 @@ public class ProfiledWebView extends WebView {
public void setAutoScrollSpeed(int speedInt) {
mSpeed = speedInt;
}
+
+ public WebViewClassic getWebViewClassic() {
+ return WebViewClassic.fromWebView(this);
+ }
}