[Xfce4-commits] <midori:master> Add URL cache in adblock extension

Christian Dywan noreply at xfce.org
Thu Jun 2 00:52:04 CEST 2011


Updating branch refs/heads/master
         to fc842d9751c84bf742b47d1ac6d0246bb53e92ff (commit)
       from 243f93b70d61e0e35a8d6d60257cff1e6e06f8e1 (commit)

commit fc842d9751c84bf742b47d1ac6d0246bb53e92ff
Author: Alexander Butenko <a.butenka at gmail.com>
Date:   Sat May 28 22:57:31 2011 -0400

    Add URL cache in adblock extension
    
    We can bypass all tests on the second load of the URL.

 extensions/adblock.c |   27 ++++++++++++++++++++++++---
 1 files changed, 24 insertions(+), 3 deletions(-)

diff --git a/extensions/adblock.c b/extensions/adblock.c
index 062a77e..e40b533 100644
--- a/extensions/adblock.c
+++ b/extensions/adblock.c
@@ -41,6 +41,7 @@
 
 static GHashTable* pattern;
 static GHashTable* keys;
+static GHashTable* urlcache;
 static gchar* blockcss = NULL;
 static gchar* blockcssprivate = NULL;
 static gchar* blockscript = NULL;
@@ -92,6 +93,9 @@ adblock_init_db ()
     keys = g_hash_table_new_full (g_str_hash, g_str_equal,
                    (GDestroyNotify)g_free,
                    (GDestroyNotify)g_regex_unref);
+    urlcache = g_hash_table_new_full (g_str_hash, g_str_equal,
+                   (GDestroyNotify)g_free,
+                   (GDestroyNotify)g_free);
     katze_assign (blockcss, g_strdup ("z-non-exist"));
     katze_assign (blockcssprivate, g_strdup (""));
 }
@@ -683,11 +687,27 @@ adblock_is_matched (const gchar*  opts,
                     const gchar*  req_uri,
                     const gchar*  page_uri)
 {
+    gboolean foundbykey;
+    gboolean foundbypattern;
+    gchar* value;
+
+    if ((value = g_hash_table_lookup (urlcache, req_uri)))
+    {
+        if (value[0] == '0')
+            return FALSE;
+        else
+            return TRUE;
+    }
 
-    if (adblock_is_matched_by_key (opts, req_uri, page_uri) == TRUE)
+    foundbykey = adblock_is_matched_by_key (opts, req_uri, page_uri);
+    foundbypattern = adblock_is_matched_by_pattern (req_uri, page_uri);
+    if (foundbykey == TRUE || foundbypattern == TRUE)
+    {
+        g_hash_table_insert (urlcache, g_strdup (req_uri), g_strdup("1"));
         return TRUE;
-    else
-        return adblock_is_matched_by_pattern (req_uri, page_uri);
+    }
+    g_hash_table_insert (urlcache, g_strdup (req_uri), g_strdup("0"));
+    return FALSE;
 }
 
 #if HAVE_WEBKIT_RESOURCE_REQUEST
@@ -1362,6 +1382,7 @@ adblock_deactivate_cb (MidoriExtension* extension,
     katze_assign (blockcss, NULL);
     katze_assign (blockcssprivate, NULL);
     g_hash_table_destroy (pattern);
+    g_hash_table_destroy (urlcache);
 }
 
 static void



More information about the Xfce4-commits mailing list