1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // The following test runs the BiDi Checker on the current page with LTR
6 // base direction. Any bad mixture or RTL and LTR will be reported back
9 function filtersForPage(pageName, isRTL) {
10 // Suppression filters should be added to the object below. You may omit
11 // either RTL or LTR filters, or may not include filters for your page at all.
12 // For additional info about BidiChecker go to
13 // http://code.google.com/p/bidichecker
14 // For specific info about filters, check out the following links:
15 // http://bidichecker.googlecode.com/svn/trunk/docs/users_guide.html
16 // #TOC-Error-descriptions
17 // http://bidichecker.googlecode.com/svn/trunk/docs/jsdoc/index.html
18 // TODO(ofri): Link to more comprehensive documentation when available.
21 "chrome://history" : {
24 // BUG: http://crbug.com/80791
25 bidichecker.FilterFactory.atText("בדיקה")
29 // BUG: http://crbug.com/80791
30 bidichecker.FilterFactory.atText("Google"),
31 bidichecker.FilterFactory.atText("www.google.com"),
32 // The following two are probably false positives since we can't
33 // completely change the environment to RTL on Linux.
34 // TODO(ofri): Verify that it's indeed a false positive.
35 bidichecker.FilterFactory.locationClass('day'),
36 bidichecker.FilterFactory.locationClass('time')
39 "chrome://settings/autofill" : {
41 // BUG: http://crbug.com/82267
42 bidichecker.FilterFactory.atText("משה ב כהן, דרך מנחם בגין")
45 // BUG: http://crbug.com/90322
46 bidichecker.FilterFactory.atText(
47 "Milton C. Waddams, 4120 Freidrich Lane")
50 "chrome://plugins" : {
53 bidichecker.FilterFactory.atText('x'),
54 // Apparently also a false positive
55 bidichecker.FilterFactory.atText("undefined\n undefined"),
56 bidichecker.FilterFactory.locationClass('plugin-text')
61 // BUG: http://crbug.com/93339
62 bidichecker.FilterFactory.atText("Chrome Web Store"),
63 bidichecker.FilterFactory.atText("File Manager"),
64 bidichecker.FilterFactory.atText("Chrome Apps Debugger")
67 "chrome://feedback#0?description=%D7%91%D7%93%D7%99%D7%A7%D7%94" :
70 // BUG: http://crbug.com/90835
71 bidichecker.FilterFactory.atText("בדיקה")
74 "chrome://feedback#0?description=test" : {
76 // BUG: http://crbug.com/90835
77 bidichecker.FilterFactory.atText("test"),
78 bidichecker.FilterFactory.atText("stub-user@example.com")
81 "chrome://settings/browser" : {
83 // BUG: http://crbug.com/93702
84 bidichecker.FilterFactory.atText(
85 "חדשות תוכן ועדכונים - ידיעות אחרונות")
88 "chrome://history-frame" : {
90 // BUG: http://crbug.com/119595
91 bidichecker.FilterFactory.atText("בדיקה")
94 // BUG: http://crbug.com/119595
95 bidichecker.FilterFactory.atText("Google"),
96 bidichecker.FilterFactory.atText("www.google.com")
100 var globalFilters = {
102 // BUG: http://crbug/158750
103 bidichecker.FilterFactory.locationId("timezone-select")
107 var dir = isRTL ? "RTL" : "LTR";
108 if (!filters.hasOwnProperty(pageName))
110 if (!filters.hasOwnProperty(pageName)) {
111 if (pageName.charAt(pageName.length - 2) == '/')
112 pageName = pageName.substr(0, pageName.length - 2);
114 return globalFilters[dir];
116 if (filters.hasOwnProperty(pageName) &&
117 filters[pageName].hasOwnProperty(dir)) {
118 return filters[pageName][dir].concat(globalFilters[dir]);
120 return globalFilters[dir];
124 function buildPrettyErrors(bidiErrors) {
127 for (idx = 0; idx < bidiErrors.length; ++idx) {
128 prettyErrors += '\n\n';
129 prettyErrors += bidiErrors[idx].toString();
131 prettyErrors += '\n\n';
135 function runBidiChecker(pageName, isRTL) {
136 var filters = filtersForPage(pageName, isRTL);
137 var bidiErrors = bidichecker.checkPage(isRTL, top.document.body, filters);
138 assertTrue(bidiErrors.length == 0, buildPrettyErrors(bidiErrors));