Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f37a574f authored by Guang Zhu's avatar Guang Zhu
Browse files

Throw exception if webview dump times out

if a webview dump times out, normally it's already in a bad state,
throwing runtime execption will generate a crash on the test case
and make the test move forward.

Change-Id: Id7430700db6b6d90160d60d23debd250b1731789
parent 8fb9eeb2
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -88,8 +88,9 @@ public class TestShellActivity extends Activity implements LayoutTestController
            } else if (msg.what == MSG_WEBKIT_DATA) {
                TestShellActivity.this.dump(mTimedOut, (String)msg.obj);
                return;
            } else if (msg.what == MSG_DUMP_TIMEOUT) {
                throw new RuntimeException("WebView dump timeout, is it pegged?");
            }

            super.handleMessage(msg);
        }
    }
@@ -106,10 +107,12 @@ public class TestShellActivity extends Activity implements LayoutTestController
            case DUMP_AS_TEXT:
                callback.arg1 = mDumpTopFrameAsText ? 1 : 0;
                callback.arg2 = mDumpChildFramesAsText ? 1 : 0;
                setDumpTimeout(DUMP_TIMEOUT_MS);
                mWebView.documentAsText(callback);
                break;
            case EXT_REPR:
                mWebView.externalRepresentation(callback);
                setDumpTimeout(DUMP_TIMEOUT_MS);
                break;
            default:
                finished();
@@ -117,6 +120,11 @@ public class TestShellActivity extends Activity implements LayoutTestController
        }
    }

    private void setDumpTimeout(long timeout) {
        Message msg = mHandler.obtainMessage(MSG_DUMP_TIMEOUT);
        mHandler.sendMessageDelayed(msg, timeout);
    }

    public void clearCache() {
      mWebView.freeMemory();
    }
@@ -933,9 +941,11 @@ public class TestShellActivity extends Activity implements LayoutTestController
    private boolean mDumpWebKitData = false;

    static final String TIMEOUT_STR = "**Test timeout";
    static final long DUMP_TIMEOUT_MS = 20000; //20s timeout for dumping webview content

    static final int MSG_TIMEOUT = 0;
    static final int MSG_WEBKIT_DATA = 1;
    static final int MSG_DUMP_TIMEOUT = 2;

    static final String LOGTAG="TestShell";