| Index: test/Prefs.cpp | 
| diff --git a/test/Prefs.cpp b/test/Prefs.cpp | 
| index 3ef61e83c61a91001813129dafc93f95c7314730..bc20c13ac60c06590d1af2ce40104b1b0b6f0356 100644 | 
| --- a/test/Prefs.cpp | 
| +++ b/test/Prefs.cpp | 
| @@ -68,34 +68,36 @@ namespace | 
| TestFileSystem* fileSystem; | 
| AdblockPlus::FileSystemPtr fileSystemPtr; | 
| AdblockPlus::JsEnginePtr jsEngine; | 
| -    FilterEnginePtr filterEngine; | 
|  | 
| void SetUp() | 
| { | 
| fileSystem = new TestFileSystem(); | 
| fileSystemPtr.reset(fileSystem); | 
| -      jsEngine = CreateJsEngine(); | 
|  | 
| -      Reset(); | 
| +      ResetJsEngine(); | 
| } | 
|  | 
| -    void Reset(const AdblockPlus::FilterEngine::Prefs& preconfiguredPrefs = | 
| -               AdblockPlus::FilterEngine::Prefs()) | 
| +    void ResetJsEngine() | 
| { | 
| -      if (!jsEngine) | 
| -        jsEngine = CreateJsEngine(); | 
| +      jsEngine = CreateJsEngine(); | 
| jsEngine->SetLogSystem(AdblockPlus::LogSystemPtr(new LazyLogSystem)); | 
| jsEngine->SetFileSystem(fileSystemPtr); | 
| jsEngine->SetWebRequest(AdblockPlus::WebRequestPtr(new LazyWebRequest)); | 
| +    } | 
| + | 
| +    FilterEnginePtr CreateFilterEngine(const AdblockPlus::FilterEngine::Prefs& preconfiguredPrefs = | 
| +      AdblockPlus::FilterEngine::Prefs()) | 
| +    { | 
| AdblockPlus::FilterEngine::CreationParameters createParams; | 
| createParams.preconfiguredPrefs = preconfiguredPrefs; | 
| -      filterEngine = AdblockPlus::FilterEngine::Create(jsEngine, createParams); | 
| +      return AdblockPlus::FilterEngine::Create(jsEngine, createParams); | 
| } | 
| }; | 
| } | 
|  | 
| TEST_F(PrefsTest, PrefsGetSet) | 
| { | 
| +  auto filterEngine = CreateFilterEngine(); | 
| ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile")->AsString()); | 
| ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval")->AsInt()); | 
| ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate")->AsBool()); | 
| @@ -116,30 +118,33 @@ TEST_F(PrefsTest, PrefsGetSet) | 
|  | 
| TEST_F(PrefsTest, PrefsPersist) | 
| { | 
| -  ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile")->AsString()); | 
| -  ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval")->AsInt()); | 
| -  ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate")->AsBool()); | 
| - | 
| -  filterEngine->SetPref("patternsfile", jsEngine->NewValue("filters.ini")); | 
| -  filterEngine->SetPref("patternsbackupinterval", jsEngine->NewValue(48)); | 
| -  filterEngine->SetPref("subscriptions_autoupdate", jsEngine->NewValue(false)); | 
| +  { | 
| +    auto filterEngine = CreateFilterEngine(); | 
| +    ASSERT_EQ("patterns.ini", filterEngine->GetPref("patternsfile")->AsString()); | 
| +    ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval")->AsInt()); | 
| +    ASSERT_TRUE(filterEngine->GetPref("subscriptions_autoupdate")->AsBool()); | 
|  | 
| -  AdblockPlus::Sleep(100); | 
| +    filterEngine->SetPref("patternsfile", jsEngine->NewValue("filters.ini")); | 
| +    filterEngine->SetPref("patternsbackupinterval", jsEngine->NewValue(48)); | 
| +    filterEngine->SetPref("subscriptions_autoupdate", jsEngine->NewValue(false)); | 
|  | 
| +    AdblockPlus::Sleep(100); | 
| +  } | 
| ASSERT_FALSE(fileSystem->prefsContents.empty()); | 
|  | 
| -  Reset(); | 
| - | 
| -  ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile")->AsString()); | 
| -  ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval")->AsInt()); | 
| -  ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate")->AsBool()); | 
| +  { | 
| +    ResetJsEngine(); | 
| +    auto filterEngine = CreateFilterEngine(); | 
| +    ASSERT_EQ("filters.ini", filterEngine->GetPref("patternsfile")->AsString()); | 
| +    ASSERT_EQ(48, filterEngine->GetPref("patternsbackupinterval")->AsInt()); | 
| +    ASSERT_FALSE(filterEngine->GetPref("subscriptions_autoupdate")->AsBool()); | 
| +  } | 
| } | 
|  | 
| TEST_F(PrefsTest, UnknownPrefs) | 
| { | 
| fileSystem->prefsContents = "{\"foobar\":2, \"patternsbackupinterval\": 12}"; | 
| -  Reset(); | 
| - | 
| +  auto filterEngine = CreateFilterEngine(); | 
| ASSERT_TRUE(filterEngine->GetPref("foobar")->IsUndefined()); | 
| ASSERT_EQ(12, filterEngine->GetPref("patternsbackupinterval")->AsInt()); | 
| } | 
| @@ -147,7 +152,7 @@ TEST_F(PrefsTest, UnknownPrefs) | 
| TEST_F(PrefsTest, SyntaxFailure) | 
| { | 
| fileSystem->prefsContents = "{\"patternsbackupinterval\": 6, \"foo\"}"; | 
| -  Reset(); | 
| +  auto filterEngine = CreateFilterEngine(); | 
|  | 
| ASSERT_EQ(24, filterEngine->GetPref("patternsbackupinterval")->AsInt()); | 
| } | 
| @@ -157,7 +162,7 @@ TEST_F(PrefsTest, PreconfiguredPrefsPreconfigured) | 
| AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
| preconfiguredPrefs["disable_auto_updates"] = jsEngine->NewValue(false); | 
| preconfiguredPrefs["suppress_first_run_page"] = jsEngine->NewValue(true); | 
| -  Reset(preconfiguredPrefs); | 
| +  auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  | 
| ASSERT_TRUE(filterEngine->GetPref("disable_auto_updates")->IsBool()); | 
| ASSERT_FALSE(filterEngine->GetPref("disable_auto_updates")->AsBool()); | 
| @@ -169,7 +174,7 @@ TEST_F(PrefsTest, PreconfiguredPrefsUnsupported) | 
| { | 
| AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
| preconfiguredPrefs["unsupported_preconfig"] = jsEngine->NewValue(true); | 
| -  Reset(preconfiguredPrefs); | 
| +  auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  | 
| ASSERT_TRUE(filterEngine->GetPref("unsupported_preconfig")->IsUndefined()); | 
| } | 
| @@ -178,7 +183,7 @@ TEST_F(PrefsTest, PreconfiguredPrefsOverride) | 
| { | 
| AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
| preconfiguredPrefs["suppress_first_run_page"] = jsEngine->NewValue(true); | 
| -  Reset(preconfiguredPrefs); | 
| +  auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  | 
| filterEngine->SetPref("suppress_first_run_page", jsEngine->NewValue(false)); | 
| ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page")->IsBool()); | 
| @@ -187,21 +192,26 @@ TEST_F(PrefsTest, PreconfiguredPrefsOverride) | 
|  | 
| TEST_F(PrefsTest, PrefsPersistWhenPreconfigured) | 
| { | 
| -  AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
| -  preconfiguredPrefs["suppress_first_run_page"] = jsEngine->NewValue(true); | 
| -  Reset(preconfiguredPrefs); | 
| - | 
| -  ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page")->IsBool()); | 
| -  ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page")->AsBool()); | 
| -  filterEngine->SetPref("suppress_first_run_page", jsEngine->NewValue(false)); | 
| +  { | 
| +    AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
| +    preconfiguredPrefs["suppress_first_run_page"] = jsEngine->NewValue(true); | 
| +    auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
|  | 
| -  AdblockPlus::Sleep(100); | 
| +    ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page")->IsBool()); | 
| +    ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page")->AsBool()); | 
| +    filterEngine->SetPref("suppress_first_run_page", jsEngine->NewValue(false)); | 
|  | 
| +    AdblockPlus::Sleep(100); | 
| +  } | 
| ASSERT_FALSE(fileSystem->prefsContents.empty()); | 
|  | 
| -  jsEngine.reset(); | 
| -  Reset(preconfiguredPrefs); | 
| - | 
| -  ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page")->IsBool()); | 
| -  ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page")->AsBool()); | 
| +  { | 
| +    ResetJsEngine(); | 
| +    AdblockPlus::FilterEngine::Prefs preconfiguredPrefs; | 
| +    preconfiguredPrefs["suppress_first_run_page"] = jsEngine->NewValue(true); | 
| +    auto filterEngine = CreateFilterEngine(preconfiguredPrefs); | 
| + | 
| +    ASSERT_TRUE(filterEngine->GetPref("suppress_first_run_page")->IsBool()); | 
| +    ASSERT_FALSE(filterEngine->GetPref("suppress_first_run_page")->AsBool()); | 
| +  } | 
| } | 
|  |