Home | History | Annotate | Download | only in browser
      1 // Copyright (c) 2011 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 "base/basictypes.h"
      6 #include "base/memory/scoped_ptr.h"
      7 #include "chrome/browser/browser_about_handler.h"
      8 #include "chrome/common/about_handler.h"
      9 #include "chrome/common/url_constants.h"
     10 #include "chrome/test/testing_browser_process_test.h"
     11 #include "chrome/test/testing_profile.h"
     12 #include "content/browser/browser_thread.h"
     13 #include "googleurl/src/gurl.h"
     14 #include "testing/gtest/include/gtest/gtest.h"
     15 
     16 typedef TestingBrowserProcessTest BrowserAboutHandlerTest;
     17 
     18 TEST_F(BrowserAboutHandlerTest, WillHandleBrowserAboutURL) {
     19   struct AboutURLTestData {
     20     GURL test_url;
     21     GURL result_url;
     22     bool about_handled;
     23     bool browser_handled;
     24   } test_data[] = {
     25       {
     26         GURL("http://google.com"),
     27         GURL("http://google.com"),
     28         false,
     29         false
     30       },
     31       {
     32         GURL(chrome::kAboutBlankURL),
     33         GURL(chrome::kAboutBlankURL),
     34         false,
     35         false
     36       },
     37       {
     38         GURL(std::string(chrome::kAboutCacheURL) + "/mercury"),
     39         GURL(std::string(chrome::kNetworkViewCacheURL) + "mercury"),
     40         false,
     41         true
     42       },
     43       {
     44         GURL(std::string(chrome::kAboutNetInternalsURL) + "/venus"),
     45         GURL(std::string(chrome::kNetworkViewInternalsURL) + "venus"),
     46         false,
     47         true
     48       },
     49       {
     50         GURL(std::string(chrome::kAboutGpuURL) + "/jupiter"),
     51         GURL(std::string(chrome::kGpuInternalsURL) + "jupiter"),
     52         false,
     53         true
     54       },
     55       {
     56         GURL(std::string(chrome::kAboutAppCacheInternalsURL) + "/earth"),
     57         GURL(std::string(chrome::kAppCacheViewInternalsURL) + "earth"),
     58         false,
     59         true
     60       },
     61       {
     62         GURL(chrome::kAboutPluginsURL),
     63         GURL(chrome::kChromeUIPluginsURL),
     64         false,
     65         true
     66       },
     67       {
     68         GURL(chrome::kAboutCrashURL),
     69         GURL(chrome::kAboutCrashURL),
     70         true,
     71         false
     72       },
     73       {
     74         GURL(chrome::kAboutKillURL),
     75         GURL(chrome::kAboutKillURL),
     76         true,
     77         false
     78       },
     79       {
     80         GURL(chrome::kAboutHangURL),
     81         GURL(chrome::kAboutHangURL),
     82         true,
     83         false
     84       },
     85       {
     86         GURL(chrome::kAboutShorthangURL),
     87         GURL(chrome::kAboutShorthangURL),
     88         true,
     89         false
     90       },
     91       {
     92         GURL("about:memory"),
     93         GURL("chrome://about/memory-redirect"),
     94         false,
     95         true
     96       },
     97       {
     98         GURL("about:mars"),
     99         GURL("chrome://about/mars"),
    100         false,
    101         true
    102       },
    103   };
    104   MessageLoopForUI message_loop;
    105   BrowserThread ui_thread(BrowserThread::UI, &message_loop);
    106   TestingProfile profile;
    107 
    108   for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
    109     GURL url(test_data[i].test_url);
    110     EXPECT_EQ(test_data[i].about_handled,
    111               chrome_about_handler::WillHandle(url));
    112     EXPECT_EQ(test_data[i].browser_handled,
    113               WillHandleBrowserAboutURL(&url, &profile));
    114     EXPECT_EQ(test_data[i].result_url, url);
    115   }
    116 
    117   // Crash the browser process for about:inducebrowsercrashforrealz.
    118   GURL url(chrome::kAboutBrowserCrash);
    119   EXPECT_DEATH(WillHandleBrowserAboutURL(&url, NULL), "");
    120 }
    121