Index: test/FilterEngine.cpp
===================================================================
--- a/test/FilterEngine.cpp
+++ b/test/FilterEngine.cpp
@@ -236,31 +236,31 @@
       };
       jsEngine->SetEventCallback("filterChange", [this](const JsConstValueList& params/*action, item*/)
       {
         ASSERT_EQ(2u, params.size());
         if (params[0]->AsString() == "subscription.downloadStatus")
         {
           {
             std::lock_guard<std::mutex> lock(downloadStatusChanged.mutex);
-            downloadStatusChanged.url = params[1]->GetProperty("url")->AsString();
+            downloadStatusChanged.url = params[1]->GetProperty("url").AsString();
           }
           downloadStatusChanged.cv.notify_one();
         }
       });
     }
 
     SubscriptionPtr EnsureExampleSubscriptionAndForceUpdate(const std::string& apppendToUrl = std::string())
     {
       if (!filterEngine)
         filterEngine = FilterEngine::Create(jsEngine, createParams);
       auto subscriptionUrl = subscriptionUrlPrefix + apppendToUrl;
       auto subscription = filterEngine->GetSubscription(subscriptionUrl);
-      EXPECT_EQ(0u, subscription->GetProperty("filters")->AsList().size()) << subscriptionUrl;
-      EXPECT_TRUE(subscription->GetProperty("downloadStatus")->IsNull()) << subscriptionUrl;
+      EXPECT_EQ(0u, subscription->GetProperty("filters").AsList().size()) << subscriptionUrl;
+      EXPECT_TRUE(subscription->GetProperty("downloadStatus").IsNull()) << subscriptionUrl;
       subscription->UpdateFilters();
       {
         std::unique_lock<std::mutex> lock(downloadStatusChanged.mutex);
         downloadStatusChanged.cv.wait_for(lock,
           /*don't block tests forever*/std::chrono::seconds(5),
           [this, subscriptionUrl]()->bool
         {
           return subscriptionUrl == downloadStatusChanged.url;
@@ -288,26 +288,26 @@
   AdblockPlus::FilterPtr filter5 = filterEngine->GetFilter("  foo  ");
   ASSERT_EQ(*filter1, *filter5);
 }
 
 TEST_F(FilterEngineTest, FilterProperties)
 {
   AdblockPlus::FilterPtr filter = filterEngine->GetFilter("foo");
 
-  ASSERT_TRUE(filter->GetProperty("stringFoo")->IsUndefined());
-  ASSERT_TRUE(filter->GetProperty("intFoo")->IsUndefined());
-  ASSERT_TRUE(filter->GetProperty("boolFoo")->IsUndefined());
+  ASSERT_TRUE(filter->GetProperty("stringFoo").IsUndefined());
+  ASSERT_TRUE(filter->GetProperty("intFoo").IsUndefined());
+  ASSERT_TRUE(filter->GetProperty("boolFoo").IsUndefined());
 
   filter->SetProperty("stringFoo", "y");
   filter->SetProperty("intFoo", 24);
   filter->SetProperty("boolFoo", true);
-  ASSERT_EQ("y", filter->GetProperty("stringFoo")->AsString());
-  ASSERT_EQ(24, filter->GetProperty("intFoo")->AsInt());
-  ASSERT_TRUE(filter->GetProperty("boolFoo")->AsBool());
+  ASSERT_EQ("y", filter->GetProperty("stringFoo").AsString());
+  ASSERT_EQ(24, filter->GetProperty("intFoo").AsInt());
+  ASSERT_TRUE(filter->GetProperty("boolFoo").AsBool());
 }
 
 TEST_F(FilterEngineTest, AddRemoveFilters)
 {
   ASSERT_EQ(0u, filterEngine->GetListedFilters().size());
   AdblockPlus::FilterPtr filter = filterEngine->GetFilter("foo");
   ASSERT_EQ(0u, filterEngine->GetListedFilters().size());
   ASSERT_FALSE(filter->IsListed());
@@ -326,26 +326,26 @@
   ASSERT_EQ(0u, filterEngine->GetListedFilters().size());
   ASSERT_FALSE(filter->IsListed());
 }
 
 TEST_F(FilterEngineTest, SubscriptionProperties)
 {
   AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo");
 
-  ASSERT_TRUE(subscription->GetProperty("stringFoo")->IsUndefined());
-  ASSERT_TRUE(subscription->GetProperty("intFoo")->IsUndefined());
-  ASSERT_TRUE(subscription->GetProperty("boolFoo")->IsUndefined());
+  ASSERT_TRUE(subscription->GetProperty("stringFoo").IsUndefined());
+  ASSERT_TRUE(subscription->GetProperty("intFoo").IsUndefined());
+  ASSERT_TRUE(subscription->GetProperty("boolFoo").IsUndefined());
 
   subscription->SetProperty("stringFoo", "y");
   subscription->SetProperty("intFoo", 24);
   subscription->SetProperty("boolFoo", true);
-  ASSERT_EQ("y", subscription->GetProperty("stringFoo")->AsString());
-  ASSERT_EQ(24, subscription->GetProperty("intFoo")->AsInt());
-  ASSERT_TRUE(subscription->GetProperty("boolFoo")->AsBool());
+  ASSERT_EQ("y", subscription->GetProperty("stringFoo").AsString());
+  ASSERT_EQ(24, subscription->GetProperty("intFoo").AsInt());
+  ASSERT_TRUE(subscription->GetProperty("boolFoo").AsBool());
 }
 
 TEST_F(FilterEngineTest, AddRemoveSubscriptions)
 {
   ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size());
   AdblockPlus::SubscriptionPtr subscription = filterEngine->GetSubscription("foo");
   ASSERT_EQ(0u, filterEngine->GetListedSubscriptions().size());
   ASSERT_FALSE(subscription->IsListed());
@@ -737,17 +737,17 @@
   }
   else if (subscriptions[1]->IsAA())
   {
     aaSubscription = subscriptions[1];
     langSubscription = subscriptions[0];
   }
   ASSERT_NE(nullptr, aaSubscription);
   ASSERT_NE(nullptr, langSubscription);
-  EXPECT_EQ(langSubscriptionUrl, langSubscription->GetProperty("url")->AsString());
+  EXPECT_EQ(langSubscriptionUrl, langSubscription->GetProperty("url").AsString());
   EXPECT_TRUE(filterEngine->IsAAEnabled());
 }
 
 TEST_F(FilterEngineWithFreshFolder, DisableSubscriptionsAutoSelectOnFirstRun)
 {
   auto jsEngine = createJsEngine();
   FilterEngine::CreationParameters createParams;
   createParams.preconfiguredPrefs["first_run_subscription_auto_select"] = jsEngine->NewValue(false);
@@ -910,17 +910,17 @@
       if (otherSubscriptionsNumber == 1u)
       {
         auto subscription = filterEngine->GetSubscription(kOtherSubscriptionUrl);
         ASSERT_TRUE(subscription);
         subscription->AddToList();
         const auto subscriptions = filterEngine->GetListedSubscriptions();
         ASSERT_EQ(1u, subscriptions.size());
         EXPECT_FALSE(subscriptions[0]->IsAA());
-        EXPECT_EQ(kOtherSubscriptionUrl, subscriptions[0]->GetProperty("url")->AsString());
+        EXPECT_EQ(kOtherSubscriptionUrl, subscriptions[0]->GetProperty("url").AsString());
       }
       if (isAASatusPresent(aaStatus))
       {
         filterEngine->SetAAEnabled(true); // add AA by enabling it
         if (aaStatus == AAStatus::disabled_present)
         {
           filterEngine->SetAAEnabled(false);
         }
@@ -1006,90 +1006,90 @@
     testSubscriptionState(parameter.expectedAAStatus, otherSubscriptionsNumber);
   }
 }
 
 TEST_F(FilterEngineIsAllowedConnectionTest, AbsentCallbackAllowsUpdating)
 {
   createParams.isConnectionAllowedCallback = FilterEngine::IsConnectionAllowedCallback();
   auto subscription = EnsureExampleSubscriptionAndForceUpdate();
-  EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus")->AsString());
-  EXPECT_EQ(1u, subscription->GetProperty("filters")->AsList().size());
+  EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus").AsString());
+  EXPECT_EQ(1u, subscription->GetProperty("filters").AsList().size());
 }
 
 TEST_F(FilterEngineIsAllowedConnectionTest, AllowingCallbackAllowsUpdating)
 {
   // no stored allowed_connection_type preference
   auto subscription = EnsureExampleSubscriptionAndForceUpdate();
-  EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus")->AsString());
-  EXPECT_EQ(1u, subscription->GetProperty("filters")->AsList().size());
+  EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus").AsString());
+  EXPECT_EQ(1u, subscription->GetProperty("filters").AsList().size());
   auto capturedConnectionTypes = this->capturedConnectionTypes.GetStrings();
   ASSERT_EQ(1u, capturedConnectionTypes.size());
   EXPECT_FALSE(capturedConnectionTypes[0].first);
 }
 
 TEST_F(FilterEngineIsAllowedConnectionTest, NotAllowingCallbackDoesNotAllowUpdating)
 {
   isConnectionAllowed = false;
   // no stored allowed_connection_type preference
   auto subscription = EnsureExampleSubscriptionAndForceUpdate();
-  EXPECT_EQ("synchronize_connection_error", subscription->GetProperty("downloadStatus")->AsString());
-  EXPECT_EQ(0u, subscription->GetProperty("filters")->AsList().size());
+  EXPECT_EQ("synchronize_connection_error", subscription->GetProperty("downloadStatus").AsString());
+  EXPECT_EQ(0u, subscription->GetProperty("filters").AsList().size());
   auto capturedConnectionTypes = this->capturedConnectionTypes.GetStrings();
   EXPECT_EQ(1u, capturedConnectionTypes.size());
 }
 
 TEST_F(FilterEngineIsAllowedConnectionTest, PredefinedAllowedConnectionTypeIsPassedToCallback)
 {
   std::string predefinedAllowedConnectionType = "non-metered";
   createParams.preconfiguredPrefs["allowed_connection_type"] = jsEngine->NewValue(predefinedAllowedConnectionType);
   auto subscription = EnsureExampleSubscriptionAndForceUpdate();
-  EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus")->AsString());
-  EXPECT_EQ(1u, subscription->GetProperty("filters")->AsList().size());
+  EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus").AsString());
+  EXPECT_EQ(1u, subscription->GetProperty("filters").AsList().size());
   auto capturedConnectionTypes = this->capturedConnectionTypes.GetStrings();
   ASSERT_EQ(1u, capturedConnectionTypes.size());
   EXPECT_TRUE(capturedConnectionTypes[0].first);
   EXPECT_EQ(predefinedAllowedConnectionType, capturedConnectionTypes[0].second);
 }
 
 TEST_F(FilterEngineIsAllowedConnectionTest, ConfiguredConnectionTypeIsPassedToCallback)
 {
   // FilterEngine->RemoveSubscription is not usable here because subscriptions
   // are cached internally by URL. So, different URLs are used in diffirent
   // checks.
   {
     std::string predefinedAllowedConnectionType = "non-metered";
     createParams.preconfiguredPrefs["allowed_connection_type"] = jsEngine->NewValue(predefinedAllowedConnectionType);
     auto subscription = EnsureExampleSubscriptionAndForceUpdate();
-    EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus")->AsString());
-    EXPECT_EQ(1u, subscription->GetProperty("filters")->AsList().size());
+    EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus").AsString());
+    EXPECT_EQ(1u, subscription->GetProperty("filters").AsList().size());
     auto capturedConnectionTypes = this->capturedConnectionTypes.GetStrings();
     ASSERT_EQ(1u, capturedConnectionTypes.size());
     EXPECT_TRUE(capturedConnectionTypes[0].first);
     EXPECT_EQ(predefinedAllowedConnectionType, capturedConnectionTypes[0].second);
   }
   capturedConnectionTypes.Clear();
   {
     // set no value
     filterEngine->SetAllowedConnectionType(nullptr);
     auto subscription = EnsureExampleSubscriptionAndForceUpdate("subA");
-    EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus")->AsString());
-    EXPECT_EQ(1u, subscription->GetProperty("filters")->AsList().size());
+    EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus").AsString());
+    EXPECT_EQ(1u, subscription->GetProperty("filters").AsList().size());
     auto capturedConnectionTypes = this->capturedConnectionTypes.GetStrings();
     ASSERT_EQ(1u, capturedConnectionTypes.size());
     EXPECT_FALSE(capturedConnectionTypes[0].first);
     subscription->RemoveFromList();
     this->capturedConnectionTypes.Clear();
   }
   capturedConnectionTypes.Clear();
   {
     // set some value
     std::string testConnection = "test connection";
     filterEngine->SetAllowedConnectionType(&testConnection);
     auto subscription = EnsureExampleSubscriptionAndForceUpdate("subB");
-    EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus")->AsString());
-    EXPECT_EQ(1u, subscription->GetProperty("filters")->AsList().size());
+    EXPECT_EQ("synchronize_ok", subscription->GetProperty("downloadStatus").AsString());
+    EXPECT_EQ(1u, subscription->GetProperty("filters").AsList().size());
     auto capturedConnectionTypes = this->capturedConnectionTypes.GetStrings();
     ASSERT_EQ(1u, capturedConnectionTypes.size());
     EXPECT_TRUE(capturedConnectionTypes[0].first);
     EXPECT_EQ(testConnection, capturedConnectionTypes[0].second);
   }
 }
