diff options
6 files changed, 144 insertions, 25 deletions
diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index 38d6526d22e8..90bb0e229733 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -769,8 +769,8 @@ public class DatabaseUtils { */ public static void cursorStringToContentValuesIfPresent(Cursor cursor, ContentValues values, String column) { - final int index = cursor.getColumnIndexOrThrow(column); - if (!cursor.isNull(index)) { + final int index = cursor.getColumnIndex(column); + if (index != -1 && !cursor.isNull(index)) { values.put(column, cursor.getString(index)); } } @@ -785,8 +785,8 @@ public class DatabaseUtils { */ public static void cursorLongToContentValuesIfPresent(Cursor cursor, ContentValues values, String column) { - final int index = cursor.getColumnIndexOrThrow(column); - if (!cursor.isNull(index)) { + final int index = cursor.getColumnIndex(column); + if (index != -1 && !cursor.isNull(index)) { values.put(column, cursor.getLong(index)); } } @@ -801,8 +801,8 @@ public class DatabaseUtils { */ public static void cursorShortToContentValuesIfPresent(Cursor cursor, ContentValues values, String column) { - final int index = cursor.getColumnIndexOrThrow(column); - if (!cursor.isNull(index)) { + final int index = cursor.getColumnIndex(column); + if (index != -1 && !cursor.isNull(index)) { values.put(column, cursor.getShort(index)); } } @@ -817,8 +817,8 @@ public class DatabaseUtils { */ public static void cursorIntToContentValuesIfPresent(Cursor cursor, ContentValues values, String column) { - final int index = cursor.getColumnIndexOrThrow(column); - if (!cursor.isNull(index)) { + final int index = cursor.getColumnIndex(column); + if (index != -1 && !cursor.isNull(index)) { values.put(column, cursor.getInt(index)); } } @@ -833,8 +833,8 @@ public class DatabaseUtils { */ public static void cursorFloatToContentValuesIfPresent(Cursor cursor, ContentValues values, String column) { - final int index = cursor.getColumnIndexOrThrow(column); - if (!cursor.isNull(index)) { + final int index = cursor.getColumnIndex(column); + if (index != -1 && !cursor.isNull(index)) { values.put(column, cursor.getFloat(index)); } } @@ -849,8 +849,8 @@ public class DatabaseUtils { */ public static void cursorDoubleToContentValuesIfPresent(Cursor cursor, ContentValues values, String column) { - final int index = cursor.getColumnIndexOrThrow(column); - if (!cursor.isNull(index)) { + final int index = cursor.getColumnIndex(column); + if (index != -1 && !cursor.isNull(index)) { values.put(column, cursor.getDouble(index)); } } diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/AbstractResult.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/AbstractResult.java index d68930cba40e..7cbb3970c8da 100644 --- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/AbstractResult.java +++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/AbstractResult.java @@ -92,8 +92,16 @@ public abstract class AbstractResult implements Comparable<AbstractResult> { public abstract void setExpectedImageResult(byte[] expectedResult); + public abstract void setExpectedImageResultPath(String relativePath); + + public abstract String getExpectedImageResultPath(); + public abstract void setExpectedTextResult(String expectedResult); + public abstract void setExpectedTextResultPath(String relativePath); + + public abstract String getExpectedTextResultPath(); + /** * Returns result's image data that can be written to the disk. It can be null * if there is an error of some sort or for example the test times out. diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/CrashedDummyResult.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/CrashedDummyResult.java index a793dab3aa95..31da7767ffa7 100644 --- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/CrashedDummyResult.java +++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/CrashedDummyResult.java @@ -22,6 +22,8 @@ import android.webkit.WebView; /** * A dummy class representing test that crashed. + * + * TODO: All the methods regarding expected results need implementing. */ public class CrashedDummyResult extends AbstractResult { String mRelativePath; @@ -82,4 +84,26 @@ public class CrashedDummyResult extends AbstractResult { public void setExpectedTextResult(String expectedResult) { /** TODO */ } + + @Override + public String getExpectedImageResultPath() { + /** TODO */ + return null; + } + + @Override + public String getExpectedTextResultPath() { + /** TODO */ + return null; + } + + @Override + public void setExpectedImageResultPath(String relativePath) { + /** TODO */ + } + + @Override + public void setExpectedTextResultPath(String relativePath) { + /** TODO */ + } }
\ No newline at end of file diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/ManagerService.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/ManagerService.java index fbc069b9a48e..d9da672cdc9c 100644 --- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/ManagerService.java +++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/ManagerService.java @@ -128,6 +128,13 @@ public class ManagerService extends Service { private String mCurrentlyRunningTest; private int mCurrentlyRunningTestIndex; + /** + * These are implementation details of getExpectedResultPath() used to reduce the number + * of requests required to the host server. + */ + private String mLastExpectedResultPathRequested; + private String mLastExpectedResultPathFetched; + private String mAllTestsRelativePath; @Override @@ -194,7 +201,9 @@ public class ManagerService extends Service { private void handleResults(AbstractResult results) { String relativePath = results.getRelativePath(); results.setExpectedTextResult(getExpectedTextResult(relativePath)); + results.setExpectedTextResultPath(getExpectedTextResultPath(relativePath)); results.setExpectedImageResult(getExpectedImageResult(relativePath)); + results.setExpectedImageResultPath(getExpectedImageResultPath(relativePath)); dumpActualTextResult(results); dumpActualImageResult(results); @@ -227,7 +236,7 @@ public class ManagerService extends Service { actualImageResult, false); } - public static String getExpectedTextResult(String relativePath) { + public String getExpectedTextResult(String relativePath) { byte[] result = getExpectedResult(relativePath, TEXT_RESULT_EXTENSION); if (result != null) { return new String(result); @@ -235,13 +244,14 @@ public class ManagerService extends Service { return null; } - public static byte[] getExpectedImageResult(String relativePath) { + public byte[] getExpectedImageResult(String relativePath) { return getExpectedResult(relativePath, IMAGE_RESULT_EXTENSION); } - private static byte[] getExpectedResult(String relativePath, String extension) { + private byte[] getExpectedResult(String relativePath, String extension) { String originalRelativePath = FileFilter.setPathEnding(relativePath, "-expected." + extension); + mLastExpectedResultPathRequested = originalRelativePath; byte[] bytes = null; List<String> locations = EXPECTED_RESULT_LOCATION_RELATIVE_DIR_PREFIXES; @@ -252,6 +262,25 @@ public class ManagerService extends Service { bytes = FsUtils.readDataFromUrl(FileFilter.getUrl(relativePath)); } + mLastExpectedResultPathFetched = relativePath; return bytes; } + + private String getExpectedTextResultPath(String relativePath) { + return getExpectedResultPath(relativePath, TEXT_RESULT_EXTENSION); + } + + private String getExpectedImageResultPath(String relativePath) { + return getExpectedResultPath(relativePath, IMAGE_RESULT_EXTENSION); + } + + private String getExpectedResultPath(String relativePath, String extension) { + String originalRelativePath = + FileFilter.setPathEnding(relativePath, "-expected." + extension); + if (!originalRelativePath.equals(mLastExpectedResultPathRequested)) { + getExpectedResult(relativePath, extension); + } + + return mLastExpectedResultPathFetched; + } }
\ No newline at end of file diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/Summarizer.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/Summarizer.java index 5c10776b0ae2..ea8b097f9488 100644 --- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/Summarizer.java +++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/Summarizer.java @@ -65,7 +65,8 @@ public class Summarizer { " font-size: 14px;" + " color: black;" + " text-decoration: none;" + - " margin-bottom: 4px;}" + + " margin-top: 4px;" + + " margin-bottom: 2px;}" + "h3 a span.path {" + " text-decoration: underline;}" + "h3 span.tri {" + @@ -77,6 +78,15 @@ public class Summarizer { " color: #8ee100;" + " float: left;" + " width: 20px;}" + + "span.source {" + + " display: block;" + + " font-size: 10px;" + + " color: #888;" + + " margin-left: 20px;" + + " margin-bottom: 1px;}" + + "span.source a {" + + " font-size: 10px;" + + " color: #888;}" + "h3 img {" + " width: 8px;" + " margin-right: 4px;}" + @@ -186,8 +196,8 @@ public class Summarizer { private int mCrashedTestsCount = 0; private List<AbstractResult> mUnexpectedFailures = new ArrayList<AbstractResult>(); private List<AbstractResult> mExpectedFailures = new ArrayList<AbstractResult>(); - private List<String> mExpectedPasses = new ArrayList<String>(); - private List<String> mUnexpectedPasses = new ArrayList<String>(); + private List<AbstractResult> mExpectedPasses = new ArrayList<AbstractResult>(); + private List<AbstractResult> mUnexpectedPasses = new ArrayList<AbstractResult>(); private FileFilter mFileFilter; private String mResultsRootDirPath; @@ -215,9 +225,9 @@ public class Summarizer { if (result.getResultCode() == AbstractResult.ResultCode.PASS) { if (mFileFilter.isFail(relativePath)) { - mUnexpectedPasses.add(relativePath); + mUnexpectedPasses.add(result); } else { - mExpectedPasses.add(relativePath); + mExpectedPasses.add(result); } } else { if (mFileFilter.isFail(relativePath)) { @@ -382,6 +392,7 @@ public class Summarizer { } html.append("</h3>"); + appendExpectedResultsSources(result, html); html.append("<div class=\"diff\" style=\"display: none;\" id=\"" + id + "\">"); html.append(result.getDiffAsHtml()); @@ -397,21 +408,44 @@ public class Summarizer { } private void createResultsListNoDiff(StringBuilder html, String title, - List<String> resultsList) { + List<AbstractResult> resultsList) { Collections.sort(resultsList); - html.append("<h2>" + title + "[" + resultsList.size() + "]</h2>"); - for (String result : resultsList) { + html.append("<h2>" + title + " [" + resultsList.size() + "]</h2>"); + for (AbstractResult result : resultsList) { html.append("<h3>"); - html.append("<a href=\"" + getViewSourceUrl(result).toString() + "\""); + html.append("<a href=\"" + getViewSourceUrl(result.getRelativePath()).toString() + + "\""); html.append(" target=\"_blank\">"); html.append("<span class=\"sqr\">■ </span>"); - html.append("<span class=\"path\">" + result + "</span>"); + html.append("<span class=\"path\">" + result.getRelativePath() + "</span>"); html.append("</a>"); html.append("</h3>"); + appendExpectedResultsSources(result, html); html.append("<div class=\"space\"></div>"); } } + private static final void appendExpectedResultsSources(AbstractResult result, + StringBuilder html) { + String textSource = result.getExpectedTextResultPath(); + String imageSource = result.getExpectedImageResultPath(); + + if (textSource != null) { + html.append("<span class=\"source\">Expected textual result from: "); + html.append("<a href=\"" + ForwarderManager.getHostSchemePort(false) + "LayoutTests/" + + textSource + "\""); + html.append(" target=\"_blank\">"); + html.append(textSource + "</a></span>"); + } + if (imageSource != null) { + html.append("<span class=\"source\">Expected image result from: "); + html.append("<a href=\"" + ForwarderManager.getHostSchemePort(false) + "LayoutTests/" + + imageSource + "\""); + html.append(" target=\"_blank\">"); + html.append(imageSource + "</a></span>"); + } + } + private static final URL getViewSourceUrl(String relativePath) { URL url = null; try { diff --git a/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java b/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java index 0f864e5b2277..9664efe30115 100644 --- a/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java +++ b/tests/DumpRenderTree2/src/com/android/dumprendertree2/TextResult.java @@ -36,6 +36,7 @@ public class TextResult extends AbstractResult { private static final int MSG_DOCUMENT_AS_TEXT = 0; private String mExpectedResult; + private String mExpectedResultPath; private String mActualResult; private String mRelativePath; private ResultCode mResultCode; @@ -69,6 +70,7 @@ public class TextResult extends AbstractResult { */ public TextResult(Bundle bundle) { mExpectedResult = bundle.getString("expectedTextualResult"); + mExpectedResultPath = bundle.getString("expectedTextualResultPath"); mActualResult = bundle.getString("actualTextualResult"); setAdditionalTextOutputString(bundle.getString("additionalTextOutputString")); mRelativePath = bundle.getString("relativePath"); @@ -116,6 +118,27 @@ public class TextResult extends AbstractResult { } @Override + public void setExpectedImageResultPath(String relativePath) { + /** This method is not applicable to this type of result */ + } + + @Override + public String getExpectedImageResultPath() { + /** This method is not applicable to this type of result */ + return null; + } + + @Override + public void setExpectedTextResultPath(String relativePath) { + mExpectedResultPath = relativePath; + } + + @Override + public String getExpectedTextResultPath() { + return mExpectedResultPath; + } + + @Override public void setExpectedTextResult(String expectedResult) { mExpectedResult = expectedResult; } @@ -212,6 +235,7 @@ public class TextResult extends AbstractResult { public Bundle getBundle() { Bundle bundle = new Bundle(); bundle.putString("expectedTextualResult", mExpectedResult); + bundle.putString("expectedTextualResultPath", mExpectedResultPath); bundle.putString("actualTextualResult", getActualTextResult()); bundle.putString("additionalTextOutputString", getAdditionalTextOutputString()); bundle.putString("relativePath", mRelativePath); |