Merge "Fix tile benchmark tool stalls"
This commit is contained in:
@@ -73,6 +73,8 @@
|
||||
<string name="viewport_coverage">Coverage</string>
|
||||
<!-- Milliseconds taken to inval, and re-render the page [CHAR LIMIT=15] -->
|
||||
<string name="render_millis">RenderMillis</string>
|
||||
<!-- Number of rendering stalls while running the test [CHAR LIMIT=15] -->
|
||||
<string name="render_stalls">Stalls</string>
|
||||
<!-- Format string for stat value overlay [CHAR LIMIT=15] -->
|
||||
<string name="format_stat">%4.4f</string>
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Bundle;
|
||||
import android.os.CountDownTimer;
|
||||
import android.util.Pair;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
@@ -55,8 +54,6 @@ public class ProfileActivity extends Activity {
|
||||
}
|
||||
|
||||
public static final String TEMP_FILENAME = "profile.tiles";
|
||||
private static final int LOAD_TEST_DELAY = 1000; // nr of millis after load,
|
||||
// before test
|
||||
|
||||
Button mInspectButton;
|
||||
ToggleButton mCaptureButton;
|
||||
@@ -136,16 +133,7 @@ public class ProfileActivity extends Activity {
|
||||
super.onPageFinished(view, url);
|
||||
view.requestFocus();
|
||||
|
||||
new CountDownTimer(LOAD_TEST_DELAY, LOAD_TEST_DELAY) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
startViewProfiling(true);
|
||||
}
|
||||
}.start();
|
||||
startViewProfiling(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.test.tilebenchmark;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.CountDownTimer;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.webkit.WebView;
|
||||
@@ -27,10 +28,14 @@ import com.test.tilebenchmark.RunData.TileData;
|
||||
public class ProfiledWebView extends WebView {
|
||||
private int mSpeed;
|
||||
|
||||
private boolean isTesting = false;
|
||||
private boolean isScrolling = false;
|
||||
private boolean mIsTesting = false;
|
||||
private boolean mIsScrolling = false;
|
||||
private ProfileCallback mCallback;
|
||||
private long mContentInvalMillis;
|
||||
private boolean mHadToBeForced = false;
|
||||
private int mTestCount = 0;
|
||||
private static final int LOAD_STALL_MILLIS = 5000; // nr of millis after load,
|
||||
// before test is forced
|
||||
|
||||
public ProfiledWebView(Context context) {
|
||||
super(context);
|
||||
@@ -51,12 +56,12 @@ public class ProfiledWebView extends WebView {
|
||||
|
||||
@Override
|
||||
protected void onDraw(android.graphics.Canvas canvas) {
|
||||
if (isTesting && isScrolling) {
|
||||
if (mIsTesting && mIsScrolling) {
|
||||
if (canScrollVertically(1)) {
|
||||
scrollBy(0, mSpeed);
|
||||
} else {
|
||||
stopScrollTest();
|
||||
isScrolling = false;
|
||||
mIsScrolling = false;
|
||||
}
|
||||
}
|
||||
super.onDraw(canvas);
|
||||
@@ -68,13 +73,36 @@ public class ProfiledWebView extends WebView {
|
||||
* scrolling, invalidate all content and redraw it, measuring time taken.
|
||||
*/
|
||||
public void startScrollTest(ProfileCallback callback, boolean autoScrolling) {
|
||||
isScrolling = autoScrolling;
|
||||
mIsScrolling = autoScrolling;
|
||||
mCallback = callback;
|
||||
isTesting = false;
|
||||
mIsTesting = false;
|
||||
mContentInvalMillis = System.currentTimeMillis();
|
||||
registerPageSwapCallback();
|
||||
contentInvalidateAll();
|
||||
invalidate();
|
||||
|
||||
mTestCount++;
|
||||
final int testCount = mTestCount;
|
||||
|
||||
if (autoScrolling) {
|
||||
// after a while, force it to start even if the pages haven't swapped
|
||||
new CountDownTimer(LOAD_STALL_MILLIS, LOAD_STALL_MILLIS) {
|
||||
@Override
|
||||
public void onTick(long millisUntilFinished) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinish() {
|
||||
if (testCount == mTestCount && !mIsTesting) {
|
||||
mHadToBeForced = true;
|
||||
Log.d("ProfiledWebView", "num " + testCount
|
||||
+ " forcing a page swap with a scroll...");
|
||||
scrollBy(0, 1);
|
||||
invalidate(); // ensure a redraw so that auto-scrolling can occur
|
||||
}
|
||||
}
|
||||
}.start();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -87,7 +115,7 @@ public class ProfiledWebView extends WebView {
|
||||
super.pageSwapCallback();
|
||||
Log.d("ProfiledWebView", "REDRAW TOOK " + mContentInvalMillis
|
||||
+ "millis");
|
||||
isTesting = true;
|
||||
mIsTesting = true;
|
||||
invalidate(); // ensure a redraw so that auto-scrolling can occur
|
||||
tileProfilingStart();
|
||||
}
|
||||
@@ -97,7 +125,7 @@ public class ProfiledWebView extends WebView {
|
||||
*/
|
||||
public void stopScrollTest() {
|
||||
tileProfilingStop();
|
||||
isTesting = false;
|
||||
mIsTesting = false;
|
||||
|
||||
if (mCallback == null) {
|
||||
tileProfilingClear();
|
||||
@@ -105,8 +133,15 @@ public class ProfiledWebView extends WebView {
|
||||
}
|
||||
|
||||
RunData data = new RunData(super.tileProfilingNumFrames());
|
||||
// record the time spent (before scrolling) rendering the page
|
||||
data.singleStats.put(getResources().getString(R.string.render_millis),
|
||||
(double)mContentInvalMillis);
|
||||
// record if the page render timed out
|
||||
Log.d("ProfiledWebView", "hadtobeforced = " + mHadToBeForced);
|
||||
data.singleStats.put(getResources().getString(R.string.render_stalls),
|
||||
mHadToBeForced ? 1.0 : 0.0);
|
||||
mHadToBeForced = false;
|
||||
|
||||
for (int frame = 0; frame < data.frames.length; frame++) {
|
||||
data.frames[frame] = new TileData[
|
||||
tileProfilingNumTilesInFrame(frame)];
|
||||
|
||||
@@ -80,7 +80,7 @@ public class PerformanceTest extends
|
||||
private static final String URL_POSTFIX = "/index.html?skip=true";
|
||||
private static final int MAX_ITERATIONS = 4;
|
||||
private static final String TEST_DIRS[] = {
|
||||
"alexa_us"//, "android", "dom", "intl1", "intl2", "moz", "moz2"
|
||||
"intl1"//, "alexa_us", "android", "dom", "intl2", "moz", "moz2"
|
||||
};
|
||||
|
||||
public PerformanceTest() {
|
||||
|
||||
Reference in New Issue
Block a user