| 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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   70         } |   70         } | 
|   71  |   71  | 
|   72         LazyFileSystem::Stat(path, callback); |   72         LazyFileSystem::Stat(path, callback); | 
|   73       }); |   73       }); | 
|   74     } |   74     } | 
|   75   }; |   75   }; | 
|   76  |   76  | 
|   77   class PrefsTest : public ::testing::Test |   77   class PrefsTest : public ::testing::Test | 
|   78   { |   78   { | 
|   79   protected: |   79   protected: | 
 |   80     std::unique_ptr<Platform> platform; | 
|   80     std::shared_ptr<TestFileSystem> fileSystem; |   81     std::shared_ptr<TestFileSystem> fileSystem; | 
|   81     AdblockPlus::JsEnginePtr jsEngine; |  | 
|   82  |   82  | 
|   83     void SetUp() |   83     void SetUp() | 
|   84     { |   84     { | 
|   85       fileSystem = std::make_shared<TestFileSystem>(); |   85       fileSystem = std::make_shared<TestFileSystem>(); | 
|   86       ResetJsEngine(); |   86       ResetPlatform(); | 
|   87     } |   87     } | 
|   88  |   88  | 
|   89     void ResetJsEngine() |   89     void ResetPlatform() | 
|   90     { |   90     { | 
|   91       JsEngineCreationParameters jsEngineParams; |   91       ThrowingPlatformCreationParameters platformParams; | 
|   92       jsEngineParams.fileSystem = fileSystem; |   92       platformParams.fileSystem = fileSystem; | 
|   93       jsEngineParams.webRequest.reset(new NoopWebRequest()); |   93       platformParams.webRequest.reset(new NoopWebRequest()); | 
|   94       jsEngineParams.logSystem.reset(new LazyLogSystem()); |   94       platformParams.logSystem.reset(new LazyLogSystem()); | 
|   95       jsEngineParams.timer.reset(new NoopTimer()); |   95       platformParams.timer.reset(new NoopTimer()); | 
|   96       jsEngine = CreateJsEngine(std::move(jsEngineParams)); |   96       platform.reset(new Platform(std::move(platformParams))); | 
|   97     } |   97     } | 
|   98  |   98  | 
|   99     FilterEnginePtr CreateFilterEngine(const AdblockPlus::FilterEngine::Prefs& p
     reconfiguredPrefs = |   99     FilterEnginePtr CreateFilterEngine(const AdblockPlus::FilterEngine::Prefs& p
     reconfiguredPrefs = | 
|  100       AdblockPlus::FilterEngine::Prefs()) |  100       AdblockPlus::FilterEngine::Prefs()) | 
|  101     { |  101     { | 
|  102       AdblockPlus::FilterEngine::CreationParameters createParams; |  102       AdblockPlus::FilterEngine::CreationParameters createParams; | 
|  103       createParams.preconfiguredPrefs = preconfiguredPrefs; |  103       createParams.preconfiguredPrefs = preconfiguredPrefs; | 
|  104       return ::CreateFilterEngine(*fileSystem, jsEngine, createParams); |  104       return ::CreateFilterEngine(*fileSystem, platform->GetJsEngine(), createPa
     rams); | 
|  105     } |  105     } | 
|  106   }; |  106   }; | 
|  107 } |  107 } | 
|  108  |  108  | 
|  109 TEST_F(PrefsTest, PrefsGetSet) |  109 TEST_F(PrefsTest, PrefsGetSet) | 
|  110 { |  110 { | 
|  111   auto filterEngine = CreateFilterEngine(); |  111   auto filterEngine = CreateFilterEngine(); | 
|  112   ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile").AsString()); |  112   ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile").AsString()); | 
|  113   ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); |  113   ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 
|  114   ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); |  114   ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); | 
|  115   ASSERT_TRUE(filterEngine->GetPref("foobar").IsUndefined()); |  115   ASSERT_TRUE(filterEngine->GetPref("foobar").IsUndefined()); | 
|  116  |  116  | 
|  117   ASSERT_ANY_THROW(filterEngine->SetPref("patternsfile", jsEngine->NewValue(0)))
     ; |  117   ASSERT_ANY_THROW(filterEngine->SetPref("patternsfile", platform->GetJsEngine()
     ->NewValue(0))); | 
|  118   ASSERT_ANY_THROW(filterEngine->SetPref("patternsbackupinterval", jsEngine->New
     Value(true))); |  118   ASSERT_ANY_THROW(filterEngine->SetPref("patternsbackupinterval", platform->Get
     JsEngine()->NewValue(true))); | 
|  119   ASSERT_ANY_THROW(filterEngine->SetPref("subscriptions_autoupdate", jsEngine->N
     ewValue("foo"))); |  119   ASSERT_ANY_THROW(filterEngine->SetPref("subscriptions_autoupdate", platform->G
     etJsEngine()->NewValue("foo"))); | 
|  120  |  120  | 
|  121   filterEngine->SetPref("patternsfile", jsEngine->NewValue("filters.ini")); |  121   filterEngine->SetPref("patternsfile", platform->GetJsEngine()->NewValue("filte
     rs.ini")); | 
|  122   filterEngine->SetPref("patternsbackupinterval", jsEngine->NewValue(48)); |  122   filterEngine->SetPref("patternsbackupinterval", platform->GetJsEngine()->NewVa
     lue(48)); | 
|  123   filterEngine->SetPref("subscriptions_autoupdate", jsEngine->NewValue(false)); |  123   filterEngine->SetPref("subscriptions_autoupdate", platform->GetJsEngine()->New
     Value(false)); | 
|  124  |  124  | 
|  125   ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); |  125   ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); | 
|  126   ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); |  126   ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 
|  127   ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); |  127   ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); | 
|  128 } |  128 } | 
|  129  |  129  | 
|  130 TEST_F(PrefsTest, PrefsPersist) |  130 TEST_F(PrefsTest, PrefsPersist) | 
|  131 { |  131 { | 
|  132   { |  132   { | 
|  133     auto filterEngine = CreateFilterEngine(); |  133     auto filterEngine = CreateFilterEngine(); | 
|  134     ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile").AsString()); |  134     ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile").AsString()); | 
|  135     ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); |  135     ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 
|  136     ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); |  136     ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); | 
|  137  |  137  | 
|  138     filterEngine->SetPref("patternsfile", jsEngine->NewValue("filters.ini")); |  138     filterEngine->SetPref("patternsfile", platform->GetJsEngine()->NewValue("fil
     ters.ini")); | 
|  139     filterEngine->SetPref("patternsbackupinterval", jsEngine->NewValue(48)); |  139     filterEngine->SetPref("patternsbackupinterval", platform->GetJsEngine()->New
     Value(48)); | 
|  140     filterEngine->SetPref("subscriptions_autoupdate", jsEngine->NewValue(false))
     ; |  140     filterEngine->SetPref("subscriptions_autoupdate", platform->GetJsEngine()->N
     ewValue(false)); | 
|  141   } |  141   } | 
|  142   ASSERT_FALSE(fileSystem->prefsContents.empty()); |  142   ASSERT_FALSE(fileSystem->prefsContents.empty()); | 
|  143  |  143  | 
|  144   { |  144   { | 
|  145     ResetJsEngine(); |  145     ResetPlatform(); | 
|  146     auto filterEngine = CreateFilterEngine(); |  146     auto filterEngine = CreateFilterEngine(); | 
|  147     ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); |  147     ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile").AsString()); | 
|  148     ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); |  148     ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 
|  149     ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); |  149     ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate").AsBool()); | 
|  150   } |  150   } | 
|  151 } |  151 } | 
|  152  |  152  | 
|  153 TEST_F(PrefsTest, UnknownPrefs) |  153 TEST_F(PrefsTest, UnknownPrefs) | 
|  154 { |  154 { | 
|  155   using IOBuffer = AdblockPlus::IFileSystem::IOBuffer; |  155   using IOBuffer = AdblockPlus::IFileSystem::IOBuffer; | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
|  166   std::string content = "{\"patternsbackupinterval\": 6, \"foo\"}"; |  166   std::string content = "{\"patternsbackupinterval\": 6, \"foo\"}"; | 
|  167   fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend()); |  167   fileSystem->prefsContents = IOBuffer(content.cbegin(), content.cend()); | 
|  168   auto filterEngine = CreateFilterEngine(); |  168   auto filterEngine = CreateFilterEngine(); | 
|  169  |  169  | 
|  170   ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); |  170   ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval").AsInt()); | 
|  171 } |  171 } | 
|  172  |  172  | 
|  173 TEST_F(PrefsTest, PreconfiguredPrefsPreconfigured) |  173 TEST_F(PrefsTest, PreconfiguredPrefsPreconfigured) | 
|  174 { |  174 { | 
|  175   AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; |  175   AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
|  176   preconfiguredPrefs.emplace("disable_auto_updates", jsEngine->NewValue(false)); |  176   preconfiguredPrefs.emplace("disable_auto_updates", platform->GetJsEngine()->Ne
     wValue(false)); | 
|  177   preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(true)
     ); |  177   preconfiguredPrefs.emplace("suppress_first_run_page", platform->GetJsEngine()-
     >NewValue(true)); | 
|  178   auto filterEngine = CreateFilterEngine(preconfiguredPrefs); |  178   auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  179  |  179  | 
|  180   ASSERT_TRUE(filterEngine->GetPref("disable_auto_updates").IsBool()); |  180   ASSERT_TRUE(filterEngine->GetPref("disable_auto_updates").IsBool()); | 
|  181   ASSERT_FALSE(filterEngine->GetPref("disable_auto_updates").AsBool()); |  181   ASSERT_FALSE(filterEngine->GetPref("disable_auto_updates").AsBool()); | 
|  182   ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); |  182   ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); | 
|  183   ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").AsBool()); |  183   ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").AsBool()); | 
|  184 } |  184 } | 
|  185  |  185  | 
|  186 TEST_F(PrefsTest, PreconfiguredPrefsUnsupported) |  186 TEST_F(PrefsTest, PreconfiguredPrefsUnsupported) | 
|  187 { |  187 { | 
|  188   AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; |  188   AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
|  189   preconfiguredPrefs.emplace("unsupported_preconfig", jsEngine->NewValue(true)); |  189   preconfiguredPrefs.emplace("unsupported_preconfig", platform->GetJsEngine()->N
     ewValue(true)); | 
|  190   auto filterEngine = CreateFilterEngine(preconfiguredPrefs); |  190   auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  191  |  191  | 
|  192   ASSERT_TRUE(filterEngine->GetPref("unsupported_preconfig").IsUndefined()); |  192   ASSERT_TRUE(filterEngine->GetPref("unsupported_preconfig").IsUndefined()); | 
|  193 } |  193 } | 
|  194  |  194  | 
|  195 TEST_F(PrefsTest, PreconfiguredPrefsOverride) |  195 TEST_F(PrefsTest, PreconfiguredPrefsOverride) | 
|  196 { |  196 { | 
|  197   AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; |  197   AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
|  198   preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(true)
     ); |  198   preconfiguredPrefs.emplace("suppress_first_run_page", platform->GetJsEngine()-
     >NewValue(true)); | 
|  199   auto filterEngine = CreateFilterEngine(preconfiguredPrefs); |  199   auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  200  |  200  | 
|  201   filterEngine->SetPref("suppress_first_run_page", jsEngine->NewValue(false)); |  201   filterEngine->SetPref("suppress_first_run_page", platform->GetJsEngine()->NewV
     alue(false)); | 
|  202   ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); |  202   ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); | 
|  203   ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); |  203   ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); | 
|  204 } |  204 } | 
|  205  |  205  | 
|  206 TEST_F(PrefsTest, PrefsPersistWhenPreconfigured) |  206 TEST_F(PrefsTest, PrefsPersistWhenPreconfigured) | 
|  207 { |  207 { | 
|  208   { |  208   { | 
|  209     AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; |  209     AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
|  210     preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(tru
     e)); |  210     preconfiguredPrefs.emplace("suppress_first_run_page", platform->GetJsEngine(
     )->NewValue(true)); | 
|  211     auto filterEngine = CreateFilterEngine(preconfiguredPrefs); |  211     auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  212  |  212  | 
|  213     ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); |  213     ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); | 
|  214     ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").AsBool()); |  214     ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").AsBool()); | 
|  215     filterEngine->SetPref("suppress_first_run_page", jsEngine->NewValue(false)); |  215     filterEngine->SetPref("suppress_first_run_page", platform->GetJsEngine()->Ne
     wValue(false)); | 
|  216   } |  216   } | 
|  217   ASSERT_FALSE(fileSystem->prefsContents.empty()); |  217   ASSERT_FALSE(fileSystem->prefsContents.empty()); | 
|  218  |  218  | 
|  219   { |  219   { | 
|  220     ResetJsEngine(); |  220     ResetPlatform(); | 
|  221     AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; |  221     AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
|  222     preconfiguredPrefs.emplace("suppress_first_run_page", jsEngine->NewValue(tru
     e)); |  222     preconfiguredPrefs.emplace("suppress_first_run_page", platform->GetJsEngine(
     )->NewValue(true)); | 
|  223     auto filterEngine = CreateFilterEngine(preconfiguredPrefs); |  223     auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  224  |  224  | 
|  225     ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); |  225     ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page").IsBool()); | 
|  226     ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); |  226     ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page").AsBool()); | 
|  227   } |  227   } | 
|  228 } |  228 } | 
| OLD | NEW |