add tests for collapsed elements
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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 => {
|
||||
|
||||
Reference in New Issue
Block a user