Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: test/ReferrerMapping.cpp

Issue 5768603836088320: Issue 1564-Fix FilterEngine::Matches for allowing request which is whitelisted in the ascendant node
Patch Set: rename BuildReferrerChain to BuildFrameStructure Created Nov. 25, 2014, 12:40 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/ReferrerMapping.cpp ('K') | « src/ReferrerMapping.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/ReferrerMapping.cpp
===================================================================
--- a/test/ReferrerMapping.cpp
+++ b/test/ReferrerMapping.cpp
@@ -18,21 +18,32 @@
#include <AdblockPlus.h>
#include <gtest/gtest.h>
-TEST(ReferrerMappingTest, EmptyReferrerChain)
+typedef AdblockPlus::FilterEngine::ContentType ContentType;
+
+TEST(ReferrerMappingTest, BuildFrameStructureShouldIncludeUrlItselfWhenThereIsNoMappingEntryForIt)
Wladimir Palant 2014/11/25 15:46:37 Now that you've earned the price for the longest c
{
AdblockPlus::ReferrerMapping referrerMapping;
std::vector<std::string> referrerChain =
- referrerMapping.BuildReferrerChain("first");
+ referrerMapping.BuildFrameStructure("first");
ASSERT_EQ(1, referrerChain.size());
ASSERT_EQ("first", referrerChain[0]);
}
-TEST(ReferrerMappingTest, TwoElementReferrerChain)
+TEST(ReferrerMappingTest, BuildFrameStructureShouldNotIncludeUrlItselfWhenItsTypeIsNotSubdocument)
{
AdblockPlus::ReferrerMapping referrerMapping;
- referrerMapping.Add("second", "first");
+ referrerMapping.Add("first", "", ContentType::CONTENT_TYPE_IMAGE);
std::vector<std::string> referrerChain =
- referrerMapping.BuildReferrerChain("second");
+ referrerMapping.BuildFrameStructure("first");
+ ASSERT_EQ(0, referrerChain.size());
+}
+
+TEST(ReferrerMappingTest, BuildFrameStructureShouldIncludeReferrerIfThereIsNoInfoAboutIt)
+{
+ AdblockPlus::ReferrerMapping referrerMapping;
+ referrerMapping.Add("second", "first", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ std::vector<std::string> referrerChain =
+ referrerMapping.BuildFrameStructure("second");
ASSERT_EQ(2, referrerChain.size());
ASSERT_EQ("first", referrerChain[0]);
ASSERT_EQ("second", referrerChain[1]);
@@ -41,17 +52,17 @@
TEST(ReferrerMappingTest, TenElementReferrerChain)
{
AdblockPlus::ReferrerMapping referrerMapping;
- referrerMapping.Add("second", "first");
- referrerMapping.Add("third", "second");
- referrerMapping.Add("fourth", "third");
- referrerMapping.Add("fifth", "fourth");
- referrerMapping.Add("sixth", "fifth");
- referrerMapping.Add("seventh", "sixth");
- referrerMapping.Add("eighth", "seventh");
- referrerMapping.Add("ninth", "eighth");
- referrerMapping.Add("tenth", "ninth");
+ referrerMapping.Add("second", "first", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("third", "second", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("fourth", "third", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("fifth", "fourth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("sixth", "fifth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("seventh", "sixth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("eighth", "seventh", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("ninth", "eighth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("tenth", "ninth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
std::vector<std::string> referrerChain =
- referrerMapping.BuildReferrerChain("tenth");
+ referrerMapping.BuildFrameStructure("tenth");
ASSERT_EQ(10, referrerChain.size());
ASSERT_EQ("first", referrerChain[0]);
ASSERT_EQ("second", referrerChain[1]);
@@ -68,14 +79,15 @@
TEST(ReferrerMappingTest, CacheOnlyFiveUrls)
{
AdblockPlus::ReferrerMapping referrerMapping(5);
- referrerMapping.Add("second", "first");
- referrerMapping.Add("third", "second");
- referrerMapping.Add("fourth", "third");
- referrerMapping.Add("fifth", "fourth");
- referrerMapping.Add("sixth", "fifth");
- referrerMapping.Add("seventh", "sixth");
+ std::string outOfCacheUrl = "first";
+ referrerMapping.Add("second", outOfCacheUrl, ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("third", "second", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("fourth", "third", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("fifth", "fourth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("sixth", "fifth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("seventh", "sixth", ContentType::CONTENT_TYPE_SUBDOCUMENT);
std::vector<std::string> referrerChain =
- referrerMapping.BuildReferrerChain("seventh");
+ referrerMapping.BuildFrameStructure("seventh");
ASSERT_EQ(6, referrerChain.size());
ASSERT_EQ("second", referrerChain[0]);
ASSERT_EQ("third", referrerChain[1]);
@@ -84,3 +96,34 @@
ASSERT_EQ("sixth", referrerChain[4]);
ASSERT_EQ("seventh", referrerChain[5]);
}
+
+TEST(ReferrerMappingTest, BuildFrameStructureShouldIncludeOnlySubdocumentReferrers)
+{
+ AdblockPlus::ReferrerMapping referrerMapping;
+ referrerMapping.Add("iframe1", "root-page", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("other", "iframe1", ContentType::CONTENT_TYPE_OTHER);
+ referrerMapping.Add("script", "other", ContentType::CONTENT_TYPE_SCRIPT);
+ referrerMapping.Add("image", "script", ContentType::CONTENT_TYPE_IMAGE);
+ referrerMapping.Add("stylesheet", "image", ContentType::CONTENT_TYPE_STYLESHEET);
+ referrerMapping.Add("object", "stylesheet", ContentType::CONTENT_TYPE_OBJECT);
+ referrerMapping.Add("iframe2", "object", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerMapping.Add("document", "iframe2", ContentType::CONTENT_TYPE_DOCUMENT);
+ referrerMapping.Add("xmlhttprequest", "document", ContentType::CONTENT_TYPE_XMLHTTPREQUEST);
+ referrerMapping.Add("object subrequest", "xmlhttprequest", ContentType::CONTENT_TYPE_OBJECT_SUBREQUEST);
+ referrerMapping.Add("font", "object subrequest", ContentType::CONTENT_TYPE_FONT);
+ referrerMapping.Add("media", "font", ContentType::CONTENT_TYPE_MEDIA);
+
+ std::vector<std::string> referrerChain = referrerMapping.BuildFrameStructure("media");
+ ASSERT_EQ(3, referrerChain.size());
+ EXPECT_EQ("root-page", referrerChain[0]);
+ EXPECT_EQ("iframe1", referrerChain[1]);
+ EXPECT_EQ("iframe2", referrerChain[2]);
+
+ referrerMapping.Add("iframe3", "media", ContentType::CONTENT_TYPE_SUBDOCUMENT);
+ referrerChain = referrerMapping.BuildFrameStructure("iframe3");
+ ASSERT_EQ(4, referrerChain.size());
+ EXPECT_EQ("root-page", referrerChain[0]);
+ EXPECT_EQ("iframe1", referrerChain[1]);
+ EXPECT_EQ("iframe2", referrerChain[2]);
+ EXPECT_EQ("iframe3", referrerChain[3]);
+}
« src/ReferrerMapping.cpp ('K') | « src/ReferrerMapping.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld