Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: safari/ext/common.js

Issue 29363445: Issue 4577 - Remove Safari support (Closed)
Patch Set: Created Nov. 17, 2016, 11:36 a.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « safari/ext/background.js ('k') | safari/ext/content.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: safari/ext/common.js
diff --git a/safari/ext/common.js b/safari/ext/common.js
deleted file mode 100644
index 5f7c14c861a683af02570d8bade2038e3c04a23d..0000000000000000000000000000000000000000
--- a/safari/ext/common.js
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * This file is part of Adblock Plus <https://adblockplus.org/>,
- * Copyright (C) 2006-2016 Eyeo GmbH
- *
- * Adblock Plus is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 3 as
- * published by the Free Software Foundation.
- *
- * Adblock Plus 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 Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
- */
-
-(function()
-{
- /* Message passing */
-
- var MessageProxy = ext._MessageProxy = function(messageDispatcher)
- {
- this._messageDispatcher = messageDispatcher;
- this._responseCallbacks = Object.create(null);
- this._responseCallbackCounter = 0;
- };
- MessageProxy.prototype = {
- _sendResponse: function(request, message)
- {
- var response = {};
-
- if ("documentId" in request)
- response["targetDocuments"] = [request["documentId"]];
-
- for (var prop in request)
- response[prop] = request[prop];
- response.payload = message;
-
- this._messageDispatcher.dispatchMessage("response", response);
- },
- handleRequest: function(request, sender)
- {
- if ("callbackId" in request)
- {
- var sent = false;
- var sendResponse = function(message)
- {
- this._sendResponse(request, message);
- sent = true;
- }.bind(this);
-
- var results = ext.onMessage._dispatch(request.payload, sender, sendResponse);
-
- // The onMessage listener has to return true to indicate that a response
- // is sent later asynchronously. Otherwise if no response was sent yet,
- // we sent a response indicating that there is no response, that
- // the other end can remove the callback and doesn't leak memory.
- if (!sent && results.indexOf(true) == -1)
- this._sendResponse(request, undefined);
- }
- else
- {
- ext.onMessage._dispatch(request.payload, sender, function() {});
- }
- },
- handleResponse: function(response)
- {
- var callbackId = response.callbackId;
- var callback = this._responseCallbacks[callbackId];
- if (callback)
- {
- delete this._responseCallbacks[callbackId];
-
- if (typeof response.payload != "undefined")
- callback(response.payload);
- }
- },
- sendMessage: function(message, responseCallback, extra)
- {
- var request = {payload: message};
-
- if (responseCallback)
- {
- request.callbackId = ++this._responseCallbackCounter;
- this._responseCallbacks[request.callbackId] = responseCallback;
- }
-
- for (var prop in extra)
- request[prop] = extra[prop];
-
- this._messageDispatcher.dispatchMessage("request", request);
- }
- };
-
- ext.onMessage = new ext._EventTarget();
-
-
- /* I18n */
-
- var getLocaleCandidates = function()
- {
- var candidates = [];
- var defaultLocale = "en_US";
-
- // e.g. "ja-jp-mac" -> "ja_JP", note that the part after the second
- // dash is dropped, since we only support language and region
- var [language, region] = navigator.language.split("-");
-
- if (region)
- {
- region = region.toUpperCase();
-
- // e.g. "es-AR" -> "es_419", note that we combine all dialects of
- // Spanish outside of Spain, the same way Google Chrome does,
- // since we use the same translations as for the Chrome extension
- if (language == "es" && region != "ES")
- region = "419";
-
- candidates.push(language + "_" + region);
- }
-
- candidates.push(language);
-
- if (candidates.indexOf(defaultLocale) == -1)
- candidates.push(defaultLocale);
-
- return candidates;
- };
-
- var initCatalog = function(uiLocale)
- {
- var bidiDir = /^(ar|fa|he|ug|ur)(_|$)/.test(uiLocale) ? "rtl" : "ltr";
- var catalog = Object.create(null);
-
- catalog["@@ui_locale"] = [uiLocale, []];
- catalog["@@bidi_dir" ] = [bidiDir, []];
-
- return catalog;
- };
-
- var locales = getLocaleCandidates();
- var catalog = initCatalog(locales[0]);
-
- var replacePlaceholder = function(text, placeholder, content)
- {
- return text.split("$" + placeholder + "$").join(content || "");
- };
-
- var parseMessage = function(rawMessage)
- {
- var text = rawMessage.message;
- var placeholders = [];
-
- for (var placeholder in rawMessage.placeholders)
- {
- var content = rawMessage.placeholders[placeholder].content;
-
- if (/^\$\d+$/.test(content))
- placeholders[parseInt(content.substr(1), 10) - 1] = placeholder;
- else
- text = replacePlaceholder(text, placeholder, content);
- }
-
- return [text, placeholders];
- };
-
- var readCatalog = function(locale)
- {
- var xhr = new XMLHttpRequest();
- xhr.open("GET", safari.extension.baseURI + "_locales/" + locale + "/messages.json", false);
-
- try
- {
- xhr.send();
- }
- catch (e)
- {
- return;
- }
-
- if (xhr.status != 200 && xhr.status != 0)
- return;
-
- var rawCatalog = JSON.parse(xhr.responseText);
- for (var msgId in rawCatalog)
- {
- if (!(msgId in catalog))
- catalog[msgId] = parseMessage(rawCatalog[msgId]);
- }
- };
-
- ext.i18n = {
- getMessage: function(msgId, substitutions)
- {
- while (true)
- {
- var message = catalog[msgId];
- if (message)
- {
- var [text, placeholders] = message;
-
- if (!(substitutions instanceof Array))
- substitutions = [substitutions];
-
- for (var i = 0; i < placeholders.length; i++)
- text = replacePlaceholder(text, placeholders[i], substitutions[i]);
-
- return text;
- }
-
- if (locales.length == 0)
- return "";
-
- readCatalog(locales.shift());
- }
- }
- };
-
-
- /* Utils */
-
- ext.getURL = function(path)
- {
- return safari.extension.baseURI + path;
- };
-})();
« no previous file with comments | « safari/ext/background.js ('k') | safari/ext/content.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld