| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2017 eyeo GmbH | 3  * Copyright (C) 2006-2017 eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 56 | 56 | 
| 57     void SetUp() override | 57     void SetUp() override | 
| 58     { | 58     { | 
| 59       LazyFileSystemT* fileSystem; | 59       LazyFileSystemT* fileSystem; | 
| 60       ThrowingPlatformCreationParameters platformParams; | 60       ThrowingPlatformCreationParameters platformParams; | 
| 61       platformParams.logSystem.reset(new LogSystem()); | 61       platformParams.logSystem.reset(new LogSystem()); | 
| 62       platformParams.timer.reset(new NoopTimer()); | 62       platformParams.timer.reset(new NoopTimer()); | 
| 63       platformParams.fileSystem.reset(fileSystem = new LazyFileSystemT()); | 63       platformParams.fileSystem.reset(fileSystem = new LazyFileSystemT()); | 
| 64       platformParams.webRequest.reset(new NoopWebRequest()); | 64       platformParams.webRequest.reset(new NoopWebRequest()); | 
| 65       platform.reset(new Platform(std::move(platformParams))); | 65       platform.reset(new Platform(std::move(platformParams))); | 
| 66       filterEngine = CreateFilterEngine(*fileSystem, platform->GetJsEngine()); | 66       filterEngine = CreateFilterEngine(*fileSystem, *platform); | 
| 67     } | 67     } | 
| 68   }; | 68   }; | 
| 69 | 69 | 
| 70   typedef FilterEngineTestGeneric<LazyFileSystem, AdblockPlus::DefaultLogSystem>
       FilterEngineTest; | 70   typedef FilterEngineTestGeneric<LazyFileSystem, AdblockPlus::DefaultLogSystem>
       FilterEngineTest; | 
| 71   typedef FilterEngineTestGeneric<NoFilesFileSystem, LazyLogSystem> FilterEngine
      TestNoData; | 71   typedef FilterEngineTestGeneric<NoFilesFileSystem, LazyLogSystem> FilterEngine
      TestNoData; | 
| 72 | 72 | 
| 73   class FilterEngineWithFreshFolder : public ::testing::Test | 73   class FilterEngineWithFreshFolder : public ::testing::Test | 
| 74   { | 74   { | 
| 75   protected: | 75   protected: | 
| 76     std::unique_ptr<Platform> platform; | 76     std::unique_ptr<Platform> platform; | 
| 77     FileSystemPtr fileSystem; | 77     FileSystemPtr fileSystem; | 
| 78     std::list<SchedulerTask> fileSystemTasks; | 78     std::list<SchedulerTask> fileSystemTasks; | 
| 79     std::weak_ptr<JsEngine> weakJsEngine; |  | 
| 80 | 79 | 
| 81     void SetUp() override | 80     void SetUp() override | 
| 82     { | 81     { | 
| 83       fileSystem = CreateDefaultFileSystem([this](const SchedulerTask& task) | 82       fileSystem = CreateDefaultFileSystem([this](const SchedulerTask& task) | 
| 84       { | 83       { | 
| 85         fileSystemTasks.emplace_back(task); | 84         fileSystemTasks.emplace_back(task); | 
| 86       }); | 85       }); | 
| 87       // Since there is neither in memory FS nor functionality to work with | 86       // Since there is neither in memory FS nor functionality to work with | 
| 88       // directories use the hack: manually clean the directory. | 87       // directories use the hack: manually clean the directory. | 
| 89       removeFileIfExists("patterns.ini"); | 88       removeFileIfExists("patterns.ini"); | 
| 90       removeFileIfExists("prefs.json"); | 89       removeFileIfExists("prefs.json"); | 
| 91     } | 90     } | 
| 92     JsEnginePtr CreateJsEngine(const AppInfo& appInfo = AppInfo()) | 91     void InitPlatformAndAppInfo(const AppInfo& appInfo = AppInfo()) | 
| 93     { | 92     { | 
| 94       ThrowingPlatformCreationParameters platformParams; | 93       ThrowingPlatformCreationParameters platformParams; | 
| 95       platformParams.logSystem.reset(new LazyLogSystem()); | 94       platformParams.logSystem.reset(new LazyLogSystem()); | 
| 96       platformParams.timer.reset(new NoopTimer()); | 95       platformParams.timer.reset(new NoopTimer()); | 
| 97       platformParams.fileSystem = fileSystem; | 96       platformParams.fileSystem = fileSystem; | 
| 98       platformParams.webRequest.reset(new NoopWebRequest()); | 97       platformParams.webRequest.reset(new NoopWebRequest()); | 
| 99       platform.reset(new Platform(std::move(platformParams))); | 98       platform.reset(new Platform(std::move(platformParams))); | 
| 100       platform->SetUpJsEngine(appInfo); | 99       platform->SetUpJsEngine(appInfo); | 
| 101       auto jsEngine = platform->GetJsEngine(); |  | 
| 102       weakJsEngine = jsEngine; |  | 
| 103       return jsEngine; |  | 
| 104     } | 100     } | 
| 105 | 101 | 
| 106     FilterEnginePtr CreateFilterEngine(const JsEnginePtr& jsEngine, | 102     FilterEnginePtr CreateFilterEngine(const FilterEngine::CreationParameters& c
      reationParams = FilterEngine::CreationParameters()) | 
| 107       const FilterEngine::CreationParameters& creationParams = FilterEngine::Cre
      ationParameters()) |  | 
| 108     { | 103     { | 
| 109       FilterEnginePtr retValue; | 104       FilterEnginePtr retValue; | 
| 110       FilterEngine::CreateAsync(jsEngine, [&retValue](const FilterEnginePtr& fil
      terEngine) | 105       platform->CreateFilterEngineAsync(creationParams, [&retValue](const Filter
      EnginePtr& filterEngine) | 
| 111       { | 106       { | 
| 112         retValue = filterEngine; | 107         retValue = filterEngine; | 
| 113       }, creationParams); | 108       }); | 
| 114       while (!retValue && !fileSystemTasks.empty()) | 109       while (!retValue && !fileSystemTasks.empty()) | 
| 115       { | 110       { | 
| 116         (*fileSystemTasks.begin())(); | 111         (*fileSystemTasks.begin())(); | 
| 117         fileSystemTasks.pop_front(); | 112         fileSystemTasks.pop_front(); | 
| 118       } | 113       } | 
| 119       return retValue; | 114       return retValue; | 
| 120     } | 115     } | 
| 121 | 116 | 
| 122     void TearDown() override | 117     void TearDown() override | 
| 123     { | 118     { | 
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 191         isSubscriptionDownloadAllowedCallbacks.emplace_back(isSubscriptionDownlo
      adAllowedCallback); | 186         isSubscriptionDownloadAllowedCallbacks.emplace_back(isSubscriptionDownlo
      adAllowedCallback); | 
| 192       }; | 187       }; | 
| 193     } | 188     } | 
| 194 | 189 | 
| 195     Subscription EnsureExampleSubscriptionAndForceUpdate(const std::string& appp
      endToUrl = std::string()) | 190     Subscription EnsureExampleSubscriptionAndForceUpdate(const std::string& appp
      endToUrl = std::string()) | 
| 196     { | 191     { | 
| 197       auto subscriptionUrl = "http://example" + apppendToUrl; | 192       auto subscriptionUrl = "http://example" + apppendToUrl; | 
| 198       bool isSubscriptionDownloadStatusReceived = false; | 193       bool isSubscriptionDownloadStatusReceived = false; | 
| 199       if (!filterEngine) | 194       if (!filterEngine) | 
| 200       { | 195       { | 
| 201         filterEngine = CreateFilterEngine(*fileSystem, platform->GetJsEngine(), 
      createParams); | 196         filterEngine = CreateFilterEngine(*fileSystem, *platform, createParams); | 
| 202         filterEngine->SetFilterChangeCallback([&isSubscriptionDownloadStatusRece
      ived, &subscriptionUrl](const std::string& action, JsValue&& item) | 197         filterEngine->SetFilterChangeCallback([&isSubscriptionDownloadStatusRece
      ived, &subscriptionUrl](const std::string& action, JsValue&& item) | 
| 203         { | 198         { | 
| 204           if (action == "subscription.downloadStatus" && item.GetProperty("url")
      .AsString() == subscriptionUrl) | 199           if (action == "subscription.downloadStatus" && item.GetProperty("url")
      .AsString() == subscriptionUrl) | 
| 205             isSubscriptionDownloadStatusReceived = true; | 200             isSubscriptionDownloadStatusReceived = true; | 
| 206         }); | 201         }); | 
| 207       } | 202       } | 
| 208       auto subscription = filterEngine->GetSubscription(subscriptionUrl); | 203       auto subscription = filterEngine->GetSubscription(subscriptionUrl); | 
| 209       EXPECT_EQ(0u, subscription.GetProperty("filters").AsList().size()) << subs
      criptionUrl; | 204       EXPECT_EQ(0u, subscription.GetProperty("filters").AsList().size()) << subs
      criptionUrl; | 
| 210       EXPECT_TRUE(subscription.GetProperty("downloadStatus").IsNull()) << subscr
      iptionUrl; | 205       EXPECT_TRUE(subscription.GetProperty("downloadStatus").IsNull()) << subscr
      iptionUrl; | 
| 211       subscription.UpdateFilters(); | 206       subscription.UpdateFilters(); | 
| (...skipping 469 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 681   ASSERT_FALSE(filterEngine->IsElemhideWhitelisted( | 676   ASSERT_FALSE(filterEngine->IsElemhideWhitelisted( | 
| 682       "http://example.co.uk", | 677       "http://example.co.uk", | 
| 683       documentUrls1)); | 678       documentUrls1)); | 
| 684 } | 679 } | 
| 685 | 680 | 
| 686 TEST_F(FilterEngineWithFreshFolder, LangAndAASubscriptionsAreChosenOnFirstRun) | 681 TEST_F(FilterEngineWithFreshFolder, LangAndAASubscriptionsAreChosenOnFirstRun) | 
| 687 { | 682 { | 
| 688   AppInfo appInfo; | 683   AppInfo appInfo; | 
| 689   appInfo.locale = "zh"; | 684   appInfo.locale = "zh"; | 
| 690   const std::string langSubscriptionUrl = "https://easylist-downloads.adblockplu
      s.org/easylistchina+easylist.txt"; | 685   const std::string langSubscriptionUrl = "https://easylist-downloads.adblockplu
      s.org/easylistchina+easylist.txt"; | 
| 691   auto jsEngine = CreateJsEngine(appInfo); | 686   InitPlatformAndAppInfo(appInfo); | 
| 692   auto filterEngine = CreateFilterEngine(jsEngine); | 687   auto filterEngine = CreateFilterEngine(); | 
| 693   const auto subscriptions = filterEngine->GetListedSubscriptions(); | 688   const auto subscriptions = filterEngine->GetListedSubscriptions(); | 
| 694   ASSERT_EQ(2u, subscriptions.size()); | 689   ASSERT_EQ(2u, subscriptions.size()); | 
| 695   std::unique_ptr<Subscription> aaSubscription; | 690   std::unique_ptr<Subscription> aaSubscription; | 
| 696   std::unique_ptr<Subscription> langSubscription; | 691   std::unique_ptr<Subscription> langSubscription; | 
| 697   if (subscriptions[0].IsAA()) | 692   if (subscriptions[0].IsAA()) | 
| 698   { | 693   { | 
| 699     aaSubscription.reset(new Subscription(subscriptions[0])); | 694     aaSubscription.reset(new Subscription(subscriptions[0])); | 
| 700     langSubscription.reset(new Subscription(subscriptions[1])); | 695     langSubscription.reset(new Subscription(subscriptions[1])); | 
| 701   } | 696   } | 
| 702   else if (subscriptions[1].IsAA()) | 697   else if (subscriptions[1].IsAA()) | 
| 703   { | 698   { | 
| 704     aaSubscription.reset(new Subscription(subscriptions[1])); | 699     aaSubscription.reset(new Subscription(subscriptions[1])); | 
| 705     langSubscription.reset(new Subscription(subscriptions[0])); | 700     langSubscription.reset(new Subscription(subscriptions[0])); | 
| 706   } | 701   } | 
| 707   ASSERT_NE(nullptr, aaSubscription); | 702   ASSERT_NE(nullptr, aaSubscription); | 
| 708   ASSERT_NE(nullptr, langSubscription); | 703   ASSERT_NE(nullptr, langSubscription); | 
| 709   EXPECT_EQ(langSubscriptionUrl, langSubscription->GetProperty("url").AsString()
      ); | 704   EXPECT_EQ(langSubscriptionUrl, langSubscription->GetProperty("url").AsString()
      ); | 
| 710   EXPECT_TRUE(filterEngine->IsAAEnabled()); | 705   EXPECT_TRUE(filterEngine->IsAAEnabled()); | 
| 711 } | 706 } | 
| 712 | 707 | 
| 713 TEST_F(FilterEngineWithFreshFolder, DisableSubscriptionsAutoSelectOnFirstRun) | 708 TEST_F(FilterEngineWithFreshFolder, DisableSubscriptionsAutoSelectOnFirstRun) | 
| 714 { | 709 { | 
| 715   auto jsEngine = CreateJsEngine(); | 710   InitPlatformAndAppInfo(); | 
| 716   FilterEngine::CreationParameters createParams; | 711   FilterEngine::CreationParameters createParams; | 
| 717   createParams.preconfiguredPrefs.emplace("first_run_subscription_auto_select", 
      jsEngine->NewValue(false)); | 712   createParams.preconfiguredPrefs.emplace("first_run_subscription_auto_select", 
      platform->GetJsEngine()->NewValue(false)); | 
| 718   auto filterEngine = CreateFilterEngine(jsEngine, createParams); | 713   auto filterEngine = CreateFilterEngine(createParams); | 
| 719   const auto subscriptions = filterEngine->GetListedSubscriptions(); | 714   const auto subscriptions = filterEngine->GetListedSubscriptions(); | 
| 720   EXPECT_EQ(0u, subscriptions.size()); | 715   EXPECT_EQ(0u, subscriptions.size()); | 
| 721   EXPECT_FALSE(filterEngine->IsAAEnabled()); | 716   EXPECT_FALSE(filterEngine->IsAAEnabled()); | 
| 722 } | 717 } | 
| 723 | 718 | 
| 724 namespace AA_ApiTest | 719 namespace AA_ApiTest | 
| 725 { | 720 { | 
| 726   const std::string kOtherSubscriptionUrl = "https://non-existing-subscription.t
      xt"; | 721   const std::string kOtherSubscriptionUrl = "https://non-existing-subscription.t
      xt"; | 
| 727   enum class AAStatus | 722   enum class AAStatus | 
| 728   { | 723   { | 
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1045     std::string testConnection = "test connection"; | 1040     std::string testConnection = "test connection"; | 
| 1046     filterEngine->SetAllowedConnectionType(&testConnection); | 1041     filterEngine->SetAllowedConnectionType(&testConnection); | 
| 1047     auto subscription = EnsureExampleSubscriptionAndForceUpdate("subB"); | 1042     auto subscription = EnsureExampleSubscriptionAndForceUpdate("subB"); | 
| 1048     EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStr
      ing()); | 1043     EXPECT_EQ("synchronize_ok", subscription.GetProperty("downloadStatus").AsStr
      ing()); | 
| 1049     EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size()); | 1044     EXPECT_EQ(1u, subscription.GetProperty("filters").AsList().size()); | 
| 1050     ASSERT_EQ(1u, capturedConnectionTypes.size()); | 1045     ASSERT_EQ(1u, capturedConnectionTypes.size()); | 
| 1051     EXPECT_TRUE(capturedConnectionTypes[0].first); | 1046     EXPECT_TRUE(capturedConnectionTypes[0].first); | 
| 1052     EXPECT_EQ(testConnection, capturedConnectionTypes[0].second); | 1047     EXPECT_EQ(testConnection, capturedConnectionTypes[0].second); | 
| 1053   } | 1048   } | 
| 1054 } | 1049 } | 
| OLD | NEW | 
|---|