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