[Pkg-mozext-commits] [requestpolicy] 58/280: add a RegEx filter to the RequestLog, resolves #537

David Prévot taffit at moszumanska.debian.org
Sat May 2 20:29:59 UTC 2015


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository requestpolicy.

commit e2592bfb45ae4ae5080896c1221ccef9393d8c53
Author: Martin Kimmerle <dev at 256k.de>
Date:   Sat Dec 13 18:22:31 2014 +0100

    add a RegEx filter to the RequestLog, resolves #537
---
 src/content/lib/utils.jsm               |  26 ++++++++
 src/content/ui/request-log.filtering.js | 109 ++++++++++++++++++++++++++++++++
 src/content/ui/request-log.interface.js |  42 ++++++------
 src/content/ui/request-log.js           |  47 +++++++-------
 src/content/ui/request-log.tree-view.js |  77 +++++++++++-----------
 src/content/ui/request-log.xul          |  13 ++++
 src/locale/de/requestpolicy.dtd         |   4 ++
 src/locale/en-US/requestpolicy.dtd      |   4 ++
 src/locale/eo/requestpolicy.dtd         |   4 ++
 src/locale/es-MX/requestpolicy.dtd      |   4 ++
 src/locale/eu/requestpolicy.dtd         |   4 ++
 src/locale/fr/requestpolicy.dtd         |   4 ++
 src/locale/it/requestpolicy.dtd         |   4 ++
 src/locale/ja/requestpolicy.dtd         |   4 ++
 src/locale/ko-KR/requestpolicy.dtd      |   4 ++
 src/locale/lv-LV/requestpolicy.dtd      |   4 ++
 src/locale/nl/requestpolicy.dtd         |   4 ++
 src/locale/pt-BR/requestpolicy.dtd      |   4 ++
 src/locale/ru-RU/requestpolicy.dtd      |   4 ++
 src/locale/sk-SK/requestpolicy.dtd      |   4 ++
 src/locale/sv-SE/requestpolicy.dtd      |   4 ++
 src/locale/tr/requestpolicy.dtd         |   4 ++
 src/locale/uk-UA/requestpolicy.dtd      |   4 ++
 src/locale/zh-CN/requestpolicy.dtd      |   4 ++
 src/locale/zh-TW/requestpolicy.dtd      |   4 ++
 25 files changed, 310 insertions(+), 80 deletions(-)

diff --git a/src/content/lib/utils.jsm b/src/content/lib/utils.jsm
index 15f42b7..5e54182 100644
--- a/src/content/lib/utils.jsm
+++ b/src/content/lib/utils.jsm
@@ -123,5 +123,31 @@ let Utils = (function() {
                     .getInterface(Ci.nsIDOMWindow);
   };
 
+
+  //
+  // DOM utilities
+  //
+
+  /**
+   * Wait for a window to be loaded and then add a list of Elements „by ID“ to
+   * a scope. The scope is optional, but in any case will be returned.
+   *
+   * @returns {Object} the scope of the elements
+   */
+  self.getElementsByIdOnLoad = function(aWindow, aElementIDs, aScope,
+                                        aCallback) {
+    let scope = aScope || {};
+    let document = aWindow.document;
+    aWindow.addEventListener("load", function() {
+      for (let elementName in aElementIDs) {
+        scope[elementName] = document.getElementById(aElementIDs[elementName]);
+      }
+      if (aCallback) {
+        aCallback();
+      }
+    });
+    return scope;
+  };
+
   return self;
 }());
diff --git a/src/content/ui/request-log.filtering.js b/src/content/ui/request-log.filtering.js
new file mode 100644
index 0000000..4aab9d8
--- /dev/null
+++ b/src/content/ui/request-log.filtering.js
@@ -0,0 +1,109 @@
+/*
+ * ***** BEGIN LICENSE BLOCK *****
+ *
+ * RequestPolicy - A Firefox extension for control over cross-site requests.
+ * Copyright (c) 2008-2012 Justin Samuel
+ * Copyright (c) 2014 Martin Kimmerle
+ *
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LICENSE BLOCK *****
+ */
+
+
+window.requestpolicy.requestLog = (function (self) {
+
+  const Ci = Components.interfaces;
+  const Cc = Components.classes;
+  const Cu = Components.utils;
+
+  let mod = {};
+  Cu.import("chrome://requestpolicy/content/lib/script-loader.jsm", mod);
+  Cu.import("resource://gre/modules/Services.jsm", mod);
+  mod.ScriptLoader.importModules([
+    "utils"
+  ], mod);
+  let Utils = mod.Utils;
+
+  let filterText = null;
+
+  let elements = Utils.getElementsByIdOnLoad(window, {
+        filterTextbox: "requestpolicy-requestLog-requestFilter",
+        clearFilterButton: "requestpolicy-requestLog-clearFilter"
+      });
+
+  self.filterChanged = function() {
+    let filterValue = elements.filterTextbox.value;
+
+    // create a new regular expression
+    filterText = filterValue.length === 0 ? null : new RegExp(filterValue, 'i');
+    // enable/disable the "Clear Filter" button
+    elements.clearFilterButton.disabled = filterValue.length === 0;
+
+    loadTable();
+  };
+
+  self.clearFilter = function() {
+    elements.filterTextbox.value = "";
+    elements.filterTextbox.focus();
+    self.filterChanged();
+  }
+
+
+
+
+  /**
+   * Check if the row should be displayed or filtered out.
+   *
+   * This function searches the first two columns for the filterText.
+   *
+   * @param {Array} aRow
+   */
+  self.isRowFilteredOut = function(aRow) {
+    if (filterText === null) {
+      return false;
+    }
+    // The row is filtered out in case *all* searches in the columns *failed*.
+    return aRow[0].search(filterText) === -1 &&
+        aRow[1].search(filterText) === -1;
+  };
+
+  function addRowOrFilterOut(aRow) {
+    if (self.isRowFilteredOut(aRow)) {
+      return;
+    }
+    self.visibleRows.push(aRow);
+  }
+
+  // This function is called every time the tree is sorted, filtered or reloaded
+  function loadTable() {
+    let oldRowCount = self.treeView.rowCount;
+
+    if (!filterText) {
+      // there's no filter ==> show all rows
+      self.visibleRows = self.rows;
+    } else {
+      // filter out the rows we want to display
+      self.visibleRows = [];
+      self.rows.forEach(addRowOrFilterOut);
+    }
+
+    // notify that the table rows has changed
+    let newRowCount = self.treeView.rowCount;
+    self.treebox.rowCountChanged(0, newRowCount-oldRowCount);
+  }
+
+
+  return self;
+}(window.requestpolicy.requestLog || {}));
diff --git a/src/content/ui/request-log.interface.js b/src/content/ui/request-log.interface.js
index 180bb39..72af12e 100644
--- a/src/content/ui/request-log.interface.js
+++ b/src/content/ui/request-log.interface.js
@@ -43,12 +43,13 @@ window.requestpolicy.requestLog = (function (self) {
 
 
 
-  self.clear = function(e) {
-    var count = self.rowCount;
+  self.clear = function() {
+    var count = self.treeView.rowCount;
     if (count == 0) {
       return;
     }
-    self.visibleData = [];
+    self.rows = [];
+    self.visibleRows = [];
     if (!self.treebox) {
       return;
     }
@@ -99,29 +100,34 @@ window.requestpolicy.requestLog = (function (self) {
 
 
 
-  function addRequest(request) {
-    if (self.isEmptyMessageDisplayed) {
-      // If this were to be called in a multithreaded manner, there's probably
-      // a race condition here.
-      self.visibleData.shift();
-      self.isEmptyMessageDisplayed = false;
-      self.treebox.rowCountChanged(0, -1);
-    }
-    self.visibleData.push(request);
+  function addRow(aRow) {
+    self.rows.push(aRow);
 
-    if (!self.treebox) {
-      return;
-    }
+    if (!self.isRowFilteredOut(aRow)) {
+      if (self.isEmptyMessageDisplayed) {
+        // If this were to be called in a multithreaded manner, there's probably
+        // a race condition here.
+        self.visibleRows.shift();
+        self.isEmptyMessageDisplayed = false;
+        self.treebox.rowCountChanged(0, -1);
+      }
 
-    self.treebox.rowCountChanged(0, 1);
+      self.visibleRows.push(aRow);
+
+      if (!self.treebox) {
+        return;
+      }
+
+      self.treebox.rowCountChanged(0, 1);
+    }
   }
 
   self.addAllowedRequest = function(originURI, destURI) {
-    addRequest([originURI, destURI, false, (new Date()).toLocaleTimeString()]);
+    addRow([originURI, destURI, false, (new Date()).toLocaleTimeString()]);
   };
 
   self.addBlockedRequest = function(originURI, destURI) {
-    addRequest([originURI, destURI, true, (new Date()).toLocaleTimeString()]);
+    addRow([originURI, destURI, true, (new Date()).toLocaleTimeString()]);
   };
 
 
diff --git a/src/content/ui/request-log.js b/src/content/ui/request-log.js
index fe59c64..e076289 100644
--- a/src/content/ui/request-log.js
+++ b/src/content/ui/request-log.js
@@ -32,45 +32,42 @@ window.requestpolicy.requestLog = (function (self) {
   let mod = {};
   Cu.import("chrome://requestpolicy/content/lib/script-loader.jsm", mod);
   mod.ScriptLoader.importModules([
-    "string-utils"
+    "string-utils",
+    "utils"
   ], mod);
-  let StringUtils = mod.StringUtils;
+  let StringUtils = mod.StringUtils, Utils = mod.Utils;
 
 
-  let initialized = false;
   self.isEmptyMessageDisplayed = true;
+  self.rows = [];
+  self.visibleRows = [];
 
-  self.tree = null;
 
-  self.visibleData = [];
 
+  let init = function() {
+    // callback function – gets called when the tree is available.
+    self.tree.view = self.treeView;
 
-  function showLogIsEmptyMessage() {
-    var message = StringUtils.strbundle.GetStringFromName("requestLogIsEmpty");
-    var directions = StringUtils.strbundle
-        .GetStringFromName("requestLogDirections");
-    self.visibleData.push([message, directions, false, ""]);
-  };
+    showLogIsEmptyMessage();
 
+    // Give the requestpolicy overlay direct access to the the request log.
+    window.parent.requestpolicy.overlay.requestLog = self;
+  }
 
-  function init() {
-    if (initialized) {
-      return;
-    }
-    initialized = true;
+  Utils.getElementsByIdOnLoad(window, {
+        tree: "requestpolicy-requestLog-tree"
+      }, self, init);
 
-    self.tree = document.getElementById("requestpolicy-requestLog-tree");
-    self.tree.view = self.treeView;
 
-    // Give the requestpolicy overlay direct access to the the request log.
-    window.parent.requestpolicy.overlay.requestLog = self;
 
-    showLogIsEmptyMessage();
-  };
 
-  window.addEventListener("load", function(event) {
-    init(event);
-  }, false);
+  function showLogIsEmptyMessage() {
+    var message = StringUtils.strbundle.GetStringFromName("requestLogIsEmpty");
+    var directions = StringUtils.strbundle
+        .GetStringFromName("requestLogDirections");
+    self.visibleRows.push([message, directions, false, ""]);
+    self.treebox.rowCountChanged(0, 1);
+  };
 
 
 
diff --git a/src/content/ui/request-log.tree-view.js b/src/content/ui/request-log.tree-view.js
index 7369554..a9afefd 100644
--- a/src/content/ui/request-log.tree-view.js
+++ b/src/content/ui/request-log.tree-view.js
@@ -49,57 +49,61 @@ window.requestpolicy.requestLog = (function (self) {
   let aserv = Cc["@mozilla.org/atom-service;1"].getService(Ci.nsIAtomService);
 
 
-  function getVisibleItemAtIndex(index) {
-    return self.visibleData[self.visibleData.length - index - 1];
+  function getVisibleRowAtIndex(index) {
+    return self.visibleRows[self.visibleRows.length - index - 1];
   };
 
+
+
+  //
   // the interface.
   // see https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Tutorial/Custom_Tree_Views
+  //
 
   self.treeView = {
     /**
      * "This property should be set to the total number of rows in the tree."
      * (getter function)
      */
-    get: function() {
-      return self.visibleData.length;
+    get rowCount () {
+      return self.visibleRows.length;
     },
 
     /**
      * "This method should return the text contents at the specified row and
      * column."
      */
-    setTree: function(_treebox) {
-      self.treebox = _treebox;
+    setTree: function(aTreebox) {
+      self.treebox = aTreebox;
     },
 
     /**
      * This method is called once to set the tree element on the view.
      */
-    getCellText: function(index, column) {
+    getCellText: function(aIndex, aColumn) {
       // Row 0 is actually the last element in the array so that we don't have to
       // unshift() the array and can just push().
       // TODO: Do an actual speed test with push vs. unshift to see if it matters
       // with this javascript array implementation, though I'm assuming it does.
-      var columnIndex = self.columnNameToIndexMap[column.id];
+      var columnIndex = self.columnNameToIndexMap[aColumn.id];
       if (columnIndex != 2) {
-        return getVisibleItemAtIndex(index)[self.columnNameToIndexMap[column.id]];
+        return getVisibleRowAtIndex(aIndex)[self.columnNameToIndexMap[aColumn.id]];
       }
     },
 
-    isContainer: function(index) {
+    isContainer: function(aIndex) {
       return false;
     },
 
-    isContainerOpen: function(index) {
+    isContainerOpen: function(aIndex) {
       return false;
     },
 
-    isContainerEmpty: function(index) {
+    isContainerEmpty: function(aIndex) {
       return false;
     },
 
-    isSeparator: function(index) {
+    isSeparator: function(aIndex) {
       return false;
     },
 
@@ -107,58 +111,58 @@ window.requestpolicy.requestLog = (function (self) {
       return false;
     },
 
-    isEditable: function(index, column) {
+    isEditable: function(aIndex, aColumn) {
       return false;
     },
 
-    getParentIndex: function(index) {
+    getParentIndex: function(aIndex) {
       return -1;
     },
 
-    getLevel: function(index) {
+    getLevel: function(aIndex) {
       return 0;
     },
 
-    hasNextSibling: function(index, after) {
+    hasNextSibling: function(aIndex, aAfter) {
       return false;
     },
 
-    toggleOpenState: function(index) {},
+    toggleOpenState: function(aIndex) {},
 
-    getImageSrc: function(index, column) {
-      if (self.columnNameToIndexMap[column.id] == 2) {
-        if (getVisibleItemAtIndex(index)[2]) {
+    getImageSrc: function(aIndex, aColumn) {
+      if (self.columnNameToIndexMap[aColumn.id] == 2) {
+        if (getVisibleRowAtIndex(aIndex)[2]) {
           return "chrome://requestpolicy/skin/dot.png";
         }
       }
     },
 
-    getProgressMode: function(index, column) {},
-    getCellValue: function(index, column) {},
+    getProgressMode: function(aIndex, aColumn) {},
+    getCellValue: function(aIndex, aColumn) {},
     cycleHeader: function(col, elem) {},
     selectionChanged: function() {},
-    cycleCell: function(index, column) {},
+    cycleCell: function(aIndex, aColumn) {},
     performAction: function(action) {},
-    performActionOnCell: function(action, index, column) {},
+    performActionOnCell: function(action, aIndex, aColumn) {},
 
-    getRowProperties: function(index, props) {
-      var returnValue = (getVisibleItemAtIndex(index)[2]) ? "blocked" : "allowed";
+    getRowProperties: function(aIndex, aProps) {
+      var returnValue = (getVisibleRowAtIndex(aIndex)[2]) ? "blocked" : "allowed";
 
-      if (props) {
+      if (aProps) {
         // Gecko version < 22
-        props.AppendElement(aserv.getAtom(returnValue));
+        aProps.AppendElement(aserv.getAtom(returnValue));
       } else {
         // Gecko version >= 22
         return returnValue;
       }
     },
 
-    getCellProperties: function(index, column, props) {
-      if (self.columnNameToIndexMap[column.id] == 2) {
-        if (getVisibleItemAtIndex(index)[2]) {
-          if (props) {
+    getCellProperties: function(aIndex, aColumn, aProps) {
+      if (self.columnNameToIndexMap[aColumn.id] == 2) {
+        if (getVisibleRowAtIndex(aIndex)[2]) {
+          if (aProps) {
             // Gecko version < 22
-            props.AppendElement(aserv.getAtom("blocked"));
+            aProps.AppendElement(aserv.getAtom("blocked"));
           } else {
             // Gecko version >= 22
             return "blocked";
@@ -167,8 +171,8 @@ window.requestpolicy.requestLog = (function (self) {
       }
     },
 
-    getColumnProperties: function(column, props) {
-      if (!props) {
+    getColumnProperties: function(aColumn, aProps) {
+      if (!aProps) {
         return "";
       }
     }
@@ -176,4 +180,3 @@ window.requestpolicy.requestLog = (function (self) {
 
   return self;
 }(window.requestpolicy.requestLog || {}));
-
diff --git a/src/content/ui/request-log.xul b/src/content/ui/request-log.xul
index 95f42aa..f64c751 100644
--- a/src/content/ui/request-log.xul
+++ b/src/content/ui/request-log.xul
@@ -31,6 +31,7 @@
   <script type="application/x-javascript" src="request-log.js" />
   <script type="application/x-javascript" src="request-log.interface.js" />
   <script type="application/x-javascript" src="request-log.tree-view.js" />
+  <script type="application/x-javascript" src="request-log.filtering.js" />
 
   <popupset>
     <menupopup id="requestpolicyRequestLogContext">
@@ -74,4 +75,16 @@
 
     <treechildren/>
   </tree>
+
+  <hbox align="center" id="search-box">
+    <label accesskey="&rp.requestLog.filterRequests.accesskey;"
+           control="requestpolicy-requestLog-requestFilter"
+           value="&rp.requestLog.filterRequests;"/>
+    <textbox id="requestpolicy-requestLog-requestFilter"
+             oninput="requestpolicy.requestLog.filterChanged(event)" flex="1"/>
+    <button id="requestpolicy-requestLog-clearFilter"
+            oncommand="requestpolicy.requestLog.clearFilter()"
+            label="&rp.requestLog.clearFilter;"
+            accesskey="&rp.requestLog.clearFilter.accesskey;" disabled="true"/>
+  </hbox>
 </page>
diff --git a/src/locale/de/requestpolicy.dtd b/src/locale/de/requestpolicy.dtd
index c2c372a..7b6e8bf 100644
--- a/src/locale/de/requestpolicy.dtd
+++ b/src/locale/de/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Ziel in die Zwischenablage kopieren">
 <!ENTITY rp.requestLog.openOriginInNewTab "Quelle in neuem Tab öffnen">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Ziel in neuem Tab öffnen">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/en-US/requestpolicy.dtd b/src/locale/en-US/requestpolicy.dtd
index 3f63d36..547de3e 100644
--- a/src/locale/en-US/requestpolicy.dtd
+++ b/src/locale/en-US/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copy Destination to Clipboard">
 <!ENTITY rp.requestLog.openOriginInNewTab "Open Origin in New Tab">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Open Destination in New Tab">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/eo/requestpolicy.dtd b/src/locale/eo/requestpolicy.dtd
index fe563e8..13c6291 100644
--- a/src/locale/eo/requestpolicy.dtd
+++ b/src/locale/eo/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Kopii la celadreson en la tondujon">
 <!ENTITY rp.requestLog.openOriginInNewTab "Malfermi la fonton en nova folio">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Malfermi la celon en nova folio">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/es-MX/requestpolicy.dtd b/src/locale/es-MX/requestpolicy.dtd
index 22169cb..1c406c2 100644
--- a/src/locale/es-MX/requestpolicy.dtd
+++ b/src/locale/es-MX/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copiar el destino al portapapeles">
 <!ENTITY rp.requestLog.openOriginInNewTab "Abrir el origen en un nueva pestaña">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Abrir el destino en una nueva pestaña">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/eu/requestpolicy.dtd b/src/locale/eu/requestpolicy.dtd
index d8fd355..1649291 100644
--- a/src/locale/eu/requestpolicy.dtd
+++ b/src/locale/eu/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Kopiatu Helmuga Arbelera">
 <!ENTITY rp.requestLog.openOriginInNewTab "Ireki Jatorria Fitxa berri batean">
 <!ENTITY rp.requestLog.openDestinationInNewTab "ireki Helmuga Fitxa berri batean">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/fr/requestpolicy.dtd b/src/locale/fr/requestpolicy.dtd
index 0f1e86f..408f3b3 100644
--- a/src/locale/fr/requestpolicy.dtd
+++ b/src/locale/fr/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copier la destination dans le presse-papiers">
 <!ENTITY rp.requestLog.openOriginInNewTab "Ouvrir l'original dans un nouvel onglet">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Ouvrir la destination dans un nouvel onglet">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/it/requestpolicy.dtd b/src/locale/it/requestpolicy.dtd
index 0a9fabb..989ee26 100644
--- a/src/locale/it/requestpolicy.dtd
+++ b/src/locale/it/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copia Destinazione negli Appunti">
 <!ENTITY rp.requestLog.openOriginInNewTab "Apri Origine in una Nuova Scheda">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Apri Destinazione in una Nuova Scheda">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/ja/requestpolicy.dtd b/src/locale/ja/requestpolicy.dtd
index acab08d..6e069cc 100644
--- a/src/locale/ja/requestpolicy.dtd
+++ b/src/locale/ja/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copy Destination to Clipboard">
 <!ENTITY rp.requestLog.openOriginInNewTab "Open Origin in New Tab">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Open Destination in New Tab">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/ko-KR/requestpolicy.dtd b/src/locale/ko-KR/requestpolicy.dtd
index 4a7024e..5e305dc 100644
--- a/src/locale/ko-KR/requestpolicy.dtd
+++ b/src/locale/ko-KR/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copy Destination to Clipboard">
 <!ENTITY rp.requestLog.openOriginInNewTab "Open Origin in New Tab">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Open Destination in New Tab">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/lv-LV/requestpolicy.dtd b/src/locale/lv-LV/requestpolicy.dtd
index 64e6748..fb2e6c0 100644
--- a/src/locale/lv-LV/requestpolicy.dtd
+++ b/src/locale/lv-LV/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Kopēt mērķi starpliktuvē">
 <!ENTITY rp.requestLog.openOriginInNewTab "Atvērt pirmavotu jaunā cilnē">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Atvērt mērķi jaunā cilnē">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/nl/requestpolicy.dtd b/src/locale/nl/requestpolicy.dtd
index 028d56c..7f226c7 100644
--- a/src/locale/nl/requestpolicy.dtd
+++ b/src/locale/nl/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Doel naar Klembord kopiëren">
 <!ENTITY rp.requestLog.openOriginInNewTab "Oorsprong in nieuw tabblad openen">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Doel in nieuw tabblad openen">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/pt-BR/requestpolicy.dtd b/src/locale/pt-BR/requestpolicy.dtd
index 1b33a8b..b12563e 100644
--- a/src/locale/pt-BR/requestpolicy.dtd
+++ b/src/locale/pt-BR/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copiar destino">
 <!ENTITY rp.requestLog.openOriginInNewTab "Abrir origem em nova aba">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Abrir destino em nova aba">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/ru-RU/requestpolicy.dtd b/src/locale/ru-RU/requestpolicy.dtd
index fdaae32..c37616a 100644
--- a/src/locale/ru-RU/requestpolicy.dtd
+++ b/src/locale/ru-RU/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Скопировать цель в буфер обмена">
 <!ENTITY rp.requestLog.openOriginInNewTab "Открыть источник в новой вкладке">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Открыть цель в новой вкладке">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/sk-SK/requestpolicy.dtd b/src/locale/sk-SK/requestpolicy.dtd
index fded431..2531d8d 100644
--- a/src/locale/sk-SK/requestpolicy.dtd
+++ b/src/locale/sk-SK/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Kopírovať ciele do schránky">
 <!ENTITY rp.requestLog.openOriginInNewTab "Otvoriť zdroj na novej karte">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Otvoriť cieľ na novej karte">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/sv-SE/requestpolicy.dtd b/src/locale/sv-SE/requestpolicy.dtd
index 2d2b866..12538bf 100644
--- a/src/locale/sv-SE/requestpolicy.dtd
+++ b/src/locale/sv-SE/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Kopiera mål till urklipp">
 <!ENTITY rp.requestLog.openOriginInNewTab "Öppna källa i ny flik">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Öppna mål i ny flik">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/tr/requestpolicy.dtd b/src/locale/tr/requestpolicy.dtd
index 13d6b8b..5e04879 100644
--- a/src/locale/tr/requestpolicy.dtd
+++ b/src/locale/tr/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Hedef adresi hafızaya kopyala">
 <!ENTITY rp.requestLog.openOriginInNewTab "Ana adresi Yeni sekmede aç">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Hedef adresi Yeni sekmede aç">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/uk-UA/requestpolicy.dtd b/src/locale/uk-UA/requestpolicy.dtd
index cc9c8fd..1dd6ad3 100644
--- a/src/locale/uk-UA/requestpolicy.dtd
+++ b/src/locale/uk-UA/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copy Destination to Clipboard">
 <!ENTITY rp.requestLog.openOriginInNewTab "Open Origin in New Tab">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Open Destination in New Tab">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/zh-CN/requestpolicy.dtd b/src/locale/zh-CN/requestpolicy.dtd
index c800fbe..6be29ff 100644
--- a/src/locale/zh-CN/requestpolicy.dtd
+++ b/src/locale/zh-CN/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "复制“目标”到剪贴板">
 <!ENTITY rp.requestLog.openOriginInNewTab "在新标签页打开“来源”">
 <!ENTITY rp.requestLog.openDestinationInNewTab "在新标签页打开“目标”">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">
diff --git a/src/locale/zh-TW/requestpolicy.dtd b/src/locale/zh-TW/requestpolicy.dtd
index e8f0eae..2ff4e42 100644
--- a/src/locale/zh-TW/requestpolicy.dtd
+++ b/src/locale/zh-TW/requestpolicy.dtd
@@ -6,3 +6,7 @@
 <!ENTITY rp.requestLog.copyDestinationToClipboard "Copy Destination to Clipboard">
 <!ENTITY rp.requestLog.openOriginInNewTab "Open Origin in New Tab">
 <!ENTITY rp.requestLog.openDestinationInNewTab "Open Destination in New Tab">
+<!ENTITY rp.requestLog.filterRequests "Filter Requests (RegEx)">
+<!ENTITY rp.requestLog.filterRequests.accesskey "F">
+<!ENTITY rp.requestLog.clearFilter "Clear Filter">
+<!ENTITY rp.requestLog.clearFilter.accesskey "C">

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git



More information about the Pkg-mozext-commits mailing list