From 6e1dfb8407d547b9622dc84ca2e01fa45bb3f1d4 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Thu, 9 Jul 2015 17:43:08 -0700 Subject: [PATCH] Backed out 5 changesets (bug 1180921) for build failures in BasePrincipal.cpp Backed out changeset d8c1a2e11a9a (bug 1180921) Backed out changeset f4dd8c53df5f (bug 1180921) Backed out changeset b272a0ebf5d8 (bug 1180921) Backed out changeset 8e86b6a7d201 (bug 1180921) Backed out changeset bbdebd7b8881 (bug 1180921) --- browser/installer/package-manifest.in | 3 +- caps/BasePrincipal.cpp | 26 ----- caps/BasePrincipal.h | 7 +- caps/moz.build | 1 - caps/nsIAddonPolicyService.idl | 22 ----- caps/nsNullPrincipal.h | 4 +- caps/nsPrincipal.cpp | 6 -- caps/nsPrincipal.h | 8 +- caps/tests/mochitest/chrome.ini | 1 - caps/tests/mochitest/file_data.txt | 1 - caps/tests/mochitest/mochitest.ini | 1 - caps/tests/mochitest/test_addonMayLoad.html | 97 ------------------- caps/tests/unit/test_origin.js | 27 ++---- dom/bindings/BindingDeclarations.h | 5 - dom/webidl/ChromeUtils.webidl | 1 - .../addoncompat/addoncompat.manifest | 2 + toolkit/components/addoncompat/moz.build | 1 + .../addoncompat/remoteTagService.js | 39 ++++++++ toolkit/components/moz.build | 1 - toolkit/components/utils/moz.build | 10 -- toolkit/components/utils/simpleServices.js | 79 --------------- toolkit/components/utils/utils.manifest | 4 - 22 files changed, 60 insertions(+), 286 deletions(-) delete mode 100644 caps/nsIAddonPolicyService.idl delete mode 100644 caps/tests/mochitest/file_data.txt delete mode 100644 caps/tests/mochitest/test_addonMayLoad.html create mode 100644 toolkit/components/addoncompat/remoteTagService.js delete mode 100644 toolkit/components/utils/moz.build delete mode 100644 toolkit/components/utils/simpleServices.js delete mode 100644 toolkit/components/utils/utils.manifest diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index b0f0fa51ead..42710fc079c 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -436,8 +436,7 @@ @RESPATH@/components/addoncompat.manifest @RESPATH@/components/multiprocessShims.js @RESPATH@/components/defaultShims.js -@RESPATH@/components/utils.manifest -@RESPATH@/components/simpleServices.js +@RESPATH@/components/remoteTagService.js @RESPATH@/components/pluginGlue.manifest @RESPATH@/components/ProcessSingleton.manifest @RESPATH@/components/MainProcessSingleton.js diff --git a/caps/BasePrincipal.cpp b/caps/BasePrincipal.cpp index e1ddc640848..3b19dfc9933 100644 --- a/caps/BasePrincipal.cpp +++ b/caps/BasePrincipal.cpp @@ -6,7 +6,6 @@ #include "mozilla/BasePrincipal.h" -#include "nsIAddonPolicyService.h" #include "nsIContentSecurityPolicy.h" #include "nsIObjectInputStream.h" #include "nsIObjectOutputStream.h" @@ -42,10 +41,6 @@ OriginAttributes::CreateSuffix(nsACString& aStr) const params->Set(NS_LITERAL_STRING("inBrowser"), NS_LITERAL_STRING("1")); } - if (!mAddonId.IsEmpty()) { - params->Set(NS_LITERAL_STRING("addonId"), mAddonId); - } - aStr.Truncate(); params->Serialize(value); @@ -93,12 +88,6 @@ public: return true; } - if (aName.EqualsLiteral("addonId")) { - MOZ_RELEASE_ASSERT(mOriginAttributes->mAddonId.IsEmpty()); - mOriginAttributes->mAddonId.Assign(aValue); - return true; - } - // No other attributes are supported. return false; } @@ -357,19 +346,4 @@ BasePrincipal::CreateCodebasePrincipal(nsIURI* aURI, OriginAttributes& aAttrs) return codebase.forget(); } -bool -BasePrincipal::AddonAllowsLoad(nsIURI* aURI) -{ - if (mOriginAttributes.mAddonId.IsEmpty()) { - return false; - } - - nsCOMPtr aps = do_GetService("@mozilla.org/addons/policy-service;1"); - NS_ENSURE_TRUE(aps, false); - - bool allowed = false; - nsresult rv = aps->AddonMayLoadURI(mOriginAttributes.mAddonId, aURI, &allowed); - return NS_SUCCEEDED(rv) && allowed; -} - } // namespace mozilla diff --git a/caps/BasePrincipal.h b/caps/BasePrincipal.h index 406ffe99b10..425b94a29c1 100644 --- a/caps/BasePrincipal.h +++ b/caps/BasePrincipal.h @@ -34,8 +34,7 @@ public: bool operator==(const OriginAttributes& aOther) const { return mAppId == aOther.mAppId && - mInBrowser == aOther.mInBrowser && - mAddonId == aOther.mAddonId; + mInBrowser == aOther.mInBrowser; } bool operator!=(const OriginAttributes& aOther) const { @@ -107,10 +106,6 @@ protected: virtual nsresult GetOriginInternal(nsACString& aOrigin) = 0; virtual bool SubsumesInternal(nsIPrincipal* aOther, DocumentDomainConsideration aConsider) = 0; - // Helper to check whether this principal is associated with an addon that - // allows unprivileged code to load aURI. - bool AddonAllowsLoad(nsIURI* aURI); - nsCOMPtr mCSP; OriginAttributes mOriginAttributes; }; diff --git a/caps/moz.build b/caps/moz.build index b2e4f1be80a..b8005c506ae 100644 --- a/caps/moz.build +++ b/caps/moz.build @@ -9,7 +9,6 @@ MOCHITEST_CHROME_MANIFESTS += ['tests/mochitest/chrome.ini'] XPCSHELL_TESTS_MANIFESTS += ['tests/unit/xpcshell.ini'] XPIDL_SOURCES += [ - 'nsIAddonPolicyService.idl', 'nsIDomainPolicy.idl', 'nsIPrincipal.idl', 'nsIScriptSecurityManager.idl', diff --git a/caps/nsIAddonPolicyService.idl b/caps/nsIAddonPolicyService.idl deleted file mode 100644 index f858b1484f7..00000000000 --- a/caps/nsIAddonPolicyService.idl +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * 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/. */ - -#include "nsISupports.idl" -#include "nsIURI.idl" - -/** - * This interface allows the security manager to query custom per-addon security - * policy. - */ -[scriptable,uuid(fedf126c-988e-42df-82c9-f2ac99cd65f3)] -interface nsIAddonPolicyService : nsISupports -{ - /** - * Returns true if unprivileged code associated with the given addon may load - * data from |aURI|. - */ - boolean addonMayLoadURI(in AString aAddonId, in nsIURI aURI); -}; diff --git a/caps/nsNullPrincipal.h b/caps/nsNullPrincipal.h index 6590ee21147..9d267e12fbf 100644 --- a/caps/nsNullPrincipal.h +++ b/caps/nsNullPrincipal.h @@ -23,8 +23,8 @@ class nsIURI; #define NS_NULLPRINCIPAL_CID \ -{ 0x34a19ab6, 0xca47, 0x4098, \ - { 0xa7, 0xb8, 0x4a, 0xfc, 0xdd, 0xcd, 0x8f, 0x88 } } +{ 0xe502ffb8, 0x5d95, 0x48e8, \ + { 0x82, 0x3c, 0x0d, 0x29, 0xd8, 0x3a, 0x59, 0x33 } } #define NS_NULLPRINCIPAL_CONTRACTID "@mozilla.org/nullprincipal;1" #define NS_NULLPRINCIPAL_SCHEME "moz-nullprincipal" diff --git a/caps/nsPrincipal.cpp b/caps/nsPrincipal.cpp index ed3b6b017a0..33cc4d7fedc 100644 --- a/caps/nsPrincipal.cpp +++ b/caps/nsPrincipal.cpp @@ -236,12 +236,6 @@ nsPrincipal::CheckMayLoad(nsIURI* aURI, bool aReport, bool aAllowIfInheritsPrinc return NS_OK; } - // If this principal is associated with an addon, check whether that addon - // has been given permission to load from this domain. - if (AddonAllowsLoad(aURI)) { - return NS_OK; - } - if (nsScriptSecurityManager::SecurityCompareURIs(mCodebase, aURI)) { return NS_OK; } diff --git a/caps/nsPrincipal.h b/caps/nsPrincipal.h index e5f4f5576f3..53803122848 100644 --- a/caps/nsPrincipal.h +++ b/caps/nsPrincipal.h @@ -112,12 +112,12 @@ private: #define NS_PRINCIPAL_CONTRACTID "@mozilla.org/principal;1" #define NS_PRINCIPAL_CID \ -{ 0xb02c3023, 0x5b37, 0x472a, \ - { 0xa2, 0xcd, 0x35, 0xaa, 0x5e, 0xe2, 0xa8, 0x19 } } + { 0xb7c8505e, 0xc56d, 0x4191, \ + { 0xa1, 0x5e, 0x5d, 0xcb, 0x88, 0x9b, 0xa0, 0x94 }} #define NS_EXPANDEDPRINCIPAL_CONTRACTID "@mozilla.org/expandedprincipal;1" #define NS_EXPANDEDPRINCIPAL_CID \ -{ 0xe8ee88b0, 0x5571, 0x4086, \ - { 0xa4, 0x5b, 0x39, 0xa7, 0x16, 0x90, 0x6b, 0xdb } } + { 0x38539471, 0x68cc, 0x4a6f, \ + { 0x81, 0x20, 0xdb, 0xd5, 0x4a, 0x22, 0x0a, 0x13 }} #endif // nsPrincipal_h__ diff --git a/caps/tests/mochitest/chrome.ini b/caps/tests/mochitest/chrome.ini index 65bfedd1a9f..71b166f6595 100644 --- a/caps/tests/mochitest/chrome.ini +++ b/caps/tests/mochitest/chrome.ini @@ -4,7 +4,6 @@ support-files = file_disableScript.html [test_bug995943.xul] -[test_addonMayLoad.html] [test_disableScript.xul] [test_principal_jarprefix_origin_appid_appstatus.html] # jarPrefix test doesn't work on Windows, see bug 776296. diff --git a/caps/tests/mochitest/file_data.txt b/caps/tests/mochitest/file_data.txt deleted file mode 100644 index 26d7bd84885..00000000000 --- a/caps/tests/mochitest/file_data.txt +++ /dev/null @@ -1 +0,0 @@ -server data fetched over XHR diff --git a/caps/tests/mochitest/mochitest.ini b/caps/tests/mochitest/mochitest.ini index b6529ef5e8c..187150a05c4 100644 --- a/caps/tests/mochitest/mochitest.ini +++ b/caps/tests/mochitest/mochitest.ini @@ -1,6 +1,5 @@ [DEFAULT] support-files = - file_data.txt file_disableScript.html [test_app_principal_equality.html] diff --git a/caps/tests/mochitest/test_addonMayLoad.html b/caps/tests/mochitest/test_addonMayLoad.html deleted file mode 100644 index 286284bfe8c..00000000000 --- a/caps/tests/mochitest/test_addonMayLoad.html +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - Test for Bug 1180921 - - - - - - -Mozilla Bug 1180921 -

- -
-
- - diff --git a/caps/tests/unit/test_origin.js b/caps/tests/unit/test_origin.js index ef462719e7c..33fed1395a6 100644 --- a/caps/tests/unit/test_origin.js +++ b/caps/tests/unit/test_origin.js @@ -25,10 +25,9 @@ function checkCrossOrigin(a, b) { a.originAttributes.inBrowser == b.originAttributes.inBrowser); } -function checkOriginAttributes(prin, attrs, suffix) { - attrs = attrs || {}; - do_check_eq(prin.originAttributes.appId, attrs.appId || 0); - do_check_eq(prin.originAttributes.inBrowser, attrs.inBrowser || false); +function checkOriginAttributes(prin, appId, inBrowser, suffix) { + do_check_eq(prin.originAttributes.appId, appId || 0); + do_check_eq(prin.originAttributes.inBrowser, inBrowser || false); do_check_eq(prin.originSuffix, suffix || ''); if (!prin.isNullPrincipal && !prin.origin.startsWith('[')) { do_check_true(BrowserUtils.principalFromOrigin(prin.origin).equals(prin)); @@ -68,34 +67,29 @@ function run_test() { // Just app. var exampleOrg_app = ssm.createCodebasePrincipal(makeURI('http://example.org'), {appId: 42}); var nullPrin_app = ssm.createNullPrincipal({appId: 42}); - checkOriginAttributes(exampleOrg_app, {appId: 42}, '!appId=42'); - checkOriginAttributes(nullPrin_app, {appId: 42}, '!appId=42'); + checkOriginAttributes(exampleOrg_app, 42, false, '!appId=42'); + checkOriginAttributes(nullPrin_app, 42, false, '!appId=42'); do_check_eq(exampleOrg_app.origin, 'http://example.org!appId=42'); // Just browser. var exampleOrg_browser = ssm.createCodebasePrincipal(makeURI('http://example.org'), {inBrowser: true}); var nullPrin_browser = ssm.createNullPrincipal({inBrowser: true}); - checkOriginAttributes(exampleOrg_browser, {inBrowser: true}, '!inBrowser=1'); - checkOriginAttributes(nullPrin_browser, {inBrowser: true}, '!inBrowser=1'); + checkOriginAttributes(exampleOrg_browser, 0, true, '!inBrowser=1'); + checkOriginAttributes(nullPrin_browser, 0, true, '!inBrowser=1'); do_check_eq(exampleOrg_browser.origin, 'http://example.org!inBrowser=1'); // App and browser. var exampleOrg_appBrowser = ssm.createCodebasePrincipal(makeURI('http://example.org'), {inBrowser: true, appId: 42}); var nullPrin_appBrowser = ssm.createNullPrincipal({inBrowser: true, appId: 42}); - checkOriginAttributes(exampleOrg_appBrowser, {appId: 42, inBrowser: true}, '!appId=42&inBrowser=1'); - checkOriginAttributes(nullPrin_appBrowser, {appId: 42, inBrowser: true}, '!appId=42&inBrowser=1'); + checkOriginAttributes(exampleOrg_appBrowser, 42, true, '!appId=42&inBrowser=1'); + checkOriginAttributes(nullPrin_appBrowser, 42, true, '!appId=42&inBrowser=1'); do_check_eq(exampleOrg_appBrowser.origin, 'http://example.org!appId=42&inBrowser=1'); // App and browser, different domain. var exampleCom_appBrowser = ssm.createCodebasePrincipal(makeURI('https://www.example.com:123'), {appId: 42, inBrowser: true}); - checkOriginAttributes(exampleCom_appBrowser, {appId: 42, inBrowser: true}, '!appId=42&inBrowser=1'); + checkOriginAttributes(exampleCom_appBrowser, 42, true, '!appId=42&inBrowser=1'); do_check_eq(exampleCom_appBrowser.origin, 'https://www.example.com:123!appId=42&inBrowser=1'); - // Addon. - var exampleOrg_addon = ssm.createCodebasePrincipal(makeURI('http://example.org'), {addonId: 'dummy'}); - checkOriginAttributes(exampleOrg_addon, { addonId: "dummy" }, '!addonId=dummy'); - do_check_eq(exampleOrg_addon.origin, 'http://example.org!addonId=dummy'); - // Check that all of the above are cross-origin. checkCrossOrigin(exampleOrg_app, exampleOrg); checkCrossOrigin(exampleOrg_app, nullPrin_app); @@ -104,5 +98,4 @@ function run_test() { checkCrossOrigin(exampleOrg_appBrowser, exampleOrg_app); checkCrossOrigin(exampleOrg_appBrowser, nullPrin_appBrowser); checkCrossOrigin(exampleOrg_appBrowser, exampleCom_appBrowser); - checkCrossOrigin(exampleOrg_addon, exampleOrg); } diff --git a/dom/bindings/BindingDeclarations.h b/dom/bindings/BindingDeclarations.h index 582a20fb8ab..35089d4c48a 100644 --- a/dom/bindings/BindingDeclarations.h +++ b/dom/bindings/BindingDeclarations.h @@ -119,11 +119,6 @@ public: mImpl.emplace(aValue); } - bool operator==(const Optional_base& aOther) const - { - return mImpl == aOther.mImpl; - } - template explicit Optional_base(const T1& aValue1, const T2& aValue2) { diff --git a/dom/webidl/ChromeUtils.webidl b/dom/webidl/ChromeUtils.webidl index f40cc34c393..23ba32fffe6 100644 --- a/dom/webidl/ChromeUtils.webidl +++ b/dom/webidl/ChromeUtils.webidl @@ -40,5 +40,4 @@ interface ChromeUtils : ThreadSafeChromeUtils { dictionary OriginAttributesDictionary { unsigned long appId = 0; boolean inBrowser = false; - DOMString addonId = ""; }; diff --git a/toolkit/components/addoncompat/addoncompat.manifest b/toolkit/components/addoncompat/addoncompat.manifest index fe38f47d800..4228c8a1a09 100644 --- a/toolkit/components/addoncompat/addoncompat.manifest +++ b/toolkit/components/addoncompat/addoncompat.manifest @@ -2,3 +2,5 @@ component {1363d5f0-d95e-11e3-9c1a-0800200c9a66} multiprocessShims.js contract @mozilla.org/addons/multiprocess-shims;1 {1363d5f0-d95e-11e3-9c1a-0800200c9a66} component {50bc93ce-602a-4bef-bf3a-61fc749c4caf} defaultShims.js contract @mozilla.org/addons/default-addon-shims;1 {50bc93ce-602a-4bef-bf3a-61fc749c4caf} +component {dfd07380-6083-11e4-9803-0800200c9a66} remoteTagService.js +contract @mozilla.org/addons/remote-tag-service;1 {dfd07380-6083-11e4-9803-0800200c9a66} diff --git a/toolkit/components/addoncompat/moz.build b/toolkit/components/addoncompat/moz.build index 2fa232a8f83..a7ad54b3ed7 100644 --- a/toolkit/components/addoncompat/moz.build +++ b/toolkit/components/addoncompat/moz.build @@ -10,6 +10,7 @@ EXTRA_COMPONENTS += [ 'addoncompat.manifest', 'defaultShims.js', 'multiprocessShims.js', + 'remoteTagService.js', ] EXTRA_JS_MODULES += [ diff --git a/toolkit/components/addoncompat/remoteTagService.js b/toolkit/components/addoncompat/remoteTagService.js new file mode 100644 index 00000000000..9c1a443baa1 --- /dev/null +++ b/toolkit/components/addoncompat/remoteTagService.js @@ -0,0 +1,39 @@ +/* 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 Cu = Components.utils; +const Ci = Components.interfaces; + +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); + +function RemoteTagServiceService() +{ +} + +RemoteTagServiceService.prototype = { + classID: Components.ID("{dfd07380-6083-11e4-9803-0800200c9a66}"), + QueryInterface: XPCOMUtils.generateQI([Ci.nsIRemoteTagService, Ci.nsISupportsWeakReference]), + + /** + * CPOWs can have user data attached to them. This data originates + * in the local process from this function, getRemoteObjectTag. It's + * sent along with the CPOW to the remote process, where it can be + * fetched with Components.utils.getCrossProcessWrapperTag. + */ + getRemoteObjectTag: function(target) { + if (target instanceof Ci.nsIDocShellTreeItem) { + return "ContentDocShellTreeItem"; + } + + if (target instanceof Ci.nsIDOMDocument) { + return "ContentDocument"; + } + + return "generic"; + } +}; + +this.NSGetFactory = XPCOMUtils.generateNSGetFactory([RemoteTagServiceService]); diff --git a/toolkit/components/moz.build b/toolkit/components/moz.build index e04461c7dcb..f7aaeba5846 100644 --- a/toolkit/components/moz.build +++ b/toolkit/components/moz.build @@ -50,7 +50,6 @@ DIRS += [ 'thumbnails', 'timermanager', 'typeaheadfind', - 'utils', 'urlformatter', 'viewconfig', 'workerloader', diff --git a/toolkit/components/utils/moz.build b/toolkit/components/utils/moz.build deleted file mode 100644 index a78fde5f290..00000000000 --- a/toolkit/components/utils/moz.build +++ /dev/null @@ -1,10 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# 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/. - -EXTRA_COMPONENTS += [ - 'simpleServices.js', - 'utils.manifest', -] diff --git a/toolkit/components/utils/simpleServices.js b/toolkit/components/utils/simpleServices.js deleted file mode 100644 index c9c3b62df49..00000000000 --- a/toolkit/components/utils/simpleServices.js +++ /dev/null @@ -1,79 +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/. */ - -/* - * Dumping ground for simple services for which the isolation of a full global - * is overkill. Be careful about namespace pollution, and be mindful about - * importing lots of JSMs in global scope, since this file will almost certainly - * be loaded from enough callsites that any such imports will always end up getting - * eagerly loaded at startup. - */ - -"use strict"; - -const Cu = Components.utils; -const Ci = Components.interfaces; - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -function RemoteTagServiceService() -{ -} - -RemoteTagServiceService.prototype = { - classID: Components.ID("{dfd07380-6083-11e4-9803-0800200c9a66}"), - QueryInterface: XPCOMUtils.generateQI([Ci.nsIRemoteTagService, Ci.nsISupportsWeakReference]), - - /** - * CPOWs can have user data attached to them. This data originates - * in the local process from this function, getRemoteObjectTag. It's - * sent along with the CPOW to the remote process, where it can be - * fetched with Components.utils.getCrossProcessWrapperTag. - */ - getRemoteObjectTag: function(target) { - if (target instanceof Ci.nsIDocShellTreeItem) { - return "ContentDocShellTreeItem"; - } - - if (target instanceof Ci.nsIDOMDocument) { - return "ContentDocument"; - } - - return "generic"; - } -}; - -function AddonPolicyService() -{ - this.wrappedJSObject = this; - this.mayLoadURICallbacks = new Map(); -} - -AddonPolicyService.prototype = { - classID: Components.ID("{89560ed3-72e3-498d-a0e8-ffe50334d7c5}"), - QueryInterface: XPCOMUtils.generateQI([Ci.nsIAddonPolicyService]), - - /* - * Invokes a callback (if any) associated with the addon to determine whether - * unprivileged code running within the addon is allowed to perform loads from - * the given URI. - * - * @see nsIAddonPolicyService.addonMayLoadURI - */ - addonMayLoadURI(aAddonId, aURI) { - let cb = this.mayLoadURICallbacks[aAddonId]; - return cb ? cb(aURI) : false; - }, - - /* - * Sets the callbacks used in addonMayLoadURI above. Not accessible over - * XPCOM - callers should use .wrappedJSObject on the service to call it - * directly. - */ - setAddonLoadURICallback(aAddonId, aCallback) { - this.mayLoadURICallbacks[aAddonId] = aCallback; - }, -}; - -this.NSGetFactory = XPCOMUtils.generateNSGetFactory([RemoteTagServiceService, AddonPolicyService]); diff --git a/toolkit/components/utils/utils.manifest b/toolkit/components/utils/utils.manifest deleted file mode 100644 index b08c5d519e1..00000000000 --- a/toolkit/components/utils/utils.manifest +++ /dev/null @@ -1,4 +0,0 @@ -component {dfd07380-6083-11e4-9803-0800200c9a66} simpleServices.js -contract @mozilla.org/addons/remote-tag-service;1 {dfd07380-6083-11e4-9803-0800200c9a66} -component {89560ed3-72e3-498d-a0e8-ffe50334d7c5} simpleServices.js -contract @mozilla.org/addons/policy-service;1 {89560ed3-72e3-498d-a0e8-ffe50334d7c5}