add tests for collapsed elements

This commit is contained in:
Anton Lazarev
2021-06-16 13:06:21 -07:00
parent e91bfd4d3f
commit 5419b32dc0
2 changed files with 106 additions and 0 deletions
@@ -69,6 +69,7 @@ const char kRegionalAdBlockComponentTest64PublicKey[] =
"LwIDAQAB";
using brave_shields::features::kBraveAdblockCnameUncloaking;
using brave_shields::features::kBraveAdblockCollapseBlockedElements;
using brave_shields::features::kBraveAdblockCosmeticFiltering;
using content::BrowserThread;
@@ -1036,6 +1037,94 @@ IN_PROC_BROWSER_TEST_F(AdBlockServiceTest, TagPrefsControlTags) {
AssertTagExists(brave_shields::kLinkedInEmbeds, false);
}
// Load a page with a blocked image, and make sure it is collapsed.
IN_PROC_BROWSER_TEST_F(AdBlockServiceTest, CollapseBlockedImage) {
ASSERT_TRUE(InstallDefaultAdBlockExtension());
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 0ULL);
GURL url = embedded_test_server()->GetURL(kAdBlockTestPage);
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_EQ(true, EvalJs(contents,
"setExpectations(0, 1, 0, 0);"
"addImage('ad_banner.png')"));
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 1ULL);
ASSERT_EQ(true, EvalJs(contents,
"let i = document.getElementsByClassName('adImage');"
"i[0].clientHeight === 0"));
}
// Load a page with a blocked iframe, and make sure it is collapsed.
IN_PROC_BROWSER_TEST_F(AdBlockServiceTest, CollapseBlockedIframe) {
ASSERT_TRUE(InstallDefaultAdBlockExtension());
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 0ULL);
GURL url = embedded_test_server()->GetURL(kAdBlockTestPage);
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_EQ(true, EvalJs(contents, "addFrame('ad_banner.png')"));
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 1ULL);
ASSERT_EQ(true, EvalJs(contents,
"let i = document.getElementsByClassName('adFrame');"
"i[0].clientHeight === 0"));
}
class CollapseBlockedElementsFlagDisabledTest : public AdBlockServiceTest {
public:
CollapseBlockedElementsFlagDisabledTest() {
feature_list_.InitAndDisableFeature(kBraveAdblockCollapseBlockedElements);
}
private:
base::test::ScopedFeatureList feature_list_;
};
// Load a page with a blocked image, and make sure it is not collapsed.
IN_PROC_BROWSER_TEST_F(CollapseBlockedElementsFlagDisabledTest,
DontCollapseBlockedImage) {
ASSERT_TRUE(InstallDefaultAdBlockExtension());
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 0ULL);
GURL url = embedded_test_server()->GetURL(kAdBlockTestPage);
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_EQ(true, EvalJs(contents,
"setExpectations(0, 1, 0, 0);"
"addImage('ad_banner.png')"));
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 1ULL);
ASSERT_EQ(true, EvalJs(contents,
"let i = document.getElementsByClassName('adImage');"
"i[0].clientHeight !== 0"));
}
// Load a page with a blocked iframe, and make sure it is not collapsed.
IN_PROC_BROWSER_TEST_F(CollapseBlockedElementsFlagDisabledTest,
DontCollapseBlockedIframe) {
ASSERT_TRUE(InstallDefaultAdBlockExtension());
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 0ULL);
GURL url = embedded_test_server()->GetURL(kAdBlockTestPage);
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* contents =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_EQ(true, EvalJs(contents, "addFrame('ad_banner.png')"));
EXPECT_EQ(browser()->profile()->GetPrefs()->GetUint64(kAdsBlocked), 1ULL);
ASSERT_EQ(true, EvalJs(contents,
"let i = document.getElementsByClassName('adFrame');"
"i[0].clientHeight !== 0"));
}
// Load a page with a script which uses a redirect data URL.
IN_PROC_BROWSER_TEST_F(AdBlockServiceTest, RedirectRulesAreRespected) {
UpdateAdBlockInstanceWithRules("js_mock_me.js$redirect=noopjs",
+17
View File
@@ -67,6 +67,23 @@ function addImage(src) {
});
}
// Adds an iframe to the DOM with the specified src
function addFrame(src) {
return new Promise(resolve => {
const frame = document.createElement('iframe')
frame.src = src
frame.className = 'adFrame'
frame.addEventListener('load', () => {
resolve(onLoad())
})
frame.addEventListener('error', () => {
resolve(onLoad())
})
document.body.appendChild(frame)
});
}
function installBlockingServiceWorker() {
return new Promise(resolve => {
navigator.serviceWorker.addEventListener('message', msg => {