| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/basictypes.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "chrome/browser/browser_about_handler.h" |
| #include "chrome/common/about_handler.h" |
| #include "chrome/common/url_constants.h" |
| #include "chrome/test/testing_browser_process_test.h" |
| #include "chrome/test/testing_profile.h" |
| #include "content/browser/browser_thread.h" |
| #include "googleurl/src/gurl.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| typedef TestingBrowserProcessTest BrowserAboutHandlerTest; |
| |
| TEST_F(BrowserAboutHandlerTest, WillHandleBrowserAboutURL) { |
| struct AboutURLTestData { |
| GURL test_url; |
| GURL result_url; |
| bool about_handled; |
| bool browser_handled; |
| } test_data[] = { |
| { |
| GURL("http://google.com"), |
| GURL("http://google.com"), |
| false, |
| false |
| }, |
| { |
| GURL(chrome::kAboutBlankURL), |
| GURL(chrome::kAboutBlankURL), |
| false, |
| false |
| }, |
| { |
| GURL(std::string(chrome::kAboutCacheURL) + "/mercury"), |
| GURL(std::string(chrome::kNetworkViewCacheURL) + "mercury"), |
| false, |
| true |
| }, |
| { |
| GURL(std::string(chrome::kAboutNetInternalsURL) + "/venus"), |
| GURL(std::string(chrome::kNetworkViewInternalsURL) + "venus"), |
| false, |
| true |
| }, |
| { |
| GURL(std::string(chrome::kAboutGpuURL) + "/jupiter"), |
| GURL(std::string(chrome::kGpuInternalsURL) + "jupiter"), |
| false, |
| true |
| }, |
| { |
| GURL(std::string(chrome::kAboutAppCacheInternalsURL) + "/earth"), |
| GURL(std::string(chrome::kAppCacheViewInternalsURL) + "earth"), |
| false, |
| true |
| }, |
| { |
| GURL(chrome::kAboutPluginsURL), |
| GURL(chrome::kChromeUIPluginsURL), |
| false, |
| true |
| }, |
| { |
| GURL(chrome::kAboutCrashURL), |
| GURL(chrome::kAboutCrashURL), |
| true, |
| false |
| }, |
| { |
| GURL(chrome::kAboutKillURL), |
| GURL(chrome::kAboutKillURL), |
| true, |
| false |
| }, |
| { |
| GURL(chrome::kAboutHangURL), |
| GURL(chrome::kAboutHangURL), |
| true, |
| false |
| }, |
| { |
| GURL(chrome::kAboutShorthangURL), |
| GURL(chrome::kAboutShorthangURL), |
| true, |
| false |
| }, |
| { |
| GURL("about:memory"), |
| GURL("chrome://about/memory-redirect"), |
| false, |
| true |
| }, |
| { |
| GURL("about:mars"), |
| GURL("chrome://about/mars"), |
| false, |
| true |
| }, |
| }; |
| MessageLoopForUI message_loop; |
| BrowserThread ui_thread(BrowserThread::UI, &message_loop); |
| TestingProfile profile; |
| |
| for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) { |
| GURL url(test_data[i].test_url); |
| EXPECT_EQ(test_data[i].about_handled, |
| chrome_about_handler::WillHandle(url)); |
| EXPECT_EQ(test_data[i].browser_handled, |
| WillHandleBrowserAboutURL(&url, &profile)); |
| EXPECT_EQ(test_data[i].result_url, url); |
| } |
| |
| // Crash the browser process for about:inducebrowsercrashforrealz. |
| GURL url(chrome::kAboutBrowserCrash); |
| EXPECT_DEATH(WillHandleBrowserAboutURL(&url, NULL), ""); |
| } |