TODO - surf-adblock - Surf adblock web extension
 (HTM) git clone git://git.codemadness.org/surf-adblock
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       TODO (2813B)
       ---
            1 - elementhiding: reverse exception rule are not supported (per domain).
            2 - block rule: exception rules are not supported: these are also abused sometimes
            3   to whitelist certain sites.
            4 
            5 - simplify match, there are only a few rules with multiple *.
            6 
            7 - loadrules: return struct rules* ?
            8   on error free rules.
            9 
           10 - optimization: for simple patterns use: strstr, strcasestr, strcmp, strcasemp
           11 
           12 - combine rules in groups: display: none: display: initial, saves memory:
           13   rule1,rule2 { display: none; } vs rule 1{...}rule2{...}
           14 
           15 - checkrequest -> allowrequest.
           16 
           17 - add test-case for global exception rules (no domains), see globalcss init code.
           18   also support inverse element hide rule: "~example.com##div.textad".
           19 - support domain name anchor separately: "||".
           20 - test blocking websocket connections in surf.
           21 - skip protocol part when matching for now, (later add support for websockets).
           22 - for f->matchbegin, matchend etc: make sure to match domain properly, check part of
           23   domain (subdomain).
           24 - optimize towupper for fnmatch? check < 128, see musl optimization.
           25 - fix blocking of : ||ads.somesite.com^
           26   matchbegin and matchend rules are wrong.
           27 - fix tweakers.net popup / rule.
           28         this is in an exception rule...
           29 
           30         make sure exception rules are always below in the list? modify awk script?
           31 - preprocess pattern upfront (no copying of data per match (snprintf)).
           32 - performance:
           33   - benchmark rule matching (timing).
           34   - bloom filters? some kind of cache?
           35   - optimize simple filter case.
           36     - also for single wildcard (at most start or end)? */bla or /bla*
           37 - support separator "^" = [/\?]?
           38   - test it better.
           39 - CSS: separate CSS rules so it never is iterated in request rules.
           40   ? Cache all global rules, iterate site rules per site?
           41 - there is a websocket option? ignore it: block it in surf itself.
           42   test if websockets use ws:// prefix.
           43 - show linenr on error / ignored rule.
           44 
           45 Docs:
           46 - https://adblockplus.org/en/filter-cheatsheet
           47 - https://adblockplus.org/filters
           48 
           49 - On out-of-memory situations don't crash the page, but how to handle it?
           50 - CSS blocking: don't allow sites to override the appended global and
           51   site-specific stylesheet.
           52 - separate between site-specific and global block rules.
           53 - optimize matching:
           54         ? hashtable per domain for specific rules or use bloom filters for matching?
           55         - separate general block rules into a separate list.
           56         - test: just use a simple strstr/strcasestr for patterns with no wildcards
           57           and no matchbegin/matchend. Use strncmp/strcasecmp for patterns with no wildcards
           58           and matchbegin or matchend set.
           59         - make less CPU intensive.
           60         - maybe even include it statically?
           61         - optimize CSS rule matching (only per site?).
           62 
           63 - optimize memory allocation.
           64 - optimize: pregenerate one global stylesheet that applies to all sites?
           65 - separate adblocker into daemon? not sure.