summaryrefslogtreecommitdiff
path: root/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js
diff options
context:
space:
mode:
authorRuben Rodriguez <ruben@gnu.org>2018-09-13 20:39:48 -0400
committerRuben Rodriguez <ruben@gnu.org>2018-09-13 21:02:13 -0400
commitd26b319fd6f98517cc3421f10bf18698b953e4d2 (patch)
treebc70c4e472a2eaf514d411dba5067d530e5bbea9 /data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js
parentc3b304c51a3386ea09527a479a883253ea35243a (diff)
Updated extensions list for v60
Diffstat (limited to 'data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js')
-rw-r--r--data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js205
1 files changed, 0 insertions, 205 deletions
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js
deleted file mode 100644
index 641dc14..0000000
--- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/node_modules/pathfinder/lib/ui/awesomebar.js
+++ /dev/null
@@ -1,205 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-'use strict';
-
-const {Cc, Ci, Cu, Cm, components} = require('chrome');
-Cu.import("resource://gre/modules/AddonManager.jsm", this);
-Cu.import("resource://gre/modules/Services.jsm", this);
-Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
-
-var {unload} = require("../addon/unload");
-var {listen} = require("../xul/listen");
-var {watchWindows} = require("window-watcher");
-var {clearTimeout, setTimeout} = require("timer");
-
-let handlers = [];
-
-// public api for adding a keyword and search handler
-// TODO: validate, yo
-exports.AwesomeBarSuggestion = function AwesomeBarSuggestion(options) {
- var i = handlers.push(options) - 1;
- var destroyed = false;
-
- return {
- destroy: function() {
- if (destroyed) return;
- destroyed = true;
- handlers[i] = null;
- }
- };
-};
-
-// Bool check if a given string matches a given handler
-function handlerMatch(query, handler) !!(handler && handler.matches.test(query));
-
-// Get first registered handler that matches a given string
-function getMatchingHandler(query) handlers.filter(function(handler) handlerMatch(query, handler)).shift()
-
-// Add functionality to search from the location bar and hook up autocomplete
-function addAddressBarSearch(window) {
- let {change} = makeWindowHelpers(window);
- let {BrowserUI, gBrowser, gURLBar} = window;
-
- // Check the input to see if the add-on icon should be shown
- // Called when the location bar fires the input event
- function onLocationBarInput() {
- if (skipCheck())
- return;
-
- let icon = "";
- let handler = getMatchingHandler(urlbar.value);
- if (handler && handler.icon)
- icon = handler.icon;
- setIcon(icon);
- }
-
- // Implement these functions depending on the platform
- let setIcon, skipCheck, urlbar;
-
- // mobile
- if (gBrowser == null) {
- setIcon = function(url) BrowserUI._updateIcon(url);
- skipCheck = function() false;
- urlbar = BrowserUI._edit;
-
- // Check the input on various events
- listen(window, BrowserUI._edit, "input", onLocationBarInput);
-
- // Convert inputs to twitter urls
- change(window.Browser, "getShortcutOrURI", function(orig) {
- return function(uri, data) {
- return orig.call(this, uri, data);
- };
- });
- }
- // desktop
- else {
- setIcon = function(url) window.PageProxySetIcon(url);
- skipCheck = function() gURLBar.getAttribute("pageproxystate") == "valid" &&
- !gURLBar.hasAttribute("focused");
- urlbar = gURLBar;
-
- // Check the input on various events
- listen(window, gURLBar, "input", onLocationBarInput);
- listen(window, gBrowser.tabContainer, "TabSelect", onLocationBarInput);
-
- // Convert inputs to twitter urls
- change(gURLBar, "_canonizeURL", function(orig) {
- return function(event) {
- return orig.call(this, event);
- };
- });
- }
-
- // Provide a way to set the autocomplete search engines and initialize
- function setSearch(engines) {
- urlbar.setAttribute("autocompletesearch", engines);
- urlbar.mSearchNames = null;
- urlbar.initSearchNames();
- };
-
- // Add in the twitter search and remove on cleanup
- let origSearch = urlbar.getAttribute("autocompletesearch");
- setSearch(require('self').id + " " + origSearch);
- unload(function() setSearch(origSearch));
-}
-
-// Add an autocomplete search engine to provide location bar suggestions
-function addAutocomplete() {
- const contract = "@mozilla.org/autocomplete/search;1?name=" + require('self').id;
- const desc = "Jetpack Autocomplete";
- const uuid = components.ID("504A8466-8D3D-11E0-A57E-D2F94824019B");
-
- // Keep a timer to send a delayed no match
- let timer;
- function clearTimer() {
- if (timer != null)
- clearTimeout(timer);
- timer = null;
- }
-
- // call back in one second
- function setTimer(callback) {
- timer = setTimeout(callback, 1000);
- }
-
- // Implement the autocomplete search that handles twitter queries
- let search = {
- createInstance: function(outer, iid) search.QueryInterface(iid),
-
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteSearch]),
-
- // Handle searches from the location bar
- startSearch: function(query, param, previous, listener) {
-
- // Always clear the timer on a new search
- clearTimer();
-
- function suggest(o, done) {
- listener.onSearchResult(search, {
- getCommentAt: function() o.title,
- getImageAt: function() o.favicon,
- getLabelAt: function() o.label || o.url,
- getValueAt: function() o.url,
- getStyleAt: function() "favicon",
- get matchCount() 1,
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteResult]),
- removeValueAt: function() {},
- searchResult: Ci.nsIAutoCompleteResult.RESULT_SUCCESS,
- get searchString() query,
- });
- }
-
- // TODO: if no search yet, but matched keyword, show example text
-
- // if there's a query string and a match
- if (query.length) {
- let handler = getMatchingHandler(query);
- if (handler) {
- if (query) {
- handler.onSearch(query, suggest);
- }
- }
- }
- // Send a delayed NOMATCH so the autocomplete doesn't close early
- else {
- setTimer(function() {
- listener.onSearchResult(search, {
- searchResult: Ci.nsIAutoCompleteResult.RESULT_NOMATCH,
- });
- });
- }
- },
-
- // Nothing to cancel other than a delayed search as results are synchronous
- stopSearch: function() {
- clearTimer();
- },
- };
-
- // Register this autocomplete search service and clean up when necessary
- const registrar = Ci.nsIComponentRegistrar;
- Cm.QueryInterface(registrar).registerFactory(uuid, desc, contract, search);
- unload(function() {
- Cm.QueryInterface(registrar).unregisterFactory(uuid, search);
- });
-}
-
-// Add support to the browser
-watchWindows(addAddressBarSearch);
-addAutocomplete();
-
-// Take a window and create various helper properties and functions
-function makeWindowHelpers(window) {
- // Replace a value with another value or a function of the original value
- function change(obj, prop, val) {
- let orig = obj[prop];
- obj[prop] = typeof val == "function" ? val(orig) : val;
- unload(function() obj[prop] = orig, window);
- }
-
- return {
- change: change,
- };
-}