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 "chrome/common/url_constants.h" 6#include "chrome/test/base/in_process_browser_test.h" 7#include "chrome/test/base/ui_test_utils.h" 8#include "content/public/browser/navigation_details.h" 9#include "content/public/browser/notification_registrar.h" 10#include "content/public/browser/notification_service.h" 11#include "content/public/browser/notification_source.h" 12#include "content/public/browser/notification_types.h" 13 14namespace { 15 16class NavigationNotificationObserver : public content::NotificationObserver { 17 public: 18 NavigationNotificationObserver() 19 : got_navigation_(false), 20 http_status_code_(0) { 21 registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_COMMITTED, 22 content::NotificationService::AllSources()); 23 } 24 25 virtual void Observe(int type, 26 const content::NotificationSource& source, 27 const content::NotificationDetails& details) OVERRIDE { 28 DCHECK_EQ(content::NOTIFICATION_NAV_ENTRY_COMMITTED, type); 29 got_navigation_ = true; 30 http_status_code_ = 31 content::Details<content::LoadCommittedDetails>(details)-> 32 http_status_code; 33 } 34 35 int http_status_code() const { return http_status_code_; } 36 bool got_navigation() const { return got_navigation_; } 37 38 private: 39 content::NotificationRegistrar registrar_; 40 int got_navigation_; 41 int http_status_code_; 42 43 DISALLOW_COPY_AND_ASSIGN(NavigationNotificationObserver); 44}; 45 46} // namespace 47 48typedef InProcessBrowserTest ChromeURLDataManagerTest; 49 50// Makes sure navigating to the new tab page results in a http status code 51// of 200. 52IN_PROC_BROWSER_TEST_F(ChromeURLDataManagerTest, 200) { 53 NavigationNotificationObserver observer; 54 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUINewTabURL)); 55 EXPECT_TRUE(observer.got_navigation()); 56 EXPECT_EQ(200, observer.http_status_code()); 57} 58