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

Unified Diff: chrome/browser/ui/page_info/page_info_unittest.cc

Issue 2873313002: [subresource_filter] Gate Page Info on activation (i.e. website setting) (Closed)
Patch Set: Created 3 years, 7 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
Index: chrome/browser/ui/page_info/page_info_unittest.cc
diff --git a/chrome/browser/ui/page_info/page_info_unittest.cc b/chrome/browser/ui/page_info/page_info_unittest.cc
index bd500ab48ed56f3bef135e48804e2ce88fe3f772..07f5dd24adab12b8322ecfb63dd07ab209e6eb91 100644
--- a/chrome/browser/ui/page_info/page_info_unittest.cc
+++ b/chrome/browser/ui/page_info/page_info_unittest.cc
@@ -14,6 +14,7 @@
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/histogram_tester.h"
+#include "base/test/scoped_feature_list.h"
#include "build/build_config.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/infobars/infobar_service.h"
@@ -26,7 +27,9 @@
#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 "components/subresource_filter/core/browser/subresource_filter_features.h"
#include "content/public/browser/ssl_status.h"
+#include "content/public/common/content_switches.h"
#include "device/base/mock_device_client.h"
#include "device/usb/mock_usb_device.h"
#include "device/usb/mock_usb_service.h"
@@ -114,11 +117,7 @@ class PageInfoTest : public ChromeRenderViewHostTestHarness {
InfoBarService::CreateForWebContents(web_contents());
// Setup mock ui.
- mock_ui_.reset(new MockPageInfoUI());
- // 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(&PageInfoTest::SetPermissionInfo, base::Unretained(this));
+ ResetMockUI();
}
void TearDown() override {
@@ -141,9 +140,17 @@ class PageInfoTest : public ChromeRenderViewHostTestHarness {
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));
+ last_permission_info_list_ = permission_info_list;
+ }
+
+ void ResetMockUI() {
+ mock_ui_.reset(new MockPageInfoUI());
+ // 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(&PageInfoTest::SetPermissionInfo, base::Unretained(this));
}
- void ResetMockUI() { mock_ui_.reset(new MockPageInfoUI()); }
void ClearPageInfo() { page_info_.reset(nullptr); }
@@ -155,6 +162,9 @@ class PageInfoTest : public ChromeRenderViewHostTestHarness {
last_chosen_object_info() {
return last_chosen_object_info_;
}
+ const PermissionInfoList& last_permission_info_list() {
+ return last_permission_info_list_;
+ }
TabSpecificContentSettings* tab_specific_content_settings() {
return TabSpecificContentSettings::FromWebContents(web_contents());
}
@@ -185,6 +195,7 @@ class PageInfoTest : public ChromeRenderViewHostTestHarness {
GURL url_;
std::vector<std::unique_ptr<PageInfoUI::ChosenObjectInfo>>
last_chosen_object_info_;
+ PermissionInfoList last_permission_info_list_;
};
} // namespace
@@ -757,3 +768,38 @@ TEST_F(PageInfoTest, SecurityLevelMetrics) {
PageInfo::PageInfoAction::PAGE_INFO_OPENED, 2);
}
}
+
+// Tests that the SubresourceFilter setting is omitted correctly.
+TEST_F(PageInfoTest, SubresourceFilterSetting_MatchesActivation) {
+ base::test::ScopedFeatureList feature_list;
+ feature_list.InitAndEnableFeature(
+ subresource_filter::kSafeBrowsingSubresourceFilterExperimentalUI);
+ auto showing_setting = [](const PermissionInfoList& permissions) {
+ for (const auto& permission : permissions) {
+ if (permission.type == CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER)
+ return true;
+ }
+ return false;
+ };
+
+ // By default, the setting should not appear at all.
+ SetURL("https://example.test/");
+ SetDefaultUIExpectations(mock_ui());
+ page_info();
+ EXPECT_FALSE(showing_setting(last_permission_info_list()));
+
+ // Reset state.
+ ResetMockUI();
+ ClearPageInfo();
+ SetDefaultUIExpectations(mock_ui());
+
+ // Now, simulate activation on that origin, which is encoded by the existence
+ // of the website setting. The setting should then appear in page_info.
+ HostContentSettingsMap* content_settings =
+ HostContentSettingsMapFactory::GetForProfile(profile());
+ content_settings->SetWebsiteSettingDefaultScope(
+ url(), GURL(), CONTENT_SETTINGS_TYPE_SUBRESOURCE_FILTER_DATA,
+ std::string(), base::MakeUnique<base::DictionaryValue>());
+ page_info();
+ EXPECT_TRUE(showing_setting(last_permission_info_list()));
+}
« chrome/browser/ui/page_info/page_info.cc ('K') | « chrome/browser/ui/page_info/page_info.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698