• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2007 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.dumprendertree;
18 
19 import java.util.Vector;
20 import android.util.*;
21 
22 public class FileFilter {
23 
24     private static final String LOGTAG = "FileFilter";
25 
26     // Returns whether we should ignore this test and skip running it.
27     // Currently we use this only for tests that crash or hang DumpRenderTree.
28     // TODO: Fix these and eliminate this method.
ignoreTest(String file)29     public static boolean ignoreTest(String file) {
30         for (int i = 0; i < ignoreTestList.length; i++) {
31             if (file.endsWith(ignoreTestList[i])) {
32                 Log.v(LOGTAG, "File path in list of ignored tests: " + file);
33                 return true;
34             }
35         }
36         return false;
37     }
38 
39     // Returns whether a directory does not contain layout tests and so can be
40     // ignored.
isNonTestDir(String file)41     public static boolean isNonTestDir(String file) {
42         for (int i = 0; i < nonTestDirs.length; i++) {
43             if (file.endsWith(nonTestDirs[i])) {
44                 return true;
45             }
46         }
47         return false;
48     }
49 
50     // Returns whether we should ignore the result of this test.
ignoreResult(String file)51     public static boolean ignoreResult(String file) {
52         for (int i = 0; i < ignoreResultList.size(); i++) {
53             if (file.endsWith(ignoreResultList.get(i))) {
54                 Log.v(LOGTAG, "File path in list of ignored results: " + file);
55                 return true;
56             }
57         }
58         return false;
59     }
60 
61     final static Vector<String> ignoreResultList = new Vector<String>();
62 
63     static {
fillIgnoreResultList()64         fillIgnoreResultList();
65     }
66 
67     static final String[] nonTestDirs = {
68         ".", // ignore hidden directories and files
69         "resources", // ignore resource directories
70         ".svn", // don't run anything under .svn folder
71         "platform"  // No-Android specific tests
72     };
73 
74     static final String[] ignoreTestList = {
75         "editing/selection/move-left-right.html", // Causes DumpRenderTree to hang
76         "fast/js/regexp-charclass-crash.html", // RegExp is too large, causing OOM
77         "fast/regex/test1.html", // Causes DumpRenderTree to hang with V8
78         "fast/regex/slow.html" // Causes DumpRenderTree to hang with V8
79     };
80 
fillIgnoreResultList()81     static void fillIgnoreResultList() {
82         // This first block of tests are for HTML5 features, for which Android
83         // should pass all tests. They are skipped only temporarily.
84         // TODO: Fix these failing tests and remove them from this list.
85         ignoreResultList.add("http/tests/appcache/empty-manifest.html"); // flaky
86         ignoreResultList.add("http/tests/appcache/foreign-iframe-main.html"); // flaky - skips states
87         ignoreResultList.add("http/tests/appcache/manifest-with-empty-file.html"); // flaky
88         ignoreResultList.add("storage/database-lock-after-reload.html"); // Succeeds but DumpRenderTree does not read result correctly
89         ignoreResultList.add("storage/hash-change-with-xhr.html"); // Succeeds but DumpRenderTree does not read result correctly
90 
91         // Will always fail
92         ignoreResultList.add("dom/svg/level3/xpath"); // XPath not supported
93         ignoreResultList.add("fast/workers"); // workers not supported
94         ignoreResultList.add("fast/xpath"); // XPath not supported
95         ignoreResultList.add("http/tests/eventsource/workers"); // workers not supported
96         ignoreResultList.add("http/tests/workers"); // workers not supported
97         ignoreResultList.add("http/tests/xmlhttprequest/workers"); // workers not supported
98         ignoreResultList.add("storage/domstorage/localstorage/private-browsing-affects-storage.html"); // private browsing not supported
99         ignoreResultList.add("storage/domstorage/sessionstorage/private-browsing-affects-storage.html"); // private browsing not supported
100         ignoreResultList.add("storage/private-browsing-readonly.html"); // private browsing not supported
101         ignoreResultList.add("websocket/tests/workers"); // workers not supported
102 
103         // TODO: These need to be triaged
104         ignoreResultList.add("fast/css/case-transform.html"); // will not fix #619707
105         ignoreResultList.add("fast/dom/Element/offsetLeft-offsetTop-body-quirk.html"); // different screen size result in extra spaces in Apple compared to us
106         ignoreResultList.add("fast/dom/Window/Plug-ins.html"); // need test plugin
107         ignoreResultList.add("fast/dom/Window/window-properties.html"); // xslt and xpath elements missing from property list
108         ignoreResultList.add("fast/dom/Window/window-screen-properties.html"); // pixel depth
109         ignoreResultList.add("fast/dom/Window/window-xy-properties.html"); // requires eventSender.mouseDown(),mouseUp()
110         ignoreResultList.add("fast/dom/attribute-namespaces-get-set.html"); // http://b/733229
111         ignoreResultList.add("fast/dom/gc-9.html"); // requires xpath support
112         ignoreResultList.add("fast/dom/global-constructors.html"); // requires xslt and xpath support
113         ignoreResultList.add("fast/dom/object-embed-plugin-scripting.html"); // dynamic plugins not supported
114         ignoreResultList.add("fast/dom/tabindex-clamp.html"); // there is extra spacing in the file due to multiple input boxes fitting on one line on Apple, ours are wrapped. Space at line ends are stripped.
115         ignoreResultList.add("fast/events/anchor-image-scrolled-x-y.html"); // requires eventSender.mouseDown(),mouseUp()
116         ignoreResultList.add("fast/events/arrow-navigation.html"); // http://b/735233
117         ignoreResultList.add("fast/events/capture-on-target.html"); // requires eventSender.mouseDown(),mouseUp()
118         ignoreResultList.add("fast/events/dblclick-addEventListener.html"); // requires eventSender.mouseDown(),mouseUp()
119         ignoreResultList.add("fast/events/drag-in-frames.html"); // requires eventSender.mouseDown(),mouseUp()
120         ignoreResultList.add("fast/events/drag-outside-window.html"); // requires eventSender.mouseDown(),mouseUp()
121         ignoreResultList.add("fast/events/event-view-toString.html"); // requires eventSender.mouseDown(),mouseUp()
122         ignoreResultList.add("fast/events/frame-click-focus.html"); // requires eventSender.mouseDown(),mouseUp()
123         ignoreResultList.add("fast/events/frame-tab-focus.html"); // http://b/734308
124         ignoreResultList.add("fast/events/iframe-object-onload.html"); // there is extra spacing in the file due to multiple frame boxes fitting on one line on Apple, ours are wrapped. Space at line ends are stripped.
125         ignoreResultList.add("fast/events/input-image-scrolled-x-y.html"); // requires eventSender.mouseDown(),mouseUp()
126         ignoreResultList.add("fast/events/mouseclick-target-and-positioning.html"); // requires eventSender.mouseDown(),mouseUp()
127         ignoreResultList.add("fast/events/mouseover-mouseout.html"); // requires eventSender.mouseDown(),mouseUp()
128         ignoreResultList.add("fast/events/mouseover-mouseout2.html"); // requires eventSender.mouseDown(),mouseUp()
129         ignoreResultList.add("fast/events/mouseup-outside-button.html"); // requires eventSender.mouseDown(),mouseUp()
130         ignoreResultList.add("fast/events/mouseup-outside-document.html"); // requires eventSender.mouseDown(),mouseUp()
131         ignoreResultList.add("fast/events/onclick-list-marker.html"); // requires eventSender.mouseDown(),mouseUp()
132         ignoreResultList.add("fast/events/ondragenter.html"); // requires eventSender.mouseDown(),mouseUp()
133         ignoreResultList.add("fast/events/onload-webkit-before-webcore.html"); // missing space in textrun, ok as text is wrapped. ignore. #714933
134         ignoreResultList.add("fast/events/option-tab.html"); // http://b/734308
135         ignoreResultList.add("fast/events/window-events-bubble.html"); // requires eventSender.mouseDown(),mouseUp()
136         ignoreResultList.add("fast/events/window-events-bubble2.html"); // requires eventSender.mouseDown(),mouseUp()
137         ignoreResultList.add("fast/events/window-events-capture.html"); // requires eventSender.mouseDown(),mouseUp()
138         ignoreResultList.add("fast/forms/drag-into-textarea.html"); // requires eventSender.mouseDown(),mouseUp()
139         ignoreResultList.add("fast/forms/focus-control-to-page.html"); // http://b/716638
140         ignoreResultList.add("fast/forms/focus2.html"); // http://b/735111
141         ignoreResultList.add("fast/forms/form-data-encoding-2.html"); // charset convert. #516936 ignore, won't fix
142         ignoreResultList.add("fast/forms/form-data-encoding.html"); // charset convert. #516936 ignore, won't fix
143         ignoreResultList.add("fast/forms/input-appearance-maxlength.html"); // execCommand "insertText" not supported
144         ignoreResultList.add("fast/forms/input-select-on-click.html"); // requires eventSender.mouseDown(),mouseUp()
145         ignoreResultList.add("fast/forms/listbox-onchange.html"); // requires eventSender.mouseDown(),mouseUp()
146         ignoreResultList.add("fast/forms/listbox-selection.html"); // http://b/735116
147         ignoreResultList.add("fast/forms/onselect-textarea.html"); // requires eventSender.mouseMoveTo, mouseDown & mouseUp and abs. position of mouse to select a word. ignore, won't fix #716583
148         ignoreResultList.add("fast/forms/onselect-textfield.html"); // requires eventSender.mouseMoveTo, mouseDown & mouseUp and abs. position of mouse to select a word. ignore, won't fix #716583
149         ignoreResultList.add("fast/forms/plaintext-mode-1.html"); // not implemented queryCommandEnabled:BackColor, Undo & Redo
150         ignoreResultList.add("fast/forms/search-cancel-button-mouseup.html"); // requires eventSender.mouseDown(),mouseUp()
151         ignoreResultList.add("fast/forms/search-event-delay.html"); // http://b/735120
152         ignoreResultList.add("fast/forms/select-empty-list.html"); // requires eventSender.mouseDown(),mouseUp()
153         ignoreResultList.add("fast/forms/select-type-ahead-non-latin.html"); // http://b/735244
154         ignoreResultList.add("fast/forms/selected-index-assert.html"); // not capturing the console messages
155         ignoreResultList.add("fast/forms/selection-functions.html"); // there is extra spacing as the text areas and input boxes fit next to each other on Apple, but are wrapped on our screen.
156         ignoreResultList.add("fast/forms/textarea-appearance-wrap.html"); // Our text areas are a little thinner than Apples. Also RTL test failes
157         ignoreResultList.add("fast/forms/textarea-initial-caret-position.html"); // Text selection done differently on our platform. When a inputbox gets focus, the entire block is selected.
158         ignoreResultList.add("fast/forms/textarea-no-scroll-on-blur.html"); // Text selection done differently on our platform. When a inputbox gets focus, the entire block is selected.
159         ignoreResultList.add("fast/forms/textarea-paste-newline.html"); // Copy&Paste commands not supported
160         ignoreResultList.add("fast/forms/textarea-scrolled-endline-caret.html"); // requires eventSender.mouseDown(),mouseUp()
161         ignoreResultList.add("fast/frames/iframe-window-focus.html"); // http://b/735140
162         ignoreResultList.add("fast/frames/frameElement-widthheight.html"); // screen width&height are different
163         ignoreResultList.add("fast/frames/frame-js-url-clientWidth.html"); // screen width&height are different
164         ignoreResultList.add("fast/html/tab-order.html"); // http://b/719289
165         ignoreResultList.add("fast/js/navigator-mimeTypes-length.html"); // dynamic plugins not supported
166         ignoreResultList.add("fast/js/string-capitalization.html"); // http://b/516936
167         ignoreResultList.add("fast/loader/local-JavaScript-from-local.html"); // Requires LayoutTests to exist at /tmp/LayoutTests
168         ignoreResultList.add("fast/loader/local-iFrame-source-from-local.html"); // Requires LayoutTests to exist at /tmp/LayoutTests
169         ignoreResultList.add("fast/loader/opaque-base-url.html"); // extra spacing because iFrames rendered next to each other on Apple
170         ignoreResultList.add("fast/overflow/scroll-vertical-not-horizontal.html"); // http://b/735196
171         ignoreResultList.add("fast/parser/script-tag-with-trailing-slash.html"); // not capturing the console messages
172         ignoreResultList.add("fast/replaced/image-map.html"); // requires eventSender.mouseDown(),mouseUp()
173         ignoreResultList.add("fast/text/plain-text-line-breaks.html"); // extra spacing because iFrames rendered next to each other on Apple
174         ignoreResultList.add("profiler"); // profiler is not supported
175         ignoreResultList.add("svg"); // svg is not supported
176 
177     }
178 
179 }
180