AbstractResult.java revision 7ddc0b7a72aa66d699fecce3d855a6c70f844647
13c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski/*
23c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Copyright (C) 2010 The Android Open Source Project
33c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski *
43c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Licensed under the Apache License, Version 2.0 (the "License");
53c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * you may not use this file except in compliance with the License.
63c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * You may obtain a copy of the License at
73c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski *
83c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski *      http://www.apache.org/licenses/LICENSE-2.0
93c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski *
103c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Unless required by applicable law or agreed to in writing, software
113c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * distributed under the License is distributed on an "AS IS" BASIS,
123c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * See the License for the specific language governing permissions and
143c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * limitations under the License.
153c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */
163c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
173c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowskipackage com.android.dumprendertree2;
183c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
197ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowskiimport android.os.Bundle;
204ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowskiimport android.os.Message;
214ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowskiimport android.webkit.WebView;
224ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski
233c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski/**
243c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * A class that represent a result of the test. It is responsible for returning the result's
253c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * raw data and generating its own diff in HTML format.
263c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */
273c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowskipublic abstract class AbstractResult {
283c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
293c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    public enum TestType {
303c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        TEXT,
313c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        PIXEL
323c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    }
333c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
343c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    public enum ResultCode {
353c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        PASS("Passed"),
363c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        FAIL_RESULT_DIFFERS("Failed: different results"),
373c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        FAIL_NO_EXPECTED_RESULT("Failed: no expected result"),
383c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        FAIL_TIMED_OUT("Failed: timed out"),
393c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        FAIL_CRASHED("Failed: crashed");
403c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
413c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        private String mTitle;
423c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
433c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        private ResultCode(String title) {
443c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski            mTitle = title;
453c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        }
463c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
473c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        @Override
483c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        public String toString() {
493c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski            return mTitle;
503c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski        }
513c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    }
523c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
533c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    /**
547ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski     * Makes the result object obtain the results of the test from the webview
557ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski     * and store them in the format that suits itself bests. This method is asynchronous.
564ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * The message passed as a parameter is a message that should be sent to its target
574ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * when the result finishes obtaining the result.
584ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     *
594ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * @param webview
604ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * @param resultObtainedMsg
614ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     */
627ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski    public abstract void obtainActualResults(WebView webview, Message resultObtainedMsg);
634ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski
644ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski    public abstract void setExpectedImageResult(byte[] expectedResult);
654ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski
664ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski    public abstract void setExpectedTextResult(String expectedResult);
674ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski
684ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski    /**
694ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * Returns result's image data that can be written to the disk. It can be null
704ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * if there is an error of some sort or for example the test times out.
714ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     *
724ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * <p> Some tests will not provide data (like text tests)
734ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     *
744ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * @return
754ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     *      results image data
764ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     */
774ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski    public abstract byte[] getActualImageResult();
784ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski
794ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski    /**
804ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * Returns result's text data. It can be null
814ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     * if there is an error of some sort or for example the test times out.
823c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     *
833c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * @return
844ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski     *      results text data
853c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     */
864ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski    public abstract String getActualTextResult();
873c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
883c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    /**
893c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * Returns the code of this result.
903c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     *
913c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * @return
923c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     *      the code of this result
933c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     */
944ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski    public abstract ResultCode getResultCode();
953c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
963c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    /**
973c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * Return the type of the result data.
983c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     *
993c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * @return
1003c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     *      the type of the result data.
1013c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     */
1023c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    public abstract TestType getType();
1033c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski
1043c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    /**
1053c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * Returns a piece of HTML code that presents a visual diff between a result and
1063c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * the expected result.
1073c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     *
1083c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     * @return
1093c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     *      a piece of HTML code with a visual diff between the result and the expected result
1103c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski     */
1113c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski    public abstract String getDiffAsHtml();
1127ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski
1137ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski    public abstract Bundle getBundle();
1143c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski}