15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_about_handler.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "url/gurl.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread;
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef testing::Test BrowserAboutHandlerTest;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(BrowserAboutHandlerTest, WillHandleBrowserAboutURL) {
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  std::string chrome_prefix(content::kChromeUIScheme);
2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  chrome_prefix.append(url::kStandardSchemeSeparator);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct AboutURLTestData {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GURL test_url;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GURL result_url;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } test_data[] = {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL("http://google.com"),
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL("http://google.com")
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        GURL(url::kAboutBlankURL),
32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)        GURL(url::kAboutBlankURL)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIMemoryHost),
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIMemoryHost)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIDefaultHost),
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIVersionHost)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIAboutHost),
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIChromeURLsHost)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUICacheHost),
48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        GURL(chrome_prefix + content::kChromeUINetworkViewCacheHost)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUISignInInternalsHost),
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUISignInInternalsHost)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUISyncHost),
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUISyncInternalsHost)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      },
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIInvalidationsHost),
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)        GURL(chrome_prefix + chrome::kChromeUIInvalidationsHost)
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      },
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      {
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + "host/path?query#ref"),
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        GURL(chrome_prefix + "host/path?query#ref"),
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  base::MessageLoopForUI message_loop;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestingProfile profile;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (size_t i = 0; i < ARRAYSIZE_UNSAFE(test_data); ++i) {
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    GURL url(test_data[i].test_url);
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    WillHandleBrowserAboutURL(&url, &profile);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXPECT_EQ(test_data[i].result_url, url);
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
77