Home | History | Annotate | Download | only in webui
      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.
      4 
      5 #include "chrome/browser/ui/webui/bidi_checker_web_ui_test.h"
      6 
      7 #include "base/base_paths.h"
      8 #include "base/i18n/rtl.h"
      9 #include "base/message_loop/message_loop.h"
     10 #include "base/path_service.h"
     11 #include "base/prefs/pref_service.h"
     12 #include "base/strings/utf_string_conversions.h"
     13 #include "base/synchronization/waitable_event.h"
     14 #include "base/threading/platform_thread.h"
     15 #include "base/time/time.h"
     16 #include "base/values.h"
     17 #include "chrome/browser/autofill/personal_data_manager_factory.h"
     18 #include "chrome/browser/history/history_service.h"
     19 #include "chrome/browser/history/history_service_factory.h"
     20 #include "chrome/browser/prefs/session_startup_pref.h"
     21 #include "chrome/browser/profiles/profile.h"
     22 #include "chrome/browser/ui/browser.h"
     23 #include "chrome/common/url_constants.h"
     24 #include "chrome/test/base/ui_test_utils.h"
     25 #include "components/autofill/core/browser/autofill_profile.h"
     26 #include "components/autofill/core/browser/autofill_test_utils.h"
     27 #include "components/autofill/core/browser/personal_data_manager.h"
     28 #include "content/public/browser/browser_thread.h"
     29 #include "ui/base/resource/resource_bundle.h"
     30 
     31 #if defined(TOOLKIT_GTK)
     32 #include <gtk/gtk.h>
     33 #endif
     34 
     35 using autofill::AutofillProfile;
     36 using autofill::PersonalDataManager;
     37 
     38 static const base::FilePath::CharType* kWebUIBidiCheckerLibraryJS =
     39     FILE_PATH_LITERAL("third_party/bidichecker/bidichecker_packaged.js");
     40 
     41 namespace {
     42 base::FilePath WebUIBidiCheckerLibraryJSPath() {
     43   base::FilePath src_root;
     44   if (!PathService::Get(base::DIR_SOURCE_ROOT, &src_root))
     45     LOG(ERROR) << "Couldn't find source root";
     46   return src_root.Append(kWebUIBidiCheckerLibraryJS);
     47 }
     48 
     49 // Since synchronization isn't complete for the ResourceBundle class, reload
     50 // locale resources on the IO thread.
     51 // crbug.com/95425, crbug.com/132752
     52 void ReloadLocaleResourcesOnIOThread(const std::string& new_locale) {
     53   if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)) {
     54     LOG(ERROR)
     55         << content::BrowserThread::IO
     56         << " != " << base::PlatformThread::CurrentId();
     57     NOTREACHED();
     58   }
     59 
     60   std::string locale;
     61   {
     62     base::ThreadRestrictions::ScopedAllowIO allow_io_scope;
     63     locale.assign(
     64         ResourceBundle::GetSharedInstance().ReloadLocaleResources(new_locale));
     65   }
     66   ASSERT_FALSE(locale.empty());
     67 }
     68 
     69 // Since synchronization isn't complete for the ResourceBundle class, reload
     70 // locale resources on the IO thread.
     71 // crbug.com/95425, crbug.com/132752
     72 void ReloadLocaleResources(const std::string& new_locale) {
     73   content::BrowserThread::PostTaskAndReply(
     74       content::BrowserThread::IO,
     75       FROM_HERE,
     76       base::Bind(&ReloadLocaleResourcesOnIOThread, base::ConstRef(new_locale)),
     77       base::MessageLoop::QuitClosure());
     78   content::RunMessageLoop();
     79 }
     80 
     81 }  // namespace
     82 
     83 static const base::FilePath::CharType* kBidiCheckerTestsJS =
     84     FILE_PATH_LITERAL("bidichecker_tests.js");
     85 
     86 void WebUIBidiCheckerBrowserTest::SetUp() {
     87   argv_ = CommandLine::ForCurrentProcess()->GetArgs();
     88 }
     89 
     90 void WebUIBidiCheckerBrowserTest::TearDown() {
     91   // Reset command line to the way it was before the test was run.
     92   CommandLine::ForCurrentProcess()->InitFromArgv(argv_);
     93 }
     94 
     95 WebUIBidiCheckerBrowserTest::~WebUIBidiCheckerBrowserTest() {}
     96 
     97 WebUIBidiCheckerBrowserTest::WebUIBidiCheckerBrowserTest() {}
     98 
     99 void WebUIBidiCheckerBrowserTest::SetUpInProcessBrowserTestFixture() {
    100   WebUIBrowserTest::SetUpInProcessBrowserTestFixture();
    101   WebUIBrowserTest::AddLibrary(WebUIBidiCheckerLibraryJSPath());
    102   WebUIBrowserTest::AddLibrary(base::FilePath(kBidiCheckerTestsJS));
    103 }
    104 
    105 void WebUIBidiCheckerBrowserTest::RunBidiCheckerOnPage(
    106     const std::string& page_url, bool is_rtl) {
    107   ui_test_utils::NavigateToURL(browser(), GURL(page_url));
    108   ASSERT_TRUE(RunJavascriptTest("runBidiChecker",
    109                                 Value::CreateStringValue(page_url),
    110                                 Value::CreateBooleanValue(is_rtl)));
    111 }
    112 
    113 void WebUIBidiCheckerBrowserTestLTR::RunBidiCheckerOnPage(
    114     const std::string& page_url) {
    115   WebUIBidiCheckerBrowserTest::RunBidiCheckerOnPage(page_url, false);
    116 }
    117 
    118 void WebUIBidiCheckerBrowserTestRTL::RunBidiCheckerOnPage(
    119     const std::string& page_url) {
    120   WebUIBidiCheckerBrowserTest::RunBidiCheckerOnPage(page_url, true);
    121 }
    122 
    123 void WebUIBidiCheckerBrowserTestRTL::SetUpOnMainThread() {
    124   WebUIBidiCheckerBrowserTest::SetUpOnMainThread();
    125   base::FilePath pak_path;
    126   app_locale_ = base::i18n::GetConfiguredLocale();
    127   ASSERT_TRUE(PathService::Get(base::FILE_MODULE, &pak_path));
    128   pak_path = pak_path.DirName();
    129   pak_path = pak_path.AppendASCII("pseudo_locales");
    130   pak_path = pak_path.AppendASCII("fake-bidi");
    131   pak_path = pak_path.ReplaceExtension(FILE_PATH_LITERAL("pak"));
    132   ResourceBundle::GetSharedInstance().OverrideLocalePakForTest(pak_path);
    133   ReloadLocaleResources("he");
    134   base::i18n::SetICUDefaultLocale("he");
    135 #if defined(OS_POSIX) && defined(TOOLKIT_GTK)
    136   gtk_widget_set_default_direction(GTK_TEXT_DIR_RTL);
    137 #endif
    138 }
    139 
    140 void WebUIBidiCheckerBrowserTestRTL::CleanUpOnMainThread() {
    141   WebUIBidiCheckerBrowserTest::CleanUpOnMainThread();
    142 #if defined(OS_POSIX) && defined(TOOLKIT_GTK)
    143   gtk_widget_set_default_direction(GTK_TEXT_DIR_LTR);
    144 #endif
    145 
    146   base::i18n::SetICUDefaultLocale(app_locale_);
    147   ResourceBundle::GetSharedInstance().OverrideLocalePakForTest(
    148       base::FilePath());
    149   ReloadLocaleResources(app_locale_);
    150 }
    151 
    152 // Tests
    153 
    154 //==============================
    155 // chrome://settings/history
    156 //==============================
    157 
    158 static void SetupHistoryPageTest(Browser* browser,
    159                                  const std::string& page_url,
    160                                  const std::string& page_title) {
    161   HistoryService* history_service = HistoryServiceFactory::GetForProfile(
    162       browser->profile(), Profile::IMPLICIT_ACCESS);
    163   const GURL history_url = GURL(page_url);
    164   history_service->AddPage(
    165       history_url, base::Time::Now(), history::SOURCE_BROWSED);
    166   history_service->SetPageTitle(history_url, UTF8ToUTF16(page_title));
    167 }
    168 
    169 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    170                        TestHistoryPage) {
    171   // Test an Israeli news site with a Hebrew title.
    172   SetupHistoryPageTest(browser(),
    173                        "http://www.ynet.co.il",
    174                        "\xD7\x91\xD7\x93\xD7\x99\xD7\xA7\xD7\x94\x21");
    175   RunBidiCheckerOnPage(chrome::kChromeUIHistoryFrameURL);
    176 }
    177 
    178 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    179                        TestHistoryPage) {
    180   SetupHistoryPageTest(browser(), "http://www.google.com", "Google");
    181   RunBidiCheckerOnPage(chrome::kChromeUIHistoryFrameURL);
    182 }
    183 
    184 //==============================
    185 // chrome://about
    186 //==============================
    187 
    188 // This page isn't localized to an RTL language so we test it only in English.
    189 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestAboutPage) {
    190   RunBidiCheckerOnPage(chrome::kChromeUIAboutURL);
    191 }
    192 
    193 //==============================
    194 // chrome://crashes
    195 //==============================
    196 
    197 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestCrashesPage) {
    198   RunBidiCheckerOnPage(chrome::kChromeUICrashesURL);
    199 }
    200 
    201 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL, TestCrashesPage) {
    202   RunBidiCheckerOnPage(chrome::kChromeUICrashesURL);
    203 }
    204 
    205 //==============================
    206 // chrome://downloads
    207 //==============================
    208 
    209 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    210                        TestDownloadsPageLTR) {
    211   RunBidiCheckerOnPage(chrome::kChromeUIDownloadsURL);
    212 }
    213 
    214 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    215                        TestDownloadsPageRTL) {
    216   RunBidiCheckerOnPage(chrome::kChromeUIDownloadsURL);
    217 }
    218 
    219 //==============================
    220 // chrome://newtab
    221 //==============================
    222 
    223 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestNewTabPage) {
    224   RunBidiCheckerOnPage(chrome::kChromeUINewTabURL);
    225 }
    226 
    227 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL, TestNewTabPage) {
    228   RunBidiCheckerOnPage(chrome::kChromeUINewTabURL);
    229 }
    230 
    231 //==============================
    232 // chrome://plugins
    233 //==============================
    234 
    235 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestPluginsPage) {
    236   RunBidiCheckerOnPage(chrome::kChromeUIPluginsURL);
    237 }
    238 
    239 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL, TestPluginsPage) {
    240   RunBidiCheckerOnPage(chrome::kChromeUIPluginsURL);
    241 }
    242 
    243 //==============================
    244 // chrome://settings-frame
    245 //==============================
    246 
    247 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestSettingsPage) {
    248   RunBidiCheckerOnPage(chrome::kChromeUISettingsFrameURL);
    249 }
    250 
    251 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL, TestSettingsPage) {
    252   RunBidiCheckerOnPage(chrome::kChromeUISettingsFrameURL);
    253 }
    254 
    255 static void SetupSettingsAutofillPageTest(Profile* profile,
    256                                           const char* first_name,
    257                                           const char* middle_name,
    258                                           const char* last_name,
    259                                           const char* email,
    260                                           const char* company,
    261                                           const char* address1,
    262                                           const char* address2,
    263                                           const char* city,
    264                                           const char* state,
    265                                           const char* zipcode,
    266                                           const char* country,
    267                                           const char* phone) {
    268   autofill::test::DisableSystemServices(profile);
    269   AutofillProfile autofill_profile;
    270   autofill::test::SetProfileInfo(&autofill_profile,
    271                                  first_name,
    272                                  middle_name,
    273                                  last_name,
    274                                  email,
    275                                  company,
    276                                  address1,
    277                                  address2,
    278                                  city,
    279                                  state,
    280                                  zipcode,
    281                                  country,
    282                                  phone);
    283   PersonalDataManager* personal_data_manager =
    284       autofill::PersonalDataManagerFactory::GetForProfile(profile);
    285   ASSERT_TRUE(personal_data_manager);
    286   personal_data_manager->AddProfile(autofill_profile);
    287 }
    288 
    289 // http://crbug.com/94642
    290 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    291                        DISABLED_TestSettingsAutofillPage) {
    292   SetupSettingsAutofillPageTest(browser()->profile(),
    293                                 "\xD7\x9E\xD7\xA9\xD7\x94",
    294                                 "\xD7\x91",
    295                                 "\xD7\x9B\xD7\x94\xD7\x9F",
    296                                 "moshe.b.cohen (at) biditest.com",
    297                                 "\xD7\x91\xD7\x93\xD7\x99\xD7\xA7\xD7\x94\x20"
    298                                 "\xD7\x91\xD7\xA2\xD7\x9E",
    299                                 "\xD7\x93\xD7\xA8\xD7\x9A\x20\xD7\x9E\xD7\xA0"
    300                                 "\xD7\x97\xD7\x9D\x20\xD7\x91\xD7\x92\xD7"
    301                                 "\x99\xD7\x9F\x20\x32\x33",
    302                                 "\xD7\xA7\xD7\x95\xD7\x9E\xD7\x94\x20\x32\x36",
    303                                 "\xD7\xAA\xD7\x9C\x20\xD7\x90\xD7\x91\xD7\x99"
    304                                 "\xD7\x91",
    305                                 "",
    306                                 "66183",
    307                                 "\xD7\x99\xD7\xA9\xD7\xA8\xD7\x90\xD7\x9C",
    308                                 "0000");
    309   std::string url(chrome::kChromeUISettingsFrameURL);
    310   url += std::string(chrome::kAutofillSubPage);
    311   RunBidiCheckerOnPage(url);
    312 }
    313 
    314 // http://crbug.com/94642
    315 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    316                        DISABLED_TestSettingsAutofillPage) {
    317   SetupSettingsAutofillPageTest(browser()->profile(),
    318                                 "Milton",
    319                                 "C.",
    320                                 "Waddams",
    321                                 "red.swingline (at) initech.com",
    322                                 "Initech",
    323                                 "4120 Freidrich Lane",
    324                                 "Basement",
    325                                 "Austin",
    326                                 "Texas",
    327                                 "78744",
    328                                 "United States",
    329                                 "5125551234");
    330   std::string url(chrome::kChromeUISettingsFrameURL);
    331   url += std::string(chrome::kAutofillSubPage);
    332   RunBidiCheckerOnPage(url);
    333 }
    334 
    335 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    336                        TestSettingsClearBrowserDataPage) {
    337   std::string url(chrome::kChromeUISettingsFrameURL);
    338   url += std::string(chrome::kClearBrowserDataSubPage);
    339   RunBidiCheckerOnPage(url);
    340 }
    341 
    342 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    343                        TestSettingsClearBrowserDataPage) {
    344   std::string url(chrome::kChromeUISettingsFrameURL);
    345   url += std::string(chrome::kClearBrowserDataSubPage);
    346   RunBidiCheckerOnPage(url);
    347 }
    348 
    349 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    350                        TestSettingsContentSettingsPage) {
    351   std::string url(chrome::kChromeUISettingsFrameURL);
    352   url += std::string(chrome::kContentSettingsSubPage);
    353   RunBidiCheckerOnPage(url);
    354 }
    355 
    356 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    357                        TestSettingsContentSettingsPage) {
    358   std::string url(chrome::kChromeUISettingsFrameURL);
    359   url += std::string(chrome::kContentSettingsSubPage);
    360   RunBidiCheckerOnPage(url);
    361 }
    362 
    363 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    364                        TestSettingsContentSettingsExceptionsPage) {
    365   std::string url(chrome::kChromeUISettingsFrameURL);
    366   url += std::string(chrome::kContentSettingsExceptionsSubPage);
    367   RunBidiCheckerOnPage(url);
    368 }
    369 
    370 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    371                        TestSettingsContentSettingsExceptionsPage) {
    372   std::string url(chrome::kChromeUISettingsFrameURL);
    373   url += std::string(chrome::kContentSettingsExceptionsSubPage);
    374   RunBidiCheckerOnPage(url);
    375 }
    376 
    377 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    378                        TestSettingsLanguageOptionsPage) {
    379   std::string url(chrome::kChromeUISettingsFrameURL);
    380   url += std::string(chrome::kLanguageOptionsSubPage);
    381   RunBidiCheckerOnPage(url);
    382 }
    383 
    384 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    385                        TestSettingsLanguageOptionsPage) {
    386   std::string url(chrome::kChromeUISettingsFrameURL);
    387   url += std::string(chrome::kLanguageOptionsSubPage);
    388   RunBidiCheckerOnPage(url);
    389 }
    390 
    391 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    392                        TestSettingsSearchEnginesOptionsPage) {
    393   std::string url(chrome::kChromeUISettingsFrameURL);
    394   url += std::string(chrome::kSearchEnginesSubPage);
    395   RunBidiCheckerOnPage(url);
    396 }
    397 
    398 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    399                        TestSettingsSearchEnginesOptionsPage) {
    400   std::string url(chrome::kChromeUISettingsFrameURL);
    401   url += std::string(chrome::kSearchEnginesSubPage);
    402   RunBidiCheckerOnPage(url);
    403 }
    404 
    405 //===================================
    406 // chrome://settings-frame/startup
    407 //===================================
    408 
    409 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    410                        TestSettingsFrameStartup) {
    411   std::string url(chrome::kChromeUISettingsFrameURL);
    412   url += "startup";
    413   RunBidiCheckerOnPage(url);
    414 }
    415 
    416 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    417                        TestSettingsFrameStartup) {
    418   std::string url(chrome::kChromeUISettingsFrameURL);
    419   url += "startup";
    420   RunBidiCheckerOnPage(url);
    421 }
    422 
    423 //===================================
    424 // chrome://settings-frame/importData
    425 //===================================
    426 
    427 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    428                        TestSettingsFrameImportData) {
    429   std::string url(chrome::kChromeUISettingsFrameURL);
    430   url += chrome::kImportDataSubPage;
    431   RunBidiCheckerOnPage(url);
    432 }
    433 
    434 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    435                        TestSettingsFrameImportData) {
    436   std::string url(chrome::kChromeUISettingsFrameURL);
    437   url += chrome::kImportDataSubPage;
    438   RunBidiCheckerOnPage(url);
    439 }
    440 
    441 //========================================
    442 // chrome://settings-frame/manageProfile
    443 //========================================
    444 
    445 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    446                        TestSettingsFrameMangageProfile) {
    447   std::string url(chrome::kChromeUISettingsFrameURL);
    448   url += chrome::kManageProfileSubPage;
    449   RunBidiCheckerOnPage(url);
    450 }
    451 
    452 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    453                        TestSettingsFrameMangageProfile) {
    454   std::string url(chrome::kChromeUISettingsFrameURL);
    455   url += chrome::kManageProfileSubPage;
    456   RunBidiCheckerOnPage(url);
    457 }
    458 
    459 //===================================================
    460 // chrome://settings-frame/contentExceptions#cookies
    461 //===================================================
    462 
    463 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    464                        TestSettingsFrameContentExceptionsCookies) {
    465   std::string url(chrome::kChromeUISettingsFrameURL);
    466   url += chrome::kContentSettingsExceptionsSubPage;
    467   url += "#cookies";
    468   RunBidiCheckerOnPage(url);
    469 }
    470 
    471 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    472                        TestSettingsFrameContentExceptionsCookies) {
    473   std::string url(chrome::kChromeUISettingsFrameURL);
    474   url += chrome::kContentSettingsExceptionsSubPage;
    475   url += "#cookies";
    476   RunBidiCheckerOnPage(url);
    477 }
    478 
    479 //===================================================
    480 // chrome://settings-frame/contentExceptions#images
    481 //===================================================
    482 
    483 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    484                        TestSettingsFrameContentExceptionsImages) {
    485   std::string url(chrome::kChromeUISettingsFrameURL);
    486   url += chrome::kContentSettingsExceptionsSubPage;
    487   url += "#images";
    488   RunBidiCheckerOnPage(url);
    489 }
    490 
    491 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    492                        TestSettingsFrameContentExceptionsImages) {
    493   std::string url(chrome::kChromeUISettingsFrameURL);
    494   url += chrome::kContentSettingsExceptionsSubPage;
    495   url += "#images";
    496   RunBidiCheckerOnPage(url);
    497 }
    498 
    499 //======================================================
    500 // chrome://settings-frame/contentExceptions#javascript
    501 //======================================================
    502 
    503 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    504                        TestSettingsFrameContentExceptionsJavascript) {
    505   std::string url(chrome::kChromeUISettingsFrameURL);
    506   url += chrome::kContentSettingsExceptionsSubPage;
    507   url += "#javascript";
    508   RunBidiCheckerOnPage(url);
    509 }
    510 
    511 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    512                        TestSettingsFrameContentExceptionsJavascript) {
    513   std::string url(chrome::kChromeUISettingsFrameURL);
    514   url += chrome::kContentSettingsExceptionsSubPage;
    515   url += "#javascript";
    516   RunBidiCheckerOnPage(url);
    517 }
    518 
    519 //===================================================
    520 // chrome://settings-frame/contentExceptions#plugins
    521 //===================================================
    522 
    523 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    524                        TestSettingsFrameContentExceptionsPlugins) {
    525   std::string url(chrome::kChromeUISettingsFrameURL);
    526   url += chrome::kContentSettingsExceptionsSubPage;
    527   url += "#plugins";
    528   RunBidiCheckerOnPage(url);
    529 }
    530 
    531 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    532                        TestSettingsFrameContentExceptionsPlugins) {
    533   std::string url(chrome::kChromeUISettingsFrameURL);
    534   url += chrome::kContentSettingsExceptionsSubPage;
    535   url += "#plugins";
    536   RunBidiCheckerOnPage(url);
    537 }
    538 
    539 //===================================================
    540 // chrome://settings-frame/contentExceptions#popups
    541 //===================================================
    542 
    543 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    544                        TestSettingsFrameContentExceptionsPopups) {
    545   std::string url(chrome::kChromeUISettingsFrameURL);
    546   url += chrome::kContentSettingsExceptionsSubPage;
    547   url += "#popups";
    548   RunBidiCheckerOnPage(url);
    549 }
    550 
    551 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    552                        TestSettingsFrameContentExceptionsPopups) {
    553   std::string url(chrome::kChromeUISettingsFrameURL);
    554   url += chrome::kContentSettingsExceptionsSubPage;
    555   url += "#popups";
    556   RunBidiCheckerOnPage(url);
    557 }
    558 
    559 //===================================================
    560 // chrome://settings-frame/contentExceptions#location
    561 //===================================================
    562 
    563 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    564                        TestSettingsFrameContentExceptionsLocation) {
    565   std::string url(chrome::kChromeUISettingsFrameURL);
    566   url += chrome::kContentSettingsExceptionsSubPage;
    567   url += "#location";
    568   RunBidiCheckerOnPage(url);
    569 }
    570 
    571 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    572                        TestSettingsFrameContentExceptionsLocation) {
    573   std::string url(chrome::kChromeUISettingsFrameURL);
    574   url += chrome::kContentSettingsExceptionsSubPage;
    575   url += "#location";
    576   RunBidiCheckerOnPage(url);
    577 }
    578 
    579 //===================================================
    580 // chrome://settings-frame/contentExceptions#notifications
    581 //===================================================
    582 
    583 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    584                        TestSettingsFrameContentExceptionsNotifications) {
    585   std::string url(chrome::kChromeUISettingsFrameURL);
    586   url += chrome::kContentSettingsExceptionsSubPage;
    587   url += "#notifications";
    588   RunBidiCheckerOnPage(url);
    589 }
    590 
    591 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    592                        TestSettingsFrameContentExceptionsNotifications) {
    593   std::string url(chrome::kChromeUISettingsFrameURL);
    594   url += chrome::kContentSettingsExceptionsSubPage;
    595   url += "#notifications";
    596   RunBidiCheckerOnPage(url);
    597 }
    598 
    599 //===================================================
    600 // chrome://settings-frame/contentExceptions#mouselock
    601 //===================================================
    602 
    603 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    604                        TestSettingsFrameContentExceptionsMouseLock) {
    605   std::string url(chrome::kChromeUISettingsFrameURL);
    606   url += chrome::kContentSettingsExceptionsSubPage;
    607   url += "#mouselock";
    608   RunBidiCheckerOnPage(url);
    609 }
    610 
    611 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    612                        TestSettingsFrameContentExceptionsMouseLock) {
    613   std::string url(chrome::kChromeUISettingsFrameURL);
    614   url += chrome::kContentSettingsExceptionsSubPage;
    615   url += "#mouselock";
    616   RunBidiCheckerOnPage(url);
    617 }
    618 
    619 //========================================
    620 // chrome://settings-frame/handlers
    621 //========================================
    622 
    623 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    624                        TestSettingsFrameHandler) {
    625   std::string url(chrome::kChromeUISettingsFrameURL);
    626   url += chrome::kHandlerSettingsSubPage;
    627   RunBidiCheckerOnPage(url);
    628 }
    629 
    630 // Fails on chromeos. http://crbug.com/125367
    631 #if defined(OS_CHROMEOS)
    632 #define MAYBE_TestSettingsFrameHandler DISABLED_TestSettingsFrameHandler
    633 #else
    634 #define MAYBE_TestSettingsFrameHandler TestSettingsFrameHandler
    635 #endif
    636 
    637 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    638                        MAYBE_TestSettingsFrameHandler) {
    639   std::string url(chrome::kChromeUISettingsFrameURL);
    640   url += chrome::kHandlerSettingsSubPage;
    641   RunBidiCheckerOnPage(url);
    642 }
    643 
    644 //========================================
    645 // chrome://settings-frame/cookies
    646 //========================================
    647 
    648 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    649                        TestSettingsFrameCookies) {
    650   std::string url(chrome::kChromeUISettingsFrameURL);
    651   url += "cookies";
    652   RunBidiCheckerOnPage(url);
    653 }
    654 
    655 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    656                        TestSettingsFrameCookies) {
    657   std::string url(chrome::kChromeUISettingsFrameURL);
    658   url += "cookies";
    659   RunBidiCheckerOnPage(url);
    660 }
    661 
    662 //========================================
    663 // chrome://settings-frame/passwords
    664 //========================================
    665 
    666 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    667                        TestSettingsFramePasswords) {
    668   std::string url(chrome::kChromeUISettingsFrameURL);
    669   url += "passwords";
    670   RunBidiCheckerOnPage(url);
    671 }
    672 
    673 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    674                        TestSettingsFramePasswords) {
    675   std::string url(chrome::kChromeUISettingsFrameURL);
    676   url += "passwords";
    677   RunBidiCheckerOnPage(url);
    678 }
    679 
    680 //========================================
    681 // chrome://settings-frame/fonts
    682 //========================================
    683 
    684 #if defined(OS_MACOSX)
    685 #define MAYBE_TestSettingsFrameFonts DISABLED_TestSettingsFrameFonts
    686 #else
    687 #define MAYBE_TestSettingsFrameFonts TestSettingsFrameFonts
    688 #endif
    689 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR,
    690                        MAYBE_TestSettingsFrameFonts) {
    691   std::string url(chrome::kChromeUISettingsFrameURL);
    692   url += "fonts";
    693   RunBidiCheckerOnPage(url);
    694 }
    695 
    696 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    697                        TestSettingsFrameFonts) {
    698   std::string url(chrome::kChromeUISettingsFrameURL);
    699   url += "fonts";
    700   RunBidiCheckerOnPage(url);
    701 }
    702 
    703 // Test other uber iframes.
    704 
    705 //==============================
    706 // chrome://extensions-frame
    707 //==============================
    708 
    709 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestExtensionsFrame) {
    710   RunBidiCheckerOnPage(chrome::kChromeUIExtensionsFrameURL);
    711 }
    712 
    713 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL,
    714                        TestExtensionsFrame) {
    715   RunBidiCheckerOnPage(chrome::kChromeUIExtensionsFrameURL);
    716 }
    717 
    718 //==============================
    719 // chrome://help-frame
    720 //==============================
    721 
    722 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestHelpFrame) {
    723   RunBidiCheckerOnPage(chrome::kChromeUIHelpFrameURL);
    724 }
    725 
    726 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL, TestHelpFrame) {
    727   RunBidiCheckerOnPage(chrome::kChromeUIHelpFrameURL);
    728 }
    729 
    730 //==============================
    731 // chrome://history-frame
    732 //==============================
    733 
    734 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestLTR, TestHistoryFrame) {
    735   RunBidiCheckerOnPage(chrome::kChromeUIHistoryFrameURL);
    736 }
    737 
    738 IN_PROC_BROWSER_TEST_F(WebUIBidiCheckerBrowserTestRTL, TestHistoryFrame) {
    739   RunBidiCheckerOnPage(chrome::kChromeUIHistoryFrameURL);
    740 }
    741