| 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()); | 
|  |