diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-18 08:17:44 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-18 08:17:44 +0000 |
commit | 0dd3a0ab424a01e887ac7f69dbbae6aaee6843c0 (patch) | |
tree | e29d015f414f9a33fff40171b743261bd9f3c82f /content/browser/tab_contents/navigation_entry_unittest.cc | |
parent | 9f60a236323e348ab1a0343d6acdafa99125ac3b (diff) | |
download | chromium_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.cc | 183 |
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()); +} |