From 10f364c1538bedffc36cd6e1a9d7c1ee1cb73814 Mon Sep 17 00:00:00 2001 From: Deathamns Date: Sat, 14 Mar 2015 19:51:49 +0100 Subject: [PATCH] Firefox,Safari: vAPI.localStorage --- platform/firefox/vapi-common.js | 41 ++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 13 deletions(-) diff --git a/platform/firefox/vapi-common.js b/platform/firefox/vapi-common.js index 30cac60..28b25d6 100644 --- a/platform/firefox/vapi-common.js +++ b/platform/firefox/vapi-common.js @@ -29,6 +29,13 @@ 'use strict'; +/******************************************************************************/ + +const {Services} = Components.utils.import( + 'resource://gre/modules/Services.jsm', + null +); + self.vAPI = self.vAPI || {}; /******************************************************************************/ @@ -58,9 +65,8 @@ vAPI.download = function(details) { /******************************************************************************/ vAPI.insertHTML = (function() { - const {classes: Cc, interfaces: Ci} = Components; - const parser = Cc['@mozilla.org/parserutils;1'].getService(Ci.nsIParserUtils); - const io = Cc['@mozilla.org/network/io-service;1'].getService(Ci.nsIIOService); + const parser = Components.classes['@mozilla.org/parserutils;1'] + .getService(Components.interfaces.nsIParserUtils); return function(node, html) { while ( node.firstChild ) { @@ -71,7 +77,7 @@ vAPI.insertHTML = (function() { html, parser.SanitizerAllowStyle, false, - io.newURI(document.baseURI, null, null), + Services.io.newURI(document.baseURI, null, null), document.documentElement )); }; @@ -86,9 +92,9 @@ vAPI.getURL = function(path) { /******************************************************************************/ vAPI.i18n = (function() { - var stringBundle = Components.classes['@mozilla.org/intl/stringbundle;1'] - .getService(Components.interfaces.nsIStringBundleService) - .createBundle('chrome://' + location.host + '/locale/messages.properties'); + var stringBundle = Services.strings.createBundle( + 'chrome://' + location.host + '/locale/messages.properties' + ); return function(s) { try { @@ -114,12 +120,21 @@ vAPI.closePopup = function() { // This storage is optional, but it is nice to have, for a more polished user // experience. -vAPI.localStorage = { - key: function(){}, - getItem: function(){}, - setItem: function(){}, - removeItem: function(){} -}; +Object.defineProperty(vAPI, 'localStorage', { + get: function() { + if ( this._localStorage ) { + return this._localStorage; + } + + this._localStorage = Services.domStorageManager.getLocalStorageForPrincipal( + Services.scriptSecurityManager.getCodebasePrincipal( + Services.io.newURI('http://ublock.raymondhill.net/', null, null) + ), + '' + ); + return this._localStorage; + } +}); /******************************************************************************/