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

Unified Diff: ios/chrome/browser/web/blocked_popup_tab_helper_unittest.mm

Issue 2711283002: Unit test for allowing popups. (Closed)
Patch Set: Created 3 years, 10 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/web/blocked_popup_tab_helper_unittest.mm
diff --git a/ios/chrome/browser/web/blocked_popup_tab_helper_unittest.mm b/ios/chrome/browser/web/blocked_popup_tab_helper_unittest.mm
index e56dd1525b1d4344c5f1ef0958c07c60a1401a85..2e9050c663637f7808fff55a71ef8699a9417b44 100644
--- a/ios/chrome/browser/web/blocked_popup_tab_helper_unittest.mm
+++ b/ios/chrome/browser/web/blocked_popup_tab_helper_unittest.mm
@@ -6,6 +6,7 @@
#include "base/memory/ptr_util.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
+#include "components/infobars/core/confirm_infobar_delegate.h"
#include "components/infobars/core/infobar.h"
#include "components/infobars/core/infobar_manager.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
@@ -39,6 +40,10 @@ class BlockedPopupTabHelperTest : public ChromeWebTest {
BlockedPopupTabHelper* GetBlockedPopupTabHelper() {
return BlockedPopupTabHelper::FromWebState(&web_state_);
}
+ // Returns InfoBarManager attached to |web_state_|.
+ infobars::InfoBarManager* GetInfobarManager() {
+ return InfoBarManagerImpl::FromWebState(&web_state_);
+ }
web::TestWebState web_state_;
};
@@ -71,6 +76,33 @@ TEST_F(BlockedPopupTabHelperTest, ShouldBlockPopup) {
EXPECT_FALSE(GetBlockedPopupTabHelper()->ShouldBlockPopup(source_url2));
}
+// Tests that allowing blocked popup calls |show_popup_handler| and allows
+// future popups for the source url.
+TEST_F(BlockedPopupTabHelperTest, AllowBlockedPopup) {
+ const GURL source_url("https://source-url");
+ ASSERT_TRUE(GetBlockedPopupTabHelper()->ShouldBlockPopup(source_url));
+
+ // Block popup.
+ const GURL target_url("https://target-url");
+ web::Referrer referrer(source_url, web::ReferrerPolicyDefault);
+ __block bool show_popup_handler_was_called = false;
+ web::BlockedPopupInfo popup_info(target_url, referrer, nil, ^{
+ show_popup_handler_was_called = true;
+ });
+ GetBlockedPopupTabHelper()->HandlePopup(popup_info);
+
+ // Allow blocked popup.
+ ASSERT_EQ(1U, GetInfobarManager()->infobar_count());
+ infobars::InfoBar* infobar = GetInfobarManager()->infobar_at(0);
+ auto delegate = infobar->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(delegate);
+ delegate->Accept();
+
+ // Verify that handler was called and popups are allowed for |test_url|.
+ EXPECT_TRUE(show_popup_handler_was_called);
+ EXPECT_FALSE(GetBlockedPopupTabHelper()->ShouldBlockPopup(source_url));
+}
+
// Tests that an infobar is added to the infobar manager when
// BlockedPopupTabHelper::HandlePopup() is called.
TEST_F(BlockedPopupTabHelperTest, ShowAndDismissInfoBar) {
@@ -78,19 +110,17 @@ TEST_F(BlockedPopupTabHelperTest, ShowAndDismissInfoBar) {
web::BlockedPopupInfo popup_info(test_url, web::Referrer(), nil, nil);
// Check that there are no infobars showing and no registered observers.
- infobars::InfoBarManager* infobar_manager =
- InfoBarManagerImpl::FromWebState(&web_state_);
- EXPECT_EQ(0U, infobar_manager->infobar_count());
+ EXPECT_EQ(0U, GetInfobarManager()->infobar_count());
EXPECT_FALSE(IsObservingSources());
// Call |HandlePopup| to show an infobar.
GetBlockedPopupTabHelper()->HandlePopup(popup_info);
- ASSERT_EQ(1U, infobar_manager->infobar_count());
+ ASSERT_EQ(1U, GetInfobarManager()->infobar_count());
EXPECT_TRUE(IsObservingSources());
// Dismiss the infobar and check that the tab helper no longer has any
// registered observers.
- infobar_manager->infobar_at(0)->RemoveSelf();
- EXPECT_EQ(0U, infobar_manager->infobar_count());
+ GetInfobarManager()->infobar_at(0)->RemoveSelf();
+ EXPECT_EQ(0U, GetInfobarManager()->infobar_count());
EXPECT_FALSE(IsObservingSources());
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698