~ubuntu-branches/ubuntu/maverick/adblock-plus/maverick-updates

« back to all changes in this revision

Viewing changes to chrome/content/ui/sidebar.js

  • Committer: Bazaar Package Importer
  • Author(s): Benjamin Drung
  • Date: 2010-05-04 14:45:07 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20100504144507-h47ieg2r2w46nn32
Tags: 1.2-1
* New upstream release.
* Bump Standards-Version to 3.8.4 (no changes required).

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 *
16
16
 * The Initial Developer of the Original Code is
17
17
 * Wladimir Palant.
18
 
 * Portions created by the Initial Developer are Copyright (C) 2006-2009
 
18
 * Portions created by the Initial Developer are Copyright (C) 2006-2010
19
19
 * the Initial Developer. All Rights Reserved.
20
20
 *
21
21
 * Contributor(s):
40
40
 
41
41
var abpHooks = null;
42
42
 
 
43
/**
 
44
 * Cached value of "enabled" preference, for onPrefChange.
 
45
 */
 
46
var oldEnabled = abp.prefs.enabled;
 
47
 
43
48
function init() {
44
49
  var list = E("list");
45
50
  list.view = treeView;
46
51
 
47
52
  // Restore previous state
48
53
  var params = abp.getParams();
49
 
  if (params && params.search) {
50
 
    E("searchField").value = params.search;
51
 
    treeView.setFilter(params.search);
 
54
  if (params && params.filter)
 
55
  {
 
56
    E("searchField").value = params.filter;
 
57
    treeView.setFilter(params.filter);
52
58
  }
53
59
  if (params && params.focus && E(params.focus))
54
60
    E(params.focus).focus();
89
95
  reloadDisabledFilters();
90
96
  filterStorage.addFilterObserver(reloadDisabledFilters);
91
97
  filterStorage.addSubscriptionObserver(reloadDisabledFilters);
 
98
  abp.prefs.addListener(onPrefChange);
92
99
 
93
100
  // Activate flasher
94
101
  list.addEventListener("select", onSelectionChange, false);
120
127
  RequestList.removeListener(handleItemChange);
121
128
  filterStorage.removeFilterObserver(reloadDisabledFilters);
122
129
  filterStorage.removeSubscriptionObserver(reloadDisabledFilters);
 
130
  abp.prefs.removeListener(onPrefChange);
123
131
 
124
132
  abpHooks.getBrowser().removeEventListener("select", handleTabChange, false);
125
133
  mainWin.removeEventListener("unload", mainUnload, false);
126
134
}
127
135
 
128
136
/**
 
137
 * Tracks preference changes, calls reloadDisabledFilters whenever Adblock Plus
 
138
 * is enabled/disabled.
 
139
 */
 
140
function onPrefChange()
 
141
{
 
142
  if (abp.prefs.enabled != oldEnabled)
 
143
  {
 
144
    oldEnabled = abp.prefs.enabled;
 
145
    reloadDisabledFilters();
 
146
  }
 
147
}
 
148
 
 
149
/**
129
150
 * Updates matchers for disabled filters (global disabledBlacklistMatcher and
130
151
 * disabledWhitelistMatcher variables), called on each filter change.
131
152
 */
134
155
  disabledBlacklistMatcher.clear();
135
156
  disabledWhitelistMatcher.clear();
136
157
 
137
 
  for each (let subscription in filterStorage.subscriptions)
 
158
  if (abp.prefs.enabled)
138
159
  {
139
 
    if (subscription.disabled)
140
 
      continue;
141
 
 
142
 
    for each (let filter in subscription.filters)
143
 
      if (filter instanceof abp.RegExpFilter && filter.disabled)
144
 
        (filter instanceof abp.BlockingFilter ? disabledBlacklistMatcher : disabledWhitelistMatcher).add(filter);
 
160
    for each (let subscription in filterStorage.subscriptions)
 
161
    {
 
162
      if (subscription.disabled)
 
163
        continue;
 
164
  
 
165
      for each (let filter in subscription.filters)
 
166
        if (filter instanceof abp.RegExpFilter && filter.disabled)
 
167
          (filter instanceof abp.BlockingFilter ? disabledBlacklistMatcher : disabledWhitelistMatcher).add(filter);
 
168
    }
145
169
  }
 
170
 
 
171
  treeView.setData(treeView.allData);
146
172
}
147
173
 
148
174
// Called whenever list selection changes - triggers flasher
335
361
    let filter = item.filter;
336
362
    let menuItem = E(filter.disabled ? "contextEnableFilter" : "contextDisableFilter");
337
363
    menuItem.filter = filter;
338
 
    menuItem.setAttribute("label", menuItem.getAttribute("labeltempl").replace(/--/, filter.text));
 
364
    menuItem.setAttribute("label", menuItem.getAttribute("labeltempl").replace(/\?1\?/, filter.text));
339
365
    menuItem.hidden = false;
340
366
 
341
367
    if (filter instanceof abp.ActiveFilter && !filter.disabled && filter.subscriptions.length && !filter.subscriptions.some(function(subscription) !(subscription instanceof abp.SpecialSubscription)))
352
378
        menuItem.item = item;
353
379
        menuItem.filter = filter;
354
380
        menuItem.domain = domain;
355
 
        menuItem.setAttribute("label", menuItem.getAttribute("labeltempl").replace(/--/, domain));
 
381
        menuItem.setAttribute("label", menuItem.getAttribute("labeltempl").replace(/\?1\?/, domain));
356
382
        menuItem.hidden = false;
357
383
      }
358
384
    }
384
410
  }
385
411
  else if (event.button == 1)
386
412
  {
387
 
    openInTab(item);
 
413
    openInTab(item, event);
388
414
    event.preventDefault();
389
415
  }
390
416
}
404
430
/**
405
431
 * Opens the item in a new tab.
406
432
 */
407
 
function openInTab(item)
 
433
function openInTab(item, /**Event*/ event)
408
434
{
409
435
  if (!item)
410
436
    item = treeView.getSelectedItem();
411
437
  if (!item || item.typeDescr == "ELEMHIDE")
412
438
    return;
413
439
 
414
 
  abp.loadInBrowser(item.location, mainWin);
 
440
  abp.loadInBrowser(item.location, mainWin, event);
415
441
}
416
442
 
417
443
function doBlock() {
478
504
      {
479
505
        if (/^DOMAIN=(.*)/.test(options[i]))
480
506
        {
481
 
          let domains = RegExp.$1.split("|").filter(function(d) d != domain && d != "~" + domain && d.lastIndexOf("." + domain) != d.length - domain.length - 1);
 
507
          let domains = RegExp.$1.split("|").filter(function(d) d != domain && d != "~" + domain && (d.length <= domain.length || d.lastIndexOf("." + domain) != d.length - domain.length - 1));
482
508
          domains.push("~" + domain);
483
509
          options[i] = "DOMAIN=" + domains.join("|");
484
510
          found = true;
498
524
    if (/^([^#]+)(#.*)/.test(text))
499
525
    {
500
526
      let selector = RegExp.$2;
501
 
      let domains = RegExp.$1.toUpperCase().split(",").filter(function(d) d != domain && d != "~" + domain && d.lastIndexOf("." + domain) != d.length - domain.length - 1);
 
527
      let domains = RegExp.$1.toUpperCase().split(",").filter(function(d) d != domain && (d.length <= domain.length || d != "~" + domain && d.lastIndexOf("." + domain) != d.length - domain.length - 1));
502
528
      domains.push("~" + domain);
503
529
      text = domains.join(",").toLowerCase() + selector;
504
530
    }
971
997
    this.allData = data;
972
998
    for each (let item in this.allData)
973
999
    {
 
1000
      if (item.filter instanceof abp.RegExpFilter && item.filter.disabled)
 
1001
        item.filter = null;
974
1002
      if (!item.filter)
975
1003
        item.filter = disabledWhitelistMatcher.matchesAny(item.location, item.typeDescr, item.docDomain, item.thirdParty);
976
1004
      if (!item.filter)