summaryrefslogtreecommitdiffstats
path: root/content/browser/tab_contents/navigation_entry_unittest.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 08:17:44 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 08:17:44 +0000
commit0dd3a0ab424a01e887ac7f69dbbae6aaee6843c0 (patch)
treee29d015f414f9a33fff40171b743261bd9f3c82f /content/browser/tab_contents/navigation_entry_unittest.cc
parent9f60a236323e348ab1a0343d6acdafa99125ac3b (diff)
downloadchromium_src-0dd3a0ab424a01e887ac7f69dbbae6aaee6843c0.zip
chromium_src-0dd3a0ab424a01e887ac7f69dbbae6aaee6843c0.tar.gz
chromium_src-0dd3a0ab424a01e887ac7f69dbbae6aaee6843c0.tar.bz2
Start moving core pieces of Chrome multi-process code to src\content. I'm starting with tab_contents directory.In future changes the headers that include these files will be updated. Once all the files are moved (i.e. renderer_host, rest of browser, renderer etc), then refactoring can begin so that content\DEPS doesn't have chrome in it.
Review URL: http://codereview.chromium.org/6537015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75369 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser/tab_contents/navigation_entry_unittest.cc')
-rw-r--r--content/browser/tab_contents/navigation_entry_unittest.cc183
1 files changed, 183 insertions, 0 deletions
diff --git a/content/browser/tab_contents/navigation_entry_unittest.cc b/content/browser/tab_contents/navigation_entry_unittest.cc
new file mode 100644
index 0000000..014817c
--- /dev/null
+++ b/content/browser/tab_contents/navigation_entry_unittest.cc
@@ -0,0 +1,183 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/string16.h"
+#include "base/string_util.h"
+#include "base/utf_string_conversions.h"
+#include "chrome/browser/renderer_host/site_instance.h"
+#include "chrome/browser/tab_contents/navigation_entry.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class NavigationEntryTest : public testing::Test {
+ public:
+ NavigationEntryTest() : instance_(NULL) {
+ }
+
+ virtual void SetUp() {
+ entry1_.reset(new NavigationEntry);
+
+ instance_ = SiteInstance::CreateSiteInstance(NULL);
+ entry2_.reset(new NavigationEntry(instance_, 3,
+ GURL("test:url"),
+ GURL("from"),
+ ASCIIToUTF16("title"),
+ PageTransition::TYPED));
+ }
+
+ virtual void TearDown() {
+ }
+
+ protected:
+ scoped_ptr<NavigationEntry> entry1_;
+ scoped_ptr<NavigationEntry> entry2_;
+ // SiteInstances are deleted when their NavigationEntries are gone.
+ SiteInstance* instance_;
+};
+
+// Test unique ID accessors
+TEST_F(NavigationEntryTest, NavigationEntryUniqueIDs) {
+ // Two entries should have different IDs by default
+ EXPECT_NE(entry1_.get()->unique_id(), entry2_.get()->unique_id());
+
+ // Can set an entry to have the same ID as another
+ entry2_.get()->set_unique_id(entry1_.get()->unique_id());
+ EXPECT_EQ(entry1_.get()->unique_id(), entry2_.get()->unique_id());
+}
+
+// Test URL accessors
+TEST_F(NavigationEntryTest, NavigationEntryURLs) {
+ // Start with no virtual_url (even if a url is set)
+ EXPECT_FALSE(entry1_.get()->has_virtual_url());
+ EXPECT_FALSE(entry2_.get()->has_virtual_url());
+
+ EXPECT_EQ(GURL(), entry1_.get()->url());
+ EXPECT_EQ(GURL(), entry1_.get()->virtual_url());
+ EXPECT_TRUE(entry1_.get()->GetTitleForDisplay("").empty());
+
+ // Setting URL affects virtual_url and GetTitleForDisplay
+ entry1_.get()->set_url(GURL("http://www.google.com"));
+ EXPECT_EQ(GURL("http://www.google.com"), entry1_.get()->url());
+ EXPECT_EQ(GURL("http://www.google.com"), entry1_.get()->virtual_url());
+ EXPECT_EQ(ASCIIToUTF16("www.google.com"),
+ entry1_.get()->GetTitleForDisplay(""));
+
+ // Title affects GetTitleForDisplay
+ entry1_.get()->set_title(ASCIIToUTF16("Google"));
+ EXPECT_EQ(ASCIIToUTF16("Google"), entry1_.get()->GetTitleForDisplay(""));
+
+ // Setting virtual_url doesn't affect URL
+ entry2_.get()->set_virtual_url(GURL("display:url"));
+ EXPECT_TRUE(entry2_.get()->has_virtual_url());
+ EXPECT_EQ(GURL("test:url"), entry2_.get()->url());
+ EXPECT_EQ(GURL("display:url"), entry2_.get()->virtual_url());
+
+ // Having a title set in constructor overrides virtual URL
+ EXPECT_EQ(ASCIIToUTF16("title"), entry2_.get()->GetTitleForDisplay(""));
+
+ // User typed URL is independent of the others
+ EXPECT_EQ(GURL(), entry1_.get()->user_typed_url());
+ EXPECT_EQ(GURL(), entry2_.get()->user_typed_url());
+ entry2_.get()->set_user_typed_url(GURL("typedurl"));
+ EXPECT_EQ(GURL("typedurl"), entry2_.get()->user_typed_url());
+}
+
+// Test Favicon inner class
+TEST_F(NavigationEntryTest, NavigationEntryFavicons) {
+ EXPECT_EQ(GURL(), entry1_.get()->favicon().url());
+ entry1_.get()->favicon().set_url(GURL("icon"));
+ EXPECT_EQ(GURL("icon"), entry1_.get()->favicon().url());
+
+ // Validity not affected by setting URL
+ EXPECT_FALSE(entry1_.get()->favicon().is_valid());
+ entry1_.get()->favicon().set_is_valid(true);
+ EXPECT_TRUE(entry1_.get()->favicon().is_valid());
+}
+
+// Test SSLStatus inner class
+TEST_F(NavigationEntryTest, NavigationEntrySSLStatus) {
+ // Default (unknown)
+ EXPECT_EQ(SECURITY_STYLE_UNKNOWN, entry1_.get()->ssl().security_style());
+ EXPECT_EQ(SECURITY_STYLE_UNKNOWN, entry2_.get()->ssl().security_style());
+ EXPECT_EQ(0, entry1_.get()->ssl().cert_id());
+ EXPECT_EQ(0, entry1_.get()->ssl().cert_status());
+ EXPECT_EQ(-1, entry1_.get()->ssl().security_bits());
+ EXPECT_FALSE(entry1_.get()->ssl().displayed_insecure_content());
+ EXPECT_FALSE(entry1_.get()->ssl().ran_insecure_content());
+
+ // Change from the defaults
+ entry2_.get()->ssl().set_security_style(SECURITY_STYLE_AUTHENTICATED);
+ entry2_.get()->ssl().set_cert_id(4);
+ entry2_.get()->ssl().set_cert_status(1);
+ entry2_.get()->ssl().set_security_bits(0);
+ entry2_.get()->ssl().set_displayed_insecure_content();
+ EXPECT_EQ(SECURITY_STYLE_AUTHENTICATED,
+ entry2_.get()->ssl().security_style());
+ EXPECT_EQ(4, entry2_.get()->ssl().cert_id());
+ EXPECT_EQ(1, entry2_.get()->ssl().cert_status());
+ EXPECT_EQ(0, entry2_.get()->ssl().security_bits());
+ EXPECT_TRUE(entry2_.get()->ssl().displayed_insecure_content());
+
+ entry2_.get()->ssl().set_security_style(SECURITY_STYLE_AUTHENTICATION_BROKEN);
+ entry2_.get()->ssl().set_ran_insecure_content();
+ EXPECT_EQ(SECURITY_STYLE_AUTHENTICATION_BROKEN,
+ entry2_.get()->ssl().security_style());
+ EXPECT_TRUE(entry2_.get()->ssl().ran_insecure_content());
+}
+
+// Test other basic accessors
+TEST_F(NavigationEntryTest, NavigationEntryAccessors) {
+ // SiteInstance
+ EXPECT_TRUE(entry1_.get()->site_instance() == NULL);
+ EXPECT_EQ(instance_, entry2_.get()->site_instance());
+ entry1_.get()->set_site_instance(instance_);
+ EXPECT_EQ(instance_, entry1_.get()->site_instance());
+
+ // Page type
+ EXPECT_EQ(NORMAL_PAGE, entry1_.get()->page_type());
+ EXPECT_EQ(NORMAL_PAGE, entry2_.get()->page_type());
+ entry2_.get()->set_page_type(INTERSTITIAL_PAGE);
+ EXPECT_EQ(INTERSTITIAL_PAGE, entry2_.get()->page_type());
+
+ // Referrer
+ EXPECT_EQ(GURL(), entry1_.get()->referrer());
+ EXPECT_EQ(GURL("from"), entry2_.get()->referrer());
+ entry2_.get()->set_referrer(GURL("from2"));
+ EXPECT_EQ(GURL("from2"), entry2_.get()->referrer());
+
+ // Title
+ EXPECT_EQ(string16(), entry1_.get()->title());
+ EXPECT_EQ(ASCIIToUTF16("title"), entry2_.get()->title());
+ entry2_.get()->set_title(ASCIIToUTF16("title2"));
+ EXPECT_EQ(ASCIIToUTF16("title2"), entry2_.get()->title());
+
+ // State
+ EXPECT_EQ(std::string(), entry1_.get()->content_state());
+ EXPECT_EQ(std::string(), entry2_.get()->content_state());
+ entry2_.get()->set_content_state("state");
+ EXPECT_EQ("state", entry2_.get()->content_state());
+
+ // Page ID
+ EXPECT_EQ(-1, entry1_.get()->page_id());
+ EXPECT_EQ(3, entry2_.get()->page_id());
+ entry2_.get()->set_page_id(2);
+ EXPECT_EQ(2, entry2_.get()->page_id());
+
+ // Transition type
+ EXPECT_EQ(PageTransition::LINK, entry1_.get()->transition_type());
+ EXPECT_EQ(PageTransition::TYPED, entry2_.get()->transition_type());
+ entry2_.get()->set_transition_type(PageTransition::RELOAD);
+ EXPECT_EQ(PageTransition::RELOAD, entry2_.get()->transition_type());
+
+ // Post Data
+ EXPECT_FALSE(entry1_.get()->has_post_data());
+ EXPECT_FALSE(entry2_.get()->has_post_data());
+ entry2_.get()->set_has_post_data(true);
+ EXPECT_TRUE(entry2_.get()->has_post_data());
+
+ // Restored
+ EXPECT_EQ(NavigationEntry::RESTORE_NONE, entry1_->restore_type());
+ EXPECT_EQ(NavigationEntry::RESTORE_NONE, entry2_->restore_type());
+ entry2_->set_restore_type(NavigationEntry::RESTORE_LAST_SESSION);
+ EXPECT_EQ(NavigationEntry::RESTORE_LAST_SESSION, entry2_->restore_type());
+}