From 2f12218ce6cde2fe3e561adaeff5163173b23fd7 Mon Sep 17 00:00:00 2001 From: Piro / YUKI Hiroshi Date: Wed, 24 Aug 2016 02:11:34 +0900 Subject: [PATCH] Extract utility to get hash from string --- content/treestyletab/content-utils.js | 14 ++------ modules/getHashString.js | 52 +++++++++++++++++++++++++++ modules/utils.js | 12 ------- modules/window.js | 5 +-- 4 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 modules/getHashString.js diff --git a/content/treestyletab/content-utils.js b/content/treestyletab/content-utils.js index 8c4448a6..9eb88a4d 100644 --- a/content/treestyletab/content-utils.js +++ b/content/treestyletab/content-utils.js @@ -12,12 +12,14 @@ var Cr = Components.results; var { TreeStyleTabConstants } = Cu.import('resource://treestyletab-modules/constants.js', {}); + var { getHashString } = Cu.import('resource://treestyletab-modules/getHashString.js', {}); var { XPCOMUtils } = Cu.import('resource://gre/modules/XPCOMUtils.jsm', {}); function free() { cleanup = Cc = Ci = Cu = Cr = TreeStyleTabConstants = + getHashString = XPCOMUtils = messageListener = handleEvent = @@ -74,7 +76,7 @@ global.sendAsyncMessage(TreeStyleTabConstants.MESSAGE_TYPE, { command : TreeStyleTabConstants.COMMAND_REPORT_LOCATION_CHANGE, locations : this.collectLocations(global.content).map(function(aURI) { - return this.getHashString(aURI); + return getHashString(aURI); }, this) }); }, @@ -98,16 +100,6 @@ this.collectLocations(aSubFrame, aLocations); }, this); return Object.keys(aLocations); - }, - getHashString : function(aString) { - let hasher = Cc['@mozilla.org/security/hash;1'] - .createInstance(Ci.nsICryptoHash); - hasher.init(Ci.nsICryptoHash.MD5); - let input = Cc['@mozilla.org/io/string-input-stream;1'] - .createInstance(Ci.nsIStringInputStream); - input.data = aString; - hasher.updateFromStream(input, -1); - return hasher.finish(true); } }; global.docShell diff --git a/modules/getHashString.js b/modules/getHashString.js new file mode 100644 index 00000000..3e31b78c --- /dev/null +++ b/modules/getHashString.js @@ -0,0 +1,52 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is the Tree Style Tab. + * + * The Initial Developer of the Original Code is YUKI "Piro" Hiroshi. + * Portions created by the Initial Developer are Copyright (C) 2016 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): YUKI "Piro" Hiroshi + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ******/ + +"use strict"; + +var EXPORTED_SYMBOLS = ['getHashString']; + +const Cc = Components.classes; +const Ci = Components.interfaces; + +function getHashString(aString) { + const hasher = Cc['@mozilla.org/security/hash;1'] + .createInstance(Ci.nsICryptoHash); + hasher.init(Ci.nsICryptoHash.MD5); + const input = Cc['@mozilla.org/io/string-input-stream;1'] + .createInstance(Ci.nsIStringInputStream); + input.data = aString; + hasher.updateFromStream(input, -1); + return hasher.finish(true); +} diff --git a/modules/utils.js b/modules/utils.js index fb9dfab3..af093c60 100644 --- a/modules/utils.js +++ b/modules/utils.js @@ -730,18 +730,6 @@ var TreeStyleTabUtils = { return 'about:treestyletab-group?' + parameters.join('&'); }, - getHashString : function utils_getHashString(aString) - { - let hasher = Cc['@mozilla.org/security/hash;1'] - .createInstance(Ci.nsICryptoHash); - hasher.init(Ci.nsICryptoHash.MD5); - let input = Cc['@mozilla.org/io/string-input-stream;1'] - .createInstance(Ci.nsIStringInputStream); - input.data = aString; - hasher.updateFromStream(input, -1); - return hasher.finish(true); - }, - isMac : Cc['@mozilla.org/xre/app-info;1'] diff --git a/modules/window.js b/modules/window.js index 562778bb..46c773a8 100644 --- a/modules/window.js +++ b/modules/window.js @@ -69,6 +69,7 @@ XPCOMUtils.defineLazyModuleGetter(this, 'TreeStyleTabThemeManager', 'resource:// XPCOMUtils.defineLazyModuleGetter(this, 'FullscreenObserver', 'resource://treestyletab-modules/fullscreenObserver.js'); XPCOMUtils.defineLazyModuleGetter(this, 'BrowserUIShowHideObserver', 'resource://treestyletab-modules/browserUIShowHideObserver.js'); XPCOMUtils.defineLazyModuleGetter(this, 'ContentBridge', 'resource://treestyletab-modules/contentBridge.js'); +XPCOMUtils.defineLazyModuleGetter(this, 'getHashString', 'resource://treestyletab-modules/getHashString.js'); XPCOMUtils.defineLazyServiceGetter(this, 'SessionStore', '@mozilla.org/browser/sessionstore;1', 'nsISessionStore'); @@ -1431,13 +1432,13 @@ TreeStyleTabWindow.prototype = inherit(TreeStyleTabBase, { // from remote contents, we have to detect its opener from the URI. let referrer = aParamsOrOpener.referrer; if (referrer) { - let referrerHash = utils.getHashString(referrer); + let referrerHash = getHashString(referrer); let activeTab = this.browser.selectedTab; let possibleOwners = [activeTab].concat(this.getAncestorTabs(activeTab)); for (let i = 0, maxi = possibleOwners.length; i < maxi; i++) { let possibleOwner = possibleOwners[i]; let contentLocations = possibleOwner.__treestyletab__contentLocations || - [utils.getHashString(possibleOwner.linkedBrowser.currentURI.spec)]; + [getHashString(possibleOwner.linkedBrowser.currentURI.spec)]; if (contentLocations.indexOf(referrerHash) < 0) continue; hasOwnerTab = true;