Home | History | Annotate | Download | only in webui
      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 
     13 namespace {
     14 
     15 class 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 
     47 typedef InProcessBrowserTest ChromeURLDataManagerTest;
     48 
     49 // Makes sure navigating to the new tab page results in a http status code
     50 // of 200.
     51 IN_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