Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: chrome/browser/navigation_entry_unittest.cc

Issue 21132: Adds a unit test for NavigationEntry. Also adds a comment to BrowsingInstanc... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/browsing_instance.h ('k') | chrome/test/unit/unittests.vcproj » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 }
OLDNEW
« no previous file with comments | « chrome/browser/browsing_instance.h ('k') | chrome/test/unit/unittests.vcproj » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698