• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
TEST_F(BrowserAboutHandlerTest,WillHandleBrowserAboutURL)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