OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/website_settings/website_settings.h" | 5 #include "chrome/browser/ui/website_settings/website_settings.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/at_exit.h" | 10 #include "base/at_exit.h" |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
13 #include "base/message_loop/message_loop.h" | 13 #include "base/message_loop/message_loop.h" |
14 #include "base/strings/string16.h" | 14 #include "base/strings/string16.h" |
15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 16 #include "base/test/histogram_tester.h" |
16 #include "build/build_config.h" | 17 #include "build/build_config.h" |
17 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 18 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
18 #include "chrome/browser/infobars/infobar_service.h" | 19 #include "chrome/browser/infobars/infobar_service.h" |
19 #include "chrome/browser/ui/website_settings/website_settings_ui.h" | 20 #include "chrome/browser/ui/website_settings/website_settings_ui.h" |
20 #include "chrome/browser/usb/usb_chooser_context.h" | 21 #include "chrome/browser/usb/usb_chooser_context.h" |
21 #include "chrome/browser/usb/usb_chooser_context_factory.h" | 22 #include "chrome/browser/usb/usb_chooser_context_factory.h" |
22 #include "chrome/grit/theme_resources.h" | 23 #include "chrome/grit/theme_resources.h" |
23 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 24 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
24 #include "chrome/test/base/testing_profile.h" | 25 #include "chrome/test/base/testing_profile.h" |
25 #include "components/content_settings/core/browser/host_content_settings_map.h" | 26 #include "components/content_settings/core/browser/host_content_settings_map.h" |
(...skipping 860 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
886 TEST_F(WebsiteSettingsTest, InternalPage) { | 887 TEST_F(WebsiteSettingsTest, InternalPage) { |
887 SetURL("chrome://bookmarks"); | 888 SetURL("chrome://bookmarks"); |
888 SetDefaultUIExpectations(mock_ui()); | 889 SetDefaultUIExpectations(mock_ui()); |
889 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE, | 890 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE, |
890 website_settings()->site_connection_status()); | 891 website_settings()->site_connection_status()); |
891 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_INTERNAL_PAGE, | 892 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_INTERNAL_PAGE, |
892 website_settings()->site_identity_status()); | 893 website_settings()->site_identity_status()); |
893 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 894 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
894 } | 895 } |
895 #endif | 896 #endif |
| 897 |
| 898 // Tests that metrics are recorded on a WebsiteSettings for pages with |
| 899 // various security levels. |
| 900 TEST_F(WebsiteSettingsTest, SecurityLevelMetrics) { |
| 901 struct TestCase { |
| 902 const std::string url; |
| 903 const SecurityStateModel::SecurityLevel security_level; |
| 904 const std::string histogram_name; |
| 905 }; |
| 906 const char kGenericHistogram[] = "WebsiteSettings.Action"; |
| 907 base::HistogramTester histograms; |
| 908 |
| 909 const TestCase kTestCases[] = { |
| 910 {"https://example.test", SecurityStateModel::SECURE, |
| 911 "PageInfo.Action.HttpsUrl2"}, |
| 912 {"https://example2.test", SecurityStateModel::NONE, |
| 913 "PageInfo.Action.HttpsUrlDowngraded"}, |
| 914 {"https://example.test", SecurityStateModel::DANGEROUS, |
| 915 "PageInfo.Action.HttpsUrlDangerous"}, |
| 916 {"http://example.test", SecurityStateModel::HTTP_SHOW_WARNING, |
| 917 "PageInfo.Action.HttpWarning"}, |
| 918 {"http://example.test", SecurityStateModel::DANGEROUS, |
| 919 "PageInfo.Action.HttpUrlDangerous"}, |
| 920 }; |
| 921 |
| 922 uint32_t i = 0; |
| 923 for (const auto& test : kTestCases) { |
| 924 SetURL(test.url); |
| 925 security_info_.security_level = test.security_level; |
| 926 ResetMockUI(); |
| 927 ClearWebsiteSettings(); |
| 928 SetDefaultUIExpectations(mock_ui()); |
| 929 |
| 930 histograms.ExpectTotalCount(kGenericHistogram, i * 2); |
| 931 histograms.ExpectTotalCount(test.histogram_name, 0); |
| 932 |
| 933 website_settings()->RecordWebsiteSettingsAction( |
| 934 WebsiteSettings::WebsiteSettingsAction:: |
| 935 WEBSITE_SETTINGS_PERMISSIONS_TAB_SELECTED); |
| 936 |
| 937 // RecordWebsiteSettingsAction() is called during WebsiteSettings |
| 938 // creation in addition to the explicit RecordWebsiteSettingsAction() |
| 939 // call, so it is called twice in total. |
| 940 i++; |
| 941 histograms.ExpectTotalCount(kGenericHistogram, i * 2); |
| 942 histograms.ExpectBucketCount( |
| 943 kGenericHistogram, |
| 944 WebsiteSettings::WebsiteSettingsAction::WEBSITE_SETTINGS_OPENED, i); |
| 945 histograms.ExpectBucketCount(kGenericHistogram, |
| 946 WebsiteSettings::WebsiteSettingsAction:: |
| 947 WEBSITE_SETTINGS_PERMISSIONS_TAB_SELECTED, |
| 948 i); |
| 949 |
| 950 histograms.ExpectTotalCount(test.histogram_name, 2); |
| 951 histograms.ExpectBucketCount( |
| 952 test.histogram_name, |
| 953 WebsiteSettings::WebsiteSettingsAction::WEBSITE_SETTINGS_OPENED, 1); |
| 954 histograms.ExpectBucketCount(test.histogram_name, |
| 955 WebsiteSettings::WebsiteSettingsAction:: |
| 956 WEBSITE_SETTINGS_PERMISSIONS_TAB_SELECTED, |
| 957 1); |
| 958 } |
| 959 } |
OLD | NEW |