| 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 |