| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2009 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/browser/tab_contents/navigation_entry.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" |
| 7 |
| 8 class NavigationEntryTest : public testing::Test { |
| 9 public: |
| 10 NavigationEntryTest() : instance_(NULL) { |
| 11 } |
| 12 |
| 13 virtual void SetUp() { |
| 14 entry1_.reset(new NavigationEntry(TAB_CONTENTS_WEB)); |
| 15 |
| 16 instance_ = SiteInstance::CreateSiteInstance(NULL); |
| 17 entry2_.reset(new NavigationEntry(TAB_CONTENTS_DOM_UI, instance_, 3, |
| 18 GURL("test:url"), |
| 19 GURL("from"), |
| 20 L"title", |
| 21 PageTransition::TYPED)); |
| 22 } |
| 23 |
| 24 virtual void TearDown() { |
| 25 } |
| 26 |
| 27 protected: |
| 28 scoped_ptr<NavigationEntry> entry1_; |
| 29 scoped_ptr<NavigationEntry> entry2_; |
| 30 // SiteInstances are deleted when their NavigationEntries are gone. |
| 31 SiteInstance* instance_; |
| 32 }; |
| 33 |
| 34 // Test unique ID accessors |
| 35 TEST_F(NavigationEntryTest, NavigationEntryUniqueIDs) { |
| 36 // Two entries should have different IDs by default |
| 37 EXPECT_NE(entry1_.get()->unique_id(), entry2_.get()->unique_id()); |
| 38 |
| 39 // Can set an entry to have the same ID as another |
| 40 entry2_.get()->set_unique_id(entry1_.get()->unique_id()); |
| 41 EXPECT_EQ(entry1_.get()->unique_id(), entry2_.get()->unique_id()); |
| 42 } |
| 43 |
| 44 // Test URL accessors |
| 45 TEST_F(NavigationEntryTest, NavigationEntryURLs) { |
| 46 // Start with no display_url (even if a url is set) |
| 47 EXPECT_FALSE(entry1_.get()->has_display_url()); |
| 48 EXPECT_FALSE(entry2_.get()->has_display_url()); |
| 49 |
| 50 EXPECT_EQ(GURL(), entry1_.get()->url()); |
| 51 EXPECT_EQ(GURL(), entry1_.get()->display_url()); |
| 52 EXPECT_EQ(L"", entry1_.get()->GetTitleForDisplay()); |
| 53 |
| 54 // Setting URL affects display_url and GetTitleForDisplay |
| 55 entry1_.get()->set_url(GURL("http://www.google.com")); |
| 56 EXPECT_EQ(GURL("http://www.google.com"), entry1_.get()->url()); |
| 57 EXPECT_EQ(GURL("http://www.google.com/"), entry1_.get()->display_url()); |
| 58 EXPECT_EQ(L"http://www.google.com/", entry1_.get()->GetTitleForDisplay()); |
| 59 |
| 60 // Title affects GetTitleForDisplay |
| 61 entry1_.get()->set_title(L"Google"); |
| 62 EXPECT_EQ(L"Google", entry1_.get()->GetTitleForDisplay()); |
| 63 |
| 64 // Setting display_url doesn't affect URL |
| 65 entry2_.get()->set_display_url(GURL("display:url")); |
| 66 EXPECT_TRUE(entry2_.get()->has_display_url()); |
| 67 EXPECT_EQ(GURL("test:url"), entry2_.get()->url()); |
| 68 EXPECT_EQ(GURL("display:url"), entry2_.get()->display_url()); |
| 69 |
| 70 // Having a title set in constructor overrides display URL |
| 71 EXPECT_EQ(L"title", entry2_.get()->GetTitleForDisplay()); |
| 72 |
| 73 // User typed URL is independent of the others |
| 74 EXPECT_EQ(GURL(), entry1_.get()->user_typed_url()); |
| 75 EXPECT_EQ(GURL(), entry2_.get()->user_typed_url()); |
| 76 entry2_.get()->set_user_typed_url(GURL("typedurl")); |
| 77 EXPECT_EQ(GURL("typedurl"), entry2_.get()->user_typed_url()); |
| 78 } |
| 79 |
| 80 // Test Favicon inner class |
| 81 TEST_F(NavigationEntryTest, NavigationEntryFavicons) { |
| 82 EXPECT_EQ(GURL(), entry1_.get()->favicon().url()); |
| 83 entry1_.get()->favicon().set_url(GURL("icon")); |
| 84 EXPECT_EQ(GURL("icon"), entry1_.get()->favicon().url()); |
| 85 |
| 86 // Validity not affected by setting URL |
| 87 EXPECT_FALSE(entry1_.get()->favicon().is_valid()); |
| 88 entry1_.get()->favicon().set_is_valid(true); |
| 89 EXPECT_TRUE(entry1_.get()->favicon().is_valid()); |
| 90 } |
| 91 |
| 92 // Test SSLStatus inner class |
| 93 TEST_F(NavigationEntryTest, NavigationEntrySSLStatus) { |
| 94 // Default (not secure) |
| 95 EXPECT_EQ(SECURITY_STYLE_UNKNOWN, entry1_.get()->ssl().security_style()); |
| 96 EXPECT_EQ(SECURITY_STYLE_UNKNOWN, entry2_.get()->ssl().security_style()); |
| 97 EXPECT_EQ(0, entry1_.get()->ssl().cert_id()); |
| 98 EXPECT_EQ(0, entry1_.get()->ssl().cert_status()); |
| 99 EXPECT_EQ(-1, entry1_.get()->ssl().security_bits()); |
| 100 EXPECT_FALSE(entry1_.get()->ssl().has_mixed_content()); |
| 101 EXPECT_FALSE(entry1_.get()->ssl().has_unsafe_content()); |
| 102 |
| 103 // Change from the defaults |
| 104 entry2_.get()->ssl().set_security_style(SECURITY_STYLE_AUTHENTICATED); |
| 105 entry2_.get()->ssl().set_cert_id(4); |
| 106 entry2_.get()->ssl().set_cert_status(1); |
| 107 entry2_.get()->ssl().set_security_bits(0); |
| 108 entry2_.get()->ssl().set_has_unsafe_content(); |
| 109 EXPECT_EQ(SECURITY_STYLE_AUTHENTICATED, |
| 110 entry2_.get()->ssl().security_style()); |
| 111 EXPECT_EQ(4, entry2_.get()->ssl().cert_id()); |
| 112 EXPECT_EQ(1, entry2_.get()->ssl().cert_status()); |
| 113 EXPECT_EQ(0, entry2_.get()->ssl().security_bits()); |
| 114 EXPECT_TRUE(entry2_.get()->ssl().has_unsafe_content()); |
| 115 |
| 116 // Mixed content unaffected by unsafe content |
| 117 EXPECT_FALSE(entry2_.get()->ssl().has_mixed_content()); |
| 118 entry2_.get()->ssl().set_has_mixed_content(); |
| 119 EXPECT_TRUE(entry2_.get()->ssl().has_mixed_content()); |
| 120 } |
| 121 |
| 122 // Test other basic accessors |
| 123 TEST_F(NavigationEntryTest, NavigationEntryAccessors) { |
| 124 // Type |
| 125 EXPECT_EQ(TAB_CONTENTS_WEB, entry1_.get()->tab_type()); |
| 126 EXPECT_EQ(TAB_CONTENTS_DOM_UI, entry2_.get()->tab_type()); |
| 127 |
| 128 // SiteInstance |
| 129 EXPECT_TRUE(entry1_.get()->site_instance() == NULL); |
| 130 EXPECT_EQ(instance_, entry2_.get()->site_instance()); |
| 131 entry1_.get()->set_site_instance(instance_); |
| 132 EXPECT_EQ(instance_, entry1_.get()->site_instance()); |
| 133 |
| 134 // Page type |
| 135 EXPECT_EQ(NavigationEntry::NORMAL_PAGE, entry1_.get()->page_type()); |
| 136 EXPECT_EQ(NavigationEntry::NORMAL_PAGE, entry2_.get()->page_type()); |
| 137 entry2_.get()->set_page_type(NavigationEntry::INTERSTITIAL_PAGE); |
| 138 EXPECT_EQ(NavigationEntry::INTERSTITIAL_PAGE, entry2_.get()->page_type()); |
| 139 |
| 140 // Referrer |
| 141 EXPECT_EQ(GURL(), entry1_.get()->referrer()); |
| 142 EXPECT_EQ(GURL("from"), entry2_.get()->referrer()); |
| 143 entry2_.get()->set_referrer(GURL("from2")); |
| 144 EXPECT_EQ(GURL("from2"), entry2_.get()->referrer()); |
| 145 |
| 146 // Title |
| 147 EXPECT_EQ(std::wstring(), entry1_.get()->title()); |
| 148 EXPECT_EQ(L"title", entry2_.get()->title()); |
| 149 entry2_.get()->set_title(L"title2"); |
| 150 EXPECT_EQ(L"title2", entry2_.get()->title()); |
| 151 |
| 152 // State |
| 153 EXPECT_EQ(std::string(), entry1_.get()->content_state()); |
| 154 EXPECT_EQ(std::string(), entry2_.get()->content_state()); |
| 155 entry2_.get()->set_content_state("state"); |
| 156 EXPECT_EQ("state", entry2_.get()->content_state()); |
| 157 |
| 158 // Page ID |
| 159 EXPECT_EQ(-1, entry1_.get()->page_id()); |
| 160 EXPECT_EQ(3, entry2_.get()->page_id()); |
| 161 entry2_.get()->set_page_id(2); |
| 162 EXPECT_EQ(2, entry2_.get()->page_id()); |
| 163 |
| 164 // Transition type |
| 165 EXPECT_EQ(PageTransition::LINK, entry1_.get()->transition_type()); |
| 166 EXPECT_EQ(PageTransition::TYPED, entry2_.get()->transition_type()); |
| 167 entry2_.get()->set_transition_type(PageTransition::RELOAD); |
| 168 EXPECT_EQ(PageTransition::RELOAD, entry2_.get()->transition_type()); |
| 169 |
| 170 // Post Data |
| 171 EXPECT_FALSE(entry1_.get()->has_post_data()); |
| 172 EXPECT_FALSE(entry2_.get()->has_post_data()); |
| 173 entry2_.get()->set_has_post_data(true); |
| 174 EXPECT_TRUE(entry2_.get()->has_post_data()); |
| 175 |
| 176 // Restored |
| 177 EXPECT_FALSE(entry1_.get()->restored()); |
| 178 EXPECT_FALSE(entry2_.get()->restored()); |
| 179 entry2_.get()->set_restored(true); |
| 180 EXPECT_TRUE(entry2_.get()->restored()); |
| 181 } |
| OLD | NEW |