FileFilter.java revision cdb4ef4cdb4b3fb729d619c830e169ba056d3905
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
17package com.android.dumprendertree;
18
19import java.util.HashSet;
20import java.util.Hashtable;
21import android.util.*;
22
23public class FileFilter {
24
25    public static boolean ignoreTest(String file) {
26      // treat files like directories for the time being.
27      for (int i = 0; i < ignoreTestList.length; i ++) {
28          if (file.endsWith(ignoreTestList[i])) {
29             Log.e("FileFilter", "File path in IgnoreTest: " + file);
30             return true;
31          }
32      }
33      for (int i = 0; i < ignoreTestDirs.length; i++) {
34          if (file.endsWith(ignoreTestDirs[i])) {
35              Log.e("FileFilter", "File path in ignore list: " + file);
36              return true;
37          }
38      }
39
40      return false;
41    }
42
43    public static boolean ignoreResults(String file) {
44        int index = file.indexOf("fast");
45        if (index != -1) {
46            String sub = file.substring(index);
47            if (ignoreResultList.contains(sub))
48                return true;
49        }
50        return false;
51
52    }
53
54    public static String isKnownBug(String file) {
55        int index = file.indexOf("fast");
56        if (index != -1) {
57            String sub = file.substring(index);
58            // Log.e("FileFilter", "Looking for:"+sub);
59            if (bugList.containsKey(sub))
60                return bugList.get(sub);
61        }
62        return null;
63    }
64
65    final static HashSet<String> ignoreResultList = new HashSet<String>();
66    final static Hashtable<String, String> bugList =
67        new Hashtable<String, String>();
68
69    static {
70        fillIgnoreResultSet();
71        fillBugTable();
72    }
73
74    static final String[] ignoreTestDirs = {
75        ".", // ignore hidden directories and files
76        "resources", // ignore resource directories
77        "AppleScript", // AppleScript not supported
78        ".svn", // don't run anything under .svn folder
79        "profiler",  // profiler is not supported
80        "svg",  // svg is not supported
81        "platform",  // platform specific
82        "http/wml",
83    };
84
85    static final String [] ignoreTestList = {
86        "editing/selection/move-left-right.html",
87        "fast/events/touch/basic-multi-touch-events.html", // We do not support multi touch events.
88        "fast/js/regexp-charclass-crash.html", // RegExp is too large, causing OOM
89        "fast/regex/test1.html", // RegExp is exponential
90        "fast/regex/slow.html", // RegExp is exponential
91        "storage/domstorage/localstorage/iframe-events.html", // Expects test to be in LayoutTests
92        "storage/domstorage/localstorage/private-browsing-affects-storage.html", // No notion of private browsing.
93        "storage/domstorage/sessionstorage/iframe-events.html", // Expects test to be in LayoutTests
94        "storage/domstorage/sessionstorage/private-browsing-affects-storage.html", // No notion of private browsing.
95        "storage/private-browsing-readonly.html", // No notion of private browsing.
96    };
97
98    static void fillIgnoreResultSet() {
99        ignoreResultList.add("fast/css/case-transform.html"); // will not fix #619707
100        ignoreResultList.add("fast/css/computed-style.html"); // different platform defaults for font and different screen size
101        ignoreResultList.add("fast/dom/Element/offsetLeft-offsetTop-body-quirk.html"); // different screen size result in extra spaces in Apple compared to us
102        ignoreResultList.add("fast/dom/Window/Plug-ins.html"); // need test plugin
103        ignoreResultList.add("fast/dom/Window/window-properties.html"); // xslt and xpath elements missing from property list
104        ignoreResultList.add("fast/dom/Window/window-screen-properties.html"); // pixel depth
105        ignoreResultList.add("fast/dom/Window/window-xy-properties.html"); // requires eventSender.mouseDown(),mouseUp()
106        ignoreResultList.add("fast/dom/character-index-for-point.html"); // requires textInputController.characterIndexForPoint
107        ignoreResultList.add("fast/dom/gc-9.html"); // requires xpath support
108        ignoreResultList.add("fast/dom/global-constructors.html"); // requires xslt and xpath support
109        ignoreResultList.add("fast/dom/object-embed-plugin-scripting.html"); // dynamic plugins not supported
110        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.
111        ignoreResultList.add("fast/events/anchor-image-scrolled-x-y.html"); // requires eventSender.mouseDown(),mouseUp()
112        ignoreResultList.add("fast/events/capture-on-target.html"); // requires eventSender.mouseDown(),mouseUp()
113        ignoreResultList.add("fast/events/dblclick-addEventListener.html"); // requires eventSender.mouseDown(),mouseUp()
114        ignoreResultList.add("fast/events/drag-in-frames.html"); // requires eventSender.mouseDown(),mouseUp()
115        ignoreResultList.add("fast/events/drag-outside-window.html"); // requires eventSender.mouseDown(),mouseUp()
116        ignoreResultList.add("fast/events/event-sender-mouse-click.html"); // requires eventSender.mouseDown(),mouseUp()
117        ignoreResultList.add("fast/events/event-view-toString.html"); // requires eventSender.mouseDown(),mouseUp()
118        ignoreResultList.add("fast/events/frame-click-focus.html"); // requires eventSender.mouseDown(),mouseUp()
119        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.
120        ignoreResultList.add("fast/events/input-image-scrolled-x-y.html"); // requires eventSender.mouseDown(),mouseUp()
121        ignoreResultList.add("fast/events/mouseclick-target-and-positioning.html"); // requires eventSender.mouseDown(),mouseUp()
122        ignoreResultList.add("fast/events/mouseover-mouseout.html"); // requires eventSender.mouseDown(),mouseUp()
123        ignoreResultList.add("fast/events/mouseover-mouseout2.html"); // requires eventSender.mouseDown(),mouseUp()
124        ignoreResultList.add("fast/events/mouseup-outside-button.html"); // requires eventSender.mouseDown(),mouseUp()
125        ignoreResultList.add("fast/events/mouseup-outside-document.html"); // requires eventSender.mouseDown(),mouseUp()
126        ignoreResultList.add("fast/events/objc-event-api.html"); // eventSender.mouseDown(), mouseUp() and objc API missing
127        ignoreResultList.add("fast/events/objc-keyboard-event-creation.html"); // eventSender.mouseDown(), mouseUp() and objc API missing
128        ignoreResultList.add("fast/events/onclick-list-marker.html"); // requires eventSender.mouseDown(),mouseUp()
129        ignoreResultList.add("fast/events/ondragenter.html"); // requires eventSender.mouseDown(),mouseUp()
130        ignoreResultList.add("fast/events/onload-webkit-before-webcore.html"); // missing space in textrun, ok as text is wrapped. ignore. #714933
131        ignoreResultList.add("fast/events/window-events-bubble.html"); // requires eventSender.mouseDown(),mouseUp()
132        ignoreResultList.add("fast/events/window-events-bubble2.html"); // requires eventSender.mouseDown(),mouseUp()
133        ignoreResultList.add("fast/events/window-events-capture.html"); // requires eventSender.mouseDown(),mouseUp()
134        ignoreResultList.add("fast/forms/attributed-strings.html"); // missing support for textInputController.makeAttributedString()
135        ignoreResultList.add("fast/forms/drag-into-textarea.html"); // requires eventSender.mouseDown(),mouseUp()
136        ignoreResultList.add("fast/forms/form-data-encoding-2.html"); // charset convert. #516936 ignore, won't fix
137        ignoreResultList.add("fast/forms/form-data-encoding.html"); // charset convert. #516936 ignore, won't fix
138        ignoreResultList.add("fast/forms/input-appearance-maxlength.html"); // execCommand "insertText" not supported
139        ignoreResultList.add("fast/forms/input-select-on-click.html"); // requires eventSender.mouseDown(),mouseUp()
140        ignoreResultList.add("fast/forms/input-truncate-newline.html"); // Copy&Paste commands not supported
141        ignoreResultList.add("fast/forms/listbox-onchange.html"); // requires eventSender.mouseDown(),mouseUp()
142        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
143        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
144        ignoreResultList.add("fast/forms/plaintext-mode-1.html"); // not implemented queryCommandEnabled:BackColor, Undo & Redo
145        ignoreResultList.add("fast/forms/search-cancel-button-mouseup.html"); // requires eventSender.mouseDown(),mouseUp()
146        ignoreResultList.add("fast/forms/select-empty-list.html"); // requires eventSender.mouseDown(),mouseUp()
147        ignoreResultList.add("fast/forms/selected-index-assert.html"); // not capturing the console messages
148        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.
149        ignoreResultList.add("fast/forms/textarea-appearance-wrap.html"); // Our text areas are a little thinner than Apples. Also RTL test failes
150        ignoreResultList.add("fast/forms/textarea-hard-linewrap.html"); // Our text areas are a little thinner than Apples
151        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.
152        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.
153        ignoreResultList.add("fast/forms/textarea-paste-newline.html"); // Copy&Paste commands not supported
154        ignoreResultList.add("fast/forms/textarea-scrolled-endline-caret.html"); // requires eventSender.mouseDown(),mouseUp()
155        ignoreResultList.add("fast/frames/frameElement-widthheight.html"); // screen width&height are different
156        ignoreResultList.add("fast/frames/frame-js-url-clientWidth.html"); // screen width&height are different
157        ignoreResultList.add("fast/js/navigator-mimeTypes-length.html"); // dynamic plugins not supported
158        ignoreResultList.add("fast/loader/local-JavaScript-from-local.html"); // Requires LayoutTests to exist at /tmp/LayoutTests
159        ignoreResultList.add("fast/loader/local-iFrame-source-from-local.html"); // Requires LayoutTests to exist at /tmp/LayoutTests
160        ignoreResultList.add("fast/loader/opaque-base-url.html"); // extra spacing because iFrames rendered next to each other on Apple
161        ignoreResultList.add("fast/parser/script-tag-with-trailing-slash.html"); // not capturing the console messages
162        ignoreResultList.add("fast/replaced/image-map.html"); // requires eventSender.mouseDown(),mouseUp()
163        ignoreResultList.add("fast/text/attributed-substring-from-range.html"); //  requires JS test API, textInputController
164        ignoreResultList.add("fast/text/attributed-substring-from-range-001.html"); //  requires JS test API, textInputController
165        ignoreResultList.add("fast/text/plain-text-line-breaks.html"); // extra spacing because iFrames rendered next to each other on Apple
166    }
167
168    static void fillBugTable() {
169        bugList.put("fast/forms/focus-control-to-page.html", "716638");
170        bugList.put("fast/html/tab-order.html", "719289");
171        bugList.put("fast/dom/attribute-namespaces-get-set.html", "733229");
172        bugList.put("fast/dom/set-innerHTML.html", "733823");
173        bugList.put("fast/dom/xmlhttprequest-get.html", "733846");
174        bugList.put("fast/encoding/css-charset-default.html", "733856");
175        bugList.put("fast/encoding/default-xhtml-encoding.html", "733882");
176        bugList.put("fast/encoding/meta-in-xhtml.html", "733882");
177        bugList.put("fast/events/frame-tab-focus.html", "734308");
178        bugList.put("fast/events/option-tab.html", "734308");
179        bugList.put("fast/forms/focus2.html", "735111");
180        bugList.put("fast/forms/listbox-selection.html", "735116");
181        bugList.put("fast/forms/search-event-delay.html", "735120");
182        bugList.put("fast/frames/iframe-window-focus.html", "735140");
183        bugList.put("fast/innerHTML/004.html", "733882");
184        bugList.put("fast/js/string-capitalization.html", "516936");
185        bugList.put("fast/js/string-concatenate-outofmemory.html","735152");
186        bugList.put("fast/parser/external-entities.html", "735176");
187        bugList.put("fast/overflow/scroll-vertical-not-horizontal.html", "735196");
188        bugList.put("fast/events/arrow-navigation.html", "735233");
189        bugList.put("fast/forms/select-type-ahead-non-latin.html", "735244");
190    }
191
192}
193