From fb2f2a517fa2c61b34829b3da9110234cc8ac054 Mon Sep 17 00:00:00 2001 From: Kris Maglione <maglione.k@gmail.com> Date: Thu, 9 Jul 2020 20:42:50 +0000 Subject: [PATCH] Bug 1464542: Part 3a - Modernize enterprise policy registration. r=mkaply Aside from making registration somewhat more efficient, this allows us to make the services available on the new C++-implemented JS Services object, which requires services to use the new static component registration system. Differential Revision: https://phabricator.services.mozilla.com/D81418 --- browser/installer/package-manifest.in | 3 --- .../enterprisepolicies/EnterprisePolicies.jsm | 22 +++++++++++++++ .../EnterprisePolicies.manifest | 5 ---- ...ntent.js => EnterprisePoliciesContent.jsm} | 27 +++++++------------ ...licies.js => EnterprisePoliciesParent.jsm} | 9 ++----- .../enterprisepolicies/components.conf | 14 ++++++++++ .../components/enterprisepolicies/moz.build | 12 ++++++--- 7 files changed, 55 insertions(+), 37 deletions(-) create mode 100644 toolkit/components/enterprisepolicies/EnterprisePolicies.jsm delete mode 100644 toolkit/components/enterprisepolicies/EnterprisePolicies.manifest rename toolkit/components/enterprisepolicies/{EnterprisePoliciesContent.js => EnterprisePoliciesContent.jsm} (55%) rename toolkit/components/enterprisepolicies/{EnterprisePolicies.js => EnterprisePoliciesParent.jsm} (98%) create mode 100644 toolkit/components/enterprisepolicies/components.conf diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index 4acebe8f6759b..07abad742d2cb 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -173,9 +173,6 @@ ; JavaScript components @RESPATH@/browser/components/BrowserComponents.manifest -@RESPATH@/components/EnterprisePolicies.js -@RESPATH@/components/EnterprisePoliciesContent.js -@RESPATH@/components/EnterprisePolicies.manifest @RESPATH@/components/toolkitsearch.manifest @RESPATH@/components/extensions.manifest #ifdef MOZ_UPDATER diff --git a/toolkit/components/enterprisepolicies/EnterprisePolicies.jsm b/toolkit/components/enterprisepolicies/EnterprisePolicies.jsm new file mode 100644 index 0000000000000..0d615ed560f10 --- /dev/null +++ b/toolkit/components/enterprisepolicies/EnterprisePolicies.jsm @@ -0,0 +1,22 @@ +/* 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/. */ + +var EXPORTED_SYMBOLS = ["EnterprisePolicies"]; + +function EnterprisePolicies() { + // eslint-disable-next-line mozilla/use-services + const appinfo = Cc["@mozilla.org/xre/app-info;1"].getService( + Ci.nsIXULRuntime + ); + if (appinfo.processType == appinfo.PROCESS_TYPE_DEFAULT) { + const { EnterprisePoliciesManager } = ChromeUtils.import( + "resource://gre/modules/EnterprisePoliciesParent.jsm" + ); + return new EnterprisePoliciesManager(); + } + const { EnterprisePoliciesManagerContent } = ChromeUtils.import( + "resource://gre/modules/EnterprisePoliciesContent.jsm" + ); + return new EnterprisePoliciesManagerContent(); +} diff --git a/toolkit/components/enterprisepolicies/EnterprisePolicies.manifest b/toolkit/components/enterprisepolicies/EnterprisePolicies.manifest deleted file mode 100644 index b3a542b7fd6e2..0000000000000 --- a/toolkit/components/enterprisepolicies/EnterprisePolicies.manifest +++ /dev/null @@ -1,5 +0,0 @@ -component {ea4e1414-779b-458b-9d1f-d18e8efbc145} EnterprisePolicies.js process=main -contract @mozilla.org/enterprisepolicies;1 {ea4e1414-779b-458b-9d1f-d18e8efbc145} process=main - -component {dc6358f8-d167-4566-bf5b-4350b5e6a7a2} EnterprisePoliciesContent.js process=content -contract @mozilla.org/enterprisepolicies;1 {dc6358f8-d167-4566-bf5b-4350b5e6a7a2} process=content diff --git a/toolkit/components/enterprisepolicies/EnterprisePoliciesContent.js b/toolkit/components/enterprisepolicies/EnterprisePoliciesContent.jsm similarity index 55% rename from toolkit/components/enterprisepolicies/EnterprisePoliciesContent.js rename to toolkit/components/enterprisepolicies/EnterprisePoliciesContent.jsm index c2efb692cc295..367e7a5f85c48 100644 --- a/toolkit/components/enterprisepolicies/EnterprisePoliciesContent.js +++ b/toolkit/components/enterprisepolicies/EnterprisePoliciesContent.jsm @@ -2,35 +2,26 @@ * 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/. */ -const { XPCOMUtils } = ChromeUtils.import( - "resource://gre/modules/XPCOMUtils.jsm" -); -const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"); - -function EnterprisePoliciesManagerContent() {} +var EXPORTED_SYMBOLS = ["EnterprisePoliciesManagerContent"]; -EnterprisePoliciesManagerContent.prototype = { - classID: Components.ID("{dc6358f8-d167-4566-bf5b-4350b5e6a7a2}"), - QueryInterface: ChromeUtils.generateQI([Ci.nsIEnterprisePolicies]), - _xpcom_factory: XPCOMUtils.generateSingletonFactory( - EnterprisePoliciesManagerContent - ), +const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"); +class EnterprisePoliciesManagerContent { get status() { return ( Services.cpmm.sharedData.get("EnterprisePolicies:Status") || Ci.nsIEnterprisePolicies.INACTIVE ); - }, + } isAllowed(feature) { let disallowedFeatures = Services.cpmm.sharedData.get( "EnterprisePolicies:DisallowedFeatures" ); return !(disallowedFeatures && disallowedFeatures.has(feature)); - }, -}; + } +} -this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ - EnterprisePoliciesManagerContent, -]); +EnterprisePoliciesManagerContent.prototype.QueryInterface = ChromeUtils.generateQI( + [Ci.nsIEnterprisePolicies] +); diff --git a/toolkit/components/enterprisepolicies/EnterprisePolicies.js b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm similarity index 98% rename from toolkit/components/enterprisepolicies/EnterprisePolicies.js rename to toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm index aa8a2e54024ec..beb5b8e2f6f2b 100644 --- a/toolkit/components/enterprisepolicies/EnterprisePolicies.js +++ b/toolkit/components/enterprisepolicies/EnterprisePoliciesParent.jsm @@ -2,6 +2,8 @@ * 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/. */ +var EXPORTED_SYMBOLS = ["EnterprisePoliciesManager"]; + const { XPCOMUtils } = ChromeUtils.import( "resource://gre/modules/XPCOMUtils.jsm" ); @@ -80,15 +82,11 @@ function EnterprisePoliciesManager() { } EnterprisePoliciesManager.prototype = { - classID: Components.ID("{ea4e1414-779b-458b-9d1f-d18e8efbc145}"), QueryInterface: ChromeUtils.generateQI([ Ci.nsIObserver, Ci.nsISupportsWeakReference, Ci.nsIEnterprisePolicies, ]), - _xpcom_factory: XPCOMUtils.generateSingletonFactory( - EnterprisePoliciesManager - ), _initialize() { let provider = this._chooseProvider(); @@ -631,6 +629,3 @@ class macOSPoliciesProvider { return this._failed; } } - -var components = [EnterprisePoliciesManager]; -this.NSGetFactory = XPCOMUtils.generateNSGetFactory(components); diff --git a/toolkit/components/enterprisepolicies/components.conf b/toolkit/components/enterprisepolicies/components.conf new file mode 100644 index 0000000000000..284bfc5ae5356 --- /dev/null +++ b/toolkit/components/enterprisepolicies/components.conf @@ -0,0 +1,14 @@ +# -*- Mode: python; 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/. + +Classes = [ + { + 'cid': '{49e8d8ef-a713-492a-a3d2-5c9dad4ce2e5}', + 'contract_ids': ['@mozilla.org/enterprisepolicies;1'], + 'jsm': 'resource://gre/modules/EnterprisePolicies.jsm', + 'constructor': 'EnterprisePolicies', + }, +] diff --git a/toolkit/components/enterprisepolicies/moz.build b/toolkit/components/enterprisepolicies/moz.build index 8f7d7d8cfed7d..284089594b2f9 100644 --- a/toolkit/components/enterprisepolicies/moz.build +++ b/toolkit/components/enterprisepolicies/moz.build @@ -18,10 +18,14 @@ TEST_DIRS += [ ] if CONFIG['MOZ_WIDGET_TOOLKIT'] != "android": - EXTRA_COMPONENTS += [ - 'EnterprisePolicies.js', - 'EnterprisePolicies.manifest', - 'EnterprisePoliciesContent.js', + EXTRA_JS_MODULES += [ + 'EnterprisePolicies.jsm', + 'EnterprisePoliciesContent.jsm', + 'EnterprisePoliciesParent.jsm', + ] + + XPCOM_MANIFESTS += [ + 'components.conf', ] if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': -- GitLab