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

Unified Diff: chrome/browser/ui/website_settings/website_settings_unittest.cc

Issue 2744823004: Move cross-platform Page Info UI code to its own folder. (Closed)
Patch Set: Update test build file with changes not caught by mass-rename.py Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/website_settings/website_settings_ui.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/website_settings/website_settings_unittest.cc
diff --git a/chrome/browser/ui/website_settings/website_settings_unittest.cc b/chrome/browser/ui/website_settings/website_settings_unittest.cc
deleted file mode 100644
index 89119f6ab1ee626ea8ed53aa32ac583b0ee4154d..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/website_settings/website_settings_unittest.cc
+++ /dev/null
@@ -1,724 +0,0 @@
-// Copyright (c) 2012 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 "chrome/browser/ui/website_settings/website_settings.h"
-
-#include <string>
-#include <vector>
-
-#include "base/at_exit.h"
-#include "base/bind.h"
-#include "base/memory/ptr_util.h"
-#include "base/message_loop/message_loop.h"
-#include "base/strings/string16.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/test/histogram_tester.h"
-#include "build/build_config.h"
-#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
-#include "chrome/browser/infobars/infobar_service.h"
-#include "chrome/browser/ui/website_settings/website_settings_ui.h"
-#include "chrome/browser/usb/usb_chooser_context.h"
-#include "chrome/browser/usb/usb_chooser_context_factory.h"
-#include "chrome/grit/theme_resources.h"
-#include "chrome/test/base/chrome_render_view_host_test_harness.h"
-#include "chrome/test/base/testing_profile.h"
-#include "components/content_settings/core/browser/host_content_settings_map.h"
-#include "components/content_settings/core/common/content_settings.h"
-#include "components/content_settings/core/common/content_settings_types.h"
-#include "components/infobars/core/infobar.h"
-#include "content/public/browser/ssl_status.h"
-#include "device/base/mock_device_client.h"
-#include "device/usb/mock_usb_device.h"
-#include "device/usb/mock_usb_service.h"
-#include "net/cert/cert_status_flags.h"
-#include "net/cert/x509_certificate.h"
-#include "net/ssl/ssl_connection_status_flags.h"
-#include "net/test/cert_test_util.h"
-#include "net/test/test_certificate_data.h"
-#include "net/test/test_data_directory.h"
-#include "ppapi/features/features.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using content::SSLStatus;
-using testing::_;
-using testing::AnyNumber;
-using testing::Invoke;
-using testing::Return;
-using testing::SetArgPointee;
-
-namespace {
-
-// SSL cipher suite like specified in RFC5246 Appendix A.5. "The Cipher Suite".
-// Without the CR_ prefix, this clashes with the OS X 10.8 headers.
-int CR_TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x3D;
-
-int SetSSLVersion(int connection_status, int version) {
- // Clear SSL version bits (Bits 20, 21 and 22).
- connection_status &=
- ~(net::SSL_CONNECTION_VERSION_MASK << net::SSL_CONNECTION_VERSION_SHIFT);
- int bitmask = version << net::SSL_CONNECTION_VERSION_SHIFT;
- return bitmask | connection_status;
-}
-
-int SetSSLCipherSuite(int connection_status, int cipher_suite) {
- // Clear cipher suite bits (the 16 lowest bits).
- connection_status &= ~net::SSL_CONNECTION_CIPHERSUITE_MASK;
- return cipher_suite | connection_status;
-}
-
-class MockWebsiteSettingsUI : public WebsiteSettingsUI {
- public:
- virtual ~MockWebsiteSettingsUI() {}
- MOCK_METHOD1(SetCookieInfo, void(const CookieInfoList& cookie_info_list));
- MOCK_METHOD0(SetPermissionInfoStub, void());
- MOCK_METHOD1(SetIdentityInfo, void(const IdentityInfo& identity_info));
-
- void SetPermissionInfo(
- const PermissionInfoList& permission_info_list,
- ChosenObjectInfoList chosen_object_info_list) override {
- SetPermissionInfoStub();
- if (set_permission_info_callback_) {
- set_permission_info_callback_.Run(permission_info_list,
- std::move(chosen_object_info_list));
- }
- }
-
- base::Callback<void(const PermissionInfoList& permission_info_list,
- ChosenObjectInfoList chosen_object_info_list)>
- set_permission_info_callback_;
-};
-
-class WebsiteSettingsTest : public ChromeRenderViewHostTestHarness {
- public:
- WebsiteSettingsTest() : url_("http://www.example.com") {}
-
- ~WebsiteSettingsTest() override {}
-
- void SetUp() override {
- ChromeRenderViewHostTestHarness::SetUp();
-
- // Setup stub SecurityInfo.
- security_info_.security_level = security_state::NONE;
-
- // Create the certificate.
- cert_ =
- net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem");
- ASSERT_TRUE(cert_);
-
- TabSpecificContentSettings::CreateForWebContents(web_contents());
- InfoBarService::CreateForWebContents(web_contents());
-
- // Setup mock ui.
- mock_ui_.reset(new MockWebsiteSettingsUI());
- // Use this rather than gmock's ON_CALL.WillByDefault(Invoke(... because
- // gmock doesn't handle move-only types well.
- mock_ui_->set_permission_info_callback_ = base::Bind(
- &WebsiteSettingsTest::SetPermissionInfo, base::Unretained(this));
- }
-
- void TearDown() override {
- ASSERT_TRUE(website_settings_.get())
- << "No WebsiteSettings instance created.";
- RenderViewHostTestHarness::TearDown();
- website_settings_.reset();
- }
-
- void SetDefaultUIExpectations(MockWebsiteSettingsUI* mock_ui) {
- // During creation |WebsiteSettings| makes the following calls to the ui.
- EXPECT_CALL(*mock_ui, SetPermissionInfoStub());
- EXPECT_CALL(*mock_ui, SetIdentityInfo(_));
- EXPECT_CALL(*mock_ui, SetCookieInfo(_));
- }
-
- void SetURL(const std::string& url) { url_ = GURL(url); }
-
- void SetPermissionInfo(const PermissionInfoList& permission_info_list,
- ChosenObjectInfoList chosen_object_info_list) {
- last_chosen_object_info_.clear();
- for (auto& chosen_object_info : chosen_object_info_list)
- last_chosen_object_info_.push_back(std::move(chosen_object_info));
- }
-
- void ResetMockUI() { mock_ui_.reset(new MockWebsiteSettingsUI()); }
-
- void ClearWebsiteSettings() { website_settings_.reset(nullptr); }
-
- const GURL& url() const { return url_; }
- scoped_refptr<net::X509Certificate> cert() { return cert_; }
- MockWebsiteSettingsUI* mock_ui() { return mock_ui_.get(); }
- const security_state::SecurityInfo& security_info() {
- return security_info_;
- }
- const std::vector<std::unique_ptr<WebsiteSettingsUI::ChosenObjectInfo>>&
- last_chosen_object_info() {
- return last_chosen_object_info_;
- }
- TabSpecificContentSettings* tab_specific_content_settings() {
- return TabSpecificContentSettings::FromWebContents(web_contents());
- }
- InfoBarService* infobar_service() {
- return InfoBarService::FromWebContents(web_contents());
- }
-
- WebsiteSettings* website_settings() {
- if (!website_settings_.get()) {
- website_settings_.reset(new WebsiteSettings(
- mock_ui(), profile(), tab_specific_content_settings(), web_contents(),
- url(), security_info()));
- }
- return website_settings_.get();
- }
-
- device::MockUsbService& usb_service() {
- return *device_client_.usb_service();
- }
-
- security_state::SecurityInfo security_info_;
-
- private:
- device::MockDeviceClient device_client_;
- std::unique_ptr<WebsiteSettings> website_settings_;
- std::unique_ptr<MockWebsiteSettingsUI> mock_ui_;
- scoped_refptr<net::X509Certificate> cert_;
- GURL url_;
- std::vector<std::unique_ptr<WebsiteSettingsUI::ChosenObjectInfo>>
- last_chosen_object_info_;
-};
-
-} // namespace
-
-TEST_F(WebsiteSettingsTest, OnPermissionsChanged) {
- // Setup site permissions.
- HostContentSettingsMap* content_settings =
- HostContentSettingsMapFactory::GetForProfile(profile());
- ContentSetting setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_POPUPS, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_BLOCK);
-#if BUILDFLAG(ENABLE_PLUGINS)
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_PLUGINS, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_DETECT_IMPORTANT_CONTENT);
-#endif
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ASK);
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ASK);
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ASK);
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ASK);
-
- EXPECT_CALL(*mock_ui(), SetIdentityInfo(_));
- EXPECT_CALL(*mock_ui(), SetCookieInfo(_));
-
- // SetPermissionInfo() is called once initially, and then again every time
- // OnSitePermissionChanged() is called.
-#if !BUILDFLAG(ENABLE_PLUGINS)
- // SetPermissionInfo for plugins didn't get called.
- EXPECT_CALL(*mock_ui(), SetPermissionInfoStub()).Times(6);
-#else
- EXPECT_CALL(*mock_ui(), SetPermissionInfoStub()).Times(7);
-#endif
-
- // Execute code under tests.
- website_settings()->OnSitePermissionChanged(CONTENT_SETTINGS_TYPE_POPUPS,
- CONTENT_SETTING_ALLOW);
-#if BUILDFLAG(ENABLE_PLUGINS)
- website_settings()->OnSitePermissionChanged(CONTENT_SETTINGS_TYPE_PLUGINS,
- CONTENT_SETTING_BLOCK);
-#endif
- website_settings()->OnSitePermissionChanged(CONTENT_SETTINGS_TYPE_GEOLOCATION,
- CONTENT_SETTING_ALLOW);
- website_settings()->OnSitePermissionChanged(
- CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW);
- website_settings()->OnSitePermissionChanged(
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, CONTENT_SETTING_ALLOW);
- website_settings()->OnSitePermissionChanged(
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, CONTENT_SETTING_ALLOW);
-
- // Verify that the site permissions were changed correctly.
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_POPUPS, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ALLOW);
-#if BUILDFLAG(ENABLE_PLUGINS)
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_PLUGINS, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_BLOCK);
-#endif
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ALLOW);
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ALLOW);
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ALLOW);
- setting = content_settings->GetContentSetting(
- url(), url(), CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, std::string());
- EXPECT_EQ(setting, CONTENT_SETTING_ALLOW);
-}
-
-TEST_F(WebsiteSettingsTest, OnSiteDataAccessed) {
- EXPECT_CALL(*mock_ui(), SetPermissionInfoStub());
- EXPECT_CALL(*mock_ui(), SetIdentityInfo(_));
- EXPECT_CALL(*mock_ui(), SetCookieInfo(_)).Times(2);
-
- website_settings()->OnSiteDataAccessed();
-}
-
-TEST_F(WebsiteSettingsTest, OnChosenObjectDeleted) {
- scoped_refptr<device::UsbDevice> device =
- new device::MockUsbDevice(0, 0, "Google", "Gizmo", "1234567890");
- usb_service().AddDevice(device);
- UsbChooserContext* store = UsbChooserContextFactory::GetForProfile(profile());
- store->GrantDevicePermission(url(), url(), device->guid());
-
- EXPECT_CALL(*mock_ui(), SetIdentityInfo(_));
- EXPECT_CALL(*mock_ui(), SetCookieInfo(_));
-
- // Access WebsiteSettings so that SetPermissionInfo is called once to populate
- // |last_chosen_object_info_|. It will be called again by
- // OnSiteChosenObjectDeleted.
- EXPECT_CALL(*mock_ui(), SetPermissionInfoStub()).Times(2);
- website_settings();
-
- ASSERT_EQ(1u, last_chosen_object_info().size());
- const WebsiteSettingsUI::ChosenObjectInfo* info =
- last_chosen_object_info()[0].get();
- website_settings()->OnSiteChosenObjectDeleted(info->ui_info, *info->object);
-
- EXPECT_FALSE(store->HasDevicePermission(url(), url(), device));
- EXPECT_EQ(0u, last_chosen_object_info().size());
-}
-
-TEST_F(WebsiteSettingsTest, Malware) {
- security_info_.security_level = security_state::DANGEROUS;
- security_info_.malicious_content_status =
- security_state::MALICIOUS_CONTENT_STATUS_MALWARE;
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_MALWARE,
- website_settings()->site_identity_status());
-}
-
-TEST_F(WebsiteSettingsTest, SocialEngineering) {
- security_info_.security_level = security_state::DANGEROUS;
- security_info_.malicious_content_status =
- security_state::MALICIOUS_CONTENT_STATUS_SOCIAL_ENGINEERING;
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_SOCIAL_ENGINEERING,
- website_settings()->site_identity_status());
-}
-
-TEST_F(WebsiteSettingsTest, UnwantedSoftware) {
- security_info_.security_level = security_state::DANGEROUS;
- security_info_.malicious_content_status =
- security_state::MALICIOUS_CONTENT_STATUS_UNWANTED_SOFTWARE;
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_UNWANTED_SOFTWARE,
- website_settings()->site_identity_status());
-}
-
-TEST_F(WebsiteSettingsTest, HTTPConnection) {
- SetDefaultUIExpectations(mock_ui());
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
-}
-
-TEST_F(WebsiteSettingsTest, HTTPSConnection) {
- security_info_.security_level = security_state::SECURE;
- security_info_.scheme_is_cryptographic = true;
- security_info_.certificate = cert();
- security_info_.cert_status = 0;
- security_info_.security_bits = 81; // No error if > 80.
- int status = 0;
- status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1);
- status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256);
- security_info_.connection_status = status;
-
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
-}
-
-TEST_F(WebsiteSettingsTest, InsecureContent) {
- struct TestCase {
- security_state::SecurityLevel security_level;
- net::CertStatus cert_status;
- security_state::ContentStatus mixed_content_status;
- security_state::ContentStatus content_with_cert_errors_status;
- WebsiteSettings::SiteConnectionStatus expected_site_connection_status;
- WebsiteSettings::SiteIdentityStatus expected_site_identity_status;
- int expected_connection_icon_id;
- };
-
- const TestCase kTestCases[] = {
- // Passive mixed content.
- {security_state::NONE, 0, security_state::CONTENT_STATUS_DISPLAYED,
- security_state::CONTENT_STATUS_NONE,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR},
- // Passive mixed content with a cert error on the main resource.
- {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID,
- security_state::CONTENT_STATUS_DISPLAYED,
- security_state::CONTENT_STATUS_NONE,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_WARNING_MINOR},
- // Active and passive mixed content.
- {security_state::DANGEROUS, 0,
- security_state::CONTENT_STATUS_DISPLAYED_AND_RAN,
- security_state::CONTENT_STATUS_NONE,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD},
- // Active and passive mixed content with a cert error on the main
- // resource.
- {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID,
- security_state::CONTENT_STATUS_DISPLAYED_AND_RAN,
- security_state::CONTENT_STATUS_NONE,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_BAD},
- // Active mixed content.
- {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_RAN,
- security_state::CONTENT_STATUS_NONE,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD},
- // Active mixed content with a cert error on the main resource.
- {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID,
- security_state::CONTENT_STATUS_RAN, security_state::CONTENT_STATUS_NONE,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_BAD},
-
- // Passive subresources with cert errors.
- {security_state::NONE, 0, security_state::CONTENT_STATUS_NONE,
- security_state::CONTENT_STATUS_DISPLAYED,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR},
- // Passive subresources with cert errors, with a cert error on the
- // main resource also. In this case, the subresources with
- // certificate errors are ignored: if the main resource had a cert
- // error, it's not that useful to warn about subresources with cert
- // errors as well.
- {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID,
- security_state::CONTENT_STATUS_NONE,
- security_state::CONTENT_STATUS_DISPLAYED,
- WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED,
- WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD},
- // Passive and active subresources with cert errors.
- {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_NONE,
- security_state::CONTENT_STATUS_DISPLAYED_AND_RAN,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD},
- // Passive and active subresources with cert errors, with a cert
- // error on the main resource also.
- {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID,
- security_state::CONTENT_STATUS_NONE,
- security_state::CONTENT_STATUS_DISPLAYED_AND_RAN,
- WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED,
- WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD},
- // Active subresources with cert errors.
- {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_NONE,
- security_state::CONTENT_STATUS_RAN,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD},
- // Active subresources with cert errors, with a cert error on the main
- // resource also.
- {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID,
- security_state::CONTENT_STATUS_NONE, security_state::CONTENT_STATUS_RAN,
- WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED,
- WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD},
-
- // Passive mixed content and subresources with cert errors.
- {security_state::NONE, 0, security_state::CONTENT_STATUS_DISPLAYED,
- security_state::CONTENT_STATUS_DISPLAYED,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR},
- // Passive mixed content and active subresources with cert errors.
- {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_DISPLAYED,
- security_state::CONTENT_STATUS_RAN,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD},
- // Active mixed content and passive subresources with cert errors.
- {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_RAN,
- security_state::CONTENT_STATUS_DISPLAYED,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD},
- // Passive mixed content, active subresources with cert errors, and a cert
- // error on the main resource.
- {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID,
- security_state::CONTENT_STATUS_DISPLAYED,
- security_state::CONTENT_STATUS_RAN,
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE,
- WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_WARNING_MINOR},
- };
-
- for (const auto& test : kTestCases) {
- ResetMockUI();
- ClearWebsiteSettings();
- security_info_ = security_state::SecurityInfo();
- security_info_.security_level = test.security_level;
- security_info_.scheme_is_cryptographic = true;
- security_info_.certificate = cert();
- security_info_.cert_status = test.cert_status;
- security_info_.security_bits = 81; // No error if > 80.
- security_info_.mixed_content_status = test.mixed_content_status;
- security_info_.content_with_cert_errors_status =
- test.content_with_cert_errors_status;
- int status = 0;
- status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1);
- status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256);
- security_info_.connection_status = status;
-
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(test.expected_site_connection_status,
- website_settings()->site_connection_status());
- EXPECT_EQ(test.expected_site_identity_status,
- website_settings()->site_identity_status());
- EXPECT_EQ(test.expected_connection_icon_id,
- WebsiteSettingsUI::GetConnectionIconID(
- website_settings()->site_connection_status()));
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
- }
-}
-
-TEST_F(WebsiteSettingsTest, HTTPSEVCert) {
- scoped_refptr<net::X509Certificate> ev_cert =
- net::X509Certificate::CreateFromBytes(
- reinterpret_cast<const char*>(google_der),
- sizeof(google_der));
-
- security_info_.security_level = security_state::NONE;
- security_info_.scheme_is_cryptographic = true;
- security_info_.certificate = ev_cert;
- security_info_.cert_status = net::CERT_STATUS_IS_EV;
- security_info_.security_bits = 81; // No error if > 80.
- security_info_.mixed_content_status =
- security_state::CONTENT_STATUS_DISPLAYED;
- int status = 0;
- status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1);
- status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256);
- security_info_.connection_status = status;
-
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(
- WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::UTF8ToUTF16("Google Inc"),
- website_settings()->organization_name());
-}
-
-TEST_F(WebsiteSettingsTest, HTTPSRevocationError) {
- security_info_.security_level = security_state::SECURE;
- security_info_.scheme_is_cryptographic = true;
- security_info_.certificate = cert();
- security_info_.cert_status = net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION;
- security_info_.security_bits = 81; // No error if > 80.
- int status = 0;
- status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1);
- status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256);
- security_info_.connection_status = status;
-
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
-}
-
-TEST_F(WebsiteSettingsTest, HTTPSConnectionError) {
- security_info_.security_level = security_state::SECURE;
- security_info_.scheme_is_cryptographic = true;
- security_info_.certificate = cert();
- security_info_.cert_status = 0;
- security_info_.security_bits = -1;
- int status = 0;
- status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1);
- status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256);
- security_info_.connection_status = status;
-
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
-}
-
-TEST_F(WebsiteSettingsTest, HTTPSPolicyCertConnection) {
- security_info_.security_level =
- security_state::SECURE_WITH_POLICY_INSTALLED_CERT;
- security_info_.scheme_is_cryptographic = true;
- security_info_.certificate = cert();
- security_info_.cert_status = 0;
- security_info_.security_bits = 81; // No error if > 80.
- int status = 0;
- status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1);
- status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256);
- security_info_.connection_status = status;
-
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
-}
-
-TEST_F(WebsiteSettingsTest, HTTPSSHA1) {
- security_info_.security_level = security_state::NONE;
- security_info_.scheme_is_cryptographic = true;
- security_info_.certificate = cert();
- security_info_.cert_status = 0;
- security_info_.security_bits = 81; // No error if > 80.
- int status = 0;
- status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1);
- status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256);
- security_info_.connection_status = status;
- security_info_.sha1_in_chain = true;
-
- SetDefaultUIExpectations(mock_ui());
-
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(
- WebsiteSettings::SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
- EXPECT_EQ(IDR_PAGEINFO_WARNING_MINOR,
- WebsiteSettingsUI::GetIdentityIconID(
- website_settings()->site_identity_status()));
-}
-
-#if !defined(OS_ANDROID)
-TEST_F(WebsiteSettingsTest, NoInfoBar) {
- SetDefaultUIExpectations(mock_ui());
- EXPECT_EQ(0u, infobar_service()->infobar_count());
- website_settings()->OnUIClosing();
- EXPECT_EQ(0u, infobar_service()->infobar_count());
-}
-
-TEST_F(WebsiteSettingsTest, ShowInfoBar) {
- EXPECT_CALL(*mock_ui(), SetIdentityInfo(_));
- EXPECT_CALL(*mock_ui(), SetCookieInfo(_));
-
- EXPECT_CALL(*mock_ui(), SetPermissionInfoStub()).Times(2);
-
- EXPECT_EQ(0u, infobar_service()->infobar_count());
- website_settings()->OnSitePermissionChanged(
- CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW);
- website_settings()->OnUIClosing();
- ASSERT_EQ(1u, infobar_service()->infobar_count());
-
- infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
-}
-#endif
-
-TEST_F(WebsiteSettingsTest, AboutBlankPage) {
- SetURL("about:blank");
- SetDefaultUIExpectations(mock_ui());
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
-}
-
-// On desktop, internal URLs aren't handled by WebsiteSettings class. Instead, a
-// custom and simpler popup is shown, so no need to test.
-#if defined(OS_ANDROID) || defined(OS_IOS)
-TEST_F(WebsiteSettingsTest, InternalPage) {
- SetURL("chrome://bookmarks");
- SetDefaultUIExpectations(mock_ui());
- EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE,
- website_settings()->site_connection_status());
- EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_INTERNAL_PAGE,
- website_settings()->site_identity_status());
- EXPECT_EQ(base::string16(), website_settings()->organization_name());
-}
-#endif
-
-// Tests that metrics are recorded on a WebsiteSettings for pages with
-// various security levels.
-TEST_F(WebsiteSettingsTest, SecurityLevelMetrics) {
- struct TestCase {
- const std::string url;
- const security_state::SecurityLevel security_level;
- const std::string histogram_name;
- };
- const char kGenericHistogram[] = "WebsiteSettings.Action";
-
- const TestCase kTestCases[] = {
- {"https://example.test", security_state::SECURE,
- "Security.PageInfo.Action.HttpsUrl.Valid"},
- {"https://example.test", security_state::EV_SECURE,
- "Security.PageInfo.Action.HttpsUrl.Valid"},
- {"https://example2.test", security_state::NONE,
- "Security.PageInfo.Action.HttpsUrl.Downgraded"},
- {"https://example.test", security_state::DANGEROUS,
- "Security.PageInfo.Action.HttpsUrl.Dangerous"},
- {"http://example.test", security_state::HTTP_SHOW_WARNING,
- "Security.PageInfo.Action.HttpUrl.Warning"},
- {"http://example.test", security_state::DANGEROUS,
- "Security.PageInfo.Action.HttpUrl.Dangerous"},
- {"http://example.test", security_state::NONE,
- "Security.PageInfo.Action.HttpUrl.Neutral"},
- };
-
- for (const auto& test : kTestCases) {
- base::HistogramTester histograms;
- SetURL(test.url);
- security_info_.security_level = test.security_level;
- ResetMockUI();
- ClearWebsiteSettings();
- SetDefaultUIExpectations(mock_ui());
-
- histograms.ExpectTotalCount(kGenericHistogram, 0);
- histograms.ExpectTotalCount(test.histogram_name, 0);
-
- website_settings()->RecordWebsiteSettingsAction(
- WebsiteSettings::WebsiteSettingsAction::
- WEBSITE_SETTINGS_OPENED);
-
- // RecordWebsiteSettingsAction() is called during WebsiteSettings
- // creation in addition to the explicit RecordWebsiteSettingsAction()
- // call, so it is called twice in total.
- histograms.ExpectTotalCount(kGenericHistogram, 2);
- histograms.ExpectBucketCount(
- kGenericHistogram,
- WebsiteSettings::WebsiteSettingsAction::WEBSITE_SETTINGS_OPENED, 2);
-
- histograms.ExpectTotalCount(test.histogram_name, 2);
- histograms.ExpectBucketCount(
- test.histogram_name,
- WebsiteSettings::WebsiteSettingsAction::WEBSITE_SETTINGS_OPENED, 2);
- }
-}
« no previous file with comments | « chrome/browser/ui/website_settings/website_settings_ui.cc ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698