| Index: test/FilterEngine.cpp |
| diff --git a/test/FilterEngine.cpp b/test/FilterEngine.cpp |
| index 4490808220d60beae97a6be42f94fd70bcc47afc..1abe15d0910e2d8391478de8d1859b479a85af21 100644 |
| --- a/test/FilterEngine.cpp |
| +++ b/test/FilterEngine.cpp |
| @@ -51,8 +51,6 @@ namespace |
| class FilterEngineTestGeneric : public BaseJsTest |
| { |
| protected: |
| - FilterEnginePtr filterEngine; |
| - |
| void SetUp() override |
| { |
| LazyFileSystemT* fileSystem; |
| @@ -62,7 +60,12 @@ namespace |
| platformParams.fileSystem.reset(fileSystem = new LazyFileSystemT()); |
| platformParams.webRequest.reset(new NoopWebRequest()); |
| platform.reset(new Platform(std::move(platformParams))); |
| - filterEngine = CreateFilterEngine(*fileSystem, *platform); |
| + ::CreateFilterEngine(*fileSystem, *platform); |
| + } |
| + |
| + FilterEngine& GetFilterEngine() |
| + { |
| + return platform->GetFilterEngine(); |
| } |
| }; |
| @@ -97,19 +100,19 @@ namespace |
| platform->SetUpJsEngine(appInfo); |
| } |
| - FilterEnginePtr CreateFilterEngine(const FilterEngine::CreationParameters& creationParams = FilterEngine::CreationParameters()) |
| + FilterEngine& CreateFilterEngine(const FilterEngine::CreationParameters& creationParams = FilterEngine::CreationParameters()) |
| { |
| - FilterEnginePtr retValue; |
| - platform->CreateFilterEngineAsync(creationParams, [&retValue](const FilterEnginePtr& filterEngine) |
| + bool isFilterEngineReady = false; |
| + platform->CreateFilterEngineAsync(creationParams, [&isFilterEngineReady](const FilterEngine& filterEngine) |
| { |
| - retValue = filterEngine; |
| + isFilterEngineReady = true; |
| }); |
| - while (!retValue && !fileSystemTasks.empty()) |
| + while (!isFilterEngineReady && !fileSystemTasks.empty()) |
| { |
| (*fileSystemTasks.begin())(); |
| fileSystemTasks.pop_front(); |
| } |
| - return retValue; |
| + return platform->GetFilterEngine(); |
| } |
| void TearDown() override |
| @@ -162,12 +165,13 @@ namespace |
| ConnectionTypes capturedConnectionTypes; |
| bool isConnectionAllowed; |
| std::vector<std::function<void(bool)>> isSubscriptionDownloadAllowedCallbacks; |
| - FilterEnginePtr filterEngine; |
| LazyFileSystem* fileSystem; |
| + bool isFilterEngineCreated; |
| void SetUp() |
| { |
| isConnectionAllowed = true; |
| + isFilterEngineCreated = false; |
| ThrowingPlatformCreationParameters platformParams; |
| platformParams.logSystem.reset(new LazyLogSystem()); |
| @@ -185,20 +189,28 @@ namespace |
| }; |
| } |
| + FilterEngine& GetFilterEngine() |
| + { |
| + if (!isFilterEngineCreated) |
| + throw std::logic_error("Check that FilterEngine is properly initialized"); |
| + return platform->GetFilterEngine(); |
| + } |
| + |
| Subscription EnsureExampleSubscriptionAndForceUpdate(const std::string& apppendToUrl = std::string()) |
| { |
| auto subscriptionUrl = "http://example" + apppendToUrl; |
| bool isSubscriptionDownloadStatusReceived = false; |
| - if (!filterEngine) |
| + if (!isFilterEngineCreated) |
| { |
| - filterEngine = CreateFilterEngine(*fileSystem, *platform, createParams); |
| - filterEngine->SetFilterChangeCallback([&isSubscriptionDownloadStatusReceived, &subscriptionUrl](const std::string& action, JsValue&& item) |
| + ::CreateFilterEngine(*fileSystem, *platform, createParams); |
| + isFilterEngineCreated = true; |
| + platform->GetFilterEngine().SetFilterChangeCallback([&isSubscriptionDownloadStatusReceived, &subscriptionUrl](const std::string& action, JsValue&& item) |
| { |
| if (action == "subscription.downloadStatus" && item.GetProperty("url").AsString() == subscriptionUrl) |
| isSubscriptionDownloadStatusReceived = true; |
| }); |
| } |
| - auto subscription = filterEngine->GetSubscription(subscriptionUrl); |
| + auto subscription = platform->GetFilterEngine().GetSubscription(subscriptionUrl); |
| EXPECT_EQ(0u, subscription.GetProperty("filters").AsList().size()) << subscriptionUrl; |
| EXPECT_TRUE(subscription.GetProperty("downloadStatus").IsNull()) << subscriptionUrl; |
| subscription.UpdateFilters(); |
| @@ -239,21 +251,22 @@ namespace |
| TEST_F(FilterEngineTest, FilterCreation) |
| { |
| - AdblockPlus::Filter filter1 = filterEngine->GetFilter("foo"); |
| + auto& filterEngine = GetFilterEngine(); |
| + AdblockPlus::Filter filter1 = filterEngine.GetFilter("foo"); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, filter1.GetType()); |
| - AdblockPlus::Filter filter2 = filterEngine->GetFilter("@@foo"); |
| + AdblockPlus::Filter filter2 = filterEngine.GetFilter("@@foo"); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, filter2.GetType()); |
| - AdblockPlus::Filter filter3 = filterEngine->GetFilter("example.com##foo"); |
| + AdblockPlus::Filter filter3 = filterEngine.GetFilter("example.com##foo"); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_ELEMHIDE, filter3.GetType()); |
| - AdblockPlus::Filter filter4 = filterEngine->GetFilter("example.com#@#foo"); |
| + AdblockPlus::Filter filter4 = filterEngine.GetFilter("example.com#@#foo"); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_ELEMHIDE_EXCEPTION, filter4.GetType()); |
| - AdblockPlus::Filter filter5 = filterEngine->GetFilter(" foo "); |
| + AdblockPlus::Filter filter5 = filterEngine.GetFilter(" foo "); |
| ASSERT_EQ(filter1, filter5); |
| } |
| TEST_F(FilterEngineTest, FilterProperties) |
| { |
| - AdblockPlus::Filter filter = filterEngine->GetFilter("foo"); |
| + AdblockPlus::Filter filter = GetFilterEngine().GetFilter("foo"); |
| ASSERT_TRUE(filter.GetProperty("stringFoo").IsUndefined()); |
| ASSERT_TRUE(filter.GetProperty("intFoo").IsUndefined()); |
| @@ -269,29 +282,30 @@ TEST_F(FilterEngineTest, FilterProperties) |
| TEST_F(FilterEngineTest, AddRemoveFilters) |
| { |
| - ASSERT_EQ(0u, filterEngine->GetListedFilters().size()); |
| - AdblockPlus::Filter filter = filterEngine->GetFilter("foo"); |
| - ASSERT_EQ(0u, filterEngine->GetListedFilters().size()); |
| + auto& filterEngine = GetFilterEngine(); |
| + ASSERT_EQ(0u, filterEngine.GetListedFilters().size()); |
| + AdblockPlus::Filter filter = filterEngine.GetFilter("foo"); |
| + ASSERT_EQ(0u, filterEngine.GetListedFilters().size()); |
| ASSERT_FALSE(filter.IsListed()); |
| filter.AddToList(); |
| - ASSERT_EQ(1u, filterEngine->GetListedFilters().size()); |
| - ASSERT_EQ(filter, filterEngine->GetListedFilters()[0]); |
| + ASSERT_EQ(1u, filterEngine.GetListedFilters().size()); |
| + ASSERT_EQ(filter, filterEngine.GetListedFilters()[0]); |
| ASSERT_TRUE(filter.IsListed()); |
| filter.AddToList(); |
| - ASSERT_EQ(1u, filterEngine->GetListedFilters().size()); |
| - ASSERT_EQ(filter, filterEngine->GetListedFilters()[0]); |
| + ASSERT_EQ(1u, filterEngine.GetListedFilters().size()); |
| + ASSERT_EQ(filter, filterEngine.GetListedFilters()[0]); |
| ASSERT_TRUE(filter.IsListed()); |
| filter.RemoveFromList(); |
| - ASSERT_EQ(0u, filterEngine->GetListedFilters().size()); |
| + ASSERT_EQ(0u, filterEngine.GetListedFilters().size()); |
| ASSERT_FALSE(filter.IsListed()); |
| filter.RemoveFromList(); |
| - ASSERT_EQ(0u, filterEngine->GetListedFilters().size()); |
| + ASSERT_EQ(0u, filterEngine.GetListedFilters().size()); |
| ASSERT_FALSE(filter.IsListed()); |
| } |
| TEST_F(FilterEngineTest, SubscriptionProperties) |
| { |
| - AdblockPlus::Subscription subscription = filterEngine->GetSubscription("foo"); |
| + AdblockPlus::Subscription subscription = GetFilterEngine().GetSubscription("foo"); |
| ASSERT_TRUE(subscription.GetProperty("stringFoo").IsUndefined()); |
| ASSERT_TRUE(subscription.GetProperty("intFoo").IsUndefined()); |
| @@ -307,15 +321,15 @@ TEST_F(FilterEngineTest, SubscriptionProperties) |
| TEST_F(FilterEngineTest, AddedSubscriptionIsEnabled) |
| { |
| - AdblockPlus::Subscription subscription = filterEngine->GetSubscription("foo"); |
| + AdblockPlus::Subscription subscription = GetFilterEngine().GetSubscription("foo"); |
| EXPECT_FALSE(subscription.IsDisabled()); |
| } |
| TEST_F(FilterEngineTest, DisablingSubscriptionDisablesItAndFiresEvent) |
| { |
| - AdblockPlus::Subscription subscription = filterEngine->GetSubscription("foo"); |
| + AdblockPlus::Subscription subscription = GetFilterEngine().GetSubscription("foo"); |
| int eventFiredCounter = 0; |
| - filterEngine->SetFilterChangeCallback([&eventFiredCounter](const std::string& eventName, JsValue&& subscriptionObject) |
| + GetFilterEngine().SetFilterChangeCallback([&eventFiredCounter](const std::string& eventName, JsValue&& subscriptionObject) |
| { |
| if (eventName != "subscription.disabled" || subscriptionObject.GetProperty("url").AsString() != "foo") |
| return; |
| @@ -329,13 +343,13 @@ TEST_F(FilterEngineTest, DisablingSubscriptionDisablesItAndFiresEvent) |
| TEST_F(FilterEngineTest, EnablingSubscriptionEnablesItAndFiresEvent) |
| { |
| - AdblockPlus::Subscription subscription = filterEngine->GetSubscription("foo"); |
| + AdblockPlus::Subscription subscription = GetFilterEngine().GetSubscription("foo"); |
| EXPECT_FALSE(subscription.IsDisabled()); |
| subscription.SetDisabled(true); |
| EXPECT_TRUE(subscription.IsDisabled()); |
| int eventFiredCounter = 0; |
| - filterEngine->SetFilterChangeCallback([&eventFiredCounter](const std::string& eventName, JsValue&& subscriptionObject) |
| + GetFilterEngine().SetFilterChangeCallback([&eventFiredCounter](const std::string& eventName, JsValue&& subscriptionObject) |
| { |
| if (eventName != "subscription.disabled" || subscriptionObject.GetProperty("url").AsString() != "foo") |
| return; |
| @@ -348,99 +362,102 @@ TEST_F(FilterEngineTest, EnablingSubscriptionEnablesItAndFiresEvent) |
| TEST_F(FilterEngineTest, AddRemoveSubscriptions) |
| { |
| - ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
| - AdblockPlus::Subscription subscription = filterEngine->GetSubscription("foo"); |
| - ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
| + auto& filterEngine = GetFilterEngine(); |
| + ASSERT_EQ(0u, filterEngine.GetListedSubscriptions().size()); |
| + AdblockPlus::Subscription subscription = filterEngine.GetSubscription("foo"); |
| + ASSERT_EQ(0u, filterEngine.GetListedSubscriptions().size()); |
| ASSERT_FALSE(subscription.IsListed()); |
| subscription.AddToList(); |
| - ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
| - ASSERT_EQ(subscription, filterEngine->GetListedSubscriptions()[0]); |
| + ASSERT_EQ(1u, filterEngine.GetListedSubscriptions().size()); |
| + ASSERT_EQ(subscription, filterEngine.GetListedSubscriptions()[0]); |
| ASSERT_TRUE(subscription.IsListed()); |
| subscription.AddToList(); |
| - ASSERT_EQ(1u, filterEngine->GetListedSubscriptions().size()); |
| - ASSERT_EQ(subscription, filterEngine->GetListedSubscriptions()[0]); |
| + ASSERT_EQ(1u, filterEngine.GetListedSubscriptions().size()); |
| + ASSERT_EQ(subscription, filterEngine.GetListedSubscriptions()[0]); |
| ASSERT_TRUE(subscription.IsListed()); |
| subscription.RemoveFromList(); |
| - ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
| + ASSERT_EQ(0u, filterEngine.GetListedSubscriptions().size()); |
| ASSERT_FALSE(subscription.IsListed()); |
| subscription.RemoveFromList(); |
| - ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size()); |
| + ASSERT_EQ(0u, filterEngine.GetListedSubscriptions().size()); |
| ASSERT_FALSE(subscription.IsListed()); |
| } |
| TEST_F(FilterEngineTest, SubscriptionUpdates) |
| { |
| - AdblockPlus::Subscription subscription = filterEngine->GetSubscription("foo"); |
| + AdblockPlus::Subscription subscription = GetFilterEngine().GetSubscription("foo"); |
| ASSERT_FALSE(subscription.IsUpdating()); |
| subscription.UpdateFilters(); |
| } |
| TEST_F(FilterEngineTest, Matches) |
| { |
| - filterEngine->GetFilter("adbanner.gif").AddToList(); |
| - filterEngine->GetFilter("@@notbanner.gif").AddToList(); |
| - filterEngine->GetFilter("tpbanner.gif$third-party").AddToList(); |
| - filterEngine->GetFilter("fpbanner.gif$~third-party").AddToList(); |
| - filterEngine->GetFilter("combanner.gif$domain=example.com").AddToList(); |
| - filterEngine->GetFilter("orgbanner.gif$domain=~example.com").AddToList(); |
| - |
| - AdblockPlus::FilterPtr match1 = filterEngine->Matches("http://example.org/foobar.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| + auto& filterEngine = GetFilterEngine(); |
| + filterEngine.GetFilter("adbanner.gif").AddToList(); |
| + filterEngine.GetFilter("@@notbanner.gif").AddToList(); |
| + filterEngine.GetFilter("tpbanner.gif$third-party").AddToList(); |
| + filterEngine.GetFilter("fpbanner.gif$~third-party").AddToList(); |
| + filterEngine.GetFilter("combanner.gif$domain=example.com").AddToList(); |
| + filterEngine.GetFilter("orgbanner.gif$domain=~example.com").AddToList(); |
| + |
| + AdblockPlus::FilterPtr match1 = filterEngine.Matches("http://example.org/foobar.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| ASSERT_FALSE(match1); |
| - AdblockPlus::FilterPtr match2 = filterEngine->Matches("http://example.org/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| + AdblockPlus::FilterPtr match2 = filterEngine.Matches("http://example.org/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| ASSERT_TRUE(match2); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match2->GetType()); |
| - AdblockPlus::FilterPtr match3 = filterEngine->Matches("http://example.org/notbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| + AdblockPlus::FilterPtr match3 = filterEngine.Matches("http://example.org/notbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| ASSERT_TRUE(match3); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match3->GetType()); |
| - AdblockPlus::FilterPtr match4 = filterEngine->Matches("http://example.org/notbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| + AdblockPlus::FilterPtr match4 = filterEngine.Matches("http://example.org/notbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, ""); |
| ASSERT_TRUE(match4); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match4->GetType()); |
| - AdblockPlus::FilterPtr match5 = filterEngine->Matches("http://example.org/tpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| + AdblockPlus::FilterPtr match5 = filterEngine.Matches("http://example.org/tpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| ASSERT_FALSE(match5); |
| - AdblockPlus::FilterPtr match6 = filterEngine->Matches("http://example.org/fpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| + AdblockPlus::FilterPtr match6 = filterEngine.Matches("http://example.org/fpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| ASSERT_TRUE(match6); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match6->GetType()); |
| - AdblockPlus::FilterPtr match7 = filterEngine->Matches("http://example.org/tpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| + AdblockPlus::FilterPtr match7 = filterEngine.Matches("http://example.org/tpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| ASSERT_TRUE(match7); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match7->GetType()); |
| - AdblockPlus::FilterPtr match8 = filterEngine->Matches("http://example.org/fpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| + AdblockPlus::FilterPtr match8 = filterEngine.Matches("http://example.org/fpbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| ASSERT_FALSE(match8); |
| - AdblockPlus::FilterPtr match9 = filterEngine->Matches("http://example.org/combanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| + AdblockPlus::FilterPtr match9 = filterEngine.Matches("http://example.org/combanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| ASSERT_TRUE(match9); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match9->GetType()); |
| - AdblockPlus::FilterPtr match10 = filterEngine->Matches("http://example.org/combanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| + AdblockPlus::FilterPtr match10 = filterEngine.Matches("http://example.org/combanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| ASSERT_FALSE(match10); |
| - AdblockPlus::FilterPtr match11 = filterEngine->Matches("http://example.org/orgbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| + AdblockPlus::FilterPtr match11 = filterEngine.Matches("http://example.org/orgbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.com/"); |
| ASSERT_FALSE(match11); |
| - AdblockPlus::FilterPtr match12 = filterEngine->Matches("http://example.org/orgbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| + AdblockPlus::FilterPtr match12 = filterEngine.Matches("http://example.org/orgbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "http://example.org/"); |
| ASSERT_TRUE(match12); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match12->GetType()); |
| } |
| TEST_F(FilterEngineTest, MatchesOnWhitelistedDomain) |
| { |
| - filterEngine->GetFilter("adbanner.gif").AddToList(); |
| - filterEngine->GetFilter("@@||example.org^$document").AddToList(); |
| + auto& filterEngine = GetFilterEngine(); |
| + filterEngine.GetFilter("adbanner.gif").AddToList(); |
| + filterEngine.GetFilter("@@||example.org^$document").AddToList(); |
| AdblockPlus::FilterPtr match1 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| "http://example.com/"); |
| ASSERT_TRUE(match1); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match1->GetType()); |
| AdblockPlus::FilterPtr match2 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| "http://example.org/"); |
| ASSERT_TRUE(match2); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match2->GetType()); |
| @@ -448,49 +465,50 @@ TEST_F(FilterEngineTest, MatchesOnWhitelistedDomain) |
| TEST_F(FilterEngineTest, MatchesWithContentTypeMask) |
| { |
| - filterEngine->GetFilter("adbanner.gif.js$script,image").AddToList(); |
| - filterEngine->GetFilter("@@notbanner.gif").AddToList(); |
| - filterEngine->GetFilter("blockme").AddToList(); |
| - filterEngine->GetFilter("@@||example.doc^$document").AddToList(); |
| + auto& filterEngine = GetFilterEngine(); |
| + filterEngine.GetFilter("adbanner.gif.js$script,image").AddToList(); |
| + filterEngine.GetFilter("@@notbanner.gif").AddToList(); |
| + filterEngine.GetFilter("blockme").AddToList(); |
| + filterEngine.GetFilter("@@||example.doc^$document").AddToList(); |
| - EXPECT_FALSE(filterEngine->Matches("http://example.org/foobar.gif", |
| + EXPECT_FALSE(filterEngine.Matches("http://example.org/foobar.gif", |
| AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, "")) |
| << "another url should not match"; |
| - EXPECT_FALSE(filterEngine->Matches("http://example.org/adbanner.gif.js", |
| + EXPECT_FALSE(filterEngine.Matches("http://example.org/adbanner.gif.js", |
| /*mask*/ 0, "")) << "zero mask should not match (filter with some options)"; |
| - EXPECT_FALSE(filterEngine->Matches("http://example.xxx/blockme", |
| + EXPECT_FALSE(filterEngine.Matches("http://example.xxx/blockme", |
| /*mask*/ 0, "")) << "zero mask should not match (filter without any option)"; |
| - EXPECT_FALSE(filterEngine->Matches("http://example.org/adbanner.gif.js", |
| + EXPECT_FALSE(filterEngine.Matches("http://example.org/adbanner.gif.js", |
| AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, "")) |
| << "one arbitrary flag in mask should not match"; |
| - EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js", |
| + EXPECT_TRUE(filterEngine.Matches("http://example.org/adbanner.gif.js", |
| AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE | |
| AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, "")) |
| << "one of flags in mask should match"; |
| - EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js", |
| + EXPECT_TRUE(filterEngine.Matches("http://example.org/adbanner.gif.js", |
| AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE | |
| AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT, "")) |
| << "both flags in mask should match"; |
| - EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js", |
| + EXPECT_TRUE(filterEngine.Matches("http://example.org/adbanner.gif.js", |
| AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE | |
| AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT | |
| AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, "")) |
| << "both flags with another flag in mask should match"; |
| - EXPECT_TRUE(filterEngine->Matches("http://example.org/adbanner.gif.js", |
| + EXPECT_TRUE(filterEngine.Matches("http://example.org/adbanner.gif.js", |
| AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT | |
| AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, "")) |
| << "one of flags in mask should match"; |
| { |
| AdblockPlus::FilterPtr filter; |
| - ASSERT_TRUE(filter = filterEngine->Matches("http://child.any/blockme", |
| + ASSERT_TRUE(filter = filterEngine.Matches("http://child.any/blockme", |
| AdblockPlus::FilterEngine::CONTENT_TYPE_SCRIPT | |
| AdblockPlus::FilterEngine::CONTENT_TYPE_OBJECT, "http://example.doc")) |
| << "non-zero mask should match on whitelisted document"; |
| @@ -500,7 +518,7 @@ TEST_F(FilterEngineTest, MatchesWithContentTypeMask) |
| { |
| AdblockPlus::FilterPtr filter; |
| - ASSERT_TRUE(filter = filterEngine->Matches("http://example.doc/blockme", |
| + ASSERT_TRUE(filter = filterEngine.Matches("http://example.doc/blockme", |
| /*mask*/0, "http://example.doc")) |
| << "zero mask should match when document is whitelisted"; |
| @@ -510,14 +528,15 @@ TEST_F(FilterEngineTest, MatchesWithContentTypeMask) |
| TEST_F(FilterEngineTest, MatchesNestedFrameRequest) |
| { |
| - filterEngine->GetFilter("adbanner.gif").AddToList(); |
| - filterEngine->GetFilter("@@adbanner.gif$domain=example.org").AddToList(); |
| + auto& filterEngine = GetFilterEngine(); |
| + filterEngine.GetFilter("adbanner.gif").AddToList(); |
| + filterEngine.GetFilter("@@adbanner.gif$domain=example.org").AddToList(); |
| std::vector<std::string> documentUrls1; |
| documentUrls1.push_back("http://ads.com/frame/"); |
| documentUrls1.push_back("http://example.com/"); |
| AdblockPlus::FilterPtr match1 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls1); |
| ASSERT_TRUE(match1); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match1->GetType()); |
| @@ -526,7 +545,7 @@ TEST_F(FilterEngineTest, MatchesNestedFrameRequest) |
| documentUrls2.push_back("http://ads.com/frame/"); |
| documentUrls2.push_back("http://example.org/"); |
| AdblockPlus::FilterPtr match2 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls2); |
| ASSERT_TRUE(match2); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match2->GetType()); |
| @@ -535,7 +554,7 @@ TEST_F(FilterEngineTest, MatchesNestedFrameRequest) |
| documentUrls3.push_back("http://example.org/"); |
| documentUrls3.push_back("http://ads.com/frame/"); |
| AdblockPlus::FilterPtr match3 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls3); |
| ASSERT_TRUE(match3); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match3->GetType()); |
| @@ -543,14 +562,15 @@ TEST_F(FilterEngineTest, MatchesNestedFrameRequest) |
| TEST_F(FilterEngineTest, MatchesNestedFrameOnWhitelistedDomain) |
| { |
| - filterEngine->GetFilter("adbanner.gif").AddToList(); |
| - filterEngine->GetFilter("@@||example.org^$document,domain=ads.com").AddToList(); |
| + auto& filterEngine = GetFilterEngine(); |
| + filterEngine.GetFilter("adbanner.gif").AddToList(); |
| + filterEngine.GetFilter("@@||example.org^$document,domain=ads.com").AddToList(); |
| std::vector<std::string> documentUrls1; |
| documentUrls1.push_back("http://ads.com/frame/"); |
| documentUrls1.push_back("http://example.com/"); |
| AdblockPlus::FilterPtr match1 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls1); |
| ASSERT_TRUE(match1); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match1->GetType()); |
| @@ -559,7 +579,7 @@ TEST_F(FilterEngineTest, MatchesNestedFrameOnWhitelistedDomain) |
| documentUrls2.push_back("http://ads.com/frame/"); |
| documentUrls2.push_back("http://example.org/"); |
| AdblockPlus::FilterPtr match2 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls2); |
| ASSERT_TRUE(match2); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match2->GetType()); |
| @@ -567,7 +587,7 @@ TEST_F(FilterEngineTest, MatchesNestedFrameOnWhitelistedDomain) |
| std::vector<std::string> documentUrls3; |
| documentUrls3.push_back("http://example.org/"); |
| AdblockPlus::FilterPtr match3 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls3); |
| ASSERT_TRUE(match3); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match3->GetType()); |
| @@ -576,7 +596,7 @@ TEST_F(FilterEngineTest, MatchesNestedFrameOnWhitelistedDomain) |
| documentUrls4.push_back("http://example.org/"); |
| documentUrls4.push_back("http://ads.com/frame/"); |
| AdblockPlus::FilterPtr match4 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls4); |
| ASSERT_TRUE(match4); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_BLOCKING, match4->GetType()); |
| @@ -586,7 +606,7 @@ TEST_F(FilterEngineTest, MatchesNestedFrameOnWhitelistedDomain) |
| documentUrls5.push_back("http://example.org/"); |
| documentUrls5.push_back("http://example.com/"); |
| AdblockPlus::FilterPtr match5 = |
| - filterEngine->Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| + filterEngine.Matches("http://ads.com/adbanner.gif", AdblockPlus::FilterEngine::CONTENT_TYPE_IMAGE, |
| documentUrls5); |
| ASSERT_TRUE(match5); |
| ASSERT_EQ(AdblockPlus::Filter::TYPE_EXCEPTION, match5->GetType()); |
| @@ -594,84 +614,87 @@ TEST_F(FilterEngineTest, MatchesNestedFrameOnWhitelistedDomain) |
| TEST_F(FilterEngineTest, FirstRunFlag) |
| { |
| - ASSERT_FALSE(filterEngine->IsFirstRun()); |
| + ASSERT_FALSE(GetFilterEngine().IsFirstRun()); |
| } |
| TEST_F(FilterEngineTestNoData, FirstRunFlag) |
| { |
| - ASSERT_TRUE(filterEngine->IsFirstRun()); |
| + ASSERT_TRUE(GetFilterEngine().IsFirstRun()); |
| } |
| TEST_F(FilterEngineTest, SetRemoveFilterChangeCallback) |
| { |
| + auto& filterEngine = GetFilterEngine(); |
| int timesCalled = 0; |
| - filterEngine->SetFilterChangeCallback([×Called](const std::string&, AdblockPlus::JsValue&&) |
| + filterEngine.SetFilterChangeCallback([×Called](const std::string&, AdblockPlus::JsValue&&) |
| { |
| timesCalled++; |
| }); |
| - filterEngine->GetFilter("foo").AddToList(); |
| + filterEngine.GetFilter("foo").AddToList(); |
| EXPECT_EQ(1, timesCalled); |
| // we want to actually check the call count didn't change. |
| - filterEngine->RemoveFilterChangeCallback(); |
| - filterEngine->GetFilter("foo").RemoveFromList(); |
| + filterEngine.RemoveFilterChangeCallback(); |
| + filterEngine.GetFilter("foo").RemoveFromList(); |
| EXPECT_EQ(1, timesCalled); |
| } |
| TEST_F(FilterEngineTest, DocumentWhitelisting) |
| { |
| - filterEngine->GetFilter("@@||example.org^$document").AddToList(); |
| - filterEngine->GetFilter("@@||example.com^$document,domain=example.de").AddToList(); |
| + auto& filterEngine = GetFilterEngine(); |
| + filterEngine.GetFilter("@@||example.org^$document").AddToList(); |
| + filterEngine.GetFilter("@@||example.com^$document,domain=example.de").AddToList(); |
| - ASSERT_TRUE(filterEngine->IsDocumentWhitelisted( |
| + ASSERT_TRUE(filterEngine.IsDocumentWhitelisted( |
| "http://example.org", |
| std::vector<std::string>())); |
| - ASSERT_FALSE(filterEngine->IsDocumentWhitelisted( |
| + ASSERT_FALSE(filterEngine.IsDocumentWhitelisted( |
| "http://example.co.uk", |
| std::vector<std::string>())); |
| - ASSERT_FALSE(filterEngine->IsDocumentWhitelisted( |
| + ASSERT_FALSE(filterEngine.IsDocumentWhitelisted( |
| "http://example.com", |
| std::vector<std::string>())); |
| std::vector<std::string> documentUrls1; |
| documentUrls1.push_back("http://example.de"); |
| - ASSERT_TRUE(filterEngine->IsDocumentWhitelisted( |
| + ASSERT_TRUE(filterEngine.IsDocumentWhitelisted( |
| "http://example.com", |
| documentUrls1)); |
| - ASSERT_FALSE(filterEngine->IsDocumentWhitelisted( |
| + ASSERT_FALSE(filterEngine.IsDocumentWhitelisted( |
| "http://example.co.uk", |
| documentUrls1)); |
| } |
| TEST_F(FilterEngineTest, ElemhideWhitelisting) |
| { |
| - filterEngine->GetFilter("@@||example.org^$elemhide").AddToList(); |
| - filterEngine->GetFilter("@@||example.com^$elemhide,domain=example.de").AddToList(); |
| + auto& filterEngine = GetFilterEngine(); |
| + filterEngine.GetFilter("@@||example.org^$elemhide").AddToList(); |
| + filterEngine.GetFilter("@@||example.com^$elemhide,domain=example.de").AddToList(); |
| - ASSERT_TRUE(filterEngine->IsElemhideWhitelisted( |
| + ASSERT_TRUE(filterEngine.IsElemhideWhitelisted( |
| "http://example.org", |
| std::vector<std::string>())); |
| - ASSERT_FALSE(filterEngine->IsElemhideWhitelisted( |
| + ASSERT_FALSE(filterEngine.IsElemhideWhitelisted( |
| "http://example.co.uk", |
| std::vector<std::string>())); |
| - ASSERT_FALSE(filterEngine->IsElemhideWhitelisted( |
| + ASSERT_FALSE(filterEngine.IsElemhideWhitelisted( |
| "http://example.com", |
| std::vector<std::string>())); |
| std::vector<std::string> documentUrls1; |
| documentUrls1.push_back("http://example.de"); |
| - ASSERT_TRUE(filterEngine->IsElemhideWhitelisted( |
| + ASSERT_TRUE(filterEngine.IsElemhideWhitelisted( |
| "http://example.com", |
| documentUrls1)); |
| - ASSERT_FALSE(filterEngine->IsElemhideWhitelisted( |
| + ASSERT_FALSE(filterEngine.IsElemhideWhitelisted( |
| "http://example.co.uk", |
| documentUrls1)); |
| } |
| @@ -682,8 +705,8 @@ TEST_F(FilterEngineWithFreshFolder, LangAndAASubscriptionsAreChosenOnFirstRun) |
| appInfo.locale = "zh"; |
| const std::string langSubscriptionUrl = "https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt"; |
| InitPlatformAndAppInfo(appInfo); |
| - auto filterEngine = CreateFilterEngine(); |
| - const auto subscriptions = filterEngine->GetListedSubscriptions(); |
| + auto& filterEngine = CreateFilterEngine(); |
| + const auto subscriptions = filterEngine.GetListedSubscriptions(); |
| ASSERT_EQ(2u, subscriptions.size()); |
| std::unique_ptr<Subscription> aaSubscription; |
| std::unique_ptr<Subscription> langSubscription; |
| @@ -700,7 +723,7 @@ TEST_F(FilterEngineWithFreshFolder, LangAndAASubscriptionsAreChosenOnFirstRun) |
| ASSERT_NE(nullptr, aaSubscription); |
| ASSERT_NE(nullptr, langSubscription); |
| EXPECT_EQ(langSubscriptionUrl, langSubscription->GetProperty("url").AsString()); |
| - EXPECT_TRUE(filterEngine->IsAAEnabled()); |
| + EXPECT_TRUE(filterEngine.IsAAEnabled()); |
| } |
| TEST_F(FilterEngineWithFreshFolder, DisableSubscriptionsAutoSelectOnFirstRun) |
| @@ -708,10 +731,10 @@ TEST_F(FilterEngineWithFreshFolder, DisableSubscriptionsAutoSelectOnFirstRun) |
| InitPlatformAndAppInfo(); |
| FilterEngine::CreationParameters createParams; |
| createParams.preconfiguredPrefs.emplace("first_run_subscription_auto_select", GetJsEngine().NewValue(false)); |
| - auto filterEngine = CreateFilterEngine(createParams); |
| - const auto subscriptions = filterEngine->GetListedSubscriptions(); |
| + auto& filterEngine = CreateFilterEngine(createParams); |
| + const auto subscriptions = filterEngine.GetListedSubscriptions(); |
| EXPECT_EQ(0u, subscriptions.size()); |
| - EXPECT_FALSE(filterEngine->IsAAEnabled()); |
| + EXPECT_FALSE(filterEngine.IsAAEnabled()); |
| } |
| namespace AA_ApiTest |
| @@ -856,29 +879,30 @@ namespace AA_ApiTest |
| // this method also tests the result of intermediate steps. |
| + auto& filterEngine = GetFilterEngine(); |
| { |
| // no subscription (because of preconfigured prefs.json and patterns.ini), |
| // though it should be enabled by default in a non-test environment, it's tested in |
| // corresponding tests. |
| - const auto subscriptions = filterEngine->GetListedSubscriptions(); |
| + const auto subscriptions = filterEngine.GetListedSubscriptions(); |
| EXPECT_EQ(0u, subscriptions.size()); // no any subscription including AA |
| - EXPECT_FALSE(filterEngine->IsAAEnabled()); |
| + EXPECT_FALSE(filterEngine.IsAAEnabled()); |
| } |
| if (otherSubscriptionsNumber == 1u) |
| { |
| - auto subscription = filterEngine->GetSubscription(kOtherSubscriptionUrl); |
| + auto subscription = filterEngine.GetSubscription(kOtherSubscriptionUrl); |
| subscription.AddToList(); |
| - const auto subscriptions = filterEngine->GetListedSubscriptions(); |
| + const auto subscriptions = filterEngine.GetListedSubscriptions(); |
| ASSERT_EQ(1u, subscriptions.size()); |
| EXPECT_FALSE(subscriptions[0].IsAA()); |
| EXPECT_EQ(kOtherSubscriptionUrl, subscriptions[0].GetProperty("url").AsString()); |
| } |
| if (isAASatusPresent(aaStatus)) |
| { |
| - filterEngine->SetAAEnabled(true); // add AA by enabling it |
| + filterEngine.SetAAEnabled(true); // add AA by enabling it |
| if (aaStatus == AAStatus::disabled_present) |
| { |
| - filterEngine->SetAAEnabled(false); |
| + filterEngine.SetAAEnabled(false); |
| } |
| testSubscriptionState(aaStatus, otherSubscriptionsNumber); |
| } |
| @@ -889,14 +913,15 @@ namespace AA_ApiTest |
| } |
| void testSubscriptionState(AAStatus aaStatus, int otherSubscriptionsNumber) |
| { |
| + auto& filterEngine = GetFilterEngine(); |
| if (aaStatus == AAStatus::enabled) |
| - EXPECT_TRUE(filterEngine->IsAAEnabled()); |
| + EXPECT_TRUE(filterEngine.IsAAEnabled()); |
| else |
| - EXPECT_FALSE(filterEngine->IsAAEnabled()); |
| + EXPECT_FALSE(filterEngine.IsAAEnabled()); |
| std::unique_ptr<Subscription> aaSubscription; |
| std::unique_ptr<Subscription> otherSubscription; |
| - auto subscriptions = filterEngine->GetListedSubscriptions(); |
| + auto subscriptions = filterEngine.GetListedSubscriptions(); |
| for (auto& subscription : subscriptions) |
| { |
| auto& dstSubscription = subscription.IsAA() ? aaSubscription : otherSubscription; |
| @@ -940,15 +965,16 @@ namespace AA_ApiTest |
| const auto parameter = ::testing::get<0>(GetParam()); |
| uint8_t otherSubscriptionsNumber = ::testing::get<1>(GetParam()); |
| init(parameter.initialAAStatus, otherSubscriptionsNumber); |
| + auto& filterEngine = GetFilterEngine(); |
| if (parameter.action == Action::enable) |
| - filterEngine->SetAAEnabled(true); |
| + filterEngine.SetAAEnabled(true); |
| else if (parameter.action == Action::disable) |
| - filterEngine->SetAAEnabled(false); |
| + filterEngine.SetAAEnabled(false); |
| else if (parameter.action == Action::remove) |
| { |
| std::unique_ptr<Subscription> aaSubscription; |
| - for (auto& subscription : filterEngine->GetListedSubscriptions()) |
| + for (auto& subscription : filterEngine.GetListedSubscriptions()) |
| { |
| if (subscription.IsAA()) |
| { |
| @@ -1007,7 +1033,7 @@ TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, PredefinedAllowedConnectio |
| TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, ConfiguredConnectionTypeIsPassedToCallback) |
| { |
| - // FilterEngine->RemoveSubscription is not usable here because subscriptions |
| + // FilterEngine::RemoveSubscription is not usable here because subscriptions |
| // are cached internally by URL. So, different URLs are used in diffirent |
| // checks. |
| { |
| @@ -1024,7 +1050,7 @@ TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, ConfiguredConnectionTypeIs |
| capturedConnectionTypes.clear(); |
| { |
| // set no value |
| - filterEngine->SetAllowedConnectionType(nullptr); |
| + GetFilterEngine().SetAllowedConnectionType(nullptr); |
| auto subscription = EnsureExampleSubscriptionAndForceUpdate("subA"); |
| EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsString()); |
| EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size()); |
| @@ -1036,7 +1062,7 @@ TEST_F(FilterEngineIsSubscriptionDownloadAllowedTest, ConfiguredConnectionTypeIs |
| { |
| // set some value |
| std::string testConnection = "test connection"; |
| - filterEngine->SetAllowedConnectionType(&testConnection); |
| + GetFilterEngine().SetAllowedConnectionType(&testConnection); |
| auto subscription = EnsureExampleSubscriptionAndForceUpdate("subB"); |
| EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsString()); |
| EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size()); |