Bug 1440284 - change this.EXPORTED_SYMBOLS back to var EXPORTED_SYMBOLS in JS modules, r=mccr8.
authorFlorian Quèze <florian@queze.net>
Fri, 23 Feb 2018 20:50:01 +0100
changeset 405130 b599a95ce057712c6b7804f7f108c9c4acff7e6d
parent 405129 addf903ba0158f04e78b57ac98856d3ef291b02e
child 405131 1056e048072c9b07df1a6304c5d9554a0bd92fad
child 405157 a60fe594955b266cb426958b1b22ed00eac1b864
push id33502
push userarchaeopteryx@coole-files.de
push dateSat, 24 Feb 2018 00:59:26 +0000
treeherdermozilla-central@1056e048072c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmccr8
bugs1440284
milestone60.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1440284 - change this.EXPORTED_SYMBOLS back to var EXPORTED_SYMBOLS in JS modules, r=mccr8.
accessible/jsat/AccessFu.jsm
accessible/jsat/Constants.jsm
accessible/jsat/ContentControl.jsm
accessible/jsat/EventManager.jsm
accessible/jsat/Gestures.jsm
accessible/jsat/OutputGenerator.jsm
accessible/jsat/PointerAdapter.jsm
accessible/jsat/Presentation.jsm
accessible/jsat/Traversal.jsm
accessible/jsat/Utils.jsm
browser/base/content/test/urlbar/Panel.jsm
browser/components/customizableui/CustomizableUI.jsm
browser/components/customizableui/CustomizableWidgets.jsm
browser/components/customizableui/CustomizeMode.jsm
browser/components/customizableui/DragPositionManager.jsm
browser/components/customizableui/PanelMultiView.jsm
browser/components/customizableui/ScrollbarSampler.jsm
browser/components/customizableui/SearchWidgetTracker.jsm
browser/components/distribution.js
browser/components/downloads/DownloadsCommon.jsm
browser/components/downloads/DownloadsSubview.jsm
browser/components/downloads/DownloadsTaskbar.jsm
browser/components/downloads/DownloadsViewUI.jsm
browser/components/enterprisepolicies/Policies.jsm
browser/components/enterprisepolicies/PoliciesValidator.jsm
browser/components/enterprisepolicies/WindowsGPOParser.jsm
browser/components/migration/.eslintrc.js
browser/components/migration/AutoMigrate.jsm
browser/components/migration/ChromeMigrationUtils.jsm
browser/components/migration/ESEDBReader.jsm
browser/components/migration/MSMigrationUtils.jsm
browser/components/migration/MigrationUtils.jsm
browser/components/newtab/NewTabPrefsProvider.jsm
browser/components/newtab/NewTabRemoteResources.jsm
browser/components/newtab/NewTabSearchProvider.jsm
browser/components/newtab/NewTabWebChannel.jsm
browser/components/places/PlacesUIUtils.jsm
browser/components/preferences/SiteDataManager.jsm
browser/components/sessionstore/ContentRestore.jsm
browser/components/sessionstore/DocShellCapabilities.jsm
browser/components/sessionstore/GlobalState.jsm
browser/components/sessionstore/PrivacyFilter.jsm
browser/components/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm
browser/components/sessionstore/RunState.jsm
browser/components/sessionstore/SessionCookies.jsm
browser/components/sessionstore/SessionFile.jsm
browser/components/sessionstore/SessionMigration.jsm
browser/components/sessionstore/SessionSaver.jsm
browser/components/sessionstore/SessionStorage.jsm
browser/components/sessionstore/SessionStore.jsm
browser/components/sessionstore/SessionWorker.jsm
browser/components/sessionstore/StartupPerformance.jsm
browser/components/sessionstore/TabAttributes.jsm
browser/components/sessionstore/TabState.jsm
browser/components/sessionstore/TabStateCache.jsm
browser/components/sessionstore/TabStateFlusher.jsm
browser/components/shell/ShellService.jsm
browser/components/syncedtabs/EventEmitter.jsm
browser/components/syncedtabs/SyncedTabsDeckComponent.js
browser/components/syncedtabs/SyncedTabsDeckStore.js
browser/components/syncedtabs/SyncedTabsDeckView.js
browser/components/syncedtabs/SyncedTabsListStore.js
browser/components/syncedtabs/TabListComponent.js
browser/components/syncedtabs/TabListView.js
browser/components/syncedtabs/util.js
browser/components/translation/BingTranslator.jsm
browser/components/translation/LanguageDetector.jsm
browser/components/translation/Translation.jsm
browser/components/translation/TranslationContentHandler.jsm
browser/components/translation/TranslationDocument.jsm
browser/components/translation/YandexTranslator.jsm
browser/components/uitour/UITour.jsm
browser/experiments/Experiments.jsm
browser/extensions/activity-stream/common/Actions.jsm
browser/extensions/activity-stream/common/Dedupe.jsm
browser/extensions/activity-stream/common/PerfService.jsm
browser/extensions/activity-stream/common/PrerenderData.jsm
browser/extensions/activity-stream/common/Reducers.jsm
browser/extensions/activity-stream/lib/ActivityStream.jsm
browser/extensions/activity-stream/lib/ActivityStreamMessageChannel.jsm
browser/extensions/activity-stream/lib/ActivityStreamPrefs.jsm
browser/extensions/activity-stream/lib/FaviconFeed.jsm
browser/extensions/activity-stream/lib/FilterAdult.jsm
browser/extensions/activity-stream/lib/HighlightsFeed.jsm
browser/extensions/activity-stream/lib/LinksCache.jsm
browser/extensions/activity-stream/lib/ManualMigration.jsm
browser/extensions/activity-stream/lib/NewTabInit.jsm
browser/extensions/activity-stream/lib/PersistentCache.jsm
browser/extensions/activity-stream/lib/PlacesFeed.jsm
browser/extensions/activity-stream/lib/PrefsFeed.jsm
browser/extensions/activity-stream/lib/Screenshots.jsm
browser/extensions/activity-stream/lib/SectionsManager.jsm
browser/extensions/activity-stream/lib/ShortURL.jsm
browser/extensions/activity-stream/lib/SnippetsFeed.jsm
browser/extensions/activity-stream/lib/Store.jsm
browser/extensions/activity-stream/lib/SystemTickFeed.jsm
browser/extensions/activity-stream/lib/TelemetryFeed.jsm
browser/extensions/activity-stream/lib/TippyTopProvider.jsm
browser/extensions/activity-stream/lib/TopSitesFeed.jsm
browser/extensions/activity-stream/lib/TopStoriesFeed.jsm
browser/extensions/activity-stream/lib/UTEventReporting.jsm
browser/extensions/activity-stream/lib/UserDomainAffinityProvider.jsm
browser/extensions/activity-stream/vendor/Redux.jsm
browser/extensions/formautofill/FormAutofillContent.jsm
browser/extensions/formautofill/FormAutofillDoorhanger.jsm
browser/extensions/formautofill/FormAutofillHandler.jsm
browser/extensions/formautofill/FormAutofillHeuristics.jsm
browser/extensions/formautofill/FormAutofillNameUtils.jsm
browser/extensions/formautofill/FormAutofillParent.jsm
browser/extensions/formautofill/FormAutofillPreferences.jsm
browser/extensions/formautofill/FormAutofillStorage.jsm
browser/extensions/formautofill/FormAutofillSync.jsm
browser/extensions/formautofill/FormAutofillUtils.jsm
browser/extensions/formautofill/MasterPassword.jsm
browser/extensions/formautofill/ProfileAutoCompleteResult.jsm
browser/extensions/formautofill/phonenumberutils/PhoneNumber.jsm
browser/extensions/formautofill/phonenumberutils/PhoneNumberMetaData.jsm
browser/extensions/formautofill/phonenumberutils/PhoneNumberNormalizer.jsm
browser/extensions/onboarding/OnboardingTelemetry.jsm
browser/extensions/onboarding/OnboardingTourType.jsm
browser/extensions/pdfjs/content/PdfJsTelemetry.jsm
browser/extensions/pocket/content/AboutPocket.jsm
browser/extensions/pocket/content/Pocket.jsm
browser/extensions/pocket/content/pktApi.jsm
browser/extensions/shield-recipe-client/bootstrap.js
browser/extensions/shield-recipe-client/content/AboutPages.jsm
browser/extensions/shield-recipe-client/lib/ActionSandboxManager.jsm
browser/extensions/shield-recipe-client/lib/AddonStudies.jsm
browser/extensions/shield-recipe-client/lib/Addons.jsm
browser/extensions/shield-recipe-client/lib/CleanupManager.jsm
browser/extensions/shield-recipe-client/lib/ClientEnvironment.jsm
browser/extensions/shield-recipe-client/lib/EventEmitter.jsm
browser/extensions/shield-recipe-client/lib/FilterExpressions.jsm
browser/extensions/shield-recipe-client/lib/Heartbeat.jsm
browser/extensions/shield-recipe-client/lib/LogManager.jsm
browser/extensions/shield-recipe-client/lib/NormandyApi.jsm
browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm
browser/extensions/shield-recipe-client/lib/PreferenceExperiments.jsm
browser/extensions/shield-recipe-client/lib/PreferenceFilters.jsm
browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm
browser/extensions/shield-recipe-client/lib/Sampling.jsm
browser/extensions/shield-recipe-client/lib/SandboxManager.jsm
browser/extensions/shield-recipe-client/lib/ShieldPreferences.jsm
browser/extensions/shield-recipe-client/lib/ShieldRecipeClient.jsm
browser/extensions/shield-recipe-client/lib/Storage.jsm
browser/extensions/shield-recipe-client/lib/TelemetryEvents.jsm
browser/extensions/shield-recipe-client/lib/Uptake.jsm
browser/extensions/shield-recipe-client/lib/Utils.jsm
browser/extensions/webcompat-reporter/content/WebCompatReporter.jsm
browser/extensions/webcompat/content/data/ua_overrides.jsm
browser/extensions/webcompat/content/lib/ua_overrider.jsm
browser/modules/AboutHome.jsm
browser/modules/AboutNewTab.jsm
browser/modules/AttributionCode.jsm
browser/modules/BrowserErrorReporter.jsm
browser/modules/BrowserUITelemetry.jsm
browser/modules/BrowserUsageTelemetry.jsm
browser/modules/CastingApps.jsm
browser/modules/ContentClick.jsm
browser/modules/ContentCrashHandlers.jsm
browser/modules/ContentLinkHandler.jsm
browser/modules/ContentMetaHandler.jsm
browser/modules/ContentSearch.jsm
browser/modules/ContentWebRTC.jsm
browser/modules/ContextMenu.jsm
browser/modules/DirectoryLinksProvider.jsm
browser/modules/ExtensionsUI.jsm
browser/modules/Feeds.jsm
browser/modules/FormSubmitObserver.jsm
browser/modules/FormValidationHandler.jsm
browser/modules/LaterRun.jsm
browser/modules/PageActions.jsm
browser/modules/PermissionUI.jsm
browser/modules/PingCentre.jsm
browser/modules/PluginContent.jsm
browser/modules/ProcessHangMonitor.jsm
browser/modules/ReaderParent.jsm
browser/modules/RecentWindow.jsm
browser/modules/RemotePrompt.jsm
browser/modules/SchedulePressure.jsm
browser/modules/SitePermissions.jsm
browser/modules/TransientPrefs.jsm
browser/modules/UpdateTopLevelContentWindowIDHelper.jsm
browser/modules/Windows8WindowFrameColor.jsm
browser/modules/WindowsJumpLists.jsm
browser/modules/WindowsPreviewPerTab.jsm
browser/modules/ZoomUI.jsm
browser/modules/offlineAppCache.jsm
browser/modules/webrtcUI.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/Screenshot.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/TestRunner.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/AppMenu.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Buttons.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/ControlCenter.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/CustomizeMode.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/DevTools.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/LightweightThemes.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/PermissionPrompts.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Preferences.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Tabs.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/TabsInTitlebar.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Toolbars.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/UIDensities.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/configurations/WindowSize.jsm
dom/base/DOMRequestHelper.jsm
dom/base/IndexedDBHelper.jsm
dom/browser-element/BrowserElementPromptService.jsm
dom/console/tests/console.jsm
dom/encoding/test/file_stringencoding.jsm
dom/indexedDB/test/unit/GlobalObjectsModule.jsm
dom/manifest/ImageObjectProcessor.jsm
dom/manifest/Manifest.jsm
dom/manifest/ManifestFinder.jsm
dom/manifest/ManifestIcons.jsm
dom/manifest/ManifestObtainer.jsm
dom/manifest/ManifestProcessor.jsm
dom/manifest/ValueExtractor.jsm
dom/media/IdpSandbox.jsm
dom/media/PeerConnectionIdp.jsm
dom/media/RTCStatsReport.jsm
dom/media/webvtt/vtt.jsm
dom/network/tests/tcpsocket_test.jsm
dom/notification/NotificationDB.jsm
dom/presentation/provider/ControllerStateMachine.jsm
dom/presentation/provider/ReceiverStateMachine.jsm
dom/presentation/provider/StateMachineHelper.jsm
dom/push/PushCrypto.jsm
dom/push/PushDB.jsm
dom/push/PushRecord.jsm
dom/push/PushService.jsm
dom/push/PushServiceAndroidGCM.jsm
dom/push/PushServiceHttp2.jsm
dom/push/PushServiceWebSocket.jsm
dom/url/tests/file_url.jsm
dom/url/tests/file_worker_url.jsm
dom/url/tests/test_bug883784.jsm
dom/workers/test/WorkerTest.jsm
editor/AsyncSpellCheckTestHelper.jsm
intl/l10n/DOMLocalization.jsm
intl/l10n/L10nRegistry.jsm
intl/l10n/Localization.jsm
intl/l10n/MessageContext.jsm
intl/locale/PluralForm.jsm
js/ductwork/debugger/jsdebugger.jsm
js/xpconnect/loader/XPCOMUtils.jsm
js/xpconnect/tests/chrome/file_expandosharing.jsm
js/xpconnect/tests/unit/bogus_element_type.jsm
js/xpconnect/tests/unit/bogus_exports_type.jsm
js/xpconnect/tests/unit/recursive_importA.jsm
js/xpconnect/tests/unit/recursive_importB.jsm
layout/tools/reftest/globals.jsm
layout/tools/reftest/manifest.jsm
layout/tools/reftest/reftest.jsm
mobile/android/modules/Accounts.jsm
mobile/android/modules/ActionBarHandler.jsm
mobile/android/modules/BrowserActions.jsm
mobile/android/modules/DelayedInit.jsm
mobile/android/modules/DownloadNotifications.jsm
mobile/android/modules/FormAssistant.jsm
mobile/android/modules/FxAccountsWebChannel.jsm
mobile/android/modules/HelperApps.jsm
mobile/android/modules/Home.jsm
mobile/android/modules/HomeProvider.jsm
mobile/android/modules/InputWidgetHelper.jsm
mobile/android/modules/MediaPlayerApp.jsm
mobile/android/modules/NetErrorHelper.jsm
mobile/android/modules/Notifications.jsm
mobile/android/modules/PageActions.jsm
mobile/android/modules/Prompt.jsm
mobile/android/modules/RuntimePermissions.jsm
mobile/android/modules/SSLExceptions.jsm
mobile/android/modules/Sanitizer.jsm
mobile/android/modules/SelectHelper.jsm
mobile/android/modules/SharedPreferences.jsm
mobile/android/modules/Snackbars.jsm
mobile/android/modules/WebrtcUI.jsm
mobile/android/modules/WebsiteMetadata.jsm
mobile/android/modules/geckoview/GeckoViewContent.jsm
mobile/android/modules/geckoview/GeckoViewContentModule.jsm
mobile/android/modules/geckoview/GeckoViewModule.jsm
mobile/android/modules/geckoview/GeckoViewNavigation.jsm
mobile/android/modules/geckoview/GeckoViewProgress.jsm
mobile/android/modules/geckoview/GeckoViewRemoteDebugger.jsm
mobile/android/modules/geckoview/GeckoViewScroll.jsm
mobile/android/modules/geckoview/GeckoViewSettings.jsm
mobile/android/modules/geckoview/GeckoViewTab.jsm
mobile/android/modules/geckoview/GeckoViewTrackingProtection.jsm
mobile/android/modules/geckoview/GeckoViewUtils.jsm
mobile/android/modules/geckoview/Messaging.jsm
netwerk/base/NetUtil.jsm
netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm
netwerk/dns/mdns/libmdns/fallback/DNSPacket.jsm
netwerk/dns/mdns/libmdns/fallback/DNSRecord.jsm
netwerk/dns/mdns/libmdns/fallback/DNSResourceRecord.jsm
netwerk/dns/mdns/libmdns/fallback/DNSTypes.jsm
netwerk/dns/mdns/libmdns/fallback/DataReader.jsm
netwerk/dns/mdns/libmdns/fallback/DataWriter.jsm
netwerk/dns/mdns/libmdns/fallback/MulticastDNS.jsm
netwerk/protocol/http/UserAgentOverrides.jsm
netwerk/protocol/http/UserAgentUpdates.jsm
netwerk/test/httpserver/httpd.js
security/manager/ssl/X509.jsm
services/common/async.js
services/common/blocklist-clients.js
services/common/blocklist-updater.js
services/common/hawkclient.js
services/common/hawkrequest.js
services/common/kinto-http-client.js
services/common/kinto-offline-client.js
services/common/kinto-storage-adapter.js
services/common/logmanager.js
services/common/modules-testing/logging.js
services/common/observers.js
services/common/rest.js
services/common/tokenserverclient.js
services/common/uptake-telemetry.js
services/common/utils.js
services/crypto/modules/WeaveCrypto.js
services/crypto/modules/jwcrypto.jsm
services/crypto/modules/utils.js
services/fxaccounts/Credentials.jsm
services/fxaccounts/FxAccounts.jsm
services/fxaccounts/FxAccountsClient.jsm
services/fxaccounts/FxAccountsCommon.js
services/fxaccounts/FxAccountsConfig.jsm
services/fxaccounts/FxAccountsOAuthGrantClient.jsm
services/fxaccounts/FxAccountsProfile.jsm
services/fxaccounts/FxAccountsProfileClient.jsm
services/fxaccounts/FxAccountsStorage.jsm
services/fxaccounts/FxAccountsWebChannel.jsm
services/sync/modules-testing/fakeservices.js
services/sync/modules-testing/fxa_utils.js
services/sync/modules-testing/rotaryengine.js
services/sync/modules-testing/utils.js
services/sync/modules/SyncedTabs.jsm
services/sync/modules/UIState.jsm
services/sync/modules/addonsreconciler.js
services/sync/modules/addonutils.js
services/sync/modules/bookmark_repair.js
services/sync/modules/bookmark_validator.js
services/sync/modules/browserid_identity.js
services/sync/modules/collection_repair.js
services/sync/modules/collection_validator.js
services/sync/modules/constants.js
services/sync/modules/doctor.js
services/sync/modules/engines.js
services/sync/modules/engines/addons.js
services/sync/modules/engines/bookmarks.js
services/sync/modules/engines/clients.js
services/sync/modules/engines/extension-storage.js
services/sync/modules/engines/forms.js
services/sync/modules/engines/history.js
services/sync/modules/engines/passwords.js
services/sync/modules/engines/prefs.js
services/sync/modules/engines/tabs.js
services/sync/modules/keys.js
services/sync/modules/main.js
services/sync/modules/policies.js
services/sync/modules/record.js
services/sync/modules/resource.js
services/sync/modules/service.js
services/sync/modules/stages/declined.js
services/sync/modules/stages/enginesync.js
services/sync/modules/status.js
services/sync/modules/telemetry.js
services/sync/modules/util.js
services/sync/tps/extensions/tps/resource/auth/fxaccounts.jsm
testing/mochitest/BrowserTestUtils/BrowserTestUtils.jsm
testing/mochitest/BrowserTestUtils/ContentTask.jsm
testing/mochitest/BrowserTestUtils/ContentTaskUtils.jsm
testing/mochitest/ShutdownLeaksCollector.jsm
testing/mochitest/tests/Harness_sanity/ImportTesting.jsm
testing/modules/AppData.jsm
testing/modules/AppInfo.jsm
testing/modules/Assert.jsm
testing/modules/CoverageUtils.jsm
testing/modules/FileTestUtils.jsm
testing/modules/MockRegistrar.jsm
testing/modules/MockRegistry.jsm
testing/modules/StructuredLog.jsm
testing/modules/TestUtils.jsm
testing/modules/ajv-4.1.1.js
testing/specialpowers/content/MockColorPicker.jsm
testing/specialpowers/content/MockFilePicker.jsm
testing/specialpowers/content/MockPermissionPrompt.jsm
testing/specialpowers/content/SpecialPowersObserver.jsm
toolkit/components/addoncompat/CompatWarning.jsm
toolkit/components/addoncompat/Prefetcher.jsm
toolkit/components/addoncompat/RemoteAddonsChild.jsm
toolkit/components/addoncompat/RemoteAddonsParent.jsm
toolkit/components/asyncshutdown/AsyncShutdown.jsm
toolkit/components/cloudstorage/CloudStorage.jsm
toolkit/components/contentprefs/ContentPrefServiceChild.jsm
toolkit/components/contentprefs/ContentPrefServiceParent.jsm
toolkit/components/contentprefs/ContentPrefUtils.jsm
toolkit/components/contextualidentity/ContextualIdentityService.jsm
toolkit/components/crashes/CrashManager.jsm
toolkit/components/crashes/CrashManagerTest.jsm
toolkit/components/crashmonitor/CrashMonitor.jsm
toolkit/components/ctypes/ctypes.jsm
toolkit/components/extensions/Extension.jsm
toolkit/components/extensions/ExtensionChild.jsm
toolkit/components/extensions/ExtensionChildDevToolsUtils.jsm
toolkit/components/extensions/ExtensionCommon.jsm
toolkit/components/extensions/ExtensionContent.jsm
toolkit/components/extensions/ExtensionPageChild.jsm
toolkit/components/extensions/ExtensionParent.jsm
toolkit/components/extensions/ExtensionPermissions.jsm
toolkit/components/extensions/ExtensionPreferencesManager.jsm
toolkit/components/extensions/ExtensionSettingsStore.jsm
toolkit/components/extensions/ExtensionStorage.jsm
toolkit/components/extensions/ExtensionStorageSync.jsm
toolkit/components/extensions/ExtensionTestCommon.jsm
toolkit/components/extensions/ExtensionUtils.jsm
toolkit/components/extensions/ExtensionXPCShellUtils.jsm
toolkit/components/extensions/FindContent.jsm
toolkit/components/extensions/LegacyExtensionsUtils.jsm
toolkit/components/extensions/MessageChannel.jsm
toolkit/components/extensions/NativeManifests.jsm
toolkit/components/extensions/NativeMessaging.jsm
toolkit/components/extensions/ProxyScriptContext.jsm
toolkit/components/extensions/Schemas.jsm
toolkit/components/extensions/test/mochitest/webrequest_test.jsm
toolkit/components/jsdownloads/src/DownloadCore.jsm
toolkit/components/jsdownloads/src/DownloadHistory.jsm
toolkit/components/jsdownloads/src/DownloadIntegration.jsm
toolkit/components/jsdownloads/src/DownloadList.jsm
toolkit/components/jsdownloads/src/DownloadPaths.jsm
toolkit/components/jsdownloads/src/DownloadStore.jsm
toolkit/components/jsdownloads/src/DownloadUIHelper.jsm
toolkit/components/jsdownloads/src/Downloads.jsm
toolkit/components/microformats/microformat-shiv.js
toolkit/components/narrate/NarrateControls.jsm
toolkit/components/narrate/Narrator.jsm
toolkit/components/narrate/VoiceSelect.jsm
toolkit/components/narrate/test/NarrateTestUtils.jsm
toolkit/components/osfile/modules/osfile_async_front.jsm
toolkit/components/osfile/modules/osfile_native.jsm
toolkit/components/passwordmgr/InsecurePasswordUtils.jsm
toolkit/components/passwordmgr/LoginHelper.jsm
toolkit/components/passwordmgr/LoginImport.jsm
toolkit/components/passwordmgr/LoginManagerContent.jsm
toolkit/components/passwordmgr/LoginManagerContextMenu.jsm
toolkit/components/passwordmgr/LoginManagerParent.jsm
toolkit/components/passwordmgr/LoginRecipes.jsm
toolkit/components/passwordmgr/LoginStore.jsm
toolkit/components/passwordmgr/OSCrypto.jsm
toolkit/components/passwordmgr/test/LoginTestUtils.jsm
toolkit/components/payments/test/PaymentTestUtils.jsm
toolkit/components/perf/PerfMeasurement.jsm
toolkit/components/perfmonitoring/PerformanceStats.jsm
toolkit/components/perfmonitoring/PerformanceWatcher.jsm
toolkit/components/places/BookmarkHTMLUtils.jsm
toolkit/components/places/BookmarkJSONUtils.jsm
toolkit/components/places/Bookmarks.jsm
toolkit/components/places/ExtensionSearchHandler.jsm
toolkit/components/places/History.jsm
toolkit/components/places/PlacesBackups.jsm
toolkit/components/places/PlacesDBUtils.jsm
toolkit/components/places/PlacesRemoteTabsAutocompleteProvider.jsm
toolkit/components/places/PlacesSearchAutocompleteProvider.jsm
toolkit/components/places/PlacesSyncUtils.jsm
toolkit/components/places/PlacesTransactions.jsm
toolkit/components/places/PlacesUtils.jsm
toolkit/components/places/SyncedBookmarksMirror.jsm
toolkit/components/places/tests/PlacesTestUtils.jsm
toolkit/components/promiseworker/PromiseWorker.jsm
toolkit/components/prompts/src/CommonDialog.jsm
toolkit/components/prompts/src/SharedPromptUtils.jsm
toolkit/components/reader/.eslintrc.js
toolkit/components/reader/AboutReader.jsm
toolkit/components/reader/ReaderMode.jsm
toolkit/components/reader/ReaderWorker.jsm
toolkit/components/reflect/reflect.jsm
toolkit/components/resistfingerprinting/LanguagePrompt.jsm
toolkit/components/satchel/AutoCompletePopup.jsm
toolkit/components/satchel/FormHistory.jsm
toolkit/components/satchel/nsFormAutoCompleteResult.jsm
toolkit/components/search/SearchStaticData.jsm
toolkit/components/search/SearchSuggestionController.jsm
toolkit/components/telemetry/GCTelemetry.jsm
toolkit/components/telemetry/TelemetryArchive.jsm
toolkit/components/telemetry/TelemetryController.jsm
toolkit/components/telemetry/TelemetryEnvironment.jsm
toolkit/components/telemetry/TelemetryHealthPing.jsm
toolkit/components/telemetry/TelemetryLog.jsm
toolkit/components/telemetry/TelemetryModules.jsm
toolkit/components/telemetry/TelemetryReportingPolicy.jsm
toolkit/components/telemetry/TelemetrySend.jsm
toolkit/components/telemetry/TelemetrySession.jsm
toolkit/components/telemetry/TelemetryStopwatch.jsm
toolkit/components/telemetry/TelemetryStorage.jsm
toolkit/components/telemetry/TelemetryTimestamps.jsm
toolkit/components/telemetry/TelemetryUtils.jsm
toolkit/components/telemetry/UITelemetry.jsm
toolkit/components/telemetry/UpdatePing.jsm
toolkit/components/telemetry/hybrid-content/HybridContentTelemetry.jsm
toolkit/components/telemetry/tests/unit/TelemetryArchiveTesting.jsm
toolkit/components/thumbnails/PageThumbUtils.jsm
toolkit/components/thumbnails/PageThumbs.jsm
toolkit/components/url-classifier/SafeBrowsing.jsm
toolkit/components/url-classifier/tests/UrlClassifierTestUtils.jsm
toolkit/components/viewsource/ViewSourceBrowser.jsm
toolkit/crashreporter/CrashReports.jsm
toolkit/crashreporter/CrashSubmit.jsm
toolkit/crashreporter/KeyValueParser.jsm
toolkit/crashreporter/test/CrashTestUtils.jsm
toolkit/forgetaboutsite/ForgetAboutSite.jsm
toolkit/modules/AppMenuNotifications.jsm
toolkit/modules/AsyncPrefs.jsm
toolkit/modules/Battery.jsm
toolkit/modules/BinarySearch.jsm
toolkit/modules/BrowserUtils.jsm
toolkit/modules/CanonicalJSON.jsm
toolkit/modules/CertUtils.jsm
toolkit/modules/CharsetMenu.jsm
toolkit/modules/ClientID.jsm
toolkit/modules/Color.jsm
toolkit/modules/Console.jsm
toolkit/modules/DateTimePickerHelper.jsm
toolkit/modules/DeferredTask.jsm
toolkit/modules/Deprecated.jsm
toolkit/modules/E10SUtils.jsm
toolkit/modules/EventEmitter.jsm
toolkit/modules/FileUtils.jsm
toolkit/modules/Finder.jsm
toolkit/modules/FinderHighlighter.jsm
toolkit/modules/FinderIterator.jsm
toolkit/modules/FormLikeFactory.jsm
toolkit/modules/GMPInstallManager.jsm
toolkit/modules/GMPUtils.jsm
toolkit/modules/Geometry.jsm
toolkit/modules/HiddenFrame.jsm
toolkit/modules/InlineSpellChecker.jsm
toolkit/modules/InlineSpellCheckerContent.jsm
toolkit/modules/Integration.jsm
toolkit/modules/JSONFile.jsm
toolkit/modules/LightweightThemeConsumer.jsm
toolkit/modules/Log.jsm
toolkit/modules/Memory.jsm
toolkit/modules/NLP.jsm
toolkit/modules/NewTabUtils.jsm
toolkit/modules/ObjectUtils.jsm
toolkit/modules/PageMenu.jsm
toolkit/modules/PageMetadata.jsm
toolkit/modules/PermissionsUtils.jsm
toolkit/modules/PopupNotifications.jsm
toolkit/modules/Preferences.jsm
toolkit/modules/PrivateBrowsingUtils.jsm
toolkit/modules/ProfileAge.jsm
toolkit/modules/PromiseMessage.jsm
toolkit/modules/PromiseUtils.jsm
toolkit/modules/PropertyListUtils.jsm
toolkit/modules/RemoteFinder.jsm
toolkit/modules/RemotePageManager.jsm
toolkit/modules/RemoteSecurityUI.jsm
toolkit/modules/RemoteWebProgress.jsm
toolkit/modules/ResetProfile.jsm
toolkit/modules/ResponsivenessMonitor.jsm
toolkit/modules/SelectContentHelper.jsm
toolkit/modules/SelectParentHelper.jsm
toolkit/modules/ServiceRequest.jsm
toolkit/modules/Services.jsm
toolkit/modules/ShortcutUtils.jsm
toolkit/modules/Sqlite.jsm
toolkit/modules/Task.jsm
toolkit/modules/Timer.jsm
toolkit/modules/Troubleshoot.jsm
toolkit/modules/UpdateUtils.jsm
toolkit/modules/WebChannel.jsm
toolkit/modules/WindowDraggingUtils.jsm
toolkit/modules/WindowsRegistry.jsm
toolkit/modules/ZipUtils.jsm
toolkit/modules/addons/MatchURLFilters.jsm
toolkit/modules/css-selector.js
toolkit/modules/debug.js
toolkit/modules/secondscreen/RokuApp.jsm
toolkit/modules/secondscreen/SimpleServiceDiscovery.jsm
toolkit/modules/sessionstore/FormData.jsm
toolkit/modules/sessionstore/PrivacyLevel.jsm
toolkit/modules/sessionstore/ScrollPosition.jsm
toolkit/modules/sessionstore/SessionHistory.jsm
toolkit/modules/sessionstore/Utils.jsm
toolkit/modules/tests/modules/MockDocument.jsm
toolkit/modules/tests/modules/PromiseTestUtils.jsm
toolkit/modules/tests/xpcshell/TestIntegration.jsm
toolkit/modules/third_party/jsesc/jsesc.js
toolkit/mozapps/downloads/DownloadLastDir.jsm
toolkit/mozapps/downloads/DownloadUtils.jsm
toolkit/mozapps/extensions/AddonManager.jsm
toolkit/mozapps/extensions/ChromeManifestParser.jsm
toolkit/mozapps/extensions/LightweightThemeManager.jsm
toolkit/mozapps/extensions/internal/AddonRepository.jsm
toolkit/mozapps/extensions/internal/AddonSettings.jsm
toolkit/mozapps/extensions/internal/AddonUpdateChecker.jsm
toolkit/mozapps/extensions/internal/GMPProvider.jsm
toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm
toolkit/mozapps/extensions/internal/PluginProvider.jsm
toolkit/mozapps/extensions/internal/ProductAddonChecker.jsm
toolkit/mozapps/extensions/internal/XPIInstall.jsm
toolkit/mozapps/extensions/internal/XPIProvider.jsm
toolkit/mozapps/extensions/test/AddonManagerTesting.jsm
toolkit/mozapps/extensions/test/addons/test_bootstrap1_1/version.jsm
toolkit/mozapps/extensions/test/addons/test_bootstrap1_2/version.jsm
toolkit/mozapps/extensions/test/addons/test_bootstrap1_3/version.jsm
toolkit/mozapps/extensions/test/xpcshell/data/BootstrapMonitor.jsm
toolkit/mozapps/update/UpdateListener.jsm
toolkit/mozapps/update/UpdateTelemetry.jsm
uriloader/exthandler/tests/HandlerServiceTestUtils.jsm
--- a/accessible/jsat/AccessFu.jsm
+++ b/accessible/jsat/AccessFu.jsm
@@ -1,34 +1,34 @@
 /* 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/. */
 
 /* exported AccessFu */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["AccessFu"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["AccessFu"]; // jshint ignore:line
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/accessibility/Utils.jsm");
 
 if (Utils.MozBuildApp === "mobile/android") {
   ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 }
 
 const ACCESSFU_DISABLE = 0; // jshint ignore:line
 const ACCESSFU_ENABLE = 1;
 const ACCESSFU_AUTO = 2;
 
 const SCREENREADER_SETTING = "accessibility.screenreader";
 const QUICKNAV_MODES_PREF = "accessibility.accessfu.quicknav_modes";
 const QUICKNAV_INDEX_PREF = "accessibility.accessfu.quicknav_index";
 
-this.AccessFu = { // jshint ignore:line
+var AccessFu = { // jshint ignore:line
   /**
    * Initialize chrome-layer accessibility functionality.
    * If accessibility is enabled on the platform, then a special accessibility
    * mode is started.
    */
   attach: function attach(aWindow) {
     Utils.init(aWindow);
 
--- a/accessible/jsat/Constants.jsm
+++ b/accessible/jsat/Constants.jsm
@@ -1,12 +1,12 @@
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.EXPORTED_SYMBOLS = ["Roles", "Events", "Relations",
-                         "Filters", "States", "Prefilters"];
+var EXPORTED_SYMBOLS = ["Roles", "Events", "Relations",
+                        "Filters", "States", "Prefilters"];
 
 function ConstantsMap(aObject, aPrefix, aMap = {}, aModifier = null) {
   let offset = aPrefix.length;
   for (var name in aObject) {
     if (name.indexOf(aPrefix) === 0) {
       aMap[name.slice(offset)] = aModifier ?
         aModifier(aObject[name]) : aObject[name];
     }
--- a/accessible/jsat/ContentControl.jsm
+++ b/accessible/jsat/ContentControl.jsm
@@ -13,26 +13,26 @@ ChromeUtils.defineModuleGetter(this, "Ro
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "TraversalRules",
   "resource://gre/modules/accessibility/Traversal.jsm");
 ChromeUtils.defineModuleGetter(this, "TraversalHelper",
   "resource://gre/modules/accessibility/Traversal.jsm");
 ChromeUtils.defineModuleGetter(this, "Presentation",
   "resource://gre/modules/accessibility/Presentation.jsm");
 
-this.EXPORTED_SYMBOLS = ["ContentControl"];
+var EXPORTED_SYMBOLS = ["ContentControl"];
 
 const MOVEMENT_GRANULARITY_CHARACTER = 1;
 const MOVEMENT_GRANULARITY_WORD = 2;
 const MOVEMENT_GRANULARITY_PARAGRAPH = 8;
 
-this.ContentControl = function ContentControl(aContentScope) {
+function ContentControl(aContentScope) {
   this._contentScope = Cu.getWeakReference(aContentScope);
   this._childMessageSenders = new WeakMap();
-};
+}
 
 this.ContentControl.prototype = {
   messagesOfInterest: ["AccessFu:MoveCursor",
                        "AccessFu:ClearCursor",
                        "AccessFu:MoveToPoint",
                        "AccessFu:AutoMove",
                        "AccessFu:Activate",
                        "AccessFu:MoveCaret",
--- a/accessible/jsat/EventManager.jsm
+++ b/accessible/jsat/EventManager.jsm
@@ -17,31 +17,31 @@ ChromeUtils.defineModuleGetter(this, "Pr
   "resource://gre/modules/accessibility/Presentation.jsm");
 ChromeUtils.defineModuleGetter(this, "Roles",
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "Events",
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "States",
   "resource://gre/modules/accessibility/Constants.jsm");
 
-this.EXPORTED_SYMBOLS = ["EventManager"];
+var EXPORTED_SYMBOLS = ["EventManager"];
 
-this.EventManager = function EventManager(aContentScope, aContentControl) {
+function EventManager(aContentScope, aContentControl) {
   this.contentScope = aContentScope;
   this.contentControl = aContentControl;
   this.addEventListener = this.contentScope.addEventListener.bind(
     this.contentScope);
   this.removeEventListener = this.contentScope.removeEventListener.bind(
     this.contentScope);
   this.sendMsgFunc = this.contentScope.sendAsyncMessage.bind(
     this.contentScope);
   this.webProgress = this.contentScope.docShell.
     QueryInterface(Ci.nsIInterfaceRequestor).
     getInterface(Ci.nsIWebProgress);
-};
+}
 
 this.EventManager.prototype = {
   editState: { editing: false },
 
   start: function start() {
     try {
       if (!this._started) {
         Logger.debug("EventManager.start");
--- a/accessible/jsat/Gestures.jsm
+++ b/accessible/jsat/Gestures.jsm
@@ -31,17 +31,17 @@
 
         ExploreEnd -> Explore          (x)
 
            Explore -> ExploreEnd       (v)
 ******************************************************************************/
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["GestureSettings", "GestureTracker"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["GestureSettings", "GestureTracker"]; // jshint ignore:line
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Utils", // jshint ignore:line
   "resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "Logger", // jshint ignore:line
   "resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "setTimeout", // jshint ignore:line
@@ -127,17 +127,17 @@ Point.prototype = {
     return this.getDistanceToCoord(this.startX, this.startY);
   }
 };
 
 /**
  * An externally accessible collection of settings used in gesture resolition.
  * @type {Object}
  */
-this.GestureSettings = { // jshint ignore:line
+var GestureSettings = { // jshint ignore:line
   /**
    * Maximum duration of swipe
    * @type {Number}
    */
   swipeMaxDuration: SWIPE_MAX_DURATION * TIMEOUT_MULTIPLIER,
 
   /**
    * Maximum amount of time allowed for a gesture to be considered a multitouch.
@@ -174,17 +174,17 @@ this.GestureSettings = { // jshint ignor
   travelThreshold: 0.025
 };
 
 /**
  * An interface that handles the pointer events and calculates the appropriate
  * gestures.
  * @type {Object}
  */
-this.GestureTracker = { // jshint ignore:line
+var GestureTracker = { // jshint ignore:line
   /**
    * Reset GestureTracker to its initial state.
    * @return {[type]} [description]
    */
   reset: function GestureTracker_reset() {
     if (this.current) {
       this.current.clearTimer();
     }
--- a/accessible/jsat/OutputGenerator.jsm
+++ b/accessible/jsat/OutputGenerator.jsm
@@ -22,17 +22,17 @@ ChromeUtils.defineModuleGetter(this, "Pr
   "resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "Logger", // jshint ignore:line
   "resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "Roles", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "States", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 
-this.EXPORTED_SYMBOLS = ["UtteranceGenerator", "BrailleGenerator"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["UtteranceGenerator", "BrailleGenerator"]; // jshint ignore:line
 
 var OutputGenerator = {
 
   defaultOutputOrder: OUTPUT_DESC_LAST,
 
   /**
    * Generates output for a PivotContext.
    * @param {PivotContext} aContext object that generates and caches
@@ -576,17 +576,17 @@ var OutputGenerator = {
  * Another example from {@link genForObject}: ['list item 2 of 5', 'Alabama'].
  *
  * An utterance is ordered from the least to the most important. Speaking the
  * last string usually makes sense, but speaking the first often won't.
  * For example {@link genForAction} might return ['button', 'clicked'] for a
  * clicked event. Speaking only 'clicked' makes sense. Speaking 'button' does
  * not.
  */
-this.UtteranceGenerator = {  // jshint ignore:line
+var UtteranceGenerator = {  // jshint ignore:line
   __proto__: OutputGenerator, // jshint ignore:line
 
   gActionMap: {
     jump: "jumpAction",
     press: "pressAction",
     check: "checkAction",
     uncheck: "uncheckAction",
     on: "onAction",
@@ -835,17 +835,17 @@ this.UtteranceGenerator = {  // jshint i
 
       this._addName(utterance, aAccessible, aFlags);
       this._addLandmark(utterance, aAccessible);
 
       return utterance;
     }
 };
 
-this.BrailleGenerator = {  // jshint ignore:line
+var BrailleGenerator = {  // jshint ignore:line
   __proto__: OutputGenerator, // jshint ignore:line
 
   genForContext: function genForContext(aContext) {
     let output = OutputGenerator.genForContext.apply(this, arguments);
 
     let acc = aContext.accessible;
 
     // add the static text indicating a list item; do this for both listitems or
--- a/accessible/jsat/PointerAdapter.jsm
+++ b/accessible/jsat/PointerAdapter.jsm
@@ -1,17 +1,17 @@
 /* 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/. */
 
 /* exported PointerRelay, PointerAdapter */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["PointerRelay", "PointerAdapter"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["PointerRelay", "PointerAdapter"]; // jshint ignore:line
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Utils", // jshint ignore:line
   "resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "Logger", // jshint ignore:line
   "resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "GestureSettings", // jshint ignore:line
@@ -132,17 +132,17 @@ var PointerRelay = { // jshint ignore:li
             y: aTouch.screenY
           };
         }
       )
     });
   }
 };
 
-this.PointerAdapter = { // jshint ignore:line
+var PointerAdapter = { // jshint ignore:line
   start: function PointerAdapter_start() {
     Logger.debug("PointerAdapter.start");
     GestureTracker.reset();
     PointerRelay.start(this.handleEvent);
   },
 
   stop: function PointerAdapter_stop() {
     Logger.debug("PointerAdapter.stop");
--- a/accessible/jsat/Presentation.jsm
+++ b/accessible/jsat/Presentation.jsm
@@ -16,17 +16,17 @@ ChromeUtils.defineModuleGetter(this, "Ut
   "resource://gre/modules/accessibility/OutputGenerator.jsm");
 ChromeUtils.defineModuleGetter(this, "BrailleGenerator", // jshint ignore:line
   "resource://gre/modules/accessibility/OutputGenerator.jsm");
 ChromeUtils.defineModuleGetter(this, "Roles", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "States", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 
-this.EXPORTED_SYMBOLS = ["Presentation"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["Presentation"]; // jshint ignore:line
 
 /**
  * The interface for all presenter classes. A presenter could be, for example,
  * a speech output module, or a visual cursor indicator.
  */
 function Presenter() {}
 
 Presenter.prototype = {
@@ -667,17 +667,17 @@ BraillePresenter.prototype.textSelection
       type: this.type,
       details: {
         selectionStart: aStart,
         selectionEnd: aEnd
       }
     };
   };
 
-this.Presentation = { // jshint ignore:line
+var Presentation = { // jshint ignore:line
   get presenters() {
     delete this.presenters;
     let presenterMap = {
       "mobile/android": [VisualPresenter, AndroidPresenter],
       "b2g": [VisualPresenter, B2GPresenter],
       "browser": [VisualPresenter, B2GPresenter, AndroidPresenter]
     };
     this.presenters = presenterMap[Utils.MozBuildApp].map(P => new P());
--- a/accessible/jsat/Traversal.jsm
+++ b/accessible/jsat/Traversal.jsm
@@ -1,17 +1,17 @@
 /* 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/. */
 
 /* exported TraversalRules, TraversalHelper */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["TraversalRules", "TraversalHelper"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["TraversalRules", "TraversalHelper"]; // jshint ignore:line
 
 ChromeUtils.import("resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Roles", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "Filters", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "States", // jshint ignore:line
@@ -175,17 +175,17 @@ var gSimpleMatchFunc = function gSimpleM
   }
 };
 
 var gSimplePreFilter = Prefilters.DEFUNCT |
   Prefilters.INVISIBLE |
   Prefilters.ARIA_HIDDEN |
   Prefilters.TRANSPARENT;
 
-this.TraversalRules = { // jshint ignore:line
+var TraversalRules = { // jshint ignore:line
   Simple: new BaseTraversalRule(gSimpleTraversalRoles, gSimpleMatchFunc),
 
   SimpleOnScreen: new BaseTraversalRule(
     gSimpleTraversalRoles, gSimpleMatchFunc,
     Prefilters.DEFUNCT | Prefilters.INVISIBLE | Prefilters.ARIA_HIDDEN |
     Prefilters.TRANSPARENT | Prefilters.OFFSCREEN),
 
   Anchor: new BaseTraversalRule(
@@ -356,17 +356,17 @@ this.TraversalRules = { // jshint ignore
   _shouldSkipImage: function _shouldSkipImage(aAccessible) {
     if (gSkipEmptyImages.value && aAccessible.name === "") {
       return Filters.IGNORE;
     }
     return Filters.MATCH;
   }
 };
 
-this.TraversalHelper = {
+var TraversalHelper = {
   _helperPivotCache: null,
 
   get helperPivotCache() {
     delete this.helperPivotCache;
     this.helperPivotCache = new WeakMap();
     return this.helperPivotCache;
   },
 
--- a/accessible/jsat/Utils.jsm
+++ b/accessible/jsat/Utils.jsm
@@ -17,19 +17,19 @@ ChromeUtils.defineModuleGetter(this, "Ev
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "Relations", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "States", // jshint ignore:line
   "resource://gre/modules/accessibility/Constants.jsm");
 ChromeUtils.defineModuleGetter(this, "PluralForm", // jshint ignore:line
   "resource://gre/modules/PluralForm.jsm");
 
-this.EXPORTED_SYMBOLS = ["Utils", "Logger", "PivotContext", "PrefCache"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["Utils", "Logger", "PivotContext", "PrefCache"]; // jshint ignore:line
 
-this.Utils = { // jshint ignore:line
+var Utils = { // jshint ignore:line
   _buildAppMap: {
     "{3c2e2abc-06d4-11e1-ac3b-374f68613e61}": "b2g",
     "{d1bfe7d9-c01e-4237-998b-7b5f960a4314}": "graphene",
     "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "browser",
     "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "mobile/android",
     "{a23983c0-fd0e-11dc-95ff-0800200c9a66}": "mobile/xul"
   },
 
@@ -538,17 +538,17 @@ State.prototype = {
     let statesArray = new Array(stateStrings.length);
     for (let i = 0; i < statesArray.length; i++) {
       statesArray[i] = stateStrings.item(i);
     }
     return "[" + statesArray.join(", ") + "]";
   }
 };
 
-this.Logger = { // jshint ignore:line
+var Logger = { // jshint ignore:line
   GESTURE: -1,
   DEBUG: 0,
   INFO: 1,
   WARNING: 2,
   ERROR: 3,
   _LEVEL_NAMES: ["GESTURE", "DEBUG", "INFO", "WARNING", "ERROR"],
 
   logLevel: 1, // INFO;
@@ -696,28 +696,28 @@ this.Logger = { // jshint ignore:line
  * for a given accessible and its relationship with another accessible.
  *
  * If the given accessible is a label for a nested control, then this
  * context will represent the nested control instead of the label.
  * With the exception of bounds calculation, which will use the containing
  * label. In this case the |accessible| field would be the embedded control,
  * and the |accessibleForBounds| field would be the label.
  */
-this.PivotContext = function PivotContext(aAccessible, aOldAccessible, // jshint ignore:line
+function PivotContext(aAccessible, aOldAccessible, // jshint ignore:line
   aStartOffset, aEndOffset, aIgnoreAncestry = false,
   aIncludeInvisible = false) {
   this._accessible = aAccessible;
   this._nestedControl = Utils.getEmbeddedControl(aAccessible);
   this._oldAccessible =
     this._isDefunct(aOldAccessible) ? null : aOldAccessible;
   this.startOffset = aStartOffset;
   this.endOffset = aEndOffset;
   this._ignoreAncestry = aIgnoreAncestry;
   this._includeInvisible = aIncludeInvisible;
-};
+}
 
 PivotContext.prototype = {
   get accessible() {
     // If the current pivot accessible has a nested control,
     // make this context use it publicly.
     return this._nestedControl || this._accessible;
   },
 
@@ -1008,33 +1008,33 @@ PivotContext.prototype = {
     try {
       return Utils.getState(aAccessible).contains(States.DEFUNCT);
     } catch (x) {
       return true;
     }
   }
 };
 
-this.PrefCache = function PrefCache(aName, aCallback, aRunCallbackNow) { // jshint ignore:line
+function PrefCache(aName, aCallback, aRunCallbackNow) { // jshint ignore:line
   this.name = aName;
   this.callback = aCallback;
 
   let branch = Services.prefs;
   this.value = this._getValue(branch);
 
   if (this.callback && aRunCallbackNow) {
     try {
       this.callback(this.name, this.value, true);
     } catch (x) {
       Logger.logException(x);
     }
   }
 
   branch.addObserver(aName, this, true);
-};
+}
 
 PrefCache.prototype = {
   _getValue: function _getValue(aBranch) {
     try {
       if (!this.type) {
         this.type = aBranch.getPrefType(this.name);
       }
       switch (this.type) {
--- a/browser/base/content/test/urlbar/Panel.jsm
+++ b/browser/base/content/test/urlbar/Panel.jsm
@@ -1,19 +1,19 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Panel",
 ];
 
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.Panel = function(panelElt, iframeURL) {
+var Panel = function(panelElt, iframeURL) {
   this.p = panelElt;
   this.iframeURL = iframeURL;
   this._initPanel();
   this.urlbar.addEventListener("keydown", this);
   this.urlbar.addEventListener("input", this);
   this._emitQueue = [];
 };
 
--- a/browser/components/customizableui/CustomizableUI.jsm
+++ b/browser/components/customizableui/CustomizableUI.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["CustomizableUI"];
+var EXPORTED_SYMBOLS = ["CustomizableUI"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   SearchWidgetTracker: "resource:///modules/SearchWidgetTracker.jsm",
   CustomizableWidgets: "resource:///modules/CustomizableWidgets.jsm",
@@ -2938,17 +2938,17 @@ var CustomizableUIInternal = {
         window.setToolbarVisibility(toolbar, aIsVisible, isFirstChangedToolbar);
         isFirstChangedToolbar = false;
       }
     }
   },
 };
 Object.freeze(CustomizableUIInternal);
 
-this.CustomizableUI = {
+var CustomizableUI = {
   /**
    * Constant reference to the ID of the navigation toolbar.
    */
   AREA_NAVBAR: "nav-bar",
   /**
    * Constant reference to the ID of the menubar's toolbar.
    */
   AREA_MENUBAR: "toolbar-menubar",
--- a/browser/components/customizableui/CustomizableWidgets.jsm
+++ b/browser/components/customizableui/CustomizableWidgets.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["CustomizableWidgets"];
+var EXPORTED_SYMBOLS = ["CustomizableWidgets"];
 
 ChromeUtils.import("resource:///modules/CustomizableUI.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   BrowserUITelemetry: "resource:///modules/BrowserUITelemetry.jsm",
--- a/browser/components/customizableui/CustomizeMode.jsm
+++ b/browser/components/customizableui/CustomizeMode.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["CustomizeMode"];
+var EXPORTED_SYMBOLS = ["CustomizeMode"];
 
 const kPrefCustomizationDebug = "browser.uiCustomization.debug";
 const kPaletteId = "customization-palette";
 const kDragDataTypePrefix = "text/toolbarwrapper-id/";
 const kSkipSourceNodePref = "browser.uiCustomization.skipSourceNodeCheck";
 const kDrawInTitlebarPref = "browser.tabs.drawInTitlebar";
 const kExtraDragSpacePref = "browser.tabs.extraDragSpace";
 const kMaxTransitionDurationMs = 2000;
--- a/browser/components/customizableui/DragPositionManager.jsm
+++ b/browser/components/customizableui/DragPositionManager.jsm
@@ -6,17 +6,17 @@
 
 ChromeUtils.import("resource:///modules/CustomizableUI.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 var gManagers = new WeakMap();
 
 const kPaletteId = "customization-palette";
 
-this.EXPORTED_SYMBOLS = ["DragPositionManager"];
+var EXPORTED_SYMBOLS = ["DragPositionManager"];
 
 function AreaPositionManager(aContainer) {
   // Caching the direction and bounds of the container for quick access later:
   let window = aContainer.ownerGlobal;
   this._dir = window.getComputedStyle(aContainer).direction;
   let containerRect = aContainer.getBoundingClientRect();
   this._containerInfo = {
     left: containerRect.left,
--- a/browser/components/customizableui/PanelMultiView.jsm
+++ b/browser/components/customizableui/PanelMultiView.jsm
@@ -82,17 +82,17 @@
  *
  * If the <panelmultiview> element is "ephemeral", imported subviews will be
  * moved out again to the element specified by the viewCacheId attribute, so
  * that the panel element can be removed safely.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "PanelMultiView",
   "PanelView",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
@@ -118,17 +118,17 @@ let gNodeToObjectMap = new WeakMap();
 let gMultiLineElementsMap = new WeakMap();
 
 /**
  * Allows associating an object to a node lazily using a weak map.
  *
  * Classes deriving from this one may be easily converted to Custom Elements,
  * although they would lose the ability of being associated lazily.
  */
-this.AssociatedToNode = class {
+var AssociatedToNode = class {
   constructor(node) {
     /**
      * Node associated to this object.
      */
     this.node = node;
 
     /**
      * This promise is resolved when the current set of blockers set by event
@@ -244,17 +244,17 @@ this.AssociatedToNode = class {
       return cancel;
     });
   }
 };
 
 /**
  * This is associated to <panelmultiview> elements by the panelUI.xml binding.
  */
-this.PanelMultiView = class extends this.AssociatedToNode {
+var PanelMultiView = class extends this.AssociatedToNode {
   /**
    * Tries to open the specified <panel> and displays the main view specified
    * with the "mainViewId" attribute on the <panelmultiview> node it contains.
    *
    * If the panel does not contain a <panelmultiview>, it is opened directly.
    * This allows consumers like page actions to accept different panel types.
    *
    * @see The non-static openPopup method for details.
@@ -1111,17 +1111,17 @@ this.PanelMultiView = class extends this
       }
     }
   }
 };
 
 /**
  * This is associated to <panelview> elements.
  */
-this.PanelView = class extends this.AssociatedToNode {
+var PanelView = class extends this.AssociatedToNode {
   /**
    * The "mainview" attribute is set before the panel is opened when this view
    * is displayed as the main view, and is removed before the <panelview> is
    * displayed as a subview. The same view element can be displayed as a main
    * view and as a subview at different times.
    */
   set mainview(value) {
     if (value) {
--- a/browser/components/customizableui/ScrollbarSampler.jsm
+++ b/browser/components/customizableui/ScrollbarSampler.jsm
@@ -1,22 +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/. */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["ScrollbarSampler"];
+var EXPORTED_SYMBOLS = ["ScrollbarSampler"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 var gSystemScrollbarWidth = null;
 
-this.ScrollbarSampler = {
+var ScrollbarSampler = {
   getSystemScrollbarWidth() {
     if (gSystemScrollbarWidth !== null) {
       return Promise.resolve(gSystemScrollbarWidth);
     }
 
     return new Promise(resolve => {
       this._sampleSystemScrollbarWidth().then(function(systemScrollbarWidth) {
         gSystemScrollbarWidth = systemScrollbarWidth;
--- a/browser/components/customizableui/SearchWidgetTracker.jsm
+++ b/browser/components/customizableui/SearchWidgetTracker.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * Keeps the "browser.search.widget.inNavBar" preference synchronized.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["SearchWidgetTracker"];
+var EXPORTED_SYMBOLS = ["SearchWidgetTracker"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "CustomizableUI",
                                "resource:///modules/CustomizableUI.jsm");
 
 const WIDGET_ID = "search-container";
--- a/browser/components/distribution.js
+++ b/browser/components/distribution.js
@@ -1,30 +1,30 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "DistributionCustomizer" ];
+var EXPORTED_SYMBOLS = [ "DistributionCustomizer" ];
 
 const DISTRIBUTION_CUSTOMIZATION_COMPLETE_TOPIC =
   "distribution-customization-complete";
 
 const PREF_CACHED_FILE_EXISTENCE  = "distribution.iniFile.exists.value";
 const PREF_CACHED_FILE_APPVERSION = "distribution.iniFile.exists.appversion";
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "Preferences",
                                "resource://gre/modules/Preferences.jsm");
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
                                "resource://gre/modules/PlacesUtils.jsm");
 
-this.DistributionCustomizer = function DistributionCustomizer() {
-};
+function DistributionCustomizer() {
+}
 
 DistributionCustomizer.prototype = {
   get _iniFile() {
     // For parallel xpcshell testing purposes allow loading the distribution.ini
     // file from the profile folder through an hidden pref.
     let loadFromProfile = Services.prefs.getBoolPref("distribution.testing.loadFromProfile", false);
 
     let iniFile;
--- a/browser/components/downloads/DownloadsCommon.jsm
+++ b/browser/components/downloads/DownloadsCommon.jsm
@@ -1,17 +1,17 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ts=2 et sw=2 tw=80 filetype=javascript: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadsCommon",
 ];
 
 /**
  * Handles the Downloads panel shared methods and data access.
  *
  * This file includes the following constructors and global objects:
  *
@@ -115,17 +115,17 @@ PrefObserver.register({
 
 
 // DownloadsCommon
 
 /**
  * This object is exposed directly to the consumers of this JavaScript module,
  * and provides shared methods for all the instances of the user interface.
  */
-this.DownloadsCommon = {
+var DownloadsCommon = {
   // The following legacy constants are still returned by stateOfDownload, but
   // individual properties of the Download object should normally be used.
   DOWNLOAD_NOTSTARTED: -1,
   DOWNLOAD_DOWNLOADING: 0,
   DOWNLOAD_FINISHED: 1,
   DOWNLOAD_FAILED: 2,
   DOWNLOAD_CANCELED: 3,
   DOWNLOAD_PAUSED: 4,
--- a/browser/components/downloads/DownloadsSubview.jsm
+++ b/browser/components/downloads/DownloadsSubview.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadsSubview",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AppConstants",
                                "resource://gre/modules/AppConstants.jsm");
 ChromeUtils.defineModuleGetter(this, "Downloads",
--- a/browser/components/downloads/DownloadsTaskbar.jsm
+++ b/browser/components/downloads/DownloadsTaskbar.jsm
@@ -5,17 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Handles the download progress indicator in the taskbar.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadsTaskbar",
 ];
 
 // Globals
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Downloads",
@@ -40,17 +40,17 @@ XPCOMUtils.defineLazyGetter(this, "gMacT
            .getService(Ci.nsITaskbarProgress);
 });
 
 // DownloadsTaskbar
 
 /**
  * Handles the download progress indicator in the taskbar.
  */
-this.DownloadsTaskbar = {
+var DownloadsTaskbar = {
   /**
    * Underlying DownloadSummary providing the aggregate download information, or
    * null if the indicator has never been initialized.
    */
   _summary: null,
 
   /**
    * nsITaskbarProgress object to which download information is dispatched.
--- a/browser/components/downloads/DownloadsViewUI.jsm
+++ b/browser/components/downloads/DownloadsViewUI.jsm
@@ -4,17 +4,17 @@
 
 /*
  * This module is imported by code that uses the "download.xml" binding, and
  * provides prototypes for objects that handle input and display information.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadsViewUI",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Downloads",
                                "resource://gre/modules/Downloads.jsm");
 ChromeUtils.defineModuleGetter(this, "DownloadUtils",
@@ -25,17 +25,17 @@ ChromeUtils.defineModuleGetter(this, "Fi
                                "resource://gre/modules/FileUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "OS",
                                "resource://gre/modules/osfile.jsm");
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
                                "resource://gre/modules/PlacesUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "RecentWindow",
                                "resource:///modules/RecentWindow.jsm");
 
-this.DownloadsViewUI = {
+var DownloadsViewUI = {
   /**
    * Returns true if the given string is the name of a command that can be
    * handled by the Downloads user interface, including standard commands.
    */
   isCommandName(name) {
     return name.startsWith("cmd_") || name.startsWith("downloadsCmd_");
   },
 };
--- a/browser/components/enterprisepolicies/Policies.jsm
+++ b/browser/components/enterprisepolicies/Policies.jsm
@@ -21,19 +21,19 @@ XPCOMUtils.defineLazyGetter(this, "log",
     prefix: "Policies.jsm",
     // tip: set maxLogLevel to "debug" and use log.debug() to create detailed
     // messages during development. See LOG_LEVELS in Console.jsm for details.
     maxLogLevel: "error",
     maxLogLevelPref: PREF_LOGLEVEL,
   });
 });
 
-this.EXPORTED_SYMBOLS = ["Policies"];
+var EXPORTED_SYMBOLS = ["Policies"];
 
-this.Policies = {
+var Policies = {
   "BlockAboutAddons": {
     onBeforeUIStartup(manager, param) {
       if (param) {
         manager.disallowFeature("about:addons", true);
       }
     }
   },
 
--- a/browser/components/enterprisepolicies/PoliciesValidator.jsm
+++ b/browser/components/enterprisepolicies/PoliciesValidator.jsm
@@ -15,19 +15,19 @@ XPCOMUtils.defineLazyGetter(this, "log",
     prefix: "PoliciesValidator.jsm",
     // tip: set maxLogLevel to "debug" and use log.debug() to create detailed
     // messages during development. See LOG_LEVELS in Console.jsm for details.
     maxLogLevel: "error",
     maxLogLevelPref: PREF_LOGLEVEL,
   });
 });
 
-this.EXPORTED_SYMBOLS = ["PoliciesValidator"];
+var EXPORTED_SYMBOLS = ["PoliciesValidator"];
 
-this.PoliciesValidator = {
+var PoliciesValidator = {
   validateAndParseParameters(param, properties) {
     return validateAndParseParamRecursive(param, properties);
   }
 };
 
 function validateAndParseParamRecursive(param, properties) {
   if (properties.enum) {
     if (properties.enum.includes(param)) {
--- a/browser/components/enterprisepolicies/WindowsGPOParser.jsm
+++ b/browser/components/enterprisepolicies/WindowsGPOParser.jsm
@@ -14,19 +14,19 @@ XPCOMUtils.defineLazyGetter(this, "log",
     prefix: "GPOParser.jsm",
     // tip: set maxLogLevel to "debug" and use log.debug() to create detailed
     // messages during development. See LOG_LEVELS in Console.jsm for details.
     maxLogLevel: "error",
     maxLogLevelPref: PREF_LOGLEVEL,
   });
 });
 
-this.EXPORTED_SYMBOLS = ["WindowsGPOParser"];
+var EXPORTED_SYMBOLS = ["WindowsGPOParser"];
 
-this.WindowsGPOParser = {
+var WindowsGPOParser = {
   readPolicies(wrk, policies) {
     let childWrk = wrk.openChild("Mozilla\\Firefox", wrk.ACCESS_READ);
     if (!policies) {
       policies = {};
     }
     try {
       policies = registryToObject(childWrk, policies);
     } catch (e) {
--- a/browser/components/migration/.eslintrc.js
+++ b/browser/components/migration/.eslintrc.js
@@ -10,16 +10,16 @@ module.exports = {
     "new-parens": "error",
     "no-extend-native": "error",
     "no-fallthrough": ["error", { "commentPattern": ".*[Ii]ntentional(?:ly)?\\s+fall(?:ing)?[\\s-]*through.*" }],
     "no-multi-str": "error",
     "no-return-assign": "error",
     "no-sequences": "error",
     "no-shadow": "error",
     "no-throw-literal": "error",
-    "no-unused-vars": ["error", { "varsIgnorePattern": "^C[ciur]$" }],
+    "no-unused-vars": ["error", { "varsIgnorePattern": "^EXPORTED_SYMBOLS$" }],
     "padded-blocks": ["error", "never"],
     "semi-spacing": ["error", {"before": false, "after": true}],
     "space-in-parens": ["error", "never"],
     "strict": ["error", "global"],
     "yoda": "error"
   }
 };
--- a/browser/components/migration/AutoMigrate.jsm
+++ b/browser/components/migration/AutoMigrate.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AutoMigrate"];
+var EXPORTED_SYMBOLS = ["AutoMigrate"];
 
 const kAutoMigrateEnabledPref = "browser.migrate.automigrate.enabled";
 const kUndoUIEnabledPref = "browser.migrate.automigrate.ui.enabled";
 
 const kInPageUIEnabledPref = "browser.migrate.automigrate.inpage.ui.enabled";
 
 const kAutoMigrateBrowserPref = "browser.migrate.automigrate.browser";
 const kAutoMigrateImportedItemIds = "browser.migrate.automigrate.imported-items";
--- a/browser/components/migration/ChromeMigrationUtils.jsm
+++ b/browser/components/migration/ChromeMigrationUtils.jsm
@@ -1,22 +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/. */
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["ChromeMigrationUtils"];
+var EXPORTED_SYMBOLS = ["ChromeMigrationUtils"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.ChromeMigrationUtils = {
+var ChromeMigrationUtils = {
   _chromeUserDataPath: null,
 
   _extensionVersionDirectoryNames: {},
 
   // The cache for the locale strings.
   // For example, the data could be:
   // {
   //   "profile-id-1": {
--- a/browser/components/migration/ESEDBReader.jsm
+++ b/browser/components/migration/ESEDBReader.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ESEDBReader"]; /* exported ESEDBReader */
+var EXPORTED_SYMBOLS = ["ESEDBReader"]; /* exported ESEDBReader */
 
 ChromeUtils.import("resource://gre/modules/ctypes.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 XPCOMUtils.defineLazyGetter(this, "log", () => {
   let ConsoleAPI = ChromeUtils.import("resource://gre/modules/Console.jsm", {}).ConsoleAPI;
   let consoleOptions = {
     maxLogLevelPref: "browser.esedbreader.loglevel",
--- a/browser/components/migration/MSMigrationUtils.jsm
+++ b/browser/components/migration/MSMigrationUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["MSMigrationUtils"];
+var EXPORTED_SYMBOLS = ["MSMigrationUtils"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource:///modules/MigrationUtils.jsm");
 
 Cu.importGlobalProperties(["FileReader"]);
 
--- a/browser/components/migration/MigrationUtils.jsm
+++ b/browser/components/migration/MigrationUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["MigrationUtils", "MigratorPrototype"];
+var EXPORTED_SYMBOLS = ["MigrationUtils", "MigratorPrototype"];
 
 const TOPIC_WILL_IMPORT_BOOKMARKS = "initial-migration-will-import-default-bookmarks";
 const TOPIC_DID_IMPORT_BOOKMARKS = "initial-migration-did-import-default-bookmarks";
 const TOPIC_PLACES_DEFAULTS_FINISHED = "places-browser-init-complete";
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -79,17 +79,17 @@ function getMigrationBundle() {
  *    Namely: MosaicMigrator.prototype = Object.create(MigratorPrototype);
  * 3. Set classDescription, contractID and classID for your migrator, and set
  *    NSGetFactory appropriately.
  * 4. If the migrator supports multiple profiles, override the sourceProfiles
  *    Here we default for single-profile migrator.
  * 5. Implement getResources(aProfile) (see below).
  * 6. For startup-only migrators, override |startupOnlyMigrator|.
  */
-this.MigratorPrototype = {
+var MigratorPrototype = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIBrowserProfileMigrator]),
 
   /**
    * OVERRIDE IF AND ONLY IF the source supports multiple profiles.
    *
    * Returns array of profile objects from which data may be imported. The object
    * should have the following keys:
    *   id - a unique string identifier for the profile
@@ -433,17 +433,17 @@ this.MigratorPrototype = {
     } else {
       this._resourcesByProfile = { };
     }
     this._resourcesByProfile[profileKey] = await this.getResources(aProfile);
     return this._resourcesByProfile[profileKey];
   },
 };
 
-this.MigrationUtils = Object.freeze({
+var MigrationUtils = Object.freeze({
   resourceTypes: {
     SETTINGS:   Ci.nsIBrowserProfileMigrator.SETTINGS,
     COOKIES:    Ci.nsIBrowserProfileMigrator.COOKIES,
     HISTORY:    Ci.nsIBrowserProfileMigrator.HISTORY,
     FORMDATA:   Ci.nsIBrowserProfileMigrator.FORMDATA,
     PASSWORDS:  Ci.nsIBrowserProfileMigrator.PASSWORDS,
     BOOKMARKS:  Ci.nsIBrowserProfileMigrator.BOOKMARKS,
     OTHERDATA:  Ci.nsIBrowserProfileMigrator.OTHERDATA,
--- a/browser/components/newtab/NewTabPrefsProvider.jsm
+++ b/browser/components/newtab/NewTabPrefsProvider.jsm
@@ -1,11 +1,11 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["NewTabPrefsProvider"];
+var EXPORTED_SYMBOLS = ["NewTabPrefsProvider"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "EventEmitter", function() {
   const {EventEmitter} = ChromeUtils.import("resource://gre/modules/EventEmitter.jsm", {});
   return EventEmitter;
 });
--- a/browser/components/newtab/NewTabRemoteResources.jsm
+++ b/browser/components/newtab/NewTabRemoteResources.jsm
@@ -1,13 +1,13 @@
 /* exported NewTabRemoteResources */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["NewTabRemoteResources"];
+var EXPORTED_SYMBOLS = ["NewTabRemoteResources"];
 
 const NewTabRemoteResources = {
   MODE_CHANNEL_MAP: {
     production: {origin: "https://content.cdn.mozilla.net"},
     staging: {origin: "https://s3_proxy_tiles.stage.mozaws.net"},
     test: {origin: "https://example.com"},
     test2: {origin: "http://mochi.test:8888"},
     dev: {origin: "http://localhost:8888"}
--- a/browser/components/newtab/NewTabSearchProvider.jsm
+++ b/browser/components/newtab/NewTabSearchProvider.jsm
@@ -1,11 +1,11 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["NewTabSearchProvider"];
+var EXPORTED_SYMBOLS = ["NewTabSearchProvider"];
 
 const CURRENT_ENGINE = "browser-search-engine-modified";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "ContentSearch",
                                "resource:///modules/ContentSearch.jsm");
--- a/browser/components/newtab/NewTabWebChannel.jsm
+++ b/browser/components/newtab/NewTabWebChannel.jsm
@@ -1,11 +1,11 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["NewTabWebChannel"];
+var EXPORTED_SYMBOLS = ["NewTabWebChannel"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "NewTabPrefsProvider",
                                "resource:///modules/NewTabPrefsProvider.jsm");
 ChromeUtils.defineModuleGetter(this, "NewTabRemoteResources",
                                "resource:///modules/NewTabRemoteResources.jsm");
--- a/browser/components/places/PlacesUIUtils.jsm
+++ b/browser/components/places/PlacesUIUtils.jsm
@@ -1,14 +1,14 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PlacesUIUtils"];
+var EXPORTED_SYMBOLS = ["PlacesUIUtils"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
   PluralForm: "resource://gre/modules/PluralForm.jsm",
@@ -199,17 +199,17 @@ let InternalFaviconLoader = {
       this._cancelRequest(loadData, "it timed out");
       this._removeLoadDataFromWindowMap(win, loadData);
     }, FAVICON_REQUEST_TIMEOUT);
     let loadDataForWindow = gFaviconLoadDataMap.get(win);
     loadDataForWindow.push(loadData);
   },
 };
 
-this.PlacesUIUtils = {
+var PlacesUIUtils = {
   ORGANIZER_LEFTPANE_VERSION: 8,
   ORGANIZER_FOLDER_ANNO: "PlacesOrganizer/OrganizerFolder",
   ORGANIZER_QUERY_ANNO: "PlacesOrganizer/OrganizerQuery",
 
   LOAD_IN_SIDEBAR_ANNO: "bookmarkProperties/loadInSidebar",
   DESCRIPTION_ANNO: "bookmarkProperties/description",
 
   /**
--- a/browser/components/preferences/SiteDataManager.jsm
+++ b/browser/components/preferences/SiteDataManager.jsm
@@ -4,29 +4,29 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "OfflineAppCacheHelper",
                                "resource:///modules/offlineAppCache.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager",
                                    "@mozilla.org/serviceworkers/manager;1",
                                    "nsIServiceWorkerManager");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SiteDataManager"
 ];
 
 XPCOMUtils.defineLazyGetter(this, "gStringBundle", function() {
   return Services.strings.createBundle("chrome://browser/locale/siteData.properties");
 });
 
 XPCOMUtils.defineLazyGetter(this, "gBrandBundle", function() {
   return Services.strings.createBundle("chrome://branding/locale/brand.properties");
 });
 
-this.SiteDataManager = {
+var SiteDataManager = {
 
   _qms: Services.qms,
 
   _appCache: Cc["@mozilla.org/network/application-cache-service;1"].getService(Ci.nsIApplicationCacheService),
 
   // A Map of sites and their disk usage according to Quota Manager and appcache
   // Key is host (group sites based on host across scheme, port, origin atttributes).
   // Value is one object holding:
--- a/browser/components/sessionstore/ContentRestore.jsm
+++ b/browser/components/sessionstore/ContentRestore.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ContentRestore"];
+var EXPORTED_SYMBOLS = ["ContentRestore"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "DocShellCapabilities",
   "resource:///modules/sessionstore/DocShellCapabilities.jsm");
 ChromeUtils.defineModuleGetter(this, "FormData",
   "resource://gre/modules/FormData.jsm");
--- a/browser/components/sessionstore/DocShellCapabilities.jsm
+++ b/browser/components/sessionstore/DocShellCapabilities.jsm
@@ -1,20 +1,20 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["DocShellCapabilities"];
+var EXPORTED_SYMBOLS = ["DocShellCapabilities"];
 
 /**
  * The external API exported by this module.
  */
-this.DocShellCapabilities = Object.freeze({
+var DocShellCapabilities = Object.freeze({
   collect(docShell) {
     return DocShellCapabilitiesInternal.collect(docShell);
   },
 
   restore(docShell, disallow) {
     return DocShellCapabilitiesInternal.restore(docShell, disallow);
   },
 });
--- a/browser/components/sessionstore/GlobalState.jsm
+++ b/browser/components/sessionstore/GlobalState.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GlobalState"];
+var EXPORTED_SYMBOLS = ["GlobalState"];
 
 const EXPORTED_METHODS = ["getState", "clear", "get", "set", "delete", "setFromState"];
 /**
  * Module that contains global session data.
  */
 function GlobalState() {
   let internal = new GlobalStateInternal();
   let external = {};
--- a/browser/components/sessionstore/PrivacyFilter.jsm
+++ b/browser/components/sessionstore/PrivacyFilter.jsm
@@ -1,26 +1,26 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PrivacyFilter"];
+var EXPORTED_SYMBOLS = ["PrivacyFilter"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "PrivacyLevel",
   "resource://gre/modules/sessionstore/PrivacyLevel.jsm");
 
 /**
  * A module that provides methods to filter various kinds of data collected
  * from a tab by the current privacy level as set by the user.
  */
-this.PrivacyFilter = Object.freeze({
+var PrivacyFilter = Object.freeze({
   /**
    * Filters the given (serialized) session storage |data| according to the
    * current privacy level and returns a new object containing only data that
    * we're allowed to store.
    *
    * @param data The session storage data as collected from a tab.
    * @return object
    */
--- a/browser/components/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm
+++ b/browser/components/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm
@@ -1,28 +1,28 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["RecentlyClosedTabsAndWindowsMenuUtils"];
+var EXPORTED_SYMBOLS = ["RecentlyClosedTabsAndWindowsMenuUtils"];
 
 const kNSXUL = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PluralForm",
                                "resource://gre/modules/PluralForm.jsm");
 ChromeUtils.defineModuleGetter(this, "SessionStore",
                                "resource:///modules/sessionstore/SessionStore.jsm");
 
 var navigatorBundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
 
-this.RecentlyClosedTabsAndWindowsMenuUtils = {
+var RecentlyClosedTabsAndWindowsMenuUtils = {
 
   /**
   * Builds up a document fragment of UI items for the recently closed tabs.
   * @param   aWindow
   *          The window that the tabs were closed in.
   * @param   aTagName
   *          The tag name that will be used when creating the UI items.
   * @param   aPrefixRestoreAll (defaults to false)
--- a/browser/components/sessionstore/RunState.jsm
+++ b/browser/components/sessionstore/RunState.jsm
@@ -1,32 +1,32 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["RunState"];
+var EXPORTED_SYMBOLS = ["RunState"];
 
 const STATE_STOPPED = 0;
 const STATE_RUNNING = 1;
 const STATE_QUITTING = 2;
 const STATE_CLOSING = 3;
 const STATE_CLOSED = 4;
 
 // We're initially stopped.
 var state = STATE_STOPPED;
 
 /**
  * This module keeps track of SessionStore's current run state. We will
  * always start out at STATE_STOPPED. After the session was read from disk and
  * the initial browser window has loaded we switch to STATE_RUNNING. On the
  * first notice that a browser shutdown was granted we switch to STATE_QUITTING.
  */
-this.RunState = Object.freeze({
+var RunState = Object.freeze({
   // If we're stopped then SessionStore hasn't been initialized yet. As soon
   // as the session is read from disk and the initial browser window has loaded
   // the run state will change to STATE_RUNNING.
   get isStopped() {
     return state == STATE_STOPPED;
   },
 
   // STATE_RUNNING is our default mode of operation that we'll spend most of
--- a/browser/components/sessionstore/SessionCookies.jsm
+++ b/browser/components/sessionstore/SessionCookies.jsm
@@ -1,30 +1,30 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SessionCookies"];
+var EXPORTED_SYMBOLS = ["SessionCookies"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "Utils",
   "resource://gre/modules/sessionstore/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "PrivacyLevel",
   "resource://gre/modules/sessionstore/PrivacyLevel.jsm");
 
 const MAX_EXPIRY = Number.MAX_SAFE_INTEGER;
 
 /**
  * The external API implemented by the SessionCookies module.
  */
-this.SessionCookies = Object.freeze({
+var SessionCookies = Object.freeze({
   collect() {
     return SessionCookiesInternal.collect();
   },
 
   restore(cookies) {
     SessionCookiesInternal.restore(cookies);
   }
 });
--- a/browser/components/sessionstore/SessionFile.jsm
+++ b/browser/components/sessionstore/SessionFile.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SessionFile"];
+var EXPORTED_SYMBOLS = ["SessionFile"];
 
 /**
  * Implementation of all the disk I/O required by the session store.
  * This is a private API, meant to be used only by the session store.
  * It will change. Do not use it for any other purpose.
  *
  * Note that this module implicitly depends on one of two things:
  * 1. either the asynchronous file I/O system enqueues its requests
@@ -49,17 +49,17 @@ const PREF_UPGRADE_BACKUP = "browser.ses
 const PREF_MAX_UPGRADE_BACKUPS = "browser.sessionstore.upgradeBackup.maxUpgradeBackups";
 
 const PREF_MAX_SERIALIZE_BACK = "browser.sessionstore.max_serialize_back";
 const PREF_MAX_SERIALIZE_FWD = "browser.sessionstore.max_serialize_forward";
 
 XPCOMUtils.defineLazyPreferenceGetter(this, "kMaxWriteFailures",
   "browser.sessionstore.max_write_failures", 5);
 
-this.SessionFile = {
+var SessionFile = {
   /**
    * Read the contents of the session file, asynchronously.
    */
   read() {
     return SessionFileInternal.read();
   },
   /**
    * Write the contents of the session file, asynchronously.
--- a/browser/components/sessionstore/SessionMigration.jsm
+++ b/browser/components/sessionstore/SessionMigration.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SessionMigration"];
+var EXPORTED_SYMBOLS = ["SessionMigration"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "Utils",
   "resource://gre/modules/sessionstore/Utils.jsm");
 
 // An encoder to UTF-8.
--- a/browser/components/sessionstore/SessionSaver.jsm
+++ b/browser/components/sessionstore/SessionSaver.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SessionSaver"];
+var EXPORTED_SYMBOLS = ["SessionSaver"];
 
 ChromeUtils.import("resource://gre/modules/Timer.jsm", this);
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/TelemetryStopwatch.jsm", this);
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   AppConstants: "resource://gre/modules/AppConstants.jsm",
@@ -59,17 +59,17 @@ function stopWatch(method) {
 
 var stopWatchStart = stopWatch("start");
 var stopWatchCancel = stopWatch("cancel");
 var stopWatchFinish = stopWatch("finish");
 
 /**
  * The external API implemented by the SessionSaver module.
  */
-this.SessionSaver = Object.freeze({
+var SessionSaver = Object.freeze({
   /**
    * Immediately saves the current session to disk.
    */
   run() {
     return SessionSaverInternal.run();
   },
 
   /**
--- a/browser/components/sessionstore/SessionStorage.jsm
+++ b/browser/components/sessionstore/SessionStorage.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SessionStorage"];
+var EXPORTED_SYMBOLS = ["SessionStorage"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "console",
   "resource://gre/modules/Console.jsm");
 
 const ssu = Cc["@mozilla.org/browser/sessionstore/utils;1"]
@@ -20,17 +20,17 @@ const DOM_STORAGE_LIMIT_PREF = "browser.
 
 // Returns the principal for a given |frame| contained in a given |docShell|.
 function getPrincipalForFrame(docShell, frame) {
   let ssm = Services.scriptSecurityManager;
   let uri = frame.document.documentURIObject;
   return ssm.getDocShellCodebasePrincipal(uri, docShell);
 }
 
-this.SessionStorage = Object.freeze({
+var SessionStorage = Object.freeze({
   /**
    * Updates all sessionStorage "super cookies"
    * @param content
    *        A tab's global, i.e. the root frame we want to collect for.
    * @return Returns a nested object that will have hosts as keys and per-origin
    *         session storage data as strings. For example:
    *         {"https://example.com^userContextId=1": {"key": "value", "my_number": "123"}}
    */
--- a/browser/components/sessionstore/SessionStore.jsm
+++ b/browser/components/sessionstore/SessionStore.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SessionStore"];
+var EXPORTED_SYMBOLS = ["SessionStore"];
 
 // Current version of the format used by Session Restore.
 const FORMAT_VERSION = 1;
 
 const TAB_STATE_NEEDS_RESTORE = 1;
 const TAB_STATE_RESTORING = 2;
 const TAB_STATE_WILL_RESTORE = 3;
 
@@ -200,17 +200,17 @@ function debug(aMsg) {
 /**
  * A global value to tell that fingerprinting resistance is enabled or not.
  * If it's enabled, the session restore won't restore the window's size and
  * size mode.
  * This value is controlled by preference privacy.resistFingerprinting.
  */
 var gResistFingerprintingEnabled = false;
 
-this.SessionStore = {
+var SessionStore = {
   get promiseInitialized() {
     return SessionStoreInternal.promiseInitialized;
   },
 
   get promiseAllWindowsRestored() {
     return SessionStoreInternal.promiseAllWindowsRestored;
   },
 
--- a/browser/components/sessionstore/SessionWorker.jsm
+++ b/browser/components/sessionstore/SessionWorker.jsm
@@ -6,15 +6,15 @@
 
 /**
  * Interface to a dedicated thread handling I/O
  */
 
 ChromeUtils.import("resource://gre/modules/PromiseWorker.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 
-this.EXPORTED_SYMBOLS = ["SessionWorker"];
+var EXPORTED_SYMBOLS = ["SessionWorker"];
 
-this.SessionWorker = new BasePromiseWorker("resource:///modules/sessionstore/SessionWorker.js");
+var SessionWorker = new BasePromiseWorker("resource:///modules/sessionstore/SessionWorker.js");
 // As the Session Worker performs I/O, we can receive instances of
 // OS.File.Error, so we need to install a decoder.
 this.SessionWorker.ExceptionHandlers["OS.File.Error"] = OS.File.Error.fromMsg;
 
--- a/browser/components/sessionstore/StartupPerformance.jsm
+++ b/browser/components/sessionstore/StartupPerformance.jsm
@@ -1,32 +1,32 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["StartupPerformance"];
+var EXPORTED_SYMBOLS = ["StartupPerformance"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "console",
   "resource://gre/modules/Console.jsm");
 ChromeUtils.defineModuleGetter(this, "setTimeout",
   "resource://gre/modules/Timer.jsm");
 ChromeUtils.defineModuleGetter(this, "clearTimeout",
   "resource://gre/modules/Timer.jsm");
 
 const COLLECT_RESULTS_AFTER_MS = 10000;
 
 const OBSERVED_TOPICS = ["sessionstore-restoring-on-startup", "sessionstore-initiating-manual-restore"];
 
-this.StartupPerformance = {
+var StartupPerformance = {
   /**
    * Once we have finished restoring initial tabs, we broadcast on this topic.
    */
   RESTORED_TOPIC: "sessionstore-finished-restoring-initial-tabs",
 
   // Instant at which we have started restoration (notification "sessionstore-restoring-on-startup")
   _startTimeStamp: null,
 
--- a/browser/components/sessionstore/TabAttributes.jsm
+++ b/browser/components/sessionstore/TabAttributes.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TabAttributes"];
+var EXPORTED_SYMBOLS = ["TabAttributes"];
 
 // We never want to directly read or write these attributes.
 // 'image' should not be accessed directly but handled by using the
 //         gBrowser.getIcon()/setIcon() methods.
 // 'muted' should not be accessed directly but handled by using the
 //         tab.linkedBrowser.audioMuted/toggleMuteAudio methods.
 // 'pending' is used internal by sessionstore and managed accordingly.
 // 'iconloadingprincipal' is same as 'image' that it should be handled by
@@ -18,17 +18,17 @@ this.EXPORTED_SYMBOLS = ["TabAttributes"
 //                       tab's toggleMuteAudio() or linkedBrowser's methods
 //                       activeMediaBlockStarted()/activeMediaBlockBlockStopped().
 const ATTRIBUTES_TO_SKIP = new Set(["image", "muted", "pending", "iconloadingprincipal",
                                     "skipbackgroundnotify", "activemedia-blocked"]);
 
 // A set of tab attributes to persist. We will read a given list of tab
 // attributes when collecting tab data and will re-set those attributes when
 // the given tab data is restored to a new tab.
-this.TabAttributes = Object.freeze({
+var TabAttributes = Object.freeze({
   persist(name) {
     return TabAttributesInternal.persist(name);
   },
 
   get(tab) {
     return TabAttributesInternal.get(tab);
   },
 
--- a/browser/components/sessionstore/TabState.jsm
+++ b/browser/components/sessionstore/TabState.jsm
@@ -1,31 +1,31 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TabState"];
+var EXPORTED_SYMBOLS = ["TabState"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "PrivacyFilter",
   "resource:///modules/sessionstore/PrivacyFilter.jsm");
 ChromeUtils.defineModuleGetter(this, "TabStateCache",
   "resource:///modules/sessionstore/TabStateCache.jsm");
 ChromeUtils.defineModuleGetter(this, "TabAttributes",
   "resource:///modules/sessionstore/TabAttributes.jsm");
 ChromeUtils.defineModuleGetter(this, "Utils",
   "resource://gre/modules/sessionstore/Utils.jsm");
 
 /**
  * Module that contains tab state collection methods.
  */
-this.TabState = Object.freeze({
+var TabState = Object.freeze({
   update(browser, data) {
     TabStateInternal.update(browser, data);
   },
 
   collect(tab) {
     return TabStateInternal.collect(tab);
   },
 
--- a/browser/components/sessionstore/TabStateCache.jsm
+++ b/browser/components/sessionstore/TabStateCache.jsm
@@ -1,27 +1,27 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TabStateCache"];
+var EXPORTED_SYMBOLS = ["TabStateCache"];
 
 /**
  * A cache for tabs data.
  *
  * This cache implements a weak map from tabs (as XUL elements)
  * to tab data (as objects).
  *
  * Note that we should never cache private data, as:
  * - that data is used very seldom by SessionStore;
  * - caching private data in addition to public data is memory consuming.
  */
-this.TabStateCache = Object.freeze({
+var TabStateCache = Object.freeze({
   /**
    * Retrieves cached data for a given |tab| or associated |browser|.
    *
    * @param browserOrTab (xul:tab or xul:browser)
    *        The tab or browser to retrieve cached data for.
    * @return (object)
    *         The cached data stored for the given |tab|
    *         or associated |browser|.
--- a/browser/components/sessionstore/TabStateFlusher.jsm
+++ b/browser/components/sessionstore/TabStateFlusher.jsm
@@ -1,24 +1,24 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TabStateFlusher"];
+var EXPORTED_SYMBOLS = ["TabStateFlusher"];
 
 /**
  * A module that enables async flushes. Updates from frame scripts are
  * throttled to be sent only once per second. If an action wants a tab's latest
  * state without waiting for a second then it can request an async flush and
  * wait until the frame scripts reported back. At this point the parent has the
  * latest data and the action can continue.
  */
-this.TabStateFlusher = Object.freeze({
+var TabStateFlusher = Object.freeze({
   /**
    * Requests an async flush for the given browser. Returns a promise that will
    * resolve when we heard back from the content process and the parent has
    * all the latest data.
    */
   flush(browser) {
     return TabStateFlusherInternal.flush(browser);
   },
--- a/browser/components/shell/ShellService.jsm
+++ b/browser/components/shell/ShellService.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ShellService"];
+var EXPORTED_SYMBOLS = ["ShellService"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "WindowsRegistry",
                                "resource://gre/modules/WindowsRegistry.jsm");
 
 /**
@@ -93,17 +93,17 @@ let ShellServiceInternal = {
 };
 
 XPCOMUtils.defineLazyServiceGetter(ShellServiceInternal, "shellService",
   "@mozilla.org/browser/shell-service;1", Ci.nsIShellService);
 
 /**
  * The external API exported by this module.
  */
-this.ShellService = new Proxy(ShellServiceInternal, {
+var ShellService = new Proxy(ShellServiceInternal, {
   get(target, name) {
     if (name in target) {
       return target[name];
     }
     if (target.shellService) {
       return target.shellService[name];
     }
     Services.console.logStringMessage(`${name} not found in ShellService: ${target.shellService}`);
--- a/browser/components/syncedtabs/EventEmitter.jsm
+++ b/browser/components/syncedtabs/EventEmitter.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "EventEmitter"
 ];
 
 // Simple event emitter abstraction for storage objects to use.
 function EventEmitter() {
   this._events = new Map();
 }
 
--- a/browser/components/syncedtabs/SyncedTabsDeckComponent.js
+++ b/browser/components/syncedtabs/SyncedTabsDeckComponent.js
@@ -16,17 +16,17 @@ let { getChromeWindow } = ChromeUtils.im
 
 XPCOMUtils.defineLazyGetter(this, "FxAccountsCommon", function() {
   return ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js", {});
 });
 
 let log = ChromeUtils.import("resource://gre/modules/Log.jsm", {})
             .Log.repository.getLogger("Sync.RemoteTabs");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SyncedTabsDeckComponent"
 ];
 
 /* SyncedTabsDeckComponent
  * This component instantiates views and storage objects as well as defines
  * behaviors that will be passed down to the views. This helps keep the views
  * isolated and easier to test.
  */
--- a/browser/components/syncedtabs/SyncedTabsDeckStore.js
+++ b/browser/components/syncedtabs/SyncedTabsDeckStore.js
@@ -1,17 +1,17 @@
 /* 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";
 
 let { EventEmitter } = ChromeUtils.import("resource:///modules/syncedtabs/EventEmitter.jsm", {});
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SyncedTabsDeckStore"
 ];
 
 /**
  * SyncedTabsDeckStore
  *
  * This store keeps track of the deck view state, including the panels and which
  * one is selected. The view listens for change events on the store, which are
--- a/browser/components/syncedtabs/SyncedTabsDeckView.js
+++ b/browser/components/syncedtabs/SyncedTabsDeckView.js
@@ -2,17 +2,17 @@
  * 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";
 
 let log = ChromeUtils.import("resource://gre/modules/Log.jsm", {})
             .Log.repository.getLogger("Sync.RemoteTabs");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SyncedTabsDeckView"
 ];
 
 /**
  * SyncedTabsDeckView
  *
  * Instances of SyncedTabsDeckView render DOM nodes from a given state.
  * No state is kept internaly and the DOM will completely
--- a/browser/components/syncedtabs/SyncedTabsListStore.js
+++ b/browser/components/syncedtabs/SyncedTabsListStore.js
@@ -1,17 +1,17 @@
 /* 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";
 
 let { EventEmitter } = ChromeUtils.import("resource:///modules/syncedtabs/EventEmitter.jsm", {});
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SyncedTabsListStore"
 ];
 
 /**
  * SyncedTabsListStore
  *
  * Instances of this store encapsulate all of the state associated with a synced tabs list view.
  * The state includes the clients, their tabs, the row that is currently selected,
--- a/browser/components/syncedtabs/TabListComponent.js
+++ b/browser/components/syncedtabs/TabListComponent.js
@@ -11,17 +11,17 @@ let log = ChromeUtils.import("resource:/
 
 ChromeUtils.defineModuleGetter(this, "BrowserUITelemetry",
   "resource:///modules/BrowserUITelemetry.jsm");
 ChromeUtils.defineModuleGetter(this, "PlacesUIUtils",
   "resource:///modules/PlacesUIUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TabListComponent"
 ];
 
 /**
  * TabListComponent
  *
  * The purpose of this component is to compose the view, state, and actions.
  * It defines high level actions that act on the state and passes them to the
--- a/browser/components/syncedtabs/TabListView.js
+++ b/browser/components/syncedtabs/TabListView.js
@@ -6,17 +6,17 @@
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 let { getChromeWindow } = ChromeUtils.import("resource:///modules/syncedtabs/util.js", {});
 
 let log = ChromeUtils.import("resource://gre/modules/Log.jsm", {})
             .Log.repository.getLogger("Sync.RemoteTabs");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TabListView"
 ];
 
 function getContextMenu(window) {
   return getChromeWindow(window).document.getElementById("SyncedTabsSidebarContext");
 }
 
 function getTabsFilterContextMenu(window) {
--- a/browser/components/syncedtabs/util.js
+++ b/browser/components/syncedtabs/util.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "getChromeWindow"
 ];
 
 // Get the chrome (ie, browser) window hosting this content.
 function getChromeWindow(window) {
   return window
          .QueryInterface(Ci.nsIInterfaceRequestor)
          .getInterface(Ci.nsIWebNavigation)
--- a/browser/components/translation/BingTranslator.jsm
+++ b/browser/components/translation/BingTranslator.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "BingTranslator" ];
+var EXPORTED_SYMBOLS = [ "BingTranslator" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://gre/modules/Http.jsm");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
@@ -34,17 +34,17 @@ const MAX_REQUESTS = 15;
  * @param translationDocument  The TranslationDocument object that represents
  *                             the webpage to be translated
  * @param sourceLanguage       The source language of the document
  * @param targetLanguage       The target language for the translation
  *
  * @returns {Promise}          A promise that will resolve when the translation
  *                             task is finished.
  */
-this.BingTranslator = function(translationDocument, sourceLanguage, targetLanguage) {
+var BingTranslator = function(translationDocument, sourceLanguage, targetLanguage) {
   this.translationDocument = translationDocument;
   this.sourceLanguage = sourceLanguage;
   this.targetLanguage = targetLanguage;
   this._pendingRequests = 0;
   this._partialSuccess = false;
   this._serviceUnavailable = false;
   this._translatedCharacterCount = 0;
 };
--- a/browser/components/translation/LanguageDetector.jsm
+++ b/browser/components/translation/LanguageDetector.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LanguageDetector"];
+var EXPORTED_SYMBOLS = ["LanguageDetector"];
 
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 // Since Emscripten can handle heap growth, but not heap shrinkage, we
 // need to refresh the worker after we've processed a particularly large
 // string in order to prevent unnecessary resident memory growth.
 //
@@ -90,17 +90,17 @@ var workerManager = {
 
       this._worker = null;
       this._workerReadyPromise = null;
       this._idleTimeout = null;
     }
   },
 };
 
-this.LanguageDetector = {
+var LanguageDetector = {
   /**
    * Detect the language of a given string.
    *
    * The argument may be either a string containing the text to analyze,
    * or an object with the following properties:
    *
    *  - 'text' The text to analyze.
    *
--- a/browser/components/translation/Translation.jsm
+++ b/browser/components/translation/Translation.jsm
@@ -1,25 +1,25 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Translation",
   "TranslationTelemetry",
 ];
 
 const TRANSLATION_PREF_SHOWUI = "browser.translation.ui.show";
 const TRANSLATION_PREF_DETECT_LANG = "browser.translation.detectLanguage";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.Translation = {
+var Translation = {
   STATE_OFFER: 0,
   STATE_TRANSLATING: 1,
   STATE_TRANSLATED: 2,
   STATE_ERROR: 3,
   STATE_UNAVAILABLE: 4,
 
   serviceUnavailable: false,
 
@@ -285,17 +285,17 @@ TranslationUI.prototype = {
 };
 
 /**
  * Uses telemetry histograms for collecting statistics on the usage of the
  * translation component.
  *
  * NOTE: Metrics are only recorded if the user enabled the telemetry option.
  */
-this.TranslationTelemetry = {
+var TranslationTelemetry = {
 
   init() {
     // Constructing histograms.
     const plain = (id) => Services.telemetry.getHistogramById(id);
     const keyed = (id) => Services.telemetry.getKeyedHistogramById(id);
     this.HISTOGRAMS = {
       OPPORTUNITIES: () => plain("TRANSLATION_OPPORTUNITIES"),
       OPPORTUNITIES_BY_LANG: () => keyed("TRANSLATION_OPPORTUNITIES_BY_LANGUAGE"),
--- a/browser/components/translation/TranslationContentHandler.jsm
+++ b/browser/components/translation/TranslationContentHandler.jsm
@@ -1,26 +1,26 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "TranslationContentHandler" ];
+var EXPORTED_SYMBOLS = [ "TranslationContentHandler" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "LanguageDetector",
   "resource:///modules/translation/LanguageDetector.jsm");
 
 const STATE_OFFER = 0;
 const STATE_TRANSLATED = 2;
 const STATE_ERROR = 3;
 
-this.TranslationContentHandler = function(global, docShell) {
+var TranslationContentHandler = function(global, docShell) {
   let webProgress = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
                             .getInterface(Ci.nsIWebProgress);
   webProgress.addProgressListener(this, Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
 
   global.addEventListener("pageshow", this);
 
   global.addMessageListener("Translation:TranslateDocument", this);
   global.addMessageListener("Translation:ShowTranslation", this);
--- a/browser/components/translation/TranslationDocument.jsm
+++ b/browser/components/translation/TranslationDocument.jsm
@@ -1,30 +1,30 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "TranslationDocument" ];
+var EXPORTED_SYMBOLS = [ "TranslationDocument" ];
 
 const TEXT_NODE = Ci.nsIDOMNode.TEXT_NODE;
 
 ChromeUtils.import("resource://services-common/async.js");
 
 /**
  * This class represents a document that is being translated,
  * and it is responsible for parsing the document,
  * generating the data structures translation (the list of
  * translation items and roots), and managing the original
  * and translated texts on the translation items.
  *
  * @param document  The document to be translated
  */
-this.TranslationDocument = function(document) {
+var TranslationDocument = function(document) {
   this.itemsMap = new Map();
   this.roots = [];
   this._init(document);
 };
 
 this.TranslationDocument.prototype = {
   translatedFrom: "",
   translatedTo: "",
--- a/browser/components/translation/YandexTranslator.jsm
+++ b/browser/components/translation/YandexTranslator.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "YandexTranslator" ];
+var EXPORTED_SYMBOLS = [ "YandexTranslator" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://gre/modules/Http.jsm");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
@@ -52,17 +52,17 @@ const YANDEX_PERMANENT_ERRORS = [
  * @param translationDocument  The TranslationDocument object that represents
  *                             the webpage to be translated
  * @param sourceLanguage       The source language of the document
  * @param targetLanguage       The target language for the translation
  *
  * @returns {Promise}          A promise that will resolve when the translation
  *                             task is finished.
  */
-this.YandexTranslator = function(translationDocument, sourceLanguage, targetLanguage) {
+var YandexTranslator = function(translationDocument, sourceLanguage, targetLanguage) {
   this.translationDocument = translationDocument;
   this.sourceLanguage = sourceLanguage;
   this.targetLanguage = targetLanguage;
   this._pendingRequests = 0;
   this._partialSuccess = false;
   this._serviceUnavailable = false;
   this._translatedCharacterCount = 0;
 };
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -1,15 +1,15 @@
 // 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";
 
-this.EXPORTED_SYMBOLS = ["UITour"];
+var EXPORTED_SYMBOLS = ["UITour"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/TelemetryController.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 Cu.importGlobalProperties(["URL"]);
@@ -74,17 +74,17 @@ XPCOMUtils.defineLazyGetter(this, "log",
   let ConsoleAPI = ChromeUtils.import("resource://gre/modules/Console.jsm", {}).ConsoleAPI;
   let consoleOptions = {
     maxLogLevelPref: PREF_LOG_LEVEL,
     prefix: "UITour",
   };
   return new ConsoleAPI(consoleOptions);
 });
 
-this.UITour = {
+var UITour = {
   url: null,
   seenPageIDs: null,
   // This map is not persisted and is used for
   // building the content source of a potential tour.
   pageIDsForSession: new Map(),
   pageIDSourceBrowsers: new WeakMap(),
   /* Map from browser chrome windows to a Set of <browser>s in which a tour is open (both visible and hidden) */
   tourBrowsersByWindow: new WeakMap(),
--- a/browser/experiments/Experiments.jsm
+++ b/browser/experiments/Experiments.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Experiments",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/AsyncShutdown.jsm");
--- a/browser/extensions/activity-stream/common/Actions.jsm
+++ b/browser/extensions/activity-stream/common/Actions.jsm
@@ -1,18 +1,18 @@
 /* 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";
 
-this.MAIN_MESSAGE_TYPE = "ActivityStream:Main";
-this.CONTENT_MESSAGE_TYPE = "ActivityStream:Content";
-this.PRELOAD_MESSAGE_TYPE = "ActivityStream:PreloadedBrowser";
-this.UI_CODE = 1;
-this.BACKGROUND_PROCESS = 2;
+var MAIN_MESSAGE_TYPE = "ActivityStream:Main";
+var CONTENT_MESSAGE_TYPE = "ActivityStream:Content";
+var PRELOAD_MESSAGE_TYPE = "ActivityStream:PreloadedBrowser";
+var UI_CODE = 1;
+var BACKGROUND_PROCESS = 2;
 
 /**
  * globalImportContext - Are we in UI code (i.e. react, a dom) or some kind of background process?
  *                       Use this in action creators if you need different logic
  *                       for ui/background processes.
  */
 const globalImportContext = typeof Window === "undefined" ? BACKGROUND_PROCESS : UI_CODE;
 // Export for tests
@@ -269,33 +269,33 @@ function WebExtEvent(type, data, importC
     throw new Error("WebExtEvent actions should include a property \"source\", the id of the webextension that should receive the event.");
   }
   const action = {type, data};
   return importContext === UI_CODE ? AlsoToMain(action) : action;
 }
 
 this.actionTypes = actionTypes;
 
-this.actionCreators = {
+var actionCreators = {
   BroadcastToContent,
   UserEvent,
   UndesiredEvent,
   PerfEvent,
   ImpressionStats,
   AlsoToOneContent,
   OnlyToOneContent,
   AlsoToMain,
   OnlyToMain,
   AlsoToPreloaded,
   SetPref,
   WebExtEvent
 };
 
 // These are helpers to test for certain kinds of actions
-this.actionUtils = {
+var actionUtils = {
   isSendToMain(action) {
     if (!action.meta) {
       return false;
     }
     return action.meta.to === MAIN_MESSAGE_TYPE && action.meta.from === CONTENT_MESSAGE_TYPE;
   },
   isBroadcastToContent(action) {
     if (!action.meta) {
@@ -330,17 +330,17 @@ this.actionUtils = {
       action.meta.to === CONTENT_MESSAGE_TYPE;
   },
   getPortIdOfSender(action) {
     return (action.meta && action.meta.fromTarget) || null;
   },
   _RouteMessage
 };
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "actionTypes",
   "actionCreators",
   "actionUtils",
   "globalImportContext",
   "UI_CODE",
   "BACKGROUND_PROCESS",
   "MAIN_MESSAGE_TYPE",
   "CONTENT_MESSAGE_TYPE",
--- a/browser/extensions/activity-stream/common/Dedupe.jsm
+++ b/browser/extensions/activity-stream/common/Dedupe.jsm
@@ -1,9 +1,9 @@
-this.Dedupe = class Dedupe {
+var Dedupe = class Dedupe {
   constructor(createKey) {
     this.createKey = createKey || this.defaultCreateKey;
   }
 
   defaultCreateKey(item) {
     return item;
   }
 
@@ -26,9 +26,9 @@ this.Dedupe = class Dedupe {
       }
       result.push(valueMap);
       valueMap.forEach((value, key) => globalKeys.add(key));
     }
     return result.map(m => Array.from(m.values()));
   }
 };
 
-this.EXPORTED_SYMBOLS = ["Dedupe"];
+var EXPORTED_SYMBOLS = ["Dedupe"];
--- a/browser/extensions/activity-stream/common/PerfService.jsm
+++ b/browser/extensions/activity-stream/common/PerfService.jsm
@@ -21,25 +21,25 @@ if (typeof Services !== "undefined") {
   // This is a dummy object so this file doesn't crash in the node prerendering
   // task.
   usablePerfObj = {
     now() {},
     mark() {}
   };
 }
 
-this._PerfService = function _PerfService(options) {
+function _PerfService(options) {
   // For testing, so that we can use a fake Window.performance object with
   // known state.
   if (options && options.performanceObj) {
     this._perf = options.performanceObj;
   } else {
     this._perf = usablePerfObj;
   }
-};
+}
 
 _PerfService.prototype = {
   /**
    * Calls the underlying mark() method on the appropriate Window.performance
    * object to add a mark with the given name to the appropriate performance
    * timeline.
    *
    * @param  {String} name  the name to give the current mark
@@ -116,10 +116,10 @@ this._PerfService = function _PerfServic
       throw new Error(`No marks with the name ${name}`);
     }
 
     let mostRecentEntry = entries[entries.length - 1];
     return this._perf.timeOrigin + mostRecentEntry.startTime;
   }
 };
 
-this.perfService = new _PerfService();
-this.EXPORTED_SYMBOLS = ["_PerfService", "perfService"];
+var perfService = new _PerfService();
+var EXPORTED_SYMBOLS = ["_PerfService", "perfService"];
--- a/browser/extensions/activity-stream/common/PrerenderData.jsm
+++ b/browser/extensions/activity-stream/common/PrerenderData.jsm
@@ -41,17 +41,17 @@ class _PrerenderData {
       } else if (getPref(prefs) !== this.initialPrefs[prefs]) {
         return false;
       }
     }
     return true;
   }
 }
 
-this.PrerenderData = new _PrerenderData({
+var PrerenderData = new _PrerenderData({
   initialPrefs: {
     "migrationExpired": true,
     "showTopSites": true,
     "showSearch": true,
     "topSitesRows": 1,
     "collapseTopSites": false,
     "section.highlights.collapsed": false,
     "section.topstories.collapsed": false,
@@ -89,9 +89,9 @@ this.PrerenderData = new _PrerenderData(
       icon: "highlights",
       order: 2,
       title: {id: "header_highlights"}
     }
   ]
 });
 
 this._PrerenderData = _PrerenderData;
-this.EXPORTED_SYMBOLS = ["PrerenderData", "_PrerenderData"];
+var EXPORTED_SYMBOLS = ["PrerenderData", "_PrerenderData"];
--- a/browser/extensions/activity-stream/common/Reducers.jsm
+++ b/browser/extensions/activity-stream/common/Reducers.jsm
@@ -317,12 +317,11 @@ function PreferencesPane(prevState = INI
       return prevState;
   }
 }
 
 this.INITIAL_STATE = INITIAL_STATE;
 this.TOP_SITES_DEFAULT_ROWS = TOP_SITES_DEFAULT_ROWS;
 this.TOP_SITES_MAX_SITES_PER_ROW = TOP_SITES_MAX_SITES_PER_ROW;
 
-this.reducers = {TopSites, App, Snippets, Prefs, Dialog, Sections, PreferencesPane};
-this.insertPinned = insertPinned;
+var reducers = {TopSites, App, Snippets, Prefs, Dialog, Sections, PreferencesPane};
 
-this.EXPORTED_SYMBOLS = ["reducers", "INITIAL_STATE", "insertPinned", "TOP_SITES_DEFAULT_ROWS", "TOP_SITES_MAX_SITES_PER_ROW"];
+var EXPORTED_SYMBOLS = ["reducers", "INITIAL_STATE", "insertPinned", "TOP_SITES_DEFAULT_ROWS", "TOP_SITES_MAX_SITES_PER_ROW"];
--- a/browser/extensions/activity-stream/lib/ActivityStream.jsm
+++ b/browser/extensions/activity-stream/lib/ActivityStream.jsm
@@ -226,17 +226,17 @@ const FEEDS_DATA = [
 
 const FEEDS_CONFIG = new Map();
 for (const config of FEEDS_DATA) {
   const pref = `feeds.${config.name}`;
   FEEDS_CONFIG.set(pref, config.factory);
   PREFS_CONFIG.set(pref, config);
 }
 
-this.ActivityStream = class ActivityStream {
+var ActivityStream = class ActivityStream {
   /**
    * constructor - Initializes an instance of ActivityStream
    *
    * @param  {object} options Options for the ActivityStream instance
    * @param  {string} options.id Add-on ID. e.g. "activity-stream@mozilla.org".
    * @param  {string} options.version Version of the add-on. e.g. "0.1.0"
    * @param  {string} options.newTabURL URL of New Tab page on which A.S. is displayed. e.g. "about:newtab"
    */
@@ -331,9 +331,9 @@ this.ActivityStream = class ActivityStre
           this._updateDynamicPrefs();
           Services.prefs.removeObserver(GEO_PREF, this);
         }
         break;
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["ActivityStream", "PREFS_CONFIG"];
+var EXPORTED_SYMBOLS = ["ActivityStream", "PREFS_CONFIG"];
--- a/browser/extensions/activity-stream/lib/ActivityStreamMessageChannel.jsm
+++ b/browser/extensions/activity-stream/lib/ActivityStreamMessageChannel.jsm
@@ -16,17 +16,17 @@ const DEFAULT_OPTIONS = {
   dispatch(action) {
     throw new Error(`\nMessageChannel: Received action ${action.type}, but no dispatcher was defined.\n`);
   },
   pageURL: ABOUT_NEW_TAB_URL,
   outgoingMessageName: "ActivityStream:MainToContent",
   incomingMessageName: "ActivityStream:ContentToMain"
 };
 
-this.ActivityStreamMessageChannel = class ActivityStreamMessageChannel {
+var ActivityStreamMessageChannel = class ActivityStreamMessageChannel {
   /**
    * ActivityStreamMessageChannel - This module connects a Redux store to a RemotePageManager in Firefox.
    *                  Call .createChannel to start the connection, and .destroyChannel to destroy it.
    *                  You should use the BroadcastToContent, AlsoToOneContent, and AlsoToMain action creators
    *                  in common/Actions.jsm to help you create actions that will be automatically routed
    *                  to the correct location.
    *
    * @param  {object} options
@@ -251,9 +251,9 @@ this.ActivityStreamMessageChannel = clas
     // target is used to access a browser reference that came from the content
     // and should only be used in feeds (not reducers)
     action._target = msg.target;
     this.onActionFromContent(action, portID);
   }
 };
 
 this.DEFAULT_OPTIONS = DEFAULT_OPTIONS;
-this.EXPORTED_SYMBOLS = ["ActivityStreamMessageChannel", "DEFAULT_OPTIONS"];
+var EXPORTED_SYMBOLS = ["ActivityStreamMessageChannel", "DEFAULT_OPTIONS"];
--- a/browser/extensions/activity-stream/lib/ActivityStreamPrefs.jsm
+++ b/browser/extensions/activity-stream/lib/ActivityStreamPrefs.jsm
@@ -4,17 +4,17 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const ACTIVITY_STREAM_PREF_BRANCH = "browser.newtabpage.activity-stream.";
 
-this.Prefs = class Prefs extends Preferences {
+var Prefs = class Prefs extends Preferences {
   /**
    * Prefs - A wrapper around Preferences that always sets the branch to
    *         ACTIVITY_STREAM_PREF_BRANCH
    */
   constructor(branch = ACTIVITY_STREAM_PREF_BRANCH) {
     super({branch});
     this._branchName = branch;
     this._branchObservers = new Map();
@@ -34,17 +34,17 @@ this.Prefs = class Prefs extends Prefere
     const observer = (subject, topic, pref) => {
       listener.onPrefChanged(pref, this.get(pref));
     };
     this._prefBranch.addObserver("", observer);
     this._branchObservers.set(listener, observer);
   }
 };
 
-this.DefaultPrefs = class DefaultPrefs {
+var DefaultPrefs = class DefaultPrefs {
   /**
    * DefaultPrefs - A helper for setting and resetting default prefs for the add-on
    *
    * @param  {Map} config A Map with {string} key of the pref name and {object}
    *                      value with the following pref properties:
    *         {string} .title (optional) A description of the pref
    *         {bool|string|number} .value The default value for the pref
    * @param  {string} branch (optional) The pref branch (defaults to ACTIVITY_STREAM_PREF_BRANCH)
@@ -98,9 +98,9 @@ this.DefaultPrefs = class DefaultPrefs {
    */
   reset() {
     for (const name of this._config.keys()) {
       this.branch.clearUserPref(name);
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["DefaultPrefs", "Prefs"];
+var EXPORTED_SYMBOLS = ["DefaultPrefs", "Prefs"];
--- a/browser/extensions/activity-stream/lib/FaviconFeed.jsm
+++ b/browser/extensions/activity-stream/lib/FaviconFeed.jsm
@@ -16,17 +16,17 @@ ChromeUtils.defineModuleGetter(this, "Pl
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 
 const FIVE_MINUTES = 5 * 60 * 1000;
 const ONE_DAY = 24 * 60 * 60 * 1000;
 const TIPPYTOP_UPDATE_TIME = ONE_DAY;
 const TIPPYTOP_RETRY_DELAY = FIVE_MINUTES;
 
-this.FaviconFeed = class FaviconFeed {
+var FaviconFeed = class FaviconFeed {
   constructor() {
     this.tippyTopNextUpdate = 0;
     this.cache = new PersistentCache("tippytop", true);
     this._sitesByDomain = null;
     this.numRetries = 0;
   }
 
   get endpoint() {
@@ -153,9 +153,9 @@ this.FaviconFeed = class FaviconFeed {
         break;
       case at.RICH_ICON_MISSING:
         this.fetchIcon(action.data.url);
         break;
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["FaviconFeed"];
+var EXPORTED_SYMBOLS = ["FaviconFeed"];
--- a/browser/extensions/activity-stream/lib/FilterAdult.jsm
+++ b/browser/extensions/activity-stream/lib/FilterAdult.jsm
@@ -30,28 +30,28 @@ function md5Hash(text) {
 
   // Request the has result as ASCII base64
   return gCryptoHash.finish(true);
 }
 
 /**
  * Filter out any link objects that have a url with an adult base domain.
  */
-this.filterAdult = function filterAdult(links) {
+function filterAdult(links) {
   return links.filter(({url}) => {
     try {
       const uri = Services.io.newURI(url);
       return !gAdultSet.has(md5Hash(Services.eTLD.getBaseDomain(uri)));
     } catch (ex) {
       return true;
     }
   });
-};
+}
 
-this.EXPORTED_SYMBOLS = ["filterAdult"];
+var EXPORTED_SYMBOLS = ["filterAdult"];
 
 // These are md5 hashes of base domains to be filtered out. Originally from:
 // https://hg.mozilla.org/mozilla-central/log/default/browser/base/content/newtab/newTab.inadjacent.json
 gAdultSet = new Set([
   "+/UCpAhZhz368iGioEO8aQ==",
   "+1e7jvUo8f2/2l0TFrQqfA==",
   "+1gcqAqaRZwCj5BGiZp3CA==",
   "+25t/2lo0FUEtWYK8LdQZQ==",
--- a/browser/extensions/activity-stream/lib/HighlightsFeed.jsm
+++ b/browser/extensions/activity-stream/lib/HighlightsFeed.jsm
@@ -22,17 +22,17 @@ ChromeUtils.defineModuleGetter(this, "Sc
   "resource://activity-stream/lib/Screenshots.jsm");
 ChromeUtils.defineModuleGetter(this, "PageThumbs",
   "resource://gre/modules/PageThumbs.jsm");
 
 const HIGHLIGHTS_MAX_LENGTH = 9;
 const MANY_EXTRA_LENGTH = HIGHLIGHTS_MAX_LENGTH * 5 + TOP_SITES_DEFAULT_ROWS * TOP_SITES_MAX_SITES_PER_ROW;
 const SECTION_ID = "highlights";
 
-this.HighlightsFeed = class HighlightsFeed {
+var HighlightsFeed = class HighlightsFeed {
   constructor() {
     this.dedupe = new Dedupe(this._dedupeKey);
     this.linksCache = new LinksCache(NewTabUtils.activityStreamLinks,
       "getHighlights", ["image"]);
     PageThumbs.addExpirationFilter(this);
   }
 
   _dedupeKey(site) {
@@ -176,9 +176,9 @@ this.HighlightsFeed = class HighlightsFe
         break;
       case at.UNINIT:
         this.uninit();
         break;
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["HighlightsFeed", "SECTION_ID"];
+var EXPORTED_SYMBOLS = ["HighlightsFeed", "SECTION_ID"];
--- a/browser/extensions/activity-stream/lib/LinksCache.jsm
+++ b/browser/extensions/activity-stream/lib/LinksCache.jsm
@@ -1,29 +1,29 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LinksCache"];
+var EXPORTED_SYMBOLS = ["LinksCache"];
 
 // This should be slightly less than SYSTEM_TICK_INTERVAL as timer
 // comparisons are too exact while the async/await functionality will make the
 // last recorded time a little bit later. This causes the comparasion to skip
 // updates.
 // It should be 10% less than SYSTEM_TICK to update at least once every 5 mins.
 // https://github.com/mozilla/activity-stream/pull/3695#discussion_r144678214
 const EXPIRATION_TIME = 4.5 * 60 * 1000; // 4.5 minutes
 
 /**
  * Cache link results from a provided object property and refresh after some
  * amount of time has passed. Allows for migrating data from previously cached
  * links to the new links with the same url.
  */
-this.LinksCache = class LinksCache {
+var LinksCache = class LinksCache {
   /**
    * Create a links cache for a given object property.
    *
    * @param {object} linkObject Object containing the link property
    * @param {string} linkProperty Name of property on object to access
    * @param {array} properties Optional properties list to migrate to new links.
    * @param {function} shouldRefresh Optional callback receiving the old and new
    *                                 options to refresh even when not expired.
--- a/browser/extensions/activity-stream/lib/ManualMigration.jsm
+++ b/browser/extensions/activity-stream/lib/ManualMigration.jsm
@@ -9,17 +9,17 @@ const MIGRATION_ENDED_EVENT = "Migration
 const MS_PER_DAY = 86400000;
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "MigrationUtils", "resource:///modules/MigrationUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "ProfileAge", "resource://gre/modules/ProfileAge.jsm");
 
-this.ManualMigration = class ManualMigration {
+var ManualMigration = class ManualMigration {
   constructor() {
     Services.obs.addObserver(this, MIGRATION_ENDED_EVENT);
     this._prefs = new Prefs();
   }
 
   uninit() {
     Services.obs.removeObserver(this, MIGRATION_ENDED_EVENT);
   }
@@ -91,9 +91,9 @@ this.ManualMigration = class ManualMigra
         break;
       case at.UNINIT:
         this.uninit();
         break;
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["ManualMigration"];
+var EXPORTED_SYMBOLS = ["ManualMigration"];
--- a/browser/extensions/activity-stream/lib/NewTabInit.jsm
+++ b/browser/extensions/activity-stream/lib/NewTabInit.jsm
@@ -4,17 +4,17 @@
 "use strict";
 
 const {actionCreators: ac, actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {});
 
 /**
  * NewTabInit - A placeholder for now. This will send a copy of the state to all
  *              newly opened tabs.
  */
-this.NewTabInit = class NewTabInit {
+var NewTabInit = class NewTabInit {
   constructor() {
     this._repliedEarlyTabs = new Map();
   }
 
   reply(target) {
     // Skip this reply if we already replied to an early tab
     if (this._repliedEarlyTabs.get(target)) {
       return;
@@ -44,9 +44,9 @@ this.NewTabInit = class NewTabInit {
       case at.NEW_TAB_UNLOAD:
         // Clean up for any tab (no-op if not an early tab)
         this._repliedEarlyTabs.delete(action.meta.fromTarget);
         break;
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["NewTabInit"];
+var EXPORTED_SYMBOLS = ["NewTabInit"];
--- a/browser/extensions/activity-stream/lib/PersistentCache.jsm
+++ b/browser/extensions/activity-stream/lib/PersistentCache.jsm
@@ -6,17 +6,17 @@
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm");
 XPCOMUtils.defineLazyGetter(this, "gTextDecoder", () => new TextDecoder());
 
 /**
  * A file (disk) based persistent cache of a JSON serializable object.
  */
-this.PersistentCache = class PersistentCache {
+var PersistentCache = class PersistentCache {
   /**
    * Create a cache object based on a name.
    *
    * @param {string} name Name of the cache. It will be used to create the filename.
    * @param {boolean} preload (optional). Whether the cache should be preloaded from file. Defaults to false.
    */
   constructor(name, preload = false) {
     this.name = name;
@@ -74,9 +74,9 @@ this.PersistentCache = class PersistentC
    * Persist the cache to file.
    */
   _persist(data) {
     const filepath = OS.Path.join(OS.Constants.Path.localProfileDir, this._filename);
     OS.File.writeAtomic(filepath, JSON.stringify(data), {tmpPath: `${filepath}.tmp`});
   }
 };
 
-this.EXPORTED_SYMBOLS = ["PersistentCache"];
+var EXPORTED_SYMBOLS = ["PersistentCache"];
--- a/browser/extensions/activity-stream/lib/PlacesFeed.jsm
+++ b/browser/extensions/activity-stream/lib/PlacesFeed.jsm
@@ -306,9 +306,9 @@ class PlacesFeed {
 }
 
 this.PlacesFeed = PlacesFeed;
 
 // Exported for testing only
 PlacesFeed.HistoryObserver = HistoryObserver;
 PlacesFeed.BookmarksObserver = BookmarksObserver;
 
-this.EXPORTED_SYMBOLS = ["PlacesFeed"];
+var EXPORTED_SYMBOLS = ["PlacesFeed"];
--- a/browser/extensions/activity-stream/lib/PrefsFeed.jsm
+++ b/browser/extensions/activity-stream/lib/PrefsFeed.jsm
@@ -5,17 +5,17 @@
 
 const {actionCreators: ac, actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {});
 const {Prefs} = ChromeUtils.import("resource://activity-stream/lib/ActivityStreamPrefs.jsm", {});
 const {PrerenderData} = ChromeUtils.import("resource://activity-stream/common/PrerenderData.jsm", {});
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const ONBOARDING_FINISHED_PREF = "browser.onboarding.notification.finished";
 
-this.PrefsFeed = class PrefsFeed {
+var PrefsFeed = class PrefsFeed {
   constructor(prefMap) {
     this._prefMap = prefMap;
     this._prefs = new Prefs();
   }
 
   // If the any prefs are set to something other than what the prerendered version
   // of AS expects, we can't use it.
   _setPrerenderPref(name) {
@@ -88,9 +88,9 @@ this.PrefsFeed = class PrefsFeed {
         break;
       case at.DISABLE_ONBOARDING:
         this.setOnboardingDisabledDefault(true);
         break;
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["PrefsFeed"];
+var EXPORTED_SYMBOLS = ["PrefsFeed"];
--- a/browser/extensions/activity-stream/lib/Screenshots.jsm
+++ b/browser/extensions/activity-stream/lib/Screenshots.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Screenshots"];
+var EXPORTED_SYMBOLS = ["Screenshots"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "BackgroundPageThumbs",
   "resource://gre/modules/BackgroundPageThumbs.jsm");
 ChromeUtils.defineModuleGetter(this, "PageThumbs",
   "resource://gre/modules/PageThumbs.jsm");
 ChromeUtils.defineModuleGetter(this, "FileUtils",
@@ -19,17 +19,17 @@ ChromeUtils.defineModuleGetter(this, "OS
   "resource://gre/modules/osfile.jsm");
 ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
   "resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 
 const GREY_10 = "#F9F9FA";
 
-this.Screenshots = {
+var Screenshots = {
   /**
    * Convert bytes to a string using extremely fast String.fromCharCode without
    * exceeding the max number of arguments that can be provided to a function.
    */
   _bytesToString(bytes) {
     // NB: This comes from js/src/vm/ArgumentsObject.h ARGS_LENGTH_MAX
     const ARGS_LENGTH_MAX = 500 * 1000;
     let i = 0;
--- a/browser/extensions/activity-stream/lib/SectionsManager.jsm
+++ b/browser/extensions/activity-stream/lib/SectionsManager.jsm
@@ -351,9 +351,9 @@ class SectionsFeed {
     if (SectionsManager.ACTIONS_TO_PROXY.includes(action.type) && SectionsManager.sections.size > 0) {
       SectionsManager.emit(SectionsManager.ACTION_DISPATCHED, action.type, action.data);
     }
   }
 }
 
 this.SectionsFeed = SectionsFeed;
 this.SectionsManager = SectionsManager;
-this.EXPORTED_SYMBOLS = ["SectionsFeed", "SectionsManager"];
+var EXPORTED_SYMBOLS = ["SectionsFeed", "SectionsManager"];
--- a/browser/extensions/activity-stream/lib/ShortURL.jsm
+++ b/browser/extensions/activity-stream/lib/ShortURL.jsm
@@ -28,27 +28,26 @@ function handleIDNHost(hostname) {
 function getETLD(host) {
   try {
     return Services.eTLD.getPublicSuffixFromHost(host);
   } catch (err) {
     return "";
   }
 }
 
-this.getETLD = getETLD;
 
 /**
  * shortURL - Creates a short version of a link's url, used for display purposes
  *            e.g. {url: http://www.foosite.com}  =>  "foosite"
  *
  * @param  {obj} link A link object
  *         {str} link.url (required)- The url of the link
  * @return {str}   A short url
  */
-this.shortURL = function shortURL({url}) {
+function shortURL({url}) {
   if (!url) {
     return "";
   }
 
   // Make sure we have a valid / parseable url
   let parsed;
   try {
     parsed = new URL(url);
@@ -62,11 +61,11 @@ this.shortURL = function shortURL({url})
 
   // Remove the eTLD (e.g., com, net) and the preceding period from the hostname
   const eTLD = getETLD(hostname);
   const eTLDExtra = eTLD.length > 0 ? -(eTLD.length + 1) : Infinity;
 
   // Ideally get the short eTLD-less host but fall back to longer url parts
   return handleIDNHost(hostname.slice(0, eTLDExtra) || hostname) ||
     parsed.pathname || parsed.href;
-};
+}
 
-this.EXPORTED_SYMBOLS = ["shortURL", "getETLD"];
+var EXPORTED_SYMBOLS = ["shortURL", "getETLD"];
--- a/browser/extensions/activity-stream/lib/SnippetsFeed.jsm
+++ b/browser/extensions/activity-stream/lib/SnippetsFeed.jsm
@@ -24,17 +24,17 @@ const TARGET_SEARCHENGINE_PREFIX = "sear
 
 const SEARCH_ENGINE_OBSERVER_TOPIC = "browser-search-engine-modified";
 
 // Should be bumped up if the snippets content format changes.
 const STARTPAGE_VERSION = 5;
 
 const ONE_WEEK = 7 * 24 * 60 * 60 * 1000;
 
-this.SnippetsFeed = class SnippetsFeed {
+var SnippetsFeed = class SnippetsFeed {
   constructor() {
     this._refresh = this._refresh.bind(this);
   }
 
   get snippetsURL() {
     const updateURL = Services
       .prefs.getStringPref(SNIPPETS_URL_PREF)
       .replace("%STARTPAGE_VERSION%", STARTPAGE_VERSION);
@@ -143,9 +143,9 @@ this.SnippetsFeed = class SnippetsFeed {
         break;
       case at.SNIPPETS_BLOCKLIST_UPDATED:
         this.store.dispatch(ac.BroadcastToContent({type: at.SNIPPET_BLOCKED, data: action.data}));
         break;
     }
   }
 };
 
-this.EXPORTED_SYMBOLS = ["SnippetsFeed"];
+var EXPORTED_SYMBOLS = ["SnippetsFeed"];
--- a/browser/extensions/activity-stream/lib/Store.jsm
+++ b/browser/extensions/activity-stream/lib/Store.jsm
@@ -10,17 +10,17 @@ const {redux} = ChromeUtils.import("reso
 
 /**
  * Store - This has a similar structure to a redux store, but includes some extra
  *         functionality to allow for routing of actions between the Main processes
  *         and child processes via a ActivityStreamMessageChannel.
  *         It also accepts an array of "Feeds" on inititalization, which
  *         can listen for any action that is dispatched through the store.
  */
-this.Store = class Store {
+var Store = class Store {
   /**
    * constructor - The redux store and message manager are created here,
    *               but no listeners are added until "init" is called.
    */
   constructor() {
     this._middleware = this._middleware.bind(this);
     // Bind each redux method so we can call it directly from the Store. E.g.,
     // store.dispatch() will call store._store.dispatch();
@@ -152,9 +152,9 @@ this.Store = class Store {
     }
     this._prefs.ignoreBranch(this);
     this.feeds.clear();
     this._feedFactories = null;
     this._messageChannel.destroyChannel();
   }
 };
 
-this.EXPORTED_SYMBOLS = ["Store"];
+var EXPORTED_SYMBOLS = ["Store"];
--- a/browser/extensions/activity-stream/lib/SystemTickFeed.jsm
+++ b/browser/extensions/activity-stream/lib/SystemTickFeed.jsm
@@ -8,17 +8,17 @@ ChromeUtils.import("resource://gre/modul
 const {actionTypes: at} = ChromeUtils.import("resource://activity-stream/common/Actions.jsm", {});
 
 ChromeUtils.defineModuleGetter(this, "setInterval", "resource://gre/modules/Timer.jsm");
 ChromeUtils.defineModuleGetter(this, "clearInterval", "resource://gre/modules/Timer.jsm");
 
 // Frequency at which SYSTEM_TICK events are fired
 const SYSTEM_TICK_INTERVAL = 5 * 60 * 1000;
 
-this.SystemTickFeed = class SystemTickFeed {
+var SystemTickFeed = class SystemTickFeed {
   init() {
     this.intervalId = setInterval(() => this.store.dispatch({type: at.SYSTEM_TICK}), SYSTEM_TICK_INTERVAL);
   }
 
   onAction(action) {
     switch (action.type) {
       case at.INIT:
         this.init();
@@ -26,9 +26,9 @@ this.SystemTickFeed = class SystemTickFe
       case at.UNINIT:
         clearInterval(this.intervalId);
         break;
     }
   }
 };
 
 this.SYSTEM_TICK_INTERVAL = SYSTEM_TICK_INTERVAL;
-this.EXPORTED_SYMBOLS = ["SystemTickFeed", "SYSTEM_TICK_INTERVAL"];
+var EXPORTED_SYMBOLS = ["SystemTickFeed", "SYSTEM_TICK_INTERVAL"];
--- a/browser/extensions/activity-stream/lib/TelemetryFeed.jsm
+++ b/browser/extensions/activity-stream/lib/TelemetryFeed.jsm
@@ -33,17 +33,17 @@ const USER_PREFS_ENCODING = {
   "feeds.section.highlights": 1 << 3,
   "feeds.snippets": 1 << 4,
   "showSponsored": 1 << 5
 };
 
 const PREF_IMPRESSION_ID = "impressionId";
 const TELEMETRY_PREF = "telemetry";
 
-this.TelemetryFeed = class TelemetryFeed {
+var TelemetryFeed = class TelemetryFeed {
   constructor(options) {
     this.sessions = new Map();
     this._prefs = new Prefs();
     this._impressionId = this.getOrCreateImpressionId();
     this.telemetryEnabled = this._prefs.get(TELEMETRY_PREF);
     this._aboutHomeSeen = false;
     this._onTelemetryPrefChange = this._onTelemetryPrefChange.bind(this);
     this._prefs.observe(TELEMETRY_PREF, this._onTelemetryPrefChange);
@@ -452,14 +452,14 @@ this.TelemetryFeed = class TelemetryFeed
       this._prefs.ignore(TELEMETRY_PREF, this._onTelemetryPrefChange);
     } catch (e) {
       Cu.reportError(e);
     }
     // TODO: Send any unfinished sessions
   }
 };
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryFeed",
   "USER_PREFS_ENCODING",
   "PREF_IMPRESSION_ID",
   "TELEMETRY_PREF"
 ];
--- a/browser/extensions/activity-stream/lib/TippyTopProvider.jsm
+++ b/browser/extensions/activity-stream/lib/TippyTopProvider.jsm
@@ -12,19 +12,18 @@ function getDomain(url) {
   try {
     domain = new URL(url).hostname;
   } catch (ex) {}
   if (domain && domain.startsWith("www.")) {
     domain = domain.slice(4);
   }
   return domain;
 }
-this.getDomain = getDomain;
 
-this.TippyTopProvider = class TippyTopProvider {
+var TippyTopProvider = class TippyTopProvider {
   constructor() {
     this._sitesByDomain = new Map();
     this.initialized = false;
   }
 
   async init() {
     // Load the Tippy Top sites from the json manifest.
     try {
@@ -46,9 +45,9 @@ this.TippyTopProvider = class TippyTopPr
     if (tippyTop) {
       site.tippyTopIcon = TIPPYTOP_URL_PREFIX + tippyTop.image_url;
       site.backgroundColor = tippyTop.background_color;
     }
     return site;
   }
 };
 
-this.EXPORTED_SYMBOLS = ["TippyTopProvider", "getDomain"];
+var EXPORTED_SYMBOLS = ["TippyTopProvider", "getDomain"];
--- a/browser/extensions/activity-stream/lib/TopSitesFeed.jsm
+++ b/browser/extensions/activity-stream/lib/TopSitesFeed.jsm
@@ -24,17 +24,17 @@ ChromeUtils.defineModuleGetter(this, "Pa
 
 const DEFAULT_SITES_PREF = "default.sites";
 const DEFAULT_TOP_SITES = [];
 const FRECENCY_THRESHOLD = 100 + 1; // 1 visit (skip first-run/one-time pages)
 const MIN_FAVICON_SIZE = 96;
 const CACHED_LINK_PROPS_TO_MIGRATE = ["screenshot"];
 const PINNED_FAVICON_PROPS_TO_MIGRATE = ["favicon", "faviconRef", "faviconSize"];
 
-this.TopSitesFeed = class TopSitesFeed {
+var TopSitesFeed = class TopSitesFeed {
   constructor() {
     this._tippyTopProvider = new TippyTopProvider();
     this.dedupe = new Dedupe(this._dedupeKey);
     this.frecentCache = new LinksCache(NewTabUtils.activityStreamLinks,
       "getTopSites", CACHED_LINK_PROPS_TO_MIGRATE, (oldOptions, newOptions) =>
         // Refresh if no old options or requesting more items
         !(oldOptions.numItems >= newOptions.numItems));
     this.pinnedCache = new LinksCache(NewTabUtils.pinnedLinks, "links",
@@ -342,9 +342,9 @@ this.TopSitesFeed = class TopSitesFeed {
       case at.UNINIT:
         this.uninit();
         break;
     }
   }
 };
 
 this.DEFAULT_TOP_SITES = DEFAULT_TOP_SITES;
-this.EXPORTED_SYMBOLS = ["TopSitesFeed", "DEFAULT_TOP_SITES"];
+var EXPORTED_SYMBOLS = ["TopSitesFeed", "DEFAULT_TOP_SITES"];
--- a/browser/extensions/activity-stream/lib/TopStoriesFeed.jsm
+++ b/browser/extensions/activity-stream/lib/TopStoriesFeed.jsm
@@ -22,17 +22,17 @@ const TOPICS_UPDATE_TIME = 3 * 60 * 60 *
 const STORIES_NOW_THRESHOLD = 24 * 60 * 60 * 1000; // 24 hours
 const MIN_DOMAIN_AFFINITIES_UPDATE_TIME = 12 * 60 * 60 * 1000; // 12 hours
 const DEFAULT_RECS_EXPIRE_TIME = 60 * 60 * 1000; // 1 hour
 const SECTION_ID = "topstories";
 const SPOC_IMPRESSION_TRACKING_PREF = "feeds.section.topstories.spoc.impressions";
 const REC_IMPRESSION_TRACKING_PREF = "feeds.section.topstories.rec.impressions";
 const MAX_LIFETIME_CAP = 100; // Guard against misconfiguration on the server
 
-this.TopStoriesFeed = class TopStoriesFeed {
+var TopStoriesFeed = class TopStoriesFeed {
   constructor() {
     this.spocsPerNewTabs = 0;
     this.newTabsSinceSpoc = 0;
     this.spocCampaignMap = new Map();
     this.contentUpdateQueue = [];
     this.cache = new PersistentCache(SECTION_ID, true);
     this._prefs = new Prefs();
   }
@@ -506,9 +506,9 @@ this.TopStoriesFeed = class TopStoriesFe
 
 this.STORIES_UPDATE_TIME = STORIES_UPDATE_TIME;
 this.TOPICS_UPDATE_TIME = TOPICS_UPDATE_TIME;
 this.SECTION_ID = SECTION_ID;
 this.SPOC_IMPRESSION_TRACKING_PREF = SPOC_IMPRESSION_TRACKING_PREF;
 this.REC_IMPRESSION_TRACKING_PREF = REC_IMPRESSION_TRACKING_PREF;
 this.MIN_DOMAIN_AFFINITIES_UPDATE_TIME = MIN_DOMAIN_AFFINITIES_UPDATE_TIME;
 this.DEFAULT_RECS_EXPIRE_TIME = DEFAULT_RECS_EXPIRE_TIME;
-this.EXPORTED_SYMBOLS = ["TopStoriesFeed", "STORIES_UPDATE_TIME", "TOPICS_UPDATE_TIME", "SECTION_ID", "SPOC_IMPRESSION_TRACKING_PREF", "MIN_DOMAIN_AFFINITIES_UPDATE_TIME", "REC_IMPRESSION_TRACKING_PREF", "DEFAULT_RECS_EXPIRE_TIME"];
+var EXPORTED_SYMBOLS = ["TopStoriesFeed", "STORIES_UPDATE_TIME", "TOPICS_UPDATE_TIME", "SECTION_ID", "SPOC_IMPRESSION_TRACKING_PREF", "MIN_DOMAIN_AFFINITIES_UPDATE_TIME", "REC_IMPRESSION_TRACKING_PREF", "DEFAULT_RECS_EXPIRE_TIME"];
--- a/browser/extensions/activity-stream/lib/UTEventReporting.jsm
+++ b/browser/extensions/activity-stream/lib/UTEventReporting.jsm
@@ -8,17 +8,17 @@
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 /**
   * Note: the schema can be found in
   * https://searchfox.org/mozilla-central/source/toolkit/components/telemetry/Events.yaml
   */
 const EXTRAS_FIELD_NAMES = ["addon_version", "session_id", "page", "user_prefs", "action_position"];
 
-this.UTEventReporting = class UTEventReporting {
+var UTEventReporting = class UTEventReporting {
   constructor() {
     Services.telemetry.setEventRecordingEnabled("activity_stream", true);
   }
 
   _createExtras(data) {
     // Make a copy of the given data and delete/modify it as needed.
     let utExtras = Object.assign({}, data);
     for (let field of Object.keys(utExtras)) {
@@ -51,9 +51,9 @@ this.UTEventReporting = class UTEventRep
       this._createExtras(data));
   }
 
   uninit() {
     Services.telemetry.setEventRecordingEnabled("activity_stream", false);
   }
 };
 
-this.EXPORTED_SYMBOLS = ["UTEventReporting"];
+var EXPORTED_SYMBOLS = ["UTEventReporting"];
--- a/browser/extensions/activity-stream/lib/UserDomainAffinityProvider.jsm
+++ b/browser/extensions/activity-stream/lib/UserDomainAffinityProvider.jsm
@@ -67,17 +67,17 @@ function merge(...args) {
  * more details)
  *
  * - The data structure was chosen to allow for fast cache lookups during
  * relevance score calculation. While user domain affinities are calculated
  * infrequently (i.e. only once a day), the item relevance score (potentially)
  * needs to be calculated every time the feed updates. Therefore allowing cache
  * lookups of scores[domain][parameterSet] is beneficial
  */
-this.UserDomainAffinityProvider = class UserDomainAffinityProvider {
+var UserDomainAffinityProvider = class UserDomainAffinityProvider {
   constructor(
     timeSegments = DEFAULT_TIME_SEGMENTS,
     parameterSets = DEFAULT_PARAMETER_SETS,
     maxHistoryQueryResults = DEFAULT_MAX_HISTORY_QUERY_RESULTS,
     version,
     scores) {
     this.timeSegments = timeSegments;
     this.maxHistoryQueryResults = maxHistoryQueryResults;
@@ -321,9 +321,9 @@ this.UserDomainAffinityProvider = class 
       parameterSets: this.parameterSets,
       maxHistoryQueryResults: this.maxHistoryQueryResults,
       version: this.version,
       scores: this.scores
     };
   }
 };
 
-this.EXPORTED_SYMBOLS = ["UserDomainAffinityProvider"];
+var EXPORTED_SYMBOLS = ["UserDomainAffinityProvider"];
--- a/browser/extensions/activity-stream/vendor/Redux.jsm
+++ b/browser/extensions/activity-stream/vendor/Redux.jsm
@@ -1,21 +1,21 @@
 /**
  * Redux v.3.6.0
  *
  * This file has been reformatted as a Javascript Core Module
  */
-this.EXPORTED_SYMBOLS = ["redux"];
+var EXPORTED_SYMBOLS = ["redux"];
 
 // Defining these prevents redux from using indirect eval or `new
 // Function()` to get its global object.
 const self = this;
 this.Object = Object;
 
-this.redux =
+var redux =
 /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 
 /******/ 		// Check if module is in cache
--- a/browser/extensions/formautofill/FormAutofillContent.jsm
+++ b/browser/extensions/formautofill/FormAutofillContent.jsm
@@ -5,17 +5,17 @@
 /*
  * Form Autofill content process module.
  */
 
 /* eslint-disable no-use-before-define */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["FormAutofillContent"];
+var EXPORTED_SYMBOLS = ["FormAutofillContent"];
 
 const Cm = Components.manager;
 
 ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
@@ -203,18 +203,16 @@ AutofillProfileAutoCompleteSearch.protot
         resolve(result.data);
       });
 
       Services.cpmm.sendAsyncMessage("FormAutofill:GetRecords", data);
     });
   },
 };
 
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([AutofillProfileAutoCompleteSearch]);
-
 let ProfileAutocomplete = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
 
   lastProfileAutoCompleteResult: null,
   lastProfileAutoCompleteFocusedInput: null,
   _registered: false,
   _factory: null,
 
--- a/browser/extensions/formautofill/FormAutofillDoorhanger.jsm
+++ b/browser/extensions/formautofill/FormAutofillDoorhanger.jsm
@@ -6,25 +6,25 @@
  * Implements doorhanger singleton that wraps up the PopupNotifications and handles
  * the doorhager UI for formautofill related features.
  */
 
 /* exported FormAutofillDoorhanger */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["FormAutofillDoorhanger"];
+var EXPORTED_SYMBOLS = ["FormAutofillDoorhanger"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
 this.log = null;
-FormAutofillUtils.defineLazyLogGetter(this, this.EXPORTED_SYMBOLS[0]);
+FormAutofillUtils.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]);
 
 const GetStringFromName = FormAutofillUtils.stringBundle.GetStringFromName;
 const formatStringFromName = FormAutofillUtils.stringBundle.formatStringFromName;
 const brandShortName = FormAutofillUtils.brandBundle.GetStringFromName("brandShortName");
 let changeAutofillOptsKey = "changeAutofillOptions";
 let autofillOptsKey = "autofillOptionsLink";
 let autofillSecurityOptionsKey = "autofillSecurityOptionsLink";
 if (AppConstants.platform == "macosx") {
--- a/browser/extensions/formautofill/FormAutofillHandler.jsm
+++ b/browser/extensions/formautofill/FormAutofillHandler.jsm
@@ -5,30 +5,30 @@
 /*
  * Defines a handler object to represent forms that autofill can handle.
  */
 
 /* exported FormAutofillHandler */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["FormAutofillHandler"];
+var EXPORTED_SYMBOLS = ["FormAutofillHandler"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "FormAutofillHeuristics",
                                "resource://formautofill/FormAutofillHeuristics.jsm");
 ChromeUtils.defineModuleGetter(this, "FormLikeFactory",
                                "resource://gre/modules/FormLikeFactory.jsm");
 
 this.log = null;
-FormAutofillUtils.defineLazyLogGetter(this, this.EXPORTED_SYMBOLS[0]);
+FormAutofillUtils.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]);
 
 const {FIELD_STATES} = FormAutofillUtils;
 
 class FormAutofillSection {
   constructor(fieldDetails, winUtils) {
     this.fieldDetails = fieldDetails;
     this.filledRecordGUID = null;
     this.winUtils = winUtils;
--- a/browser/extensions/formautofill/FormAutofillHeuristics.jsm
+++ b/browser/extensions/formautofill/FormAutofillHeuristics.jsm
@@ -3,24 +3,24 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * Form Autofill field heuristics.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["FormAutofillHeuristics", "LabelUtils"];
+var EXPORTED_SYMBOLS = ["FormAutofillHeuristics", "LabelUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
 this.log = null;
-FormAutofillUtils.defineLazyLogGetter(this, this.EXPORTED_SYMBOLS[0]);
+FormAutofillUtils.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]);
 
 const PREF_HEURISTICS_ENABLED = "extensions.formautofill.heuristics.enabled";
 const PREF_SECTION_ENABLED = "extensions.formautofill.section.enabled";
 const DEFAULT_SECTION_NAME = "-moz-section-default";
 
 /**
  * A scanner for traversing all elements in a form and retrieving the field
  * detail with FormAutofillHeuristics.getInfo function. It also provides a
@@ -281,17 +281,17 @@ class FieldScanner {
     }).filter(section => section.fieldDetails.length > 0);
   }
 
   elementExisting(index) {
     return index < this._elements.length;
   }
 }
 
-this.LabelUtils = {
+var LabelUtils = {
   // The tag name list is from Chromium except for "STYLE":
   // eslint-disable-next-line max-len
   // https://cs.chromium.org/chromium/src/components/autofill/content/renderer/form_autofill_util.cc?l=216&rcl=d33a171b7c308a64dc3372fac3da2179c63b419e
   EXCLUDED_TAGS: ["SCRIPT", "NOSCRIPT", "OPTION", "STYLE"],
 
   // A map object, whose keys are the id's of form fields and each value is an
   // array consisting of label elements correponding to the id.
   // @type {Map<string, array>}
--- a/browser/extensions/formautofill/FormAutofillNameUtils.jsm
+++ b/browser/extensions/formautofill/FormAutofillNameUtils.jsm
@@ -4,17 +4,17 @@
 
 "use strict";
 
 // Cu.import loads jsm files based on ISO-Latin-1 for now (see bug 530257).
 // However, the references about name parts include multi-byte characters.
 // Thus, we use |loadSubScript| to load the references instead.
 const NAME_REFERENCES = "chrome://formautofill/content/nameReferences.js";
 
-this.EXPORTED_SYMBOLS = ["FormAutofillNameUtils"];
+var EXPORTED_SYMBOLS = ["FormAutofillNameUtils"];
 
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
 // FormAutofillNameUtils is initially translated from
 // https://cs.chromium.org/chromium/src/components/autofill/core/browser/autofill_data_util.cc?rcl=b861deff77abecff11ae6a9f6946e9cc844b9817
 var FormAutofillNameUtils = {
   // Will be loaded from NAME_REFERENCES.
   NAME_PREFIXES: [],
--- a/browser/extensions/formautofill/FormAutofillParent.jsm
+++ b/browser/extensions/formautofill/FormAutofillParent.jsm
@@ -24,34 +24,34 @@
  *   }
  * ]
  */
 
 "use strict";
 
 // We expose a singleton from this module. Some tests may import the
 // constructor via a backstage pass.
-this.EXPORTED_SYMBOLS = ["formAutofillParent"];
+var EXPORTED_SYMBOLS = ["formAutofillParent"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "FormAutofillPreferences",
                                "resource://formautofill/FormAutofillPreferences.jsm");
 ChromeUtils.defineModuleGetter(this, "FormAutofillDoorhanger",
                                "resource://formautofill/FormAutofillDoorhanger.jsm");
 ChromeUtils.defineModuleGetter(this, "MasterPassword",
                                "resource://formautofill/MasterPassword.jsm");
 ChromeUtils.defineModuleGetter(this, "RecentWindow",
                                "resource:///modules/RecentWindow.jsm");
 
 this.log = null;
-FormAutofillUtils.defineLazyLogGetter(this, this.EXPORTED_SYMBOLS[0]);
+FormAutofillUtils.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]);
 
 const {
   ENABLED_AUTOFILL_ADDRESSES_PREF,
   ENABLED_AUTOFILL_CREDITCARDS_PREF,
   CREDITCARDS_COLLECTION_NAME,
 } = FormAutofillUtils;
 
 function FormAutofillParent() {
@@ -601,9 +601,9 @@ FormAutofillParent.prototype = {
     if (!startedFillingMS) {
       return;
     }
     let histogram = Services.telemetry.getKeyedHistogramById("FORM_FILLING_REQUIRED_TIME_MS");
     histogram.add(`${formType}-${fillingType}`, Date.now() - startedFillingMS);
   },
 };
 
-this.formAutofillParent = new FormAutofillParent();
+var formAutofillParent = new FormAutofillParent();
--- a/browser/extensions/formautofill/FormAutofillPreferences.jsm
+++ b/browser/extensions/formautofill/FormAutofillPreferences.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Injects the form autofill section into about:preferences.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["FormAutofillPreferences"];
+var EXPORTED_SYMBOLS = ["FormAutofillPreferences"];
 
 // Add addresses enabled flag in telemetry environment for recording the number of
 // users who disable/enable the address autofill feature.
 const BUNDLE_URI = "chrome://formautofill/locale/formautofill.properties";
 const MANAGE_ADDRESSES_URL = "chrome://formautofill/content/manageAddresses.xhtml";
 const MANAGE_CREDITCARDS_URL = "chrome://formautofill/content/manageCreditCards.xhtml";
 const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 
@@ -28,17 +28,17 @@ const {
   EDIT_ADDRESS_KEYWORDS,
   MANAGE_CREDITCARDS_KEYWORDS,
   EDIT_CREDITCARD_KEYWORDS,
 } = FormAutofillUtils;
 // Add credit card enabled flag in telemetry environment for recording the number of
 // users who disable/enable the credit card autofill feature.
 
 this.log = null;
-FormAutofillUtils.defineLazyLogGetter(this, this.EXPORTED_SYMBOLS[0]);
+FormAutofillUtils.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]);
 
 function FormAutofillPreferences() {
   this.bundle = Services.strings.createBundle(BUNDLE_URI);
 }
 
 FormAutofillPreferences.prototype = {
   /**
    * Create the Form Autofill preference group.
--- a/browser/extensions/formautofill/FormAutofillStorage.jsm
+++ b/browser/extensions/formautofill/FormAutofillStorage.jsm
@@ -116,17 +116,17 @@
  * (meaning they will be synced on the next sync), at which time they will gain
  * this new field.
  */
 
 "use strict";
 
 // We expose a singleton from this module. Some tests may import the
 // constructor via a backstage pass.
-this.EXPORTED_SYMBOLS = ["profileStorage"];
+var EXPORTED_SYMBOLS = ["profileStorage"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "JSONFile",
@@ -1797,10 +1797,10 @@ FormAutofillStorage.prototype = {
 
   // For test only.
   _saveImmediately() {
     return this._store._save();
   },
 };
 
 // The singleton exposed by this module.
-this.profileStorage = new FormAutofillStorage(
+var profileStorage = new FormAutofillStorage(
   OS.Path.join(OS.Constants.Path.profileDir, PROFILE_JSON_FILE_NAME));
--- a/browser/extensions/formautofill/FormAutofillSync.jsm
+++ b/browser/extensions/formautofill/FormAutofillSync.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AddressesEngine", "CreditCardsEngine"];
+var EXPORTED_SYMBOLS = ["AddressesEngine", "CreditCardsEngine"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://services-sync/engines.js");
 ChromeUtils.import("resource://services-sync/record.js");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
--- a/browser/extensions/formautofill/FormAutofillUtils.jsm
+++ b/browser/extensions/formautofill/FormAutofillUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["FormAutofillUtils", "AddressDataLoader"];
+var EXPORTED_SYMBOLS = ["FormAutofillUtils", "AddressDataLoader"];
 
 const ADDRESS_METADATA_PATH = "resource://formautofill/addressmetadata/";
 const ADDRESS_REFERENCES = "addressReferences.js";
 const ADDRESS_REFERENCES_EXT = "addressReferencesExt.js";
 
 const ADDRESSES_COLLECTION_NAME = "addresses";
 const CREDITCARDS_COLLECTION_NAME = "creditCards";
 const ADDRESSES_FIRST_TIME_USE_PREF = "extensions.formautofill.firstTimeUse";
@@ -838,17 +838,17 @@ this.FormAutofillUtils = {
     for (let element of elements) {
       element.textContent = bundle.GetStringFromName(element.getAttribute("data-localization"));
       element.removeAttribute("data-localization");
     }
   },
 };
 
 this.log = null;
-this.FormAutofillUtils.defineLazyLogGetter(this, this.EXPORTED_SYMBOLS[0]);
+this.FormAutofillUtils.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]);
 
 XPCOMUtils.defineLazyGetter(FormAutofillUtils, "stringBundle", function() {
   return Services.strings.createBundle("chrome://formautofill/locale/formautofill.properties");
 });
 
 XPCOMUtils.defineLazyGetter(FormAutofillUtils, "brandBundle", function() {
   return Services.strings.createBundle("chrome://branding/locale/brand.properties");
 });
--- a/browser/extensions/formautofill/MasterPassword.jsm
+++ b/browser/extensions/formautofill/MasterPassword.jsm
@@ -4,28 +4,28 @@
 
 /**
  * Helpers for the Master Password Dialog.
  * In the future the Master Password implementation may move here.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "MasterPassword",
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "cryptoSDR",
                                    "@mozilla.org/login-manager/crypto/SDR;1",
                                    Ci.nsILoginManagerCrypto);
 
-this.MasterPassword = {
+var MasterPassword = {
   get _token() {
     let tokendb = Cc["@mozilla.org/security/pk11tokendb;1"].createInstance(Ci.nsIPK11TokenDB);
     return tokendb.getInternalKeyToken();
   },
 
   /**
    * @returns {boolean} True if a master password is set and false otherwise.
    */
--- a/browser/extensions/formautofill/ProfileAutoCompleteResult.jsm
+++ b/browser/extensions/formautofill/ProfileAutoCompleteResult.jsm
@@ -1,26 +1,26 @@
 /* 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/. */
 
 /* exported AddressResult, CreditCardResult */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["AddressResult", "CreditCardResult"];
+var EXPORTED_SYMBOLS = ["AddressResult", "CreditCardResult"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://formautofill/FormAutofillUtils.jsm");
 
 XPCOMUtils.defineLazyPreferenceGetter(this, "insecureWarningEnabled", "security.insecure_field_warning.contextual.enabled");
 
 this.log = null;
-FormAutofillUtils.defineLazyLogGetter(this, this.EXPORTED_SYMBOLS[0]);
+FormAutofillUtils.defineLazyLogGetter(this, EXPORTED_SYMBOLS[0]);
 
 class ProfileAutoCompleteResult {
   constructor(searchString, focusedFieldName, allFieldNames, matchingProfiles, {
     resultCode = null,
     isSecure = true,
     isInputAutofilled = false,
   }) {
     log.debug("Constructing new ProfileAutoCompleteResult:", [...arguments]);
--- a/browser/extensions/formautofill/phonenumberutils/PhoneNumber.jsm
+++ b/browser/extensions/formautofill/phonenumberutils/PhoneNumber.jsm
@@ -2,24 +2,24 @@
  * 2.0. If a copy of the Apache License was not distributed with this file, You
  * can obtain one at https://www.apache.org/licenses/LICENSE-2.0 */
 
 // This library came from https://github.com/andreasgal/PhoneNumber.js but will
 // be further maintained by our own in Form Autofill codebase.
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["PhoneNumber"];
+var EXPORTED_SYMBOLS = ["PhoneNumber"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "PHONE_NUMBER_META_DATA",
                                "resource://formautofill/phonenumberutils/PhoneNumberMetaData.jsm");
 ChromeUtils.defineModuleGetter(this, "PhoneNumberNormalizer",
                                "resource://formautofill/phonenumberutils/PhoneNumberNormalizer.jsm");
-this.PhoneNumber = (function(dataBase) {
+var PhoneNumber = (function(dataBase) {
   const MAX_PHONE_NUMBER_LENGTH = 50;
   const NON_ALPHA_CHARS = /[^a-zA-Z]/g;
   const NON_DIALABLE_CHARS = /[^,#+\*\d]/g;
   const NON_DIALABLE_CHARS_ONCE = new RegExp(NON_DIALABLE_CHARS.source);
   const SPLIT_FIRST_GROUP = /^(\d+)(.*)$/;
   const LEADING_PLUS_CHARS_PATTERN = /^[+\uFF0B]+/g;
 
   // Format of the string encoded meta data. If the name contains "^" or "$"
--- a/browser/extensions/formautofill/phonenumberutils/PhoneNumberMetaData.jsm
+++ b/browser/extensions/formautofill/phonenumberutils/PhoneNumberMetaData.jsm
@@ -5,19 +5,19 @@
 /*
  * This data was generated base on libphonenumber v8.4.1 via the script in
  * https://github.com/andreasgal/PhoneNumber.js
  *
  * The XML format of libphonenumber has changed since v8.4.2 so we can only stay
  * in this version for now.
  */
 
-this.EXPORTED_SYMBOLS = ["PHONE_NUMBER_META_DATA"];
+var EXPORTED_SYMBOLS = ["PHONE_NUMBER_META_DATA"];
 
-this.PHONE_NUMBER_META_DATA = {
+var PHONE_NUMBER_META_DATA = {
 "46": '["SE","00","0",null,null,"$NP$FG","\\\\d{6,12}","[1-35-9]\\\\d{5,11}|4\\\\d{6,8}",[["(8)(\\\\d{2,3})(\\\\d{2,3})(\\\\d{2})","$1-$2 $3 $4","8",null,"$1 $2 $3 $4"],["([1-69]\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4","1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90",null,"$1 $2 $3 $4"],["([1-469]\\\\d)(\\\\d{3})(\\\\d{2})","$1-$2 $3","1[136]|2[136]|3[356]|4[0246]|6[03]|90",null,"$1 $2 $3"],["(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4","1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])",null,"$1 $2 $3 $4"],["(\\\\d{3})(\\\\d{2,3})(\\\\d{2})","$1-$2 $3","1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[0-5]|4[0-3])",null,"$1 $2 $3"],["(7\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4","7",null,"$1 $2 $3 $4"],["(77)(\\\\d{2})(\\\\d{2})","$1-$2$3","7",null,"$1 $2 $3"],["(20)(\\\\d{2,3})(\\\\d{2})","$1-$2 $3","20",null,"$1 $2 $3"],["(9[034]\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{3})","$1-$2 $3 $4","9[034]",null,"$1 $2 $3 $4"],["(9[034]\\\\d)(\\\\d{4})","$1-$2","9[034]",null,"$1 $2"],["(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})","$1-$2 $3 $4 $5","25[245]|67[3-6]",null,"$1 $2 $3 $4 $5"]]]',
 "299": '["GL","00",null,null,null,null,"\\\\d{6}","[1-689]\\\\d{5}",[["(\\\\d{2})(\\\\d{2})(\\\\d{2})","$1 $2 $3",null,null]]]',
 "385": '["HR","00","0",null,null,"$NP$FG","\\\\d{6,9}","[1-7]\\\\d{5,8}|[89]\\\\d{6,8}",[["(1)(\\\\d{4})(\\\\d{3})","$1 $2 $3","1",null],["([2-5]\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3","[2-5]",null],["(9\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3","9",null],["(6[01])(\\\\d{2})(\\\\d{2,3})","$1 $2 $3","6[01]",null],["([67]\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3","[67]",null],["(80[01])(\\\\d{2})(\\\\d{2,3})","$1 $2 $3","8",null],["(80[01])(\\\\d{3})(\\\\d{3})","$1 $2 $3","8",null]]]',
 "670": '["TL","00",null,null,null,null,"\\\\d{7,8}","[2-489]\\\\d{6}|7\\\\d{6,7}",[["(\\\\d{3})(\\\\d{4})","$1 $2","[2-489]",null],["(\\\\d{4})(\\\\d{4})","$1 $2","7",null]]]',
 "258": '["MZ","00",null,null,null,null,"\\\\d{8,9}","[28]\\\\d{7,8}",[["([28]\\\\d)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3","2|8[2-7]",null],["(80\\\\d)(\\\\d{3})(\\\\d{3})","$1 $2 $3","80",null]]]',
 "359": '["BG","00","0",null,null,"$NP$FG","\\\\d{5,9}","[23567]\\\\d{5,7}|[489]\\\\d{6,8}",[["(2)(\\\\d)(\\\\d{2})(\\\\d{2})","$1 $2 $3 $4","2",null],["(2)(\\\\d{3})(\\\\d{3,4})","$1 $2 $3","2",null],["(\\\\d{3})(\\\\d{4})","$1 $2","43[124-7]|70[1-9]",null],["(\\\\d{3})(\\\\d{3})(\\\\d{2})","$1 $2 $3","43[124-7]|70[1-9]",null],["(\\\\d{3})(\\\\d{2})(\\\\d{3})","$1 $2 $3","[78]00",null],["(\\\\d{3})(\\\\d{3})(\\\\d{3})","$1 $2 $3","999",null],["(\\\\d{2})(\\\\d{3})(\\\\d{2,3})","$1 $2 $3","[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]",null],["(\\\\d{2})(\\\\d{3})(\\\\d{3,4})","$1 $2 $3","48|8[7-9]|9[08]",null]]]',
 "682": '["CK","00",null,null,null,null,"\\\\d{5}","[2-8]\\\\d{4}",[["(\\\\d{2})(\\\\d{3})","$1 $2",null,null]]]',
 "852": '["HK","00(?:[126-9]|30|5[09])?",null,null,null,null,"\\\\d{5,11}","[235-7]\\\\d{7}|8\\\\d{7,8}|9\\\\d{4,10}",[["(\\\\d{4})(\\\\d{4})","$1 $2","[235-7]|[89](?:0[1-9]|[1-9])",null],["(800)(\\\\d{3})(\\\\d{3})","$1 $2 $3","800",null],["(900)(\\\\d{2})(\\\\d{3})(\\\\d{3})","$1 $2 $3 $4","900",null],["(900)(\\\\d{2,5})","$1 $2","900",null]]]',
--- a/browser/extensions/formautofill/phonenumberutils/PhoneNumberNormalizer.jsm
+++ b/browser/extensions/formautofill/phonenumberutils/PhoneNumberNormalizer.jsm
@@ -2,19 +2,19 @@
  * 2.0. If a copy of the Apache License was not distributed with this file, You
  * can obtain one at https://www.apache.org/licenses/LICENSE-2.0 */
 
 // This library came from https://github.com/andreasgal/PhoneNumber.js but will
 // be further maintained by our own in Form Autofill codebase.
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["PhoneNumberNormalizer"];
+var EXPORTED_SYMBOLS = ["PhoneNumberNormalizer"];
 
-this.PhoneNumberNormalizer = (function() {
+var PhoneNumberNormalizer = (function() {
   const UNICODE_DIGITS = /[\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]/g;
   const VALID_ALPHA_PATTERN = /[a-zA-Z]/g;
   const LEADING_PLUS_CHARS_PATTERN = /^[+\uFF0B]+/g;
   const NON_DIALABLE_CHARS = /[^,#+\*\d]/g;
 
   // Map letters to numbers according to the ITU E.161 standard
   let E161 = {
     "a": 2, "b": 2, "c": 2,
--- a/browser/extensions/onboarding/OnboardingTelemetry.jsm
+++ b/browser/extensions/onboarding/OnboardingTelemetry.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["OnboardingTelemetry"];
+var EXPORTED_SYMBOLS = ["OnboardingTelemetry"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyModuleGetters(this, {
   PingCentre: "resource:///modules/PingCentre.jsm",
   Services: "resource://gre/modules/Services.jsm",
 });
 XPCOMUtils.defineLazyServiceGetter(this, "gUUIDGenerator",
   "@mozilla.org/uuid-generator;1", "nsIUUIDGenerator");
--- a/browser/extensions/onboarding/OnboardingTourType.jsm
+++ b/browser/extensions/onboarding/OnboardingTourType.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["OnboardingTourType"];
+var EXPORTED_SYMBOLS = ["OnboardingTourType"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 
 var OnboardingTourType = {
   /**
--- a/browser/extensions/pdfjs/content/PdfJsTelemetry.jsm
+++ b/browser/extensions/pdfjs/content/PdfJsTelemetry.jsm
@@ -11,21 +11,21 @@
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 /* eslint max-len: ["error", 100] */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["PdfJsTelemetry"];
+var EXPORTED_SYMBOLS = ["PdfJsTelemetry"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.PdfJsTelemetry = {
+var PdfJsTelemetry = {
   onViewerIsUsed() {
     let histogram = Services.telemetry.getHistogramById("PDF_VIEWER_USED");
     histogram.add(true);
   },
   onFallback() {
     let histogram = Services.telemetry.getHistogramById("PDF_VIEWER_FALLBACK_SHOWN");
     histogram.add(true);
   },
--- a/browser/extensions/pocket/content/AboutPocket.jsm
+++ b/browser/extensions/pocket/content/AboutPocket.jsm
@@ -85,9 +85,9 @@ XPCOMUtils.defineLazyGetter(AboutPocket,
                 "pocket-signup",
                 "{8548329d-00c4-234e-8f17-75026db3b56e}",
                 "About Pocket Signup",
                 Ci.nsIAboutModule.ALLOW_SCRIPT |
                 Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT |
                 Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT)
 );
 
-this.EXPORTED_SYMBOLS = ["AboutPocket"];
+var EXPORTED_SYMBOLS = ["AboutPocket"];
--- a/browser/extensions/pocket/content/Pocket.jsm
+++ b/browser/extensions/pocket/content/Pocket.jsm
@@ -1,15 +1,15 @@
   /* 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";
 
-this.EXPORTED_SYMBOLS = ["Pocket"];
+var EXPORTED_SYMBOLS = ["Pocket"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "BrowserUtils",
   "resource://gre/modules/BrowserUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "ReaderMode",
   "resource://gre/modules/ReaderMode.jsm");
--- a/browser/extensions/pocket/content/pktApi.jsm
+++ b/browser/extensions/pocket/content/pktApi.jsm
@@ -38,17 +38,17 @@
  *      premium_status:   Current premium status for logged in user if available
  *                        Can be 0 for no premium and 1 for premium
  *      latestSince:      Last timestamp a save happened
  *      tags:             All tags for logged in user
  *      usedTags:         All used tags from within the extension sorted by recency
  */
 
 const Cm = Components.manager;
-this.EXPORTED_SYMBOLS = ["pktApi"];
+var EXPORTED_SYMBOLS = ["pktApi"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
 var pktApi = (function() {
 
--- a/browser/extensions/shield-recipe-client/bootstrap.js
+++ b/browser/extensions/shield-recipe-client/bootstrap.js
@@ -12,17 +12,17 @@ ChromeUtils.defineModuleGetter(this, "Lo
   "resource://shield-recipe-client/lib/LogManager.jsm");
 ChromeUtils.defineModuleGetter(this, "ShieldRecipeClient",
   "resource://shield-recipe-client/lib/ShieldRecipeClient.jsm");
 ChromeUtils.defineModuleGetter(this, "PreferenceExperiments",
   "resource://shield-recipe-client/lib/PreferenceExperiments.jsm");
 
 // Act as both a normal bootstrap.js and a JS module so that we can test
 // startup methods without having to install/uninstall the add-on.
-this.EXPORTED_SYMBOLS = ["Bootstrap"];
+var EXPORTED_SYMBOLS = ["Bootstrap"];
 
 const REASON_APP_STARTUP = 1;
 const UI_AVAILABLE_NOTIFICATION = "sessionstore-windows-restored";
 const STARTUP_EXPERIMENT_PREFS_BRANCH = "extensions.shield-recipe-client.startupExperimentPrefs.";
 const PREF_LOGGING_LEVEL = "extensions.shield-recipe-client.logging.level";
 const BOOTSTRAP_LOGGER_NAME = "extensions.shield-recipe-client.bootstrap";
 const DEFAULT_PREFS = {
   "extensions.shield-recipe-client.api_url": "https://normandy.cdn.mozilla.net/api/v1",
@@ -41,17 +41,17 @@ const DEFAULT_PREFS = {
 
 // Logging
 const log = Log.repository.getLogger(BOOTSTRAP_LOGGER_NAME);
 log.addAppender(new Log.ConsoleAppender(new Log.BasicFormatter()));
 log.level = Services.prefs.getIntPref(PREF_LOGGING_LEVEL, Log.Level.Warn);
 
 let studyPrefsChanged = {};
 
-this.Bootstrap = {
+var Bootstrap = {
   initShieldPrefs(defaultPrefs) {
     const prefBranch = Services.prefs.getDefaultBranch("");
     for (const [name, value] of Object.entries(defaultPrefs)) {
       switch (typeof value) {
         case "string":
           prefBranch.setCharPref(name, value);
           break;
         case "number":
--- a/browser/extensions/shield-recipe-client/content/AboutPages.jsm
+++ b/browser/extensions/shield-recipe-client/content/AboutPages.jsm
@@ -12,17 +12,17 @@ ChromeUtils.defineModuleGetter(
 );
 ChromeUtils.defineModuleGetter(
   this, "AddonStudies", "resource://shield-recipe-client/lib/AddonStudies.jsm",
 );
 ChromeUtils.defineModuleGetter(
   this, "RecipeRunner", "resource://shield-recipe-client/lib/RecipeRunner.jsm",
 );
 
-this.EXPORTED_SYMBOLS = ["AboutPages"];
+var EXPORTED_SYMBOLS = ["AboutPages"];
 
 const SHIELD_LEARN_MORE_URL_PREF = "extensions.shield-recipe-client.shieldLearnMoreUrl";
 
 // Due to bug 1051238 frame scripts are cached forever, so we can't update them
 // as a restartless add-on. The Math.random() is the work around for this.
 const PROCESS_SCRIPT = (
   `resource://shield-recipe-client-content/shield-content-process.js?${Math.random()}`
 );
@@ -90,17 +90,17 @@ class AboutPage {
     Cm.QueryInterface(Ci.nsIComponentRegistrar).unregisterFactory(this.classId, this);
   }
 }
 AboutPage.prototype.QueryInterface = XPCOMUtils.generateQI([Ci.nsIAboutModule]);
 
 /**
  * The module exported by this file.
  */
-this.AboutPages = {
+var AboutPages = {
   async init() {
     // Load scripts in content processes and tabs
     Services.ppmm.loadProcessScript(PROCESS_SCRIPT, true);
     Services.mm.loadFrameScript(FRAME_SCRIPT, true);
 
     // Register about: pages and their listeners
     this.aboutStudies.register();
     this.aboutStudies.registerParentListeners();
--- a/browser/extensions/shield-recipe-client/lib/ActionSandboxManager.jsm
+++ b/browser/extensions/shield-recipe-client/lib/ActionSandboxManager.jsm
@@ -3,31 +3,31 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 ChromeUtils.import("resource://shield-recipe-client/lib/NormandyDriver.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/SandboxManager.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/LogManager.jsm");
 
-this.EXPORTED_SYMBOLS = ["ActionSandboxManager"];
+var EXPORTED_SYMBOLS = ["ActionSandboxManager"];
 
 const log = LogManager.getLogger("recipe-sandbox-manager");
 
 /**
  * An extension to SandboxManager that prepares a sandbox for executing
  * Normandy actions.
  *
  * Actions register a set of named callbacks, which this class makes available
  * for execution. This allows a single action script to define multiple,
  * independent steps that execute in isolated sandboxes.
  *
  * Callbacks are assumed to be async and must return Promises.
  */
-this.ActionSandboxManager = class extends SandboxManager {
+var ActionSandboxManager = class extends SandboxManager {
   constructor(actionScript) {
     super();
 
     // Prepare the sandbox environment
     const driver = new NormandyDriver(this);
     this.cloneIntoGlobal("sandboxedDriver", driver, {cloneFunctions: true});
     this.evalInSandbox(`
       // Shim old API for registering actions
--- a/browser/extensions/shield-recipe-client/lib/AddonStudies.jsm
+++ b/browser/extensions/shield-recipe-client/lib/AddonStudies.jsm
@@ -37,17 +37,17 @@ ChromeUtils.defineModuleGetter(this, "Ad
 ChromeUtils.defineModuleGetter(
   this, "CleanupManager", "resource://shield-recipe-client/lib/CleanupManager.jsm"
 );
 ChromeUtils.defineModuleGetter(this, "LogManager", "resource://shield-recipe-client/lib/LogManager.jsm");
 ChromeUtils.defineModuleGetter(this, "TelemetryEvents", "resource://shield-recipe-client/lib/TelemetryEvents.jsm");
 
 Cu.importGlobalProperties(["fetch"]); /* globals fetch */
 
-this.EXPORTED_SYMBOLS = ["AddonStudies"];
+var EXPORTED_SYMBOLS = ["AddonStudies"];
 
 const DB_NAME = "shield";
 const STORE_NAME = "addon-studies";
 const DB_OPTIONS = {
   version: 1,
   storage: "persistent",
 };
 const STUDY_ENDED_TOPIC = "shield-study-ended";
@@ -106,17 +106,17 @@ async function markAsEnded(db, study, re
   Services.obs.notifyObservers(study, STUDY_ENDED_TOPIC, `${study.recipeId}`);
   TelemetryEvents.sendEvent("unenroll", "addon_study", study.name, {
     addonId: study.addonId,
     addonVersion: study.addonVersion,
     reason,
   });
 }
 
-this.AddonStudies = {
+var AddonStudies = {
   /**
    * Test wrapper that temporarily replaces the stored studies with the given
    * ones. The original stored studies are restored upon completion.
    *
    * This is defined here instead of in test code since it needs to access the
    * getDatabase, which we don't expose to avoid outside modules relying on the
    * type of storage used for studies.
    *
--- a/browser/extensions/shield-recipe-client/lib/Addons.jsm
+++ b/browser/extensions/shield-recipe-client/lib/Addons.jsm
@@ -7,17 +7,17 @@
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager", "resource://gre/modules/AddonManager.jsm");
 ChromeUtils.defineModuleGetter(this, "Extension", "resource://gre/modules/Extension.jsm");
 ChromeUtils.defineModuleGetter(
   this, "CleanupManager", "resource://shield-recipe-client/lib/CleanupManager.jsm"
 );
 
-this.EXPORTED_SYMBOLS = ["Addons"];
+var EXPORTED_SYMBOLS = ["Addons"];
 
 /**
  * SafeAddons store info about an add-on. They are single-depth
  * objects to simplify cloning, and have no methods so they are safe
  * to pass to sandboxes and filter expressions.
  *
  * @typedef {Object} SafeAddon
  * @property {string} id
@@ -25,17 +25,17 @@ this.EXPORTED_SYMBOLS = ["Addons"];
  * @property {Date} installDate
  * @property {boolean} isActive
  * @property {string} name
  * @property {string} type
  *   "extension", "theme", etc.
  * @property {string} version
  */
 
-this.Addons = {
+var Addons = {
   /**
    * Get information about an installed add-on by ID.
    *
    * @param {string} addonId
    * @returns {SafeAddon?} Add-on with given ID, or null if not found.
    * @throws If addonId is not specified or not a string.
    */
   async get(addonId) {
--- a/browser/extensions/shield-recipe-client/lib/CleanupManager.jsm
+++ b/browser/extensions/shield-recipe-client/lib/CleanupManager.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AsyncShutdown", "resource://gre/modules/AsyncShutdown.jsm");
 
-this.EXPORTED_SYMBOLS = ["CleanupManager"];
+var EXPORTED_SYMBOLS = ["CleanupManager"];
 
 class CleanupManagerClass {
   constructor() {
     this.handlers = new Set();
     this.cleanupPromise = null;
   }
 
   addCleanupHandler(handler) {
@@ -43,9 +43,9 @@ class CleanupManagerClass {
         this.cleanupPromise,
       );
     }
 
     return this.cleanupPromise;
   }
 }
 
-this.CleanupManager = new CleanupManagerClass();
+var CleanupManager = new CleanupManagerClass();
--- a/browser/extensions/shield-recipe-client/lib/ClientEnvironment.jsm
+++ b/browser/extensions/shield-recipe-client/lib/ClientEnvironment.jsm
@@ -18,23 +18,23 @@ ChromeUtils.defineModuleGetter(
     "PreferenceExperiments",
     "resource://shield-recipe-client/lib/PreferenceExperiments.jsm"
 );
 ChromeUtils.defineModuleGetter(this, "Utils", "resource://shield-recipe-client/lib/Utils.jsm");
 ChromeUtils.defineModuleGetter(this, "Addons", "resource://shield-recipe-client/lib/Addons.jsm");
 
 const {generateUUID} = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
 
-this.EXPORTED_SYMBOLS = ["ClientEnvironment"];
+var EXPORTED_SYMBOLS = ["ClientEnvironment"];
 
 // Cached API request for client attributes that are determined by the Normandy
 // service.
 let _classifyRequest = null;
 
-this.ClientEnvironment = {
+var ClientEnvironment = {
   /**
    * Fetches information about the client that is calculated on the server,
    * like geolocation and the current time.
    *
    * The server request is made lazily and is cached for the entire browser
    * session.
    */
   async getClientClassification() {
--- a/browser/extensions/shield-recipe-client/lib/EventEmitter.jsm
+++ b/browser/extensions/shield-recipe-client/lib/EventEmitter.jsm
@@ -1,20 +1,20 @@
 /* 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";
 
 ChromeUtils.import("resource://shield-recipe-client/lib/LogManager.jsm");
 
-this.EXPORTED_SYMBOLS = ["EventEmitter"];
+var EXPORTED_SYMBOLS = ["EventEmitter"];
 
 const log = LogManager.getLogger("event-emitter");
 
-this.EventEmitter = function(sandboxManager) {
+var EventEmitter = function(sandboxManager) {
   const listeners = {};
 
   return {
     createSandboxedEmitter() {
       return sandboxManager.cloneInto({
         on: this.on.bind(this),
         off: this.off.bind(this),
         once: this.once.bind(this),
--- a/browser/extensions/shield-recipe-client/lib/FilterExpressions.jsm
+++ b/browser/extensions/shield-recipe-client/lib/FilterExpressions.jsm
@@ -5,34 +5,34 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/Sampling.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/PreferenceFilters.jsm");
 
 ChromeUtils.defineModuleGetter(this, "mozjexl", "resource://shield-recipe-client-vendor/mozjexl.js");
 
-this.EXPORTED_SYMBOLS = ["FilterExpressions"];
+var EXPORTED_SYMBOLS = ["FilterExpressions"];
 
 XPCOMUtils.defineLazyGetter(this, "jexl", () => {
   const jexl = new mozjexl.Jexl();
   jexl.addTransforms({
     date: dateString => new Date(dateString),
     stableSample: Sampling.stableSample,
     bucketSample: Sampling.bucketSample,
     preferenceValue: PreferenceFilters.preferenceValue,
     preferenceIsUserSet: PreferenceFilters.preferenceIsUserSet,
     preferenceExists: PreferenceFilters.preferenceExists,
     keys,
   });
   jexl.addBinaryOp("intersect", 40, operatorIntersect);
   return jexl;
 });
 
-this.FilterExpressions = {
+var FilterExpressions = {
   eval(expr, context = {}) {
     const onelineExpr = expr.replace(/[\t\n\r]/g, " ");
     return jexl.eval(onelineExpr, context);
   },
 };
 
 /**
  * Return an array of the given object's own keys (specifically, its enumerable
--- a/browser/extensions/shield-recipe-client/lib/Heartbeat.jsm
+++ b/browser/extensions/shield-recipe-client/lib/Heartbeat.jsm
@@ -10,17 +10,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/TelemetryController.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/CleanupManager.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/EventEmitter.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/LogManager.jsm");
 
 Cu.importGlobalProperties(["URL"]); /* globals URL */
 
-this.EXPORTED_SYMBOLS = ["Heartbeat"];
+var EXPORTED_SYMBOLS = ["Heartbeat"];
 
 const PREF_SURVEY_DURATION = "browser.uitour.surveyDuration";
 const NOTIFICATION_TIME = 3000;
 const HEARTBEAT_CSS_URI = Services.io.newURI("resource://shield-recipe-client/skin/shared/Heartbeat.css");
 const HEARTBEAT_CSS_URI_OSX = Services.io.newURI("resource://shield-recipe-client/skin/osx/Heartbeat.css");
 
 const log = LogManager.getLogger("heartbeat");
 const windowsWithInjectedCss = new WeakSet();
@@ -72,17 +72,17 @@ CleanupManager.addCleanupHandler(() => {
  *        An ID for the survey, reflected in the Telemetry ping.
  * @param {Number} [options.surveyVersion]
  *        Survey's version number, reflected in the Telemetry ping.
  * @param {boolean} [options.testing]
  *        Whether this is a test survey, reflected in the Telemetry ping.
  * @param {String} [options.postAnswerURL=null]
  *        The url to visit after the user answers the question.
  */
-this.Heartbeat = class {
+var Heartbeat = class {
   constructor(chromeWindow, sandboxManager, options) {
     if (typeof options.flowId !== "string") {
       throw new Error("flowId must be a string");
     }
 
     if (!options.flowId) {
       throw new Error("flowId must not be an empty string");
     }
--- a/browser/extensions/shield-recipe-client/lib/LogManager.jsm
+++ b/browser/extensions/shield-recipe-client/lib/LogManager.jsm
@@ -1,22 +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/. */
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 
-this.EXPORTED_SYMBOLS = ["LogManager"];
+var EXPORTED_SYMBOLS = ["LogManager"];
 
 const ROOT_LOGGER_NAME = "extensions.shield-recipe-client";
 let rootLogger = null;
 
-this.LogManager = {
+var LogManager = {
   /**
    * Configure the root logger for the Recipe Client. Must be called at
    * least once before using any loggers created via getLogger.
    * @param {Number} loggingLevel
    *        Logging level to use as defined in Log.jsm
    */
   configure(loggingLevel) {
     if (!rootLogger) {
--- a/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm
+++ b/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm
@@ -8,24 +8,24 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://shield-recipe-client/lib/LogManager.jsm");
 
 ChromeUtils.defineModuleGetter(
   this, "CanonicalJSON", "resource://gre/modules/CanonicalJSON.jsm");
 
 Cu.importGlobalProperties(["fetch", "URL"]); /* globals fetch, URL */
 
-this.EXPORTED_SYMBOLS = ["NormandyApi"];
+var EXPORTED_SYMBOLS = ["NormandyApi"];
 
 const log = LogManager.getLogger("normandy-api");
 const prefs = Services.prefs.getBranch("extensions.shield-recipe-client.");
 
 let indexPromise = null;
 
-this.NormandyApi = {
+var NormandyApi = {
   InvalidSignatureError: class InvalidSignatureError extends Error {},
 
   clearIndexCache() {
     indexPromise = null;
   },
 
   apiCall(method, endpoint, data = {}) {
     const url = new URL(endpoint);
--- a/browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm
+++ b/browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm
@@ -20,22 +20,22 @@ ChromeUtils.import("resource://shield-re
 ChromeUtils.import("resource://shield-recipe-client/lib/Sampling.jsm");
 
 ChromeUtils.defineModuleGetter(this, "UpdateUtils", "resource://gre/modules/UpdateUtils.jsm");
 ChromeUtils.defineModuleGetter(
   this, "AddonStudies", "resource://shield-recipe-client/lib/AddonStudies.jsm");
 
 const {generateUUID} = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
 
-this.EXPORTED_SYMBOLS = ["NormandyDriver"];
+var EXPORTED_SYMBOLS = ["NormandyDriver"];
 
 const log = LogManager.getLogger("normandy-driver");
 const actionLog = LogManager.getLogger("normandy-driver.actions");
 
-this.NormandyDriver = function(sandboxManager) {
+var NormandyDriver = function(sandboxManager) {
   if (!sandboxManager) {
     throw new Error("sandboxManager is required");
   }
   const {sandbox} = sandboxManager;
 
   return {
     testing: false,
 
--- a/browser/extensions/shield-recipe-client/lib/PreferenceExperiments.jsm
+++ b/browser/extensions/shield-recipe-client/lib/PreferenceExperiments.jsm
@@ -57,17 +57,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "CleanupManager", "resource://shield-recipe-client/lib/CleanupManager.jsm");
 ChromeUtils.defineModuleGetter(this, "JSONFile", "resource://gre/modules/JSONFile.jsm");
 ChromeUtils.defineModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm");
 ChromeUtils.defineModuleGetter(this, "LogManager", "resource://shield-recipe-client/lib/LogManager.jsm");
 ChromeUtils.defineModuleGetter(this, "TelemetryEnvironment", "resource://gre/modules/TelemetryEnvironment.jsm");
 ChromeUtils.defineModuleGetter(this, "TelemetryEvents", "resource://shield-recipe-client/lib/TelemetryEvents.jsm");
 
-this.EXPORTED_SYMBOLS = ["PreferenceExperiments"];
+var EXPORTED_SYMBOLS = ["PreferenceExperiments"];
 
 const EXPERIMENT_FILE = "shield-preference-experiments.json";
 const STARTUP_EXPERIMENT_PREFS_BRANCH = "extensions.shield-recipe-client.startupExperimentPrefs.";
 
 const MAX_EXPERIMENT_TYPE_LENGTH = 20; // enforced by TelemetryEnvironment
 const EXPERIMENT_TYPE_PREFIX = "normandy-";
 const MAX_EXPERIMENT_SUBTYPE_LENGTH = MAX_EXPERIMENT_TYPE_LENGTH - EXPERIMENT_TYPE_PREFIX.length;
 
@@ -144,17 +144,17 @@ function setPref(prefBranch, prefName, p
       prefBranch.setIntPref(prefName, prefValue);
       break;
 
     default:
       throw new TypeError(`Unexpected preference type (${prefType}) for ${prefName}.`);
   }
 }
 
-this.PreferenceExperiments = {
+var PreferenceExperiments = {
   /**
    * Update the the experiment storage with changes that happened during early startup.
    * @param {object} studyPrefsChanged Map from pref name to previous pref value
    */
   async recordOriginalValues(studyPrefsChanged) {
     const store = await ensureStorage();
 
     for (const experiment of Object.values(store.data)) {
--- a/browser/extensions/shield-recipe-client/lib/PreferenceFilters.jsm
+++ b/browser/extensions/shield-recipe-client/lib/PreferenceFilters.jsm
@@ -1,19 +1,19 @@
 /* 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";
 
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 
-this.EXPORTED_SYMBOLS = ["PreferenceFilters"];
+var EXPORTED_SYMBOLS = ["PreferenceFilters"];
 
-this.PreferenceFilters = {
+var PreferenceFilters = {
   // Compare the value of a given preference. Takes a `default` value as an
   // optional argument to pass into `Preferences.get`.
   preferenceValue(prefKey, defaultValue) {
     return Preferences.get(prefKey, defaultValue);
   },
 
   // Compare if the preference is user set.
   preferenceIsUserSet(prefKey) {
--- a/browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm
+++ b/browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm
@@ -30,17 +30,17 @@ ChromeUtils.defineModuleGetter(this, "Ac
                                "resource://shield-recipe-client/lib/ActionSandboxManager.jsm");
 ChromeUtils.defineModuleGetter(this, "AddonStudies",
                                "resource://shield-recipe-client/lib/AddonStudies.jsm");
 ChromeUtils.defineModuleGetter(this, "Uptake",
                                "resource://shield-recipe-client/lib/Uptake.jsm");
 
 Cu.importGlobalProperties(["fetch"]);
 
-this.EXPORTED_SYMBOLS = ["RecipeRunner"];
+var EXPORTED_SYMBOLS = ["RecipeRunner"];
 
 const log = LogManager.getLogger("recipe-runner");
 const TIMER_NAME = "recipe-client-addon-run";
 const PREF_CHANGED_TOPIC = "nsPref:changed";
 
 const TELEMETRY_ENABLED_PREF = "datareporting.healthreport.uploadEnabled";
 
 const SHIELD_PREF_PREFIX = "extensions.shield-recipe-client";
@@ -53,17 +53,17 @@ const LAZY_CLASSIFY_PREF = `${SHIELD_PRE
 
 const PREFS_TO_WATCH = [
   RUN_INTERVAL_PREF,
   TELEMETRY_ENABLED_PREF,
   SHIELD_ENABLED_PREF,
   API_URL_PREF,
 ];
 
-this.RecipeRunner = {
+var RecipeRunner = {
   async init() {
     this.enabled = null;
     this.checkPrefs(); // sets this.enabled
     this.watchPrefs();
 
     // Run if enabled immediately on first run, or if dev mode is enabled.
     const firstRun = Services.prefs.getBoolPref(FIRST_RUN_PREF);
     const devMode = Services.prefs.getBoolPref(DEV_MODE_PREF);
--- a/browser/extensions/shield-recipe-client/lib/Sampling.jsm
+++ b/browser/extensions/shield-recipe-client/lib/Sampling.jsm
@@ -1,23 +1,23 @@
 /* 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";
 
 Cu.importGlobalProperties(["crypto", "TextEncoder"]);
 
-this.EXPORTED_SYMBOLS = ["Sampling"];
+var EXPORTED_SYMBOLS = ["Sampling"];
 
 const hashBits = 48;
 const hashLength = hashBits / 4; // each hexadecimal digit represents 4 bits
 const hashMultiplier = Math.pow(2, hashBits) - 1;
 
-this.Sampling = {
+var Sampling = {
   /**
    * Map from the range [0, 1] to [0, 2^48].
    * @param  {number} frac A float from 0.0 to 1.0.
    * @return {string} A 48 bit number represented in hex, padded to 12 characters.
    */
   fractionToKey(frac) {
     if (frac < 0 || frac > 1) {
       throw new Error(`frac must be between 0 and 1 inclusive (got ${frac})`);
--- a/browser/extensions/shield-recipe-client/lib/SandboxManager.jsm
+++ b/browser/extensions/shield-recipe-client/lib/SandboxManager.jsm
@@ -1,21 +1,21 @@
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.EXPORTED_SYMBOLS = ["SandboxManager"];
+var EXPORTED_SYMBOLS = ["SandboxManager"];
 
 /**
  * A wrapper class with helper methods for manipulating a sandbox.
  *
  * Along with convenient utility methods, SandboxManagers maintain a list of
  * "holds", which prevent the sandbox from being nuked until all registered
  * holds are removed. This allows sandboxes to trigger async operations and
  * automatically nuke themselves when they're done.
  */
-this.SandboxManager = class {
+var SandboxManager = class {
   constructor() {
     this._sandbox = new Cu.Sandbox(null, {
       wantComponents: false,
       wantGlobalProperties: ["URL", "URLSearchParams"],
     });
     this.holds = [];
   }
 
--- a/browser/extensions/shield-recipe-client/lib/ShieldPreferences.jsm
+++ b/browser/extensions/shield-recipe-client/lib/ShieldPreferences.jsm
@@ -11,27 +11,27 @@ ChromeUtils.defineModuleGetter(
 );
 ChromeUtils.defineModuleGetter(
   this, "AddonStudies", "resource://shield-recipe-client/lib/AddonStudies.jsm"
 );
 ChromeUtils.defineModuleGetter(
   this, "CleanupManager", "resource://shield-recipe-client/lib/CleanupManager.jsm"
 );
 
-this.EXPORTED_SYMBOLS = ["ShieldPreferences"];
+var EXPORTED_SYMBOLS = ["ShieldPreferences"];
 
 const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 const NS_PREFBRANCH_PREFCHANGE_TOPIC_ID = "nsPref:changed"; // from modules/libpref/nsIPrefBranch.idl
 const FHR_UPLOAD_ENABLED_PREF = "datareporting.healthreport.uploadEnabled";
 const OPT_OUT_STUDIES_ENABLED_PREF = "app.shield.optoutstudies.enabled";
 
 /**
  * Handles Shield-specific preferences, including their UI.
  */
-this.ShieldPreferences = {
+var ShieldPreferences = {
   init() {
     // If the FHR pref was disabled since our last run, disable opt-out as well.
     if (!Services.prefs.getBoolPref(FHR_UPLOAD_ENABLED_PREF)) {
       Services.prefs.setBoolPref(OPT_OUT_STUDIES_ENABLED_PREF, false);
     }
 
     // Watch for changes to the FHR pref
     Services.prefs.addObserver(FHR_UPLOAD_ENABLED_PREF, this);
--- a/browser/extensions/shield-recipe-client/lib/ShieldRecipeClient.jsm
+++ b/browser/extensions/shield-recipe-client/lib/ShieldRecipeClient.jsm
@@ -19,29 +19,29 @@ ChromeUtils.defineModuleGetter(this, "Ab
   "resource://shield-recipe-client-content/AboutPages.jsm");
 ChromeUtils.defineModuleGetter(this, "ShieldPreferences",
   "resource://shield-recipe-client/lib/ShieldPreferences.jsm");
 ChromeUtils.defineModuleGetter(this, "AddonStudies",
   "resource://shield-recipe-client/lib/AddonStudies.jsm");
 ChromeUtils.defineModuleGetter(this, "TelemetryEvents",
   "resource://shield-recipe-client/lib/TelemetryEvents.jsm");
 
-this.EXPORTED_SYMBOLS = ["ShieldRecipeClient"];
+var EXPORTED_SYMBOLS = ["ShieldRecipeClient"];
 
 const PREF_LOGGING_LEVEL = "extensions.shield-recipe-client.logging.level";
 const SHIELD_INIT_NOTIFICATION = "shield-init-complete";
 
 let log = null;
 
 /**
  * Handles startup and shutdown of the entire add-on. Bootsrap.js defers to this
  * module for most tasks so that we can more easily test startup and shutdown
  * (bootstrap.js is difficult to import in tests).
  */
-this.ShieldRecipeClient = {
+var ShieldRecipeClient = {
   async startup() {
     // Setup logging and listen for changes to logging prefs
     LogManager.configure(Services.prefs.getIntPref(PREF_LOGGING_LEVEL));
     Services.prefs.addObserver(PREF_LOGGING_LEVEL, LogManager.configure);
     CleanupManager.addCleanupHandler(
       () => Services.prefs.removeObserver(PREF_LOGGING_LEVEL, LogManager.configure),
     );
     log = LogManager.getLogger("bootstrap");
--- a/browser/extensions/shield-recipe-client/lib/Storage.jsm
+++ b/browser/extensions/shield-recipe-client/lib/Storage.jsm
@@ -4,27 +4,27 @@
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "JSONFile", "resource://gre/modules/JSONFile.jsm");
 ChromeUtils.defineModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm");
 
-this.EXPORTED_SYMBOLS = ["Storage"];
+var EXPORTED_SYMBOLS = ["Storage"];
 
 // Lazy-load JSON file that backs Storage instances.
 XPCOMUtils.defineLazyGetter(this, "lazyStore", async function() {
   const path = OS.Path.join(OS.Constants.Path.profileDir, "shield-recipe-client.json");
   const store = new JSONFile({path});
   await store.load();
   return store;
 });
 
-this.Storage = class {
+var Storage = class {
   constructor(prefix) {
     this.prefix = prefix;
   }
 
   /**
    * Clear ALL storage data and save to the disk.
    */
   static async clearAllStorage() {
--- a/browser/extensions/shield-recipe-client/lib/TelemetryEvents.jsm
+++ b/browser/extensions/shield-recipe-client/lib/TelemetryEvents.jsm
@@ -1,17 +1,17 @@
 /* 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";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.EXPORTED_SYMBOLS = ["TelemetryEvents"];
+var EXPORTED_SYMBOLS = ["TelemetryEvents"];
 
 const TELEMETRY_CATEGORY = "normandy";
 
 const TelemetryEvents = {
   init() {
     Services.telemetry.registerEvents(TELEMETRY_CATEGORY, {
       enroll: {
         methods: ["enroll"],
--- a/browser/extensions/shield-recipe-client/lib/Uptake.jsm
+++ b/browser/extensions/shield-recipe-client/lib/Uptake.jsm
@@ -4,21 +4,21 @@
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(
   this, "UptakeTelemetry", "resource://services-common/uptake-telemetry.js");
 
-this.EXPORTED_SYMBOLS = ["Uptake"];
+var EXPORTED_SYMBOLS = ["Uptake"];
 
 const SOURCE_PREFIX = "shield-recipe-client";
 
-this.Uptake = {
+var Uptake = {
   // Action uptake
   ACTION_NETWORK_ERROR: UptakeTelemetry.STATUS.NETWORK_ERROR,
   ACTION_PRE_EXECUTION_ERROR: UptakeTelemetry.STATUS.CUSTOM_1_ERROR,
   ACTION_POST_EXECUTION_ERROR: UptakeTelemetry.STATUS.CUSTOM_2_ERROR,
   ACTION_SERVER_ERROR: UptakeTelemetry.STATUS.SERVER_ERROR,
   ACTION_SUCCESS: UptakeTelemetry.STATUS.SUCCESS,
 
   // Per-recipe uptake
--- a/browser/extensions/shield-recipe-client/lib/Utils.jsm
+++ b/browser/extensions/shield-recipe-client/lib/Utils.jsm
@@ -1,21 +1,21 @@
 /* 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";
 
 ChromeUtils.import("resource://shield-recipe-client/lib/LogManager.jsm");
 
-this.EXPORTED_SYMBOLS = ["Utils"];
+var EXPORTED_SYMBOLS = ["Utils"];
 
 const log = LogManager.getLogger("utils");
 
-this.Utils = {
+var Utils = {
   /**
    * Convert an array of objects to an object. Each item is keyed by the value
    * of the given key on the item.
    *
    * > list = [{foo: "bar"}, {foo: "baz"}]
    * > keyBy(list, "foo") == {bar: {foo: "bar"}, baz: {foo: "baz"}}
    *
    * @param  {Array} list
--- a/browser/extensions/webcompat-reporter/content/WebCompatReporter.jsm
+++ b/browser/extensions/webcompat-reporter/content/WebCompatReporter.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["WebCompatReporter"];
+var EXPORTED_SYMBOLS = ["WebCompatReporter"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PageActions",
   "resource:///modules/PageActions.jsm");
 
--- a/browser/extensions/webcompat/content/data/ua_overrides.jsm
+++ b/browser/extensions/webcompat/content/data/ua_overrides.jsm
@@ -52,9 +52,9 @@ const UAOverrides = [
     uriMatcher: (uri) => uri.includes("webcompat-ua-dummy.schub.io"),
     uaTransformer: (originalUA) => {
       let prefix = originalUA.substr(0, originalUA.indexOf(")") + 1);
       return `${prefix} AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36`;
     }
   }
 ];
 
-this.EXPORTED_SYMBOLS = ["UAOverrides"]; /* exported UAOverrides */
+var EXPORTED_SYMBOLS = ["UAOverrides"]; /* exported UAOverrides */
--- a/browser/extensions/webcompat/content/lib/ua_overrider.jsm
+++ b/browser/extensions/webcompat/content/lib/ua_overrider.jsm
@@ -85,9 +85,9 @@ class UAOverrider {
         }
       }
     }
 
     return false;
   }
 }
 
-this.EXPORTED_SYMBOLS = ["UAOverrider"]; /* exported UAOverrider */
+var EXPORTED_SYMBOLS = ["UAOverrider"]; /* exported UAOverrider */
--- a/browser/modules/AboutHome.jsm
+++ b/browser/modules/AboutHome.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "AboutHomeUtils", "AboutHome" ];
+var EXPORTED_SYMBOLS = [ "AboutHomeUtils", "AboutHome" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
 ChromeUtils.defineModuleGetter(this, "AutoMigrate",
   "resource:///modules/AutoMigrate.jsm");
@@ -19,17 +19,17 @@ ChromeUtils.defineModuleGetter(this, "Pr
   "resource://gre/modules/PrivateBrowsingUtils.jsm");
 
 // Url to fetch snippets, in the urlFormatter service format.
 const SNIPPETS_URL_PREF = "browser.aboutHomeSnippets.updateUrl";
 
 // Should be bumped up if the snippets content format changes.
 const STARTPAGE_VERSION = 4;
 
-this.AboutHomeUtils = {
+var AboutHomeUtils = {
   get snippetsVersion() {
     return STARTPAGE_VERSION;
   },
 
   /*
    * showKnowYourRights - Determines if the user should be shown the
    * about:rights notification. The notification should *not* be shown if
    * we've already shown the current version, or if the override pref says to
--- a/browser/modules/AboutNewTab.jsm
+++ b/browser/modules/AboutNewTab.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "AboutNewTab" ];
+var EXPORTED_SYMBOLS = [ "AboutNewTab" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AutoMigrate",
   "resource:///modules/AutoMigrate.jsm");
 ChromeUtils.defineModuleGetter(this, "NewTabUtils",
   "resource://gre/modules/NewTabUtils.jsm");
--- a/browser/modules/AttributionCode.jsm
+++ b/browser/modules/AttributionCode.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AttributionCode"];
+var EXPORTED_SYMBOLS = ["AttributionCode"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
 ChromeUtils.defineModuleGetter(this, "OS",
   "resource://gre/modules/osfile.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
--- a/browser/modules/BrowserErrorReporter.jsm
+++ b/browser/modules/BrowserErrorReporter.jsm
@@ -7,17 +7,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Log", "resource://gre/modules/Log.jsm");
 ChromeUtils.defineModuleGetter(this, "UpdateUtils", "resource://gre/modules/UpdateUtils.jsm");
 
 Cu.importGlobalProperties(["fetch", "URL"]);
 
-this.EXPORTED_SYMBOLS = ["BrowserErrorReporter"];
+var EXPORTED_SYMBOLS = ["BrowserErrorReporter"];
 
 const ERROR_PREFIX_RE = /^[^\W]+:/m;
 const PREF_ENABLED = "browser.chrome.errorReporter.enabled";
 const PREF_LOG_LEVEL = "browser.chrome.errorReporter.logLevel";
 const PREF_PROJECT_ID = "browser.chrome.errorReporter.projectId";
 const PREF_PUBLIC_KEY = "browser.chrome.errorReporter.publicKey";
 const PREF_SAMPLE_RATE = "browser.chrome.errorReporter.sampleRate";
 const PREF_SUBMIT_URL = "browser.chrome.errorReporter.submitUrl";
--- a/browser/modules/BrowserUITelemetry.jsm
+++ b/browser/modules/BrowserUITelemetry.jsm
@@ -1,15 +1,15 @@
 // 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";
 
-this.EXPORTED_SYMBOLS = ["BrowserUITelemetry"];
+var EXPORTED_SYMBOLS = ["BrowserUITelemetry"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
 ChromeUtils.defineModuleGetter(this, "UITelemetry",
   "resource://gre/modules/UITelemetry.jsm");
@@ -159,17 +159,17 @@ const WINDOW_DURATION_MAP = new WeakMap(
 // Default bucket name, when no other bucket is active.
 const BUCKET_DEFAULT = "__DEFAULT__";
 // Bucket prefix, for named buckets.
 const BUCKET_PREFIX = "bucket_";
 // Standard separator to use between different parts of a bucket name, such
 // as primary name and the time step string.
 const BUCKET_SEPARATOR = "|";
 
-this.BrowserUITelemetry = {
+var BrowserUITelemetry = {
   init() {
     UITelemetry.addSimpleMeasureFunction("toolbars",
                                          this.getToolbarMeasures.bind(this));
     UITelemetry.addSimpleMeasureFunction("contextmenu",
                                          this.getContextMenuInfo.bind(this));
     // Ensure that UITour.jsm remains lazy-loaded, yet always registers its
     // simple measure function with UITelemetry.
     UITelemetry.addSimpleMeasureFunction("UITour",
--- a/browser/modules/BrowserUsageTelemetry.jsm
+++ b/browser/modules/BrowserUsageTelemetry.jsm
@@ -1,16 +1,16 @@
 /* -*- js-indent-level: 2; indent-tabs-mode: nil -*- */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "BrowserUsageTelemetry",
   "URLBAR_SELECTED_RESULT_TYPES",
   "URLBAR_SELECTED_RESULT_METHODS",
   "MINIMUM_TAB_COUNT_INTERVAL_MS",
  ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
--- a/browser/modules/CastingApps.jsm
+++ b/browser/modules/CastingApps.jsm
@@ -1,14 +1,14 @@
 // -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
 /* 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";
-this.EXPORTED_SYMBOLS = ["CastingApps"];
+var EXPORTED_SYMBOLS = ["CastingApps"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/SimpleServiceDiscovery.jsm");
 
 
 var CastingApps = {
   _sendEventToVideo(element, data) {
     let event = element.ownerDocument.createEvent("CustomEvent");
--- a/browser/modules/ContentClick.jsm
+++ b/browser/modules/ContentClick.jsm
@@ -1,16 +1,16 @@
 /* -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ContentClick" ];
+var EXPORTED_SYMBOLS = [ "ContentClick" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PlacesUIUtils",
                                "resource:///modules/PlacesUIUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
                                "resource://gre/modules/PrivateBrowsingUtils.jsm");
--- a/browser/modules/ContentCrashHandlers.jsm
+++ b/browser/modules/ContentCrashHandlers.jsm
@@ -1,17 +1,17 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "TabCrashHandler",
-                          "PluginCrashReporter",
-                          "UnsubmittedCrashHandler" ];
+var EXPORTED_SYMBOLS = [ "TabCrashHandler",
+                         "PluginCrashReporter",
+                         "UnsubmittedCrashHandler" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "CrashSubmit",
   "resource://gre/modules/CrashSubmit.jsm");
 ChromeUtils.defineModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
@@ -69,17 +69,17 @@ class BrowserWeakMap extends WeakMap {
   delete(browser) {
     if (browser.permanentKey) {
       return super.delete(browser.permanentKey);
     }
     return super.delete(browser);
   }
 }
 
-this.TabCrashHandler = {
+var TabCrashHandler = {
   _crashedTabCount: 0,
   childMap: new Map(),
   browserMap: new BrowserWeakMap(),
   unseenCrashedChildIDs: [],
   crashedBrowserQueues: new Map(),
 
   get prefs() {
     delete this.prefs;
@@ -567,17 +567,17 @@ this.TabCrashHandler = {
 
 /**
  * This component is responsible for scanning the pending
  * crash report directory for reports, and (if enabled), to
  * prompt the user to submit those reports. It might also
  * submit those reports automatically without prompting if
  * the user has opted in.
  */
-this.UnsubmittedCrashHandler = {
+var UnsubmittedCrashHandler = {
   get prefs() {
     delete this.prefs;
     return this.prefs =
       Services.prefs.getBranch("browser.crashReports.unsubmittedCheck.");
   },
 
   get enabled() {
     return this.prefs.getBoolPref("enabled");
@@ -926,17 +926,17 @@ this.UnsubmittedCrashHandler = {
         extraExtraKeyVals: {
           "SubmittedFromInfobar": true,
         },
       }).catch(Cu.reportError);
     }
   },
 };
 
-this.PluginCrashReporter = {
+var PluginCrashReporter = {
   /**
    * Makes the PluginCrashReporter ready to hear about and
    * submit crash reports.
    */
   init() {
     if (this.initialized) {
       return;
     }
--- a/browser/modules/ContentLinkHandler.jsm
+++ b/browser/modules/ContentLinkHandler.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ContentLinkHandler" ];
+var EXPORTED_SYMBOLS = [ "ContentLinkHandler" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Feeds",
   "resource:///modules/Feeds.jsm");
 ChromeUtils.defineModuleGetter(this, "BrowserUtils",
   "resource://gre/modules/BrowserUtils.jsm");
@@ -259,17 +259,17 @@ function handleFaviconLink(aLink, aIsRic
     let timer = setTimeout(() => faviconTimeoutCallback(aFaviconLoads, pageUrl, aChromeGlobal),
                                                         FAVICON_PARSING_TIMEOUT);
     let load = { timer, iconInfos: [iconInfo] };
     aFaviconLoads.set(pageUrl, load);
   }
   return true;
 }
 
-this.ContentLinkHandler = {
+var ContentLinkHandler = {
   init(chromeGlobal) {
     const faviconLoads = new Map();
     chromeGlobal.addEventListener("DOMLinkAdded", event => {
       this.onLinkEvent(event, chromeGlobal, faviconLoads);
     });
     chromeGlobal.addEventListener("DOMLinkChanged", event => {
       this.onLinkEvent(event, chromeGlobal, faviconLoads);
     });
--- a/browser/modules/ContentMetaHandler.jsm
+++ b/browser/modules/ContentMetaHandler.jsm
@@ -63,25 +63,25 @@ function checkLoadURIStr(aURL) {
     let principal = ssm.createNullPrincipal({});
     ssm.checkLoadURIStrWithPrincipal(principal, aURL.href, ssm.DISALLOW_INHERIT_PRINCIPAL);
   } catch (e) {
     return false;
   }
   return true;
 }
 
-this.EXPORTED_SYMBOLS = [ "ContentMetaHandler" ];
+var EXPORTED_SYMBOLS = [ "ContentMetaHandler" ];
 
 /*
  * This listens to DOMMetaAdded events and collects relevant metadata about the
  * meta tag received. Then, it sends the metadata gathered from the meta tags
  * and the url of the page as it's payload to be inserted into moz_places.
  */
 
-this.ContentMetaHandler = {
+var ContentMetaHandler = {
   init(chromeGlobal) {
     // Store a locally-scoped (for this chromeGlobal) mapping of the best
     // description and preview image collected so far for a given URL
     const metaTags = new Map();
     chromeGlobal.addEventListener("DOMMetaAdded", event => {
       const metaTag = event.originalTarget;
       const window = metaTag.ownerGlobal;
 
--- a/browser/modules/ContentSearch.jsm
+++ b/browser/modules/ContentSearch.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "ContentSearch",
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
@@ -81,17 +81,17 @@ const MAX_SUGGESTIONS = 6;
  *     Sent in reply to GetSuggestions.
  *     data: see _onMessageGetSuggestions
  *   SuggestionsCancelled
  *     Sent in reply to GetSuggestions when pending GetSuggestions events are
  *     cancelled.
  *     data: null
  */
 
-this.ContentSearch = {
+var ContentSearch = {
 
   // Inbound events are queued and processed in FIFO order instead of handling
   // them immediately, which would result in non-FIFO responses due to the
   // asynchrononicity added by converting image data URIs to ArrayBuffers.
   _eventQueue: [],
   _currentEventPromise: null,
 
   // This is used to handle search suggestions.  It maps xul:browsers to objects
--- a/browser/modules/ContentWebRTC.jsm
+++ b/browser/modules/ContentWebRTC.jsm
@@ -1,25 +1,25 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ContentWebRTC" ];
+var EXPORTED_SYMBOLS = [ "ContentWebRTC" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "MediaManagerService",
                                    "@mozilla.org/mediaManagerService;1",
                                    "nsIMediaManagerService");
 
 const kBrowserURL = "chrome://browser/content/browser.xul";
 
-this.ContentWebRTC = {
+var ContentWebRTC = {
   // Called only for 'unload' to remove pending gUM prompts in reloaded frames.
   handleEvent(aEvent) {
     let contentWindow = aEvent.target.defaultView;
     let mm = getMessageManagerForWindow(contentWindow);
     for (let key of contentWindow.pendingGetUserMediaRequests.keys()) {
       mm.sendAsyncMessage("webrtc:CancelRequest", key);
     }
     for (let key of contentWindow.pendingPeerConnectionRequests.keys()) {
--- a/browser/modules/ContextMenu.jsm
+++ b/browser/modules/ContextMenu.jsm
@@ -1,17 +1,17 @@
 /* -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ts=2 sw=2 sts=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ContextMenu"];
+var EXPORTED_SYMBOLS = ["ContextMenu"];
 
 Cu.importGlobalProperties(["URL"]);
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   E10SUtils: "resource://gre/modules/E10SUtils.jsm",
--- a/browser/modules/DirectoryLinksProvider.jsm
+++ b/browser/modules/DirectoryLinksProvider.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["DirectoryLinksProvider"];
+var EXPORTED_SYMBOLS = ["DirectoryLinksProvider"];
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "OS",
   "resource://gre/modules/osfile.jsm");
--- a/browser/modules/ExtensionsUI.jsm
+++ b/browser/modules/ExtensionsUI.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ExtensionsUI"];
+var EXPORTED_SYMBOLS = ["ExtensionsUI"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/EventEmitter.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager",
                                "resource://gre/modules/AddonManager.jsm");
 ChromeUtils.defineModuleGetter(this, "AddonManagerPrivate",
                                "resource://gre/modules/AddonManager.jsm");
@@ -26,17 +26,17 @@ XPCOMUtils.defineLazyPreferenceGetter(th
 
 const DEFAULT_EXTENSION_ICON = "chrome://mozapps/skin/extensions/extensionGeneric.svg";
 
 const BROWSER_PROPERTIES = "chrome://browser/locale/browser.properties";
 const BRAND_PROPERTIES = "chrome://branding/locale/brand.properties";
 
 const HTML_NS = "http://www.w3.org/1999/xhtml";
 
-this.ExtensionsUI = {
+var ExtensionsUI = {
   sideloaded: new Set(),
   updates: new Set(),
   sideloadListener: null,
   histogram: null,
 
   async init() {
     this.histogram = Services.telemetry.getHistogramById("EXTENSION_INSTALL_PROMPT_RESULT");
 
--- a/browser/modules/Feeds.jsm
+++ b/browser/modules/Feeds.jsm
@@ -1,25 +1,25 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "Feeds" ];
+var EXPORTED_SYMBOLS = [ "Feeds" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "BrowserUtils",
                                "resource://gre/modules/BrowserUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "RecentWindow",
                                "resource:///modules/RecentWindow.jsm");
 
-this.Feeds = {
+var Feeds = {
   // Listeners are added in nsBrowserGlue.js
   receiveMessage(aMessage) {
     let data = aMessage.data;
     switch (aMessage.name) {
       case "WCCR:registerProtocolHandler": {
         let registrar = Cc["@mozilla.org/embeddor.implemented/web-content-handler-registrar;1"].
                           getService(Ci.nsIWebContentHandlerRegistrar);
         registrar.registerProtocolHandler(data.protocol, data.uri, data.title,
--- a/browser/modules/FormSubmitObserver.jsm
+++ b/browser/modules/FormSubmitObserver.jsm
@@ -4,17 +4,17 @@
 
 /*
  * Handles the validation callback from nsIFormFillController and
  * the display of the help panel on invalid elements.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [ "FormSubmitObserver" ];
+var EXPORTED_SYMBOLS = [ "FormSubmitObserver" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/BrowserUtils.jsm");
 
 function FormSubmitObserver(aWindow, aTabChildGlobal) {
   this.init(aWindow, aTabChildGlobal);
 }
--- a/browser/modules/FormValidationHandler.jsm
+++ b/browser/modules/FormValidationHandler.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * Chrome side handling of form validation popup.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [ "FormValidationHandler" ];
+var EXPORTED_SYMBOLS = [ "FormValidationHandler" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 var FormValidationHandler =
 {
   _panel: null,
   _anchor: null,
 
--- a/browser/modules/LaterRun.jsm
+++ b/browser/modules/LaterRun.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LaterRun"];
+var EXPORTED_SYMBOLS = ["LaterRun"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const kEnabledPref = "browser.laterrun.enabled";
 const kPagePrefRoot = "browser.laterrun.pages.";
 // Number of sessions we've been active in
 const kSessionCountPref = "browser.laterrun.bookkeeping.sessionCount";
 // Time the profile was created at:
--- a/browser/modules/PageActions.jsm
+++ b/browser/modules/PageActions.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "PageActions",
   // PageActions.Action
   // PageActions.Button
   // PageActions.Subview
   // PageActions.ACTION_ID_BOOKMARK
   // PageActions.ACTION_ID_BOOKMARK_SEPARATOR
   // PageActions.ACTION_ID_BUILT_IN_SEPARATOR
 ];
@@ -28,17 +28,17 @@ ChromeUtils.defineModuleGetter(this, "Bi
 const ACTION_ID_BOOKMARK = "bookmark";
 const ACTION_ID_BOOKMARK_SEPARATOR = "bookmarkSeparator";
 const ACTION_ID_BUILT_IN_SEPARATOR = "builtInSeparator";
 
 const PREF_PERSISTED_ACTIONS = "browser.pageActions.persistedActions";
 const PERSISTED_ACTIONS_CURRENT_VERSION = 1;
 
 
-this.PageActions = {
+var PageActions = {
   /**
    * Inits.  Call to init.
    */
   init() {
     let callbacks = this._deferredAddActionCalls;
     delete this._deferredAddActionCalls;
 
     this._loadPersistedActions();
--- a/browser/modules/PermissionUI.jsm
+++ b/browser/modules/PermissionUI.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "PermissionUI",
 ];
 
 /**
  * PermissionUI is responsible for exposing both a prototype
  * PermissionPrompt that can be used by arbitrary browser
  * components and add-ons, but also hosts the implementations of
  * built-in permission prompts.
@@ -73,28 +73,28 @@ XPCOMUtils.defineLazyGetter(this, "gBran
                  .createBundle("chrome://branding/locale/brand.properties");
 });
 
 XPCOMUtils.defineLazyGetter(this, "gBrowserBundle", function() {
   return Services.strings
                  .createBundle("chrome://browser/locale/browser.properties");
 });
 
-this.PermissionUI = {};
+var PermissionUI = {};
 
 /**
  * PermissionPromptPrototype should be subclassed by callers that
  * want to display prompts to the user. See each method and property
  * below for guidance on what to override.
  *
  * Note that if you're creating a prompt for an
  * nsIContentPermissionRequest, you'll want to subclass
  * PermissionPromptForRequestPrototype instead.
  */
-this.PermissionPromptPrototype = {
+var PermissionPromptPrototype = {
   /**
    * Returns the associated <xul:browser> for the request. This should
    * work for the e10s and non-e10s case.
    *
    * Subclasses must override this.
    *
    * @return {<xul:browser>}
    */
@@ -370,17 +370,17 @@ PermissionUI.PermissionPromptPrototype =
 /**
  * A subclass of PermissionPromptPrototype that assumes
  * that this.request is an nsIContentPermissionRequest
  * and fills in some of the required properties on the
  * PermissionPrompt. For callers that are wrapping an
  * nsIContentPermissionRequest, this should be subclassed
  * rather than PermissionPromptPrototype.
  */
-this.PermissionPromptForRequestPrototype = {
+var PermissionPromptForRequestPrototype = {
   __proto__: PermissionPromptPrototype,
 
   get browser() {
     // In the e10s-case, the <xul:browser> will be at request.element.
     // In the single-process case, we have to use some XPCOM incantations
     // to resolve to the <xul:browser>.
     if (this.request.element) {
       return this.request.element;
--- a/browser/modules/PingCentre.jsm
+++ b/browser/modules/PingCentre.jsm
@@ -184,15 +184,15 @@ class PingCentre {
       this._prefs.removeObserver(FHR_UPLOAD_ENABLED_PREF, this._onFhrPrefChange);
     } catch (e) {
       Cu.reportError(e);
     }
   }
 }
 
 this.PingCentre = PingCentre;
-this.PingCentreConstants = {
+var PingCentreConstants = {
   PRODUCTION_ENDPOINT_PREF,
   FHR_UPLOAD_ENABLED_PREF,
   TELEMETRY_PREF,
   LOGGING_PREF
 };
-this.EXPORTED_SYMBOLS = ["PingCentre", "PingCentreConstants"];
+var EXPORTED_SYMBOLS = ["PingCentre", "PingCentreConstants"];
--- a/browser/modules/PluginContent.jsm
+++ b/browser/modules/PluginContent.jsm
@@ -1,32 +1,32 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "PluginContent" ];
+var EXPORTED_SYMBOLS = [ "PluginContent" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/BrowserUtils.jsm");
 
 Cu.importGlobalProperties(["InspectorUtils"]);
 
 XPCOMUtils.defineLazyGetter(this, "gNavigatorBundle", function() {
   const url = "chrome://browser/locale/browser.properties";
   return Services.strings.createBundle(url);
 });
 
 ChromeUtils.defineModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
 
-this.PluginContent = function(global) {
+var PluginContent = function(global) {
   this.init(global);
 };
 
 const FLASH_MIME_TYPE = "application/x-shockwave-flash";
 const REPLACEMENT_STYLE_SHEET = Services.io.newURI("chrome://pluginproblem/content/pluginReplaceBinding.css");
 
 const OVERLAY_DISPLAY = {
   HIDDEN: 0, // The overlay will be transparent
--- a/browser/modules/ProcessHangMonitor.jsm
+++ b/browser/modules/ProcessHangMonitor.jsm
@@ -1,16 +1,16 @@
 /* -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ProcessHangMonitor"];
+var EXPORTED_SYMBOLS = ["ProcessHangMonitor"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 /**
  * This JSM is responsible for observing content process hang reports
  * and asking the user what to do about them. See nsIHangReport for
  * the platform interface.
--- a/browser/modules/ReaderParent.jsm
+++ b/browser/modules/ReaderParent.jsm
@@ -1,16 +1,16 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ReaderParent" ];
+var EXPORTED_SYMBOLS = [ "ReaderParent" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PlacesUtils", "resource://gre/modules/PlacesUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "ReaderMode", "resource://gre/modules/ReaderMode.jsm");
 ChromeUtils.defineModuleGetter(this, "UITour", "resource:///modules/UITour.jsm");
 
--- a/browser/modules/RecentWindow.jsm
+++ b/browser/modules/RecentWindow.jsm
@@ -1,21 +1,21 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["RecentWindow"];
+var EXPORTED_SYMBOLS = ["RecentWindow"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 
-this.RecentWindow = {
+var RecentWindow = {
   /*
    * Get the most recent browser window.
    *
    * @param aOptions an object accepting the arguments for the search.
    *        * private: true to restrict the search to private windows
    *            only, false to restrict the search to non-private only.
    *            Omit the property to search in both groups.
    *        * allowPopups: true if popup windows are permissable.
--- a/browser/modules/RemotePrompt.jsm
+++ b/browser/modules/RemotePrompt.jsm
@@ -1,16 +1,16 @@
 /* vim: set ts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "RemotePrompt" ];
+var EXPORTED_SYMBOLS = [ "RemotePrompt" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PlacesUIUtils",
                                "resource:///modules/PlacesUIUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
                                "resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "PromptUtils",
--- a/browser/modules/SchedulePressure.jsm
+++ b/browser/modules/SchedulePressure.jsm
@@ -1,30 +1,30 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SchedulePressure"];
+var EXPORTED_SYMBOLS = ["SchedulePressure"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "TelemetryStopwatch",
   "resource://gre/modules/TelemetryStopwatch.jsm");
 XPCOMUtils.defineLazyPreferenceGetter(this, "SCHEDULE_PRESSURE_ENABLED",
   "browser.schedulePressure.enabled", true);
 XPCOMUtils.defineLazyPreferenceGetter(this, "TIMEOUT_AMOUNT",
   "browser.schedulePressure.timeoutMs", 1000);
 
 /**
  * The SchedulePressure object provides the ability to alter
  * the behavior of a program based on the idle activity of the
  * host machine.
  */
-this.SchedulePressure = {
+var SchedulePressure = {
   _idleCallbackWeakMap: new WeakMap(),
   _setTimeoutWeakMap: new WeakMap(),
   _telemetryCallbackWeakMap: new WeakMap(),
 
   _createTimeoutFn(window, callbackFn) {
     return () => {
       if (window.closed) {
         TelemetryStopwatch.cancel("FX_SCHEDULE_PRESSURE_IDLE_SAMPLE_MS", window);
--- a/browser/modules/SitePermissions.jsm
+++ b/browser/modules/SitePermissions.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "SitePermissions" ];
+var EXPORTED_SYMBOLS = [ "SitePermissions" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 var gStringBundle =
   Services.strings.createBundle("chrome://browser/locale/sitePermissions.properties");
 
 /**
@@ -131,17 +131,17 @@ const TemporaryBlockedPermissions = {
 
 /**
  * A module to manage permanent and temporary permissions
  * by URI and browser.
  *
  * Some methods have the side effect of dispatching a "PermissionStateChange"
  * event on changes to temporary permissions, as mentioned in the respective docs.
  */
-this.SitePermissions = {
+var SitePermissions = {
   // Permission states.
   UNKNOWN: Services.perms.UNKNOWN_ACTION,
   ALLOW: Services.perms.ALLOW_ACTION,
   BLOCK: Services.perms.DENY_ACTION,
   PROMPT: Services.perms.PROMPT_ACTION,
   ALLOW_COOKIES_FOR_SESSION: Components.interfaces.nsICookiePermission.ACCESS_SESSION,
 
   // Permission scopes.
--- a/browser/modules/TransientPrefs.jsm
+++ b/browser/modules/TransientPrefs.jsm
@@ -1,24 +1,24 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TransientPrefs"];
+var EXPORTED_SYMBOLS = ["TransientPrefs"];
 
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 
 var prefVisibility = new Map;
 
 /* Use for preferences that should only be visible when they've been modified.
    When reset to their default state, they remain visible until restarting the
    application. */
 
-this.TransientPrefs = {
+var TransientPrefs = {
   prefShouldBeVisible(prefName) {
     if (Preferences.isSet(prefName))
       prefVisibility.set(prefName, true);
 
     return !!prefVisibility.get(prefName);
   }
 };
--- a/browser/modules/UpdateTopLevelContentWindowIDHelper.jsm
+++ b/browser/modules/UpdateTopLevelContentWindowIDHelper.jsm
@@ -2,17 +2,17 @@
  * 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/. */
 
 /*
  * This module tracks each browser window and informs network module
  * the current selected tab's content outer window ID.
  */
 
-this.EXPORTED_SYMBOLS = ["trackBrowserWindow"];
+var EXPORTED_SYMBOLS = ["trackBrowserWindow"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 // Lazy getters
 XPCOMUtils.defineLazyServiceGetter(this, "_focusManager",
                                    "@mozilla.org/focus-manager;1",
                                    "nsIFocusManager");
@@ -22,19 +22,19 @@ const TAB_EVENTS = ["TabBrowserInserted"
 const WINDOW_EVENTS = ["activate", "unload"];
 const DEBUG = false;
 
 // Variables
 var _lastFocusedWindow = null;
 var _lastTopLevelWindowID = 0;
 
 // Exported symbol
-this.trackBrowserWindow = function trackBrowserWindow(aWindow) {
+function trackBrowserWindow(aWindow) {
   WindowHelper.addWindow(aWindow);
-};
+}
 
 // Global methods
 function debug(s) {
   if (DEBUG) {
     dump("-*- UpdateTopLevelContentWindowIDHelper: " + s + "\n");
   }
 }
 
--- a/browser/modules/Windows8WindowFrameColor.jsm
+++ b/browser/modules/Windows8WindowFrameColor.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Windows8WindowFrameColor"];
+var EXPORTED_SYMBOLS = ["Windows8WindowFrameColor"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 var Registry = ChromeUtils.import("resource://gre/modules/WindowsRegistry.jsm").WindowsRegistry;
 
 var Windows8WindowFrameColor = {
   _windowFrameColor: null,
 
--- a/browser/modules/WindowsJumpLists.jsm
+++ b/browser/modules/WindowsJumpLists.jsm
@@ -23,17 +23,17 @@ const LIST_TYPE = {
   FREQUENT: 0,
   RECENT: 1
 };
 
 /**
  * Exports
  */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "WinTaskbarJumpList",
 ];
 
 /**
  * Smart getters
  */
 
 XPCOMUtils.defineLazyGetter(this, "_prefs", function() {
@@ -111,17 +111,17 @@ var tasksCfg = [
     open:             true,
     close:            true, // No point, but we don't always update the list on
                             // shutdown. Thus true for consistency.
   },
 ];
 
 // Implementation
 
-this.WinTaskbarJumpList =
+var WinTaskbarJumpList =
 {
   _builder: null,
   _tasks: null,
   _shuttingDown: false,
 
   /**
    * Startup, shutdown, and update
    */
--- a/browser/modules/WindowsPreviewPerTab.jsm
+++ b/browser/modules/WindowsPreviewPerTab.jsm
@@ -36,17 +36,17 @@
  * the user scroll through the list of tabs. Since this is undoubtedly
  * inconvenient for users with many tabs, the AeroPeek objects turns off all of
  * the tab previews. This tells the taskbar to revert to one preview per window.
  * If the number of tabs falls below this magic threshold, the preview-per-tab
  * behavior returns. There is no reliable way to determine when the scroll
  * buttons appear on the taskbar, so a magic pref-controlled number determines
  * when this threshold has been crossed.
  */
-this.EXPORTED_SYMBOLS = ["AeroPeek"];
+var EXPORTED_SYMBOLS = ["AeroPeek"];
 
 ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
 ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm");
 ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 // Pref to enable/disable preview-per-tab
@@ -625,17 +625,17 @@ TabWindow.prototype = {
 };
 
 // AeroPeek
 
 /*
  * This object acts as global storage and external interface for this feature.
  * It maintains the values of the prefs.
  */
-this.AeroPeek = {
+var AeroPeek = {
   available: false,
   // Does the pref say we're enabled?
   __prefenabled: false,
 
   _enabled: true,
 
   initialized: false,
 
--- a/browser/modules/ZoomUI.jsm
+++ b/browser/modules/ZoomUI.jsm
@@ -1,16 +1,16 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ZoomUI" ];
+var EXPORTED_SYMBOLS = [ "ZoomUI" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 var ZoomUI = {
   init(aWindow) {
     aWindow.addEventListener("EndSwapDocShells", onEndSwapDocShells, true);
     aWindow.addEventListener("FullZoomChange", onZoomChange);
     aWindow.addEventListener("TextZoomChange", onZoomChange);
--- a/browser/modules/offlineAppCache.jsm
+++ b/browser/modules/offlineAppCache.jsm
@@ -1,16 +1,16 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["OfflineAppCacheHelper"];
+var EXPORTED_SYMBOLS = ["OfflineAppCacheHelper"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.OfflineAppCacheHelper = {
+var OfflineAppCacheHelper = {
   clear() {
     var appCacheStorage = Services.cache2.appCacheStorage(Services.loadContextInfo.default, null);
     try {
       appCacheStorage.asyncEvictStorage(null);
     } catch (er) {}
   }
 };
--- a/browser/modules/webrtcUI.jsm
+++ b/browser/modules/webrtcUI.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["webrtcUI"];
+var EXPORTED_SYMBOLS = ["webrtcUI"];
 
 ChromeUtils.import("resource:///modules/syncedtabs/EventEmitter.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AppConstants",
                                "resource://gre/modules/AppConstants.jsm");
 ChromeUtils.defineModuleGetter(this, "PluralForm",
@@ -18,17 +18,17 @@ ChromeUtils.defineModuleGetter(this, "Pr
                                "resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "SitePermissions",
                                "resource:///modules/SitePermissions.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "gBrandBundle", function() {
   return Services.strings.createBundle("chrome://branding/locale/brand.properties");
 });
 
-this.webrtcUI = {
+var webrtcUI = {
   peerConnectionBlockers: new Set(),
   emitter: new EventEmitter(),
 
   init() {
     Services.obs.addObserver(maybeAddMenuIndicator, "browser-delayed-startup-finished");
     Services.ppmm.addMessageListener("child-process-shutdown", this);
   },
 
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/Screenshot.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/Screenshot.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Screenshot"];
+var EXPORTED_SYMBOLS = ["Screenshot"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 
 // Create a new instance of the ConsoleAPI so we can control the maxLogLevel with a pref.
 // See LOG_LEVELS in Console.jsm. Common examples: "All", "Info", "Warn", & "Error".
@@ -19,17 +19,17 @@ XPCOMUtils.defineLazyGetter(this, "log",
   let consoleOptions = {
     maxLogLevel: "info",
     maxLogLevelPref: PREF_LOG_LEVEL,
     prefix: "mozscreenshots",
   };
   return new ConsoleAPI(consoleOptions);
 });
 
-this.Screenshot = {
+var Screenshot = {
   _extensionPath: null,
   _path: null,
   _imagePrefix: "",
   _imageExtension: ".png",
   _screenshotFunction: null,
 
   init(path, extensionPath, imagePrefix = "") {
     this._path = path;
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/TestRunner.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/TestRunner.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TestRunner"];
+var EXPORTED_SYMBOLS = ["TestRunner"];
 
 const env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
 const APPLY_CONFIG_TIMEOUT_MS = 60 * 1000;
 const HOME_PAGE = "chrome://mozscreenshots/content/lib/mozscreenshots.html";
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
@@ -18,17 +18,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/Geometry.jsm");
 
 ChromeUtils.defineModuleGetter(this, "BrowserTestUtils",
                                "resource://testing-common/BrowserTestUtils.jsm");
 // Screenshot.jsm must be imported this way for xpcshell tests to work
 ChromeUtils.defineModuleGetter(this, "Screenshot", "chrome://mozscreenshots/content/Screenshot.jsm");
 
-this.TestRunner = {
+var TestRunner = {
   combos: null,
   completedCombos: 0,
   currentComboIndex: 0,
   _lastCombo: null,
   _libDir: null,
   croppingPadding: 10,
   mochitestScope: null,
 
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/AppMenu.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/AppMenu.jsm
@@ -1,20 +1,20 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AppMenu"];
+var EXPORTED_SYMBOLS = ["AppMenu"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
 
-this.AppMenu = {
+var AppMenu = {
 
   init(libDir) {},
 
   configurations: {
     appMenuMainView: {
       selectors: ["#appMenu-popup"],
       async applyConfig() {
         let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Buttons.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Buttons.jsm
@@ -1,20 +1,20 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Buttons"];
+var EXPORTED_SYMBOLS = ["Buttons"];
 
 ChromeUtils.import("resource:///modules/CustomizableUI.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.Buttons = {
+var Buttons = {
 
   init(libDir) {
     createWidget();
   },
 
   configurations: {
     navBarButtons: {
       selectors: ["#nav-bar"],
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/ControlCenter.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/ControlCenter.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ControlCenter"];
+var EXPORTED_SYMBOLS = ["ControlCenter"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
 ChromeUtils.import("resource:///modules/SitePermissions.jsm");
 ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
@@ -20,17 +20,17 @@ const HTTP_PAGE = "http://example.com/";
 const HTTPS_PAGE = "https://example.com/";
 const PERMISSIONS_PAGE = "https://test1.example.com/";
 const HTTP_PASSWORD_PAGE = `http://test2.example.org/${RESOURCE_PATH}/password.html`;
 const MIXED_CONTENT_URL = `https://example.com/${RESOURCE_PATH}/mixed.html`;
 const MIXED_ACTIVE_CONTENT_URL = `https://example.com/${RESOURCE_PATH}/mixed_active.html`;
 const MIXED_PASSIVE_CONTENT_URL = `https://example.com/${RESOURCE_PATH}/mixed_passive.html`;
 const TRACKING_PAGE = `http://tracking.example.org/${RESOURCE_PATH}/tracking.html`;
 
-this.ControlCenter = {
+var ControlCenter = {
   init(libDir) { },
 
   configurations: {
     about: {
       selectors: ["#identity-popup"],
       async applyConfig() {
         await loadPage("about:rights");
         await openIdentityPopup();
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/CustomizeMode.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/CustomizeMode.jsm
@@ -1,20 +1,20 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["CustomizeMode"];
+var EXPORTED_SYMBOLS = ["CustomizeMode"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.CustomizeMode = {
+var CustomizeMode = {
 
   init(libDir) {},
 
   configurations: {
     notCustomizing: {
       selectors: ["#navigator-toolbox"],
       applyConfig() {
         return new Promise((resolve) => {
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/DevTools.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/DevTools.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["DevTools"];
+var EXPORTED_SYMBOLS = ["DevTools"];
 
 ChromeUtils.import("resource://devtools/client/framework/gDevTools.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
 let { devtools } = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 let TargetFactory = devtools.TargetFactory;
 
@@ -18,17 +18,17 @@ function getTargetForSelectedTab() {
   let target = TargetFactory.forTab(browserWindow.gBrowser.selectedTab);
   return target;
 }
 
 function selectToolbox() {
   return gDevTools.getToolbox(getTargetForSelectedTab()).win.document.querySelector("#toolbox-container");
 }
 
-this.DevTools = {
+var DevTools = {
   init(libDir) {
     let panels = ["options", "webconsole", "jsdebugger", "styleeditor",
                   "performance", "netmonitor"];
 
     panels.forEach(panel => {
       this.configurations[panel] = {};
       this.configurations[panel].selectors = [selectToolbox];
       this.configurations[panel].applyConfig = async function() {
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/LightweightThemes.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/LightweightThemes.jsm
@@ -1,21 +1,21 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LightweightThemes"];
+var EXPORTED_SYMBOLS = ["LightweightThemes"];
 
 ChromeUtils.import("resource://gre/modules/LightweightThemeManager.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.LightweightThemes = {
+var LightweightThemes = {
   init(libDir) {
     // convert -size 3000x200 canvas:#333 black_theme.png
     let blackImage = libDir.clone();
     blackImage.append("black_theme.png");
     this._blackImageURL = Services.io.newFileURI(blackImage).spec;
 
     // convert -size 3000x200 canvas:#eee white_theme.png
     let whiteImage = libDir.clone();
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/PermissionPrompts.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/PermissionPrompts.jsm
@@ -1,25 +1,25 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PermissionPrompts"];
+var EXPORTED_SYMBOLS = ["PermissionPrompts"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/E10SUtils.jsm");
 ChromeUtils.import("resource://testing-common/ContentTask.jsm");
 ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
 
 const URL = "https://test1.example.com/browser/browser/tools/mozscreenshots/mozscreenshots/extension/mozscreenshots/browser/chrome/mozscreenshots/lib/permissionPrompts.html";
 let lastTab = null;
 
-this.PermissionPrompts = {
+var PermissionPrompts = {
   init(libDir) {
     Services.prefs.setBoolPref("browser.storageManager.enabled", true);
     Services.prefs.setBoolPref("media.navigator.permission.fake", true);
     Services.prefs.setBoolPref("extensions.install.requireBuiltInCerts", false);
     Services.prefs.setBoolPref("signon.rememberSignons", true);
   },
 
   configurations: {
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Preferences.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Preferences.jsm
@@ -1,21 +1,21 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Preferences"];
+var EXPORTED_SYMBOLS = ["Preferences"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://testing-common/TestUtils.jsm");
 ChromeUtils.import("resource://testing-common/ContentTask.jsm");
 
-this.Preferences = {
+var Preferences = {
 
   init(libDir) {
     let panes = [
       ["paneGeneral"],
       ["paneGeneral", browsingGroup],
       ["paneGeneral", connectionDialog],
       ["paneSearch"],
       ["panePrivacy"],
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Tabs.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Tabs.jsm
@@ -1,28 +1,28 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Tabs"];
+var EXPORTED_SYMBOLS = ["Tabs"];
 
 const CUST_TAB = "chrome://browser/skin/customize.svg";
 const PREFS_TAB = "chrome://browser/skin/settings.svg";
 const DEFAULT_FAVICON_TAB = `data:text/html,<meta%20charset="utf-8"><title>No%20favicon</title>`;
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://testing-common/TestUtils.jsm");
 ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
 
 Cu.importGlobalProperties(["InspectorUtils"]);
 
-this.Tabs = {
+var Tabs = {
   init(libDir) {},
 
   configurations: {
     fiveTabs: {
       selectors: ["#tabbrowser-tabs"],
       async applyConfig() {
         fiveTabsHelper();
         let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/TabsInTitlebar.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/TabsInTitlebar.jsm
@@ -1,21 +1,21 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TabsInTitlebar"];
+var EXPORTED_SYMBOLS = ["TabsInTitlebar"];
 
 const PREF_TABS_IN_TITLEBAR = "browser.tabs.drawInTitlebar";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.TabsInTitlebar = {
+var TabsInTitlebar = {
 
   init(libDir) {},
 
   configurations: {
     tabsInTitlebar: {
       selectors: ["#navigator-toolbox"],
       async applyConfig() {
         if (Services.appinfo.OS == "Linux") {
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Toolbars.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/Toolbars.jsm
@@ -1,19 +1,19 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Toolbars"];
+var EXPORTED_SYMBOLS = ["Toolbars"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.Toolbars = {
+var Toolbars = {
   init(libDir) {},
 
   configurations: {
     onlyNavBar: {
       selectors: ["#navigator-toolbox"],
       async applyConfig() {
         let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
         let personalToolbar = browserWindow.document.getElementById("PersonalToolbar");
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/UIDensities.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/UIDensities.jsm
@@ -1,19 +1,19 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["UIDensities"];
+var EXPORTED_SYMBOLS = ["UIDensities"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.UIDensities = {
+var UIDensities = {
 
   init(libDir) {},
 
   configurations: {
     compactDensity: {
       selectors: ["#navigator-toolbox, #appMenu-popup, #widget-overflow"],
       async applyConfig() {
         let browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/WindowSize.jsm
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/configurations/WindowSize.jsm
@@ -1,21 +1,21 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["WindowSize"];
+var EXPORTED_SYMBOLS = ["WindowSize"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://testing-common/BrowserTestUtils.jsm");
 
-this.WindowSize = {
+var WindowSize = {
 
   init(libDir) {
     Services.prefs.setBoolPref("browser.fullscreen.autohide", false);
   },
 
   configurations: {
     maximized: {
       selectors: [":root"],
--- a/dom/base/DOMRequestHelper.jsm
+++ b/dom/base/DOMRequestHelper.jsm
@@ -11,26 +11,26 @@
  * messages back as answers to different requests and the child will use this
  * helper to get the right request object. This helper also takes care of
  * releasing the requests objects when the window goes out of scope.
  *
  * DOMRequestIPCHelper also deals with message listeners, allowing to add them
  * to the child side of frame and process message manager and removing them
  * when needed.
  */
-this.EXPORTED_SYMBOLS = ["DOMRequestIpcHelper"];
+var EXPORTED_SYMBOLS = ["DOMRequestIpcHelper"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
                                    "@mozilla.org/childprocessmessagemanager;1",
                                    "nsIMessageListenerManager");
 
-this.DOMRequestIpcHelper = function DOMRequestIpcHelper() {
+function DOMRequestIpcHelper() {
   // _listeners keeps a list of messages for which we added a listener and the
   // kind of listener that we added (strong or weak). It's an object of this
   // form:
   //  {
   //    "message1": true,
   //    "messagen": false
   //  }
   //
--- a/dom/base/IndexedDBHelper.jsm
+++ b/dom/base/IndexedDBHelper.jsm
@@ -7,29 +7,29 @@
 var DEBUG = 0;
 var debug;
 if (DEBUG) {
   debug = function (s) { dump("-*- IndexedDBHelper: " + s + "\n"); }
 } else {
   debug = function (s) {}
 }
 
-this.EXPORTED_SYMBOLS = ["IndexedDBHelper"];
+var EXPORTED_SYMBOLS = ["IndexedDBHelper"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.importGlobalProperties(["indexedDB"]);
 
 ChromeUtils.defineModuleGetter(this, 'Services',
   'resource://gre/modules/Services.jsm');
 
 function getErrorName(err) {
   return err && err.name || "UnknownError";
 }
 
-this.IndexedDBHelper = function IndexedDBHelper() {
+function IndexedDBHelper() {
 }
 
 IndexedDBHelper.prototype = {
   // Close the database
   close: function close() {
     if (this._db) {
       this._db.close();
       this._db = null;
--- a/dom/browser-element/BrowserElementPromptService.jsm
+++ b/dom/browser-element/BrowserElementPromptService.jsm
@@ -2,17 +2,17 @@
  * 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/. */
 /* vim: set ft=javascript : */
 
 "use strict";
 
 var Cm = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
 
-this.EXPORTED_SYMBOLS = ["BrowserElementPromptService"];
+var EXPORTED_SYMBOLS = ["BrowserElementPromptService"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const NS_PREFBRANCH_PREFCHANGE_TOPIC_ID = "nsPref:changed";
 const BROWSER_FRAMES_ENABLED_PREF = "dom.mozBrowserFramesEnabled";
 
 function debug(msg) {
@@ -557,17 +557,17 @@ BrowserElementPromptFactory.prototype = 
     }
 
     debug("Returning wrapped getPrompt for " + win);
     return new BrowserElementPrompt(win, browserElementChild)
                                    .QueryInterface(iid);
   }
 };
 
-this.BrowserElementPromptService = {
+var BrowserElementPromptService = {
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
                                          Ci.nsISupportsWeakReference]),
 
   _initialized: false,
 
   _init: function() {
     if (this._initialized) {
       return;
--- a/dom/console/tests/console.jsm
+++ b/dom/console/tests/console.jsm
@@ -1,15 +1,15 @@
 /**
  * Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
-this.EXPORTED_SYMBOLS = [ "ConsoleTest" ];
+var EXPORTED_SYMBOLS = [ "ConsoleTest" ];
 
-this.ConsoleTest = {
+var ConsoleTest = {
   go: function(dumpFunction) {
     console.log("Hello world!");
     console.createInstance().log("Hello world!");
 
     let c = console.createInstance({
       consoleID: "wow",
       innerID: "CUSTOM INNER",
       dump: dumpFunction,
--- a/dom/encoding/test/file_stringencoding.jsm
+++ b/dom/encoding/test/file_stringencoding.jsm
@@ -1,6 +1,6 @@
-this.EXPORTED_SYMBOLS = ['checkFromJSM'];
+var EXPORTED_SYMBOLS = ['checkFromJSM'];
 
-this.checkFromJSM = function checkFromJSM(is_op) {
+function checkFromJSM(is_op) {
   is_op(new TextDecoder().encoding, "utf-8", "JSM should have TextDecoder");
   is_op(new TextEncoder().encoding, "utf-8", "JSM should have TextEncoder");
-}
+}
\ No newline at end of file
--- a/dom/indexedDB/test/unit/GlobalObjectsModule.jsm
+++ b/dom/indexedDB/test/unit/GlobalObjectsModule.jsm
@@ -1,21 +1,21 @@
 /**
  * Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
 
 Components.utils.importGlobalProperties(["indexedDB"]);
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "GlobalObjectsModule"
 ];
 
-this.GlobalObjectsModule = function GlobalObjectsModule() {
-};
+function GlobalObjectsModule() {
+}
 
 GlobalObjectsModule.prototype = {
   runTest() {
     const name = "Splendid Test";
 
     let ok = this.ok;
     let finishTest = this.finishTest;
 
--- a/dom/manifest/ImageObjectProcessor.jsm
+++ b/dom/manifest/ImageObjectProcessor.jsm
@@ -144,10 +144,9 @@ ImageObjectProcessor.prototype.process =
       const w = widthAndHeight.shift();
       const h = widthAndHeight.join('x');
       const validStarts = !w.startsWith('0') && !h.startsWith('0');
       const validDecimals = ImageObjectProcessor.decimals.test(w + h);
       return (validStarts && validDecimals);
     }
   }
 };
-this.ImageObjectProcessor = ImageObjectProcessor; // jshint ignore:line
-this.EXPORTED_SYMBOLS = ['ImageObjectProcessor']; // jshint ignore:line
+var EXPORTED_SYMBOLS = ['ImageObjectProcessor']; // jshint ignore:line
--- a/dom/manifest/Manifest.jsm
+++ b/dom/manifest/Manifest.jsm
@@ -218,9 +218,9 @@ var Manifests = {
     // Otherwise create a new manifest object
     this.manifestObjs[manifestUrl] = new Manifest(browser, manifestUrl);
     await this.manifestObjs[manifestUrl].initialise();
     return this.manifestObjs[manifestUrl];
   }
 
 };
 
-this.EXPORTED_SYMBOLS = ["Manifests"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["Manifests"]; // jshint ignore:line
--- a/dom/manifest/ManifestFinder.jsm
+++ b/dom/manifest/ManifestFinder.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
 /* globals Components, Task, PromiseMessage */
 "use strict";
 const {
   utils: Cu
 } = Components;
 ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm");
 
-this.ManifestFinder = {// jshint ignore:line
+var ManifestFinder = {// jshint ignore:line
   /**
   * Check from content process if DOM Window has a conforming
   * manifest link relationship.
   * @param aContent DOM Window to check.
   * @return {Promise<Boolean>}
   */
   contentHasManifestLink(aContent) {
     if (!aContent || isXULBrowser(aContent)) {
@@ -55,11 +55,11 @@ function checkForManifest(aWindow) {
   const elem = aWindow.document.querySelector("link[rel~='manifest']");
   // Only if we have an element and a non-empty href attribute.
   if (!elem || !elem.getAttribute("href")) {
     return false;
   }
   return true;
 }
 
-this.EXPORTED_SYMBOLS = [// jshint ignore:line
+var EXPORTED_SYMBOLS = [// jshint ignore:line
   "ManifestFinder"
 ];
--- a/dom/manifest/ManifestIcons.jsm
+++ b/dom/manifest/ManifestIcons.jsm
@@ -3,17 +3,17 @@
 const {
   utils: Cu,
   classes: Cc,
   interfaces: Ci
 } = Components;
 
 ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm");
 
-this.ManifestIcons = {
+var ManifestIcons = {
 
   async browserFetchIcon(aBrowser, manifest, iconSize) {
     const msgKey = "DOM:WebManifest:fetchIcon";
     const mm = aBrowser.messageManager;
     const {data: {success, result}} =
       await PromiseMessage.send(mm, msgKey, {manifest, iconSize});
     if (!success) {
       throw result;
@@ -77,9 +77,9 @@ async function fetchIcon(aWindow, src) {
     .then(blob => new Promise((resolve, reject) => {
       var reader = new FileReader();
       reader.onloadend = () => resolve(reader.result);
       reader.onerror = reject;
       reader.readAsDataURL(blob);
     }));
 }
 
-this.EXPORTED_SYMBOLS = ["ManifestIcons"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["ManifestIcons"]; // jshint ignore:line
--- a/dom/manifest/ManifestObtainer.jsm
+++ b/dom/manifest/ManifestObtainer.jsm
@@ -31,17 +31,17 @@ const {
   interfaces: Ci
 } = Components;
 ChromeUtils.import("resource://gre/modules/PromiseMessage.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/ManifestProcessor.jsm");
 ChromeUtils.defineModuleGetter(this, "BrowserUtils",  // jshint ignore:line
   "resource://gre/modules/BrowserUtils.jsm");
 
-this.ManifestObtainer = { // jshint ignore:line
+var ManifestObtainer = { // jshint ignore:line
   /**
   * Public interface for obtaining a web manifest from a XUL browser, to use
   * on the parent process.
   * @param  {XULBrowser} The browser to check for the manifest.
   * @return {Promise<Object>} The processed manifest.
   */
   async browserObtainManifest(aBrowser) {
     const msgKey = "DOM:ManifestObtainer:Obtain";
@@ -151,9 +151,9 @@ const fetchManifest = async function(aWi
     response = await aWindow.fetch(request);
   } catch (err) {
     throw err;
   }
   const manifest = await processResponse(response, aWindow);
   return manifest;
 };
 
-this.EXPORTED_SYMBOLS = ["ManifestObtainer"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["ManifestObtainer"]; // jshint ignore:line
--- a/dom/manifest/ManifestProcessor.jsm
+++ b/dom/manifest/ManifestProcessor.jsm
@@ -37,17 +37,17 @@ const textDirections = new Set(['ltr', '
 ChromeUtils.import('resource://gre/modules/Console.jsm');
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 // ValueExtractor is used by the various processors to get values
 // from the manifest and to report errors.
 ChromeUtils.import('resource://gre/modules/ValueExtractor.jsm');
 // ImageObjectProcessor is used to process things like icons and images
 ChromeUtils.import('resource://gre/modules/ImageObjectProcessor.jsm');
 
-this.ManifestProcessor = { // jshint ignore:line
+var ManifestProcessor = { // jshint ignore:line
   get defaultDisplayMode() {
     return 'browser';
   },
   get displayModes() {
     return displayModes;
   },
   get orientationTypes() {
     return orientationTypes;
@@ -265,9 +265,9 @@ this.ManifestProcessor = { // jshint ign
       // TODO: perform canonicalization on the tag.
       //       Can't do this today because there is no direct means to
       //       access canonicalization algorithms through Intl API.
       //       https://github.com/tc39/ecma402/issues/5
       return tag;
     }
   }
 };
-this.EXPORTED_SYMBOLS = ['ManifestProcessor']; // jshint ignore:line
+var EXPORTED_SYMBOLS = ['ManifestProcessor']; // jshint ignore:line
--- a/dom/manifest/ValueExtractor.jsm
+++ b/dom/manifest/ValueExtractor.jsm
@@ -57,10 +57,9 @@ ValueExtractor.prototype = {
     } else if (value) {
       this.console.warn(this.domBundle.formatStringFromName("ManifestInvalidCSSColor",
                                                             [spec.property, value],
                                                             2));
     }
     return color;
   }
 };
-this.ValueExtractor = ValueExtractor; // jshint ignore:line
-this.EXPORTED_SYMBOLS = ['ValueExtractor']; // jshint ignore:line
+var EXPORTED_SYMBOLS = ['ValueExtractor']; // jshint ignore:line
--- a/dom/media/IdpSandbox.jsm
+++ b/dom/media/IdpSandbox.jsm
@@ -261,10 +261,9 @@ IdpSandbox.prototype = {
     this.active = null;
   },
 
   toString() {
     return this.source.spec;
   }
 };
 
-this.EXPORTED_SYMBOLS = ["IdpSandbox"];
-this.IdpSandbox = IdpSandbox;
+var EXPORTED_SYMBOLS = ["IdpSandbox"];
--- a/dom/media/PeerConnectionIdp.jsm
+++ b/dom/media/PeerConnectionIdp.jsm
@@ -1,14 +1,14 @@
 /* jshint moz:true, browser:true */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PeerConnectionIdp"];
+var EXPORTED_SYMBOLS = ["PeerConnectionIdp"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "IdpSandbox",
   "resource://gre/modules/media/IdpSandbox.jsm");
 
 /**
  * Creates an IdP helper.
@@ -331,9 +331,8 @@ PeerConnectionIdp.prototype = {
       r => this._win.setTimeout(r, this._timeout))
         .then(() => {
           throw new this._win.DOMException("IdP timed out", "IdpError");
         });
     return this._win.Promise.race([ timeout, p ]);
   }
 };
 
-this.PeerConnectionIdp = PeerConnectionIdp;
--- a/dom/media/RTCStatsReport.jsm
+++ b/dom/media/RTCStatsReport.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["convertToRTCStatsReport"];
+var EXPORTED_SYMBOLS = ["convertToRTCStatsReport"];
 
 function convertToRTCStatsReport(dict) {
   function appendStats(stats, report) {
     stats.forEach(function(stat) {
         report[stat.id] = stat;
       });
   }
   let report = {};
@@ -21,9 +21,8 @@ function convertToRTCStatsReport(dict) {
   appendStats(dict.transportStats, report);
   appendStats(dict.iceComponentStats, report);
   appendStats(dict.iceCandidatePairStats, report);
   appendStats(dict.iceCandidateStats, report);
   appendStats(dict.codecStats, report);
   return report;
 }
 
-this.convertToRTCStatsReport = convertToRTCStatsReport;
--- a/dom/media/webvtt/vtt.jsm
+++ b/dom/media/webvtt/vtt.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["WebVTT"];
+var EXPORTED_SYMBOLS = ["WebVTT"];
 
 /**
  * Code below is vtt.js the JS WebVTT implementation.
  * Current source code can be found at http://github.com/mozilla/vtt.js
  *
  * Code taken from commit b89bfd06cd788a68c67e03f44561afe833db0849
  */
 /**
--- a/dom/network/tests/tcpsocket_test.jsm
+++ b/dom/network/tests/tcpsocket_test.jsm
@@ -1,16 +1,16 @@
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   'createSocket', 'createServer',
   'socketCompartmentInstanceOfArrayBuffer'];
 
-this.createSocket = function(host, port, options) {
+var createSocket = function(host, port, options) {
   return new TCPSocket(host, port, options);
 }
 
-this.createServer = function(port, options, backlog) {
+var createServer = function(port, options, backlog) {
   return new TCPServerSocket(port, options, backlog);
 }
 
 // See test_tcpsocket_client_and_server_basics.html's version for rationale.
-this.socketCompartmentInstanceOfArrayBuffer = function(obj) {
+var socketCompartmentInstanceOfArrayBuffer = function(obj) {
   return obj instanceof ArrayBuffer;
 }
--- a/dom/notification/NotificationDB.jsm
+++ b/dom/notification/NotificationDB.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [];
+var EXPORTED_SYMBOLS = [];
 
 const DEBUG = false;
 function debug(s) { dump("-*- NotificationDB component: " + s + "\n"); }
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Services",
--- a/dom/presentation/provider/ControllerStateMachine.jsm
+++ b/dom/presentation/provider/ControllerStateMachine.jsm
@@ -3,17 +3,17 @@
 /* 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/. */
 /* jshint esnext:true, globalstrict:true, moz:true, undef:true, unused:true */
 /* globals Components, dump */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["ControllerStateMachine"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["ControllerStateMachine"]; // jshint ignore:line
 
 /* globals State, CommandType */
 ChromeUtils.import("resource://gre/modules/presentation/StateMachineHelper.jsm");
 
 const DEBUG = false;
 function debug(str) {
   dump("-*- ControllerStateMachine: " + str + "\n");
 }
@@ -230,9 +230,8 @@ ControllerStateMachine.prototype = {
         break;
       case CommandType.ICE_CANDIDATE:
         this._channel.notifyIceCandidate(command.candidate);
         break;
     }
   },
 };
 
-this.ControllerStateMachine = ControllerStateMachine; // jshint ignore:line
--- a/dom/presentation/provider/ReceiverStateMachine.jsm
+++ b/dom/presentation/provider/ReceiverStateMachine.jsm
@@ -3,17 +3,17 @@
 /* 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/. */
 /* jshint esnext:true, globalstrict:true, moz:true, undef:true, unused:true */
 /* globals Components, dump */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["ReceiverStateMachine"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["ReceiverStateMachine"]; // jshint ignore:line
 
 /* globals State, CommandType */
 ChromeUtils.import("resource://gre/modules/presentation/StateMachineHelper.jsm");
 
 const DEBUG = false;
 function debug(str) {
   dump("-*- ReceiverStateMachine: " + str + "\n");
 }
@@ -228,9 +228,8 @@ ReceiverStateMachine.prototype = {
         break;
       case CommandType.ICE_CANDIDATE:
         this._channel.notifyIceCandidate(command.candidate);
         break;
     }
   },
 };
 
-this.ReceiverStateMachine = ReceiverStateMachine; // jshint ignore:line
--- a/dom/presentation/provider/StateMachineHelper.jsm
+++ b/dom/presentation/provider/StateMachineHelper.jsm
@@ -2,17 +2,17 @@
 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
 /* 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/. */
 /* jshint esnext:true, globalstrict:true, moz:true, undef:true, unused:true */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["State", "CommandType"]; // jshint ignore:line
+var EXPORTED_SYMBOLS = ["State", "CommandType"]; // jshint ignore:line
 
 const State = Object.freeze({
   INIT: 0,
   CONNECTING: 1,
   CONNECTED: 2,
   CLOSING: 3,
   CLOSED: 4,
 });
--- a/dom/push/PushCrypto.jsm
+++ b/dom/push/PushCrypto.jsm
@@ -8,17 +8,17 @@
 ChromeUtils.import('resource://gre/modules/Services.jsm');
 ChromeUtils.import('resource://gre/modules/XPCOMUtils.jsm');
 
 XPCOMUtils.defineLazyGetter(this, 'gDOMBundle', () =>
   Services.strings.createBundle('chrome://global/locale/dom/dom.properties'));
 
 Cu.importGlobalProperties(['crypto']);
 
-this.EXPORTED_SYMBOLS = ['PushCrypto', 'concatArray'];
+var EXPORTED_SYMBOLS = ['PushCrypto', 'concatArray'];
 
 var UTF8 = new TextEncoder('utf-8');
 
 var ECDH_KEY = { name: 'ECDH', namedCurve: 'P-256' };
 var ECDSA_KEY =  { name: 'ECDSA', namedCurve: 'P-256' };
 
 // A default keyid with a name that won't conflict with a real keyid.
 var DEFAULT_KEYID = '';
@@ -213,17 +213,17 @@ function chunkArray(array, size) {
     index += size;
   }
   if (index < array.byteLength) {
     result.push(new Uint8Array(array, start + index));
   }
   return result;
 }
 
-this.concatArray = function(arrays) {
+var concatArray = function(arrays) {
   var size = arrays.reduce((total, a) => total + a.byteLength, 0);
   var index = 0;
   return arrays.reduce((result, a) => {
     result.set(new Uint8Array(a), index);
     index += a.byteLength;
     return result;
   }, new Uint8Array(size));
 };
@@ -556,17 +556,17 @@ class aesgcm128Decoder extends OldScheme
     ]);
   }
 
   get padSize() {
     return 1;
   }
 }
 
-this.PushCrypto = {
+var PushCrypto = {
 
   generateAuthenticationSecret() {
     return crypto.getRandomValues(new Uint8Array(16));
   },
 
   validateAppServerKey(key) {
     return crypto.subtle.importKey('raw', key, ECDSA_KEY,
                                    true, ['verify'])
--- a/dom/push/PushDB.jsm
+++ b/dom/push/PushDB.jsm
@@ -4,36 +4,36 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/IndexedDBHelper.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.importGlobalProperties(["indexedDB"]);
 
-this.EXPORTED_SYMBOLS = ["PushDB"];
+var EXPORTED_SYMBOLS = ["PushDB"];
 
 XPCOMUtils.defineLazyGetter(this, "console", () => {
   let {ConsoleAPI} = ChromeUtils.import("resource://gre/modules/Console.jsm", {});
   return new ConsoleAPI({
     maxLogLevelPref: "dom.push.loglevel",
     prefix: "PushDB",
   });
 });
 
-this.PushDB = function PushDB(dbName, dbVersion, dbStoreName, keyPath, model) {
+function PushDB(dbName, dbVersion, dbStoreName, keyPath, model) {
   console.debug("PushDB()");
   this._dbStoreName = dbStoreName;
   this._keyPath = keyPath;
   this._model = model;
 
   // set the indexeddb database
   this.initDBHelper(dbName, dbVersion,
                     [dbStoreName]);
-};
+}
 
 this.PushDB.prototype = {
   __proto__: IndexedDBHelper.prototype,
 
   toPushRecord: function(record) {
     if (!record) {
       return;
     }
--- a/dom/push/PushRecord.jsm
+++ b/dom/push/PushRecord.jsm
@@ -12,17 +12,17 @@ ChromeUtils.defineModuleGetter(this, "Ev
                                "resource://gre/modules/Messaging.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
                                "resource://gre/modules/PlacesUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
                                "resource://gre/modules/PrivateBrowsingUtils.jsm");
 
 
-this.EXPORTED_SYMBOLS = ["PushRecord"];
+var EXPORTED_SYMBOLS = ["PushRecord"];
 
 const prefs = Services.prefs.getBranch("dom.push.");
 
 /**
  * The push subscription record, stored in IndexedDB.
  */
 function PushRecord(props) {
   this.pushEndpoint = props.pushEndpoint;
--- a/dom/push/PushService.jsm
+++ b/dom/push/PushService.jsm
@@ -28,17 +28,17 @@ const CONNECTION_PROTOCOLS = (function()
     return [PushServiceAndroidGCM];
   }
 })();
 
 XPCOMUtils.defineLazyServiceGetter(this, "gPushNotifier",
                                    "@mozilla.org/push/Notifier;1",
                                    "nsIPushNotifier");
 
-this.EXPORTED_SYMBOLS = ["PushService"];
+var EXPORTED_SYMBOLS = ["PushService"];
 
 XPCOMUtils.defineLazyGetter(this, "console", () => {
   let {ConsoleAPI} = ChromeUtils.import("resource://gre/modules/Console.jsm", {});
   return new ConsoleAPI({
     maxLogLevelPref: "dom.push.loglevel",
     prefix: "PushService",
   });
 });
@@ -112,17 +112,17 @@ function hasRootDomain(str, aDomain)
          (prevChar == "." || prevChar == "/");
 }
 
 /**
  * The implementation of the push system. It uses WebSockets
  * (PushServiceWebSocket) to communicate with the server and PushDB (IndexedDB)
  * for persistence.
  */
-this.PushService = {
+var PushService = {
   _service: null,
   _state: PUSH_SERVICE_UNINIT,
   _db: null,
   _options: null,
   _visibleNotifications: new Map(),
 
   // Callback that is called after attempting to
   // reduce the quota for a record. Used for testing purposes.
--- a/dom/push/PushServiceAndroidGCM.jsm
+++ b/dom/push/PushServiceAndroidGCM.jsm
@@ -10,17 +10,17 @@ const {PushRecord} = ChromeUtils.import(
 const {PushCrypto} = ChromeUtils.import("resource://gre/modules/PushCrypto.jsm");
 ChromeUtils.import("resource://gre/modules/Messaging.jsm"); /*global: EventDispatcher */
 ChromeUtils.import("resource://gre/modules/Services.jsm"); /*global: Services */
 ChromeUtils.import("resource://gre/modules/Preferences.jsm"); /*global: Preferences */
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); /*global: XPCOMUtils */
 
 const Log = ChromeUtils.import("resource://gre/modules/AndroidLog.jsm", {}).AndroidLog.bind("Push");
 
-this.EXPORTED_SYMBOLS = ["PushServiceAndroidGCM"];
+var EXPORTED_SYMBOLS = ["PushServiceAndroidGCM"];
 
 XPCOMUtils.defineLazyGetter(this, "console", () => {
   let {ConsoleAPI} = ChromeUtils.import("resource://gre/modules/Console.jsm", {});
   return new ConsoleAPI({
     dump: Log.i,
     maxLogLevelPref: "dom.push.loglevel",
     prefix: "PushServiceAndroidGCM",
   });
@@ -33,17 +33,17 @@ const kPUSHANDROIDGCMDB_STORE_NAME = "pu
 const FXA_PUSH_SCOPE = "chrome://fxa-push";
 
 const prefs = new Preferences("dom.push.");
 
 /**
  * The implementation of WebPush push backed by Android's GCM
  * delivery.
  */
-this.PushServiceAndroidGCM = {
+var PushServiceAndroidGCM = {
   _mainPushService: null,
   _serverURI: null,
 
   newPushDB: function() {
     return new PushDB(kPUSHANDROIDGCMDB_DB_NAME,
                       kPUSHANDROIDGCMDB_DB_VERSION,
                       kPUSHANDROIDGCMDB_STORE_NAME,
                       "channelID",
--- a/dom/push/PushServiceHttp2.jsm
+++ b/dom/push/PushServiceHttp2.jsm
@@ -13,17 +13,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/IndexedDBHelper.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
 const {
   PushCrypto,
   concatArray,
 } = ChromeUtils.import("resource://gre/modules/PushCrypto.jsm");
 
-this.EXPORTED_SYMBOLS = ["PushServiceHttp2"];
+var EXPORTED_SYMBOLS = ["PushServiceHttp2"];
 
 XPCOMUtils.defineLazyGetter(this, "console", () => {
   let {ConsoleAPI} = ChromeUtils.import("resource://gre/modules/Console.jsm", {});
   return new ConsoleAPI({
     maxLogLevelPref: "dom.push.loglevel",
     prefix: "PushServiceHttp2",
   });
 });
@@ -396,17 +396,17 @@ function linkParser(linkHeader, serverUR
     pushEndpoint: pushURI.spec,
     pushReceiptEndpoint: (pushReceiptURI) ? pushReceiptURI.spec : "",
   };
 }
 
 /**
  * The implementation of the WebPush.
  */
-this.PushServiceHttp2 = {
+var PushServiceHttp2 = {
   _mainPushService: null,
   _serverURI: null,
 
   // Keep information about all connections, e.g. the channel, listener...
   _conns: {},
   _started: false,
 
   // Set of SubscriptionListeners that are pending a subscription retry attempt.
--- a/dom/push/PushServiceWebSocket.jsm
+++ b/dom/push/PushServiceWebSocket.jsm
@@ -40,17 +40,17 @@ const kUNREGISTER_REASON_TO_CODE = {
 const kDELIVERY_REASON_TO_CODE = {
   [Ci.nsIPushErrorReporter.DELIVERY_UNCAUGHT_EXCEPTION]: 301,
   [Ci.nsIPushErrorReporter.DELIVERY_UNHANDLED_REJECTION]: 302,
   [Ci.nsIPushErrorReporter.DELIVERY_INTERNAL_ERROR]: 303,
 };
 
 const prefs = new Preferences("dom.push.");
 
-this.EXPORTED_SYMBOLS = ["PushServiceWebSocket"];
+var EXPORTED_SYMBOLS = ["PushServiceWebSocket"];
 
 XPCOMUtils.defineLazyGetter(this, "console", () => {
   let {ConsoleAPI} = ChromeUtils.import("resource://gre/modules/Console.jsm", {});
   return new ConsoleAPI({
     maxLogLevelPref: "dom.push.loglevel",
     prefix: "PushServiceWebSocket",
   });
 });
@@ -111,17 +111,17 @@ const STATE_SHUT_DOWN = 0;
 // Websocket has been opened on client side, waiting for successful open.
 // (_wsOnStart)
 const STATE_WAITING_FOR_WS_START = 1;
 // Websocket opened, hello sent, waiting for server reply (_handleHelloReply).
 const STATE_WAITING_FOR_HELLO = 2;
 // Websocket operational, handshake completed, begin protocol messaging.
 const STATE_READY = 3;
 
-this.PushServiceWebSocket = {
+var PushServiceWebSocket = {
   _mainPushService: null,
   _serverURI: null,
 
   newPushDB: function() {
     return new PushDB(kPUSHWSDB_DB_NAME,
                       kPUSHWSDB_DB_VERSION,
                       kPUSHWSDB_STORE_NAME,
                       "channelID",
--- a/dom/url/tests/file_url.jsm
+++ b/dom/url/tests/file_url.jsm
@@ -1,11 +1,11 @@
-this.EXPORTED_SYMBOLS = ['checkFromJSM'];
+var EXPORTED_SYMBOLS = ['checkFromJSM'];
 
-this.checkFromJSM = function checkFromJSM(ok, is) {
+function checkFromJSM(ok, is) {
   Components.utils.importGlobalProperties(['URL', 'Blob']);
 
   var url = new URL('http://www.example.com');
   is(url.href, "http://www.example.com/", "JSM should have URL");
 
   var url2 = new URL('/foobar', url);
   is(url2.href, "http://www.example.com/foobar", "JSM should have URL - based on another URL");
 
@@ -14,9 +14,9 @@ this.checkFromJSM = function checkFromJS
   ok(url, "URL is created!");
 
   var u = new URL(url);
   ok(u, "URL created");
   is(u.origin, "null", "Url doesn't have an origin if created in a JSM");
 
   URL.revokeObjectURL(url);
   ok(true, "URL is revoked");
-}
+}
\ No newline at end of file
--- a/dom/url/tests/file_worker_url.jsm
+++ b/dom/url/tests/file_worker_url.jsm
@@ -1,13 +1,13 @@
-this.EXPORTED_SYMBOLS = ['checkFromJSM'];
+var EXPORTED_SYMBOLS = ['checkFromJSM'];
 
 Components.utils.importGlobalProperties(['URL']);
 
-this.checkFromJSM = function checkFromJSM(ok, is, finish) {
+function checkFromJSM(ok, is, finish) {
   let worker = new ChromeWorker("jsm_url_worker.js");
   worker.onmessage = function(event) {
 
    if (event.data.type == 'finish') {
      finish();
     } else if (event.data.type == 'url') {
       URL.revokeObjectURL(event.data.url);
     } else if (event.data.type == 'status') {
@@ -18,9 +18,9 @@ this.checkFromJSM = function checkFromJS
   worker.onerror = function(event) {
     is(event.target, worker);
     ok(false, "Worker had an error: " + event.data);
     worker.terminate();
     finish();
   };
 
   worker.postMessage(0);
-}
+}
\ No newline at end of file
--- a/dom/url/tests/test_bug883784.jsm
+++ b/dom/url/tests/test_bug883784.jsm
@@ -1,13 +1,13 @@
-this.EXPORTED_SYMBOLS = ["Test"];
+var EXPORTED_SYMBOLS = ["Test"];
 
 Cu.importGlobalProperties(["URL", "XMLHttpRequest"]);
 
-this.Test = {
+var Test = {
   start: function(ok, is, finish) {
     let worker = new ChromeWorker("jsm_url_worker.js");
     worker.onmessage = function(event) {
       if (event.data.type == 'status') {
         ok(event.data.status, event.data.msg);
       } else if (event.data.type == 'url') {
         var xhr = new XMLHttpRequest();
         xhr.open('GET', event.data.url, false);
--- a/dom/workers/test/WorkerTest.jsm
+++ b/dom/workers/test/WorkerTest.jsm
@@ -1,17 +1,17 @@
 /**
  * Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "WorkerTest"
 ];
 
-this.WorkerTest = {
+var WorkerTest = {
   go: function(message, messageCallback, errorCallback) {
     let worker = new ChromeWorker("WorkerTest_worker.js");
     worker.onmessage = messageCallback;
     worker.onerror = errorCallback;
     worker.postMessage(message);
     return worker;
   }
 };
--- a/editor/AsyncSpellCheckTestHelper.jsm
+++ b/editor/AsyncSpellCheckTestHelper.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "onSpellCheck",
 ];
 
 const SPELL_CHECK_ENDED_TOPIC = "inlineSpellChecker-spellCheck-ended";
 const SPELL_CHECK_STARTED_TOPIC = "inlineSpellChecker-spellCheck-started";
 
 /**
  * Waits until spell checking has stopped on the given element.
--- a/intl/l10n/DOMLocalization.jsm
+++ b/intl/l10n/DOMLocalization.jsm
@@ -621,9 +621,9 @@ class DOMLocalization extends Localizati
     return [
       element.getAttribute(L10NID_ATTR_NAME),
       JSON.parse(element.getAttribute(L10NARGS_ATTR_NAME) || null)
     ];
   }
 }
 
 this.DOMLocalization = DOMLocalization;
-this.EXPORTED_SYMBOLS = ["DOMLocalization"];
+var EXPORTED_SYMBOLS = ["DOMLocalization"];
--- a/intl/l10n/L10nRegistry.jsm
+++ b/intl/l10n/L10nRegistry.jsm
@@ -418,9 +418,9 @@ L10nRegistry.load = function(url) {
     return response.text();
   });
 };
 
 this.L10nRegistry = L10nRegistry;
 this.FileSource = FileSource;
 this.IndexedFileSource = IndexedFileSource;
 
-this.EXPORTED_SYMBOLS = ["L10nRegistry", "FileSource", "IndexedFileSource"];
+var EXPORTED_SYMBOLS = ["L10nRegistry", "FileSource", "IndexedFileSource"];
--- a/intl/l10n/Localization.jsm
+++ b/intl/l10n/Localization.jsm
@@ -427,9 +427,9 @@ function keysFromContext(method, ctx, ke
       messageErrors.forEach(error => console.warn(error));
     }
   });
 
   return hasErrors;
 }
 
 this.Localization = Localization;
-this.EXPORTED_SYMBOLS = ["Localization"];
+var EXPORTED_SYMBOLS = ["Localization"];
--- a/intl/l10n/MessageContext.jsm
+++ b/intl/l10n/MessageContext.jsm
@@ -1842,9 +1842,9 @@ class MessageContext {
       this._intls.set(ctor, cache);
     }
 
     return cache[id];
   }
 }
 
 this.MessageContext = MessageContext;
-this.EXPORTED_SYMBOLS = ["MessageContext"];
+var EXPORTED_SYMBOLS = ["MessageContext"];
--- a/intl/locale/PluralForm.jsm
+++ b/intl/locale/PluralForm.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "PluralForm" ];
+var EXPORTED_SYMBOLS = [ "PluralForm" ];
 
 /**
  * This module provides the PluralForm object which contains a method to figure
  * out which plural form of a word to use for a given number based on the
  * current localization. There is also a makeGetter method that creates a get
  * function for the desired plural rule. This is useful for extensions that
  * specify their own plural rule instead of relying on the browser default.
  * (I.e., the extension hasn't been localized to the browser's locale.)
@@ -72,17 +72,17 @@ var gFunctions = [
   // 16: Breton
   [5, (n) => n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?0:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?1:(n%10==3||n%10==4||n%10==9)&&n%100!=13&&n%100!=14&&n%100!=19&&n%100!=73&&n%100!=74&&n%100!=79&&n%100!=93&&n%100!=94&&n%100!=99?2:n%1000000==0&&n!=0?3:4],
   // 17: Shuar
   [2, (n) => n!=0?1:0],
   // 18: Welsh
   [6, (n) => n==0?0:n==1?1:n==2?2:n==3?3:n==6?4:5],
 ];
 
-this.PluralForm = {
+var PluralForm = {
   /**
    * Get the correct plural form of a word based on the number
    *
    * @param aNum
    *        The number to decide which plural form to use
    * @param aWords
    *        A semi-colon (;) separated string of words to pick the plural form
    * @return The appropriate plural form of the word
--- a/js/ductwork/debugger/jsdebugger.jsm
+++ b/js/ductwork/debugger/jsdebugger.jsm
@@ -1,33 +1,33 @@
 /* -*-  indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "addDebuggerToGlobal" ];
+var EXPORTED_SYMBOLS = [ "addDebuggerToGlobal" ];
 
 /*
  * This is the js module for Debugger. Import it like so:
  *   Components.utils.import("resource://gre/modules/jsdebugger.jsm");
  *   addDebuggerToGlobal(this);
  *
  * This will create a 'Debugger' object, which provides an interface to debug
  * JavaScript code running in other compartments in the same process, on the
  * same thread.
  *
  * For documentation on the API, see:
  *   https://developer.mozilla.org/en-US/docs/Tools/Debugger-API
  */
 
 const init = Components.classes["@mozilla.org/jsdebugger;1"].createInstance(Components.interfaces.IJSDebugger);
-this.addDebuggerToGlobal = function addDebuggerToGlobal(global) {
+function addDebuggerToGlobal(global) {
   init.addClass(global);
   initPromiseDebugging(global);
-};
+}
 
 function initPromiseDebugging(global) {
   if (global.Debugger.Object.prototype.PromiseDebugging) {
     return;
   }
 
   // If the PromiseDebugging object doesn't have all legacy functions, we're
   // using the new accessors on Debugger.Object already.
--- a/js/xpconnect/loader/XPCOMUtils.jsm
+++ b/js/xpconnect/loader/XPCOMUtils.jsm
@@ -83,19 +83,19 @@
  * created in step 1):
  *  var components = [MyComponent];
  *
  * 3. Define the NSGetFactory entry point:
  *  this.NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
  */
 
 
-this.EXPORTED_SYMBOLS = [ "XPCOMUtils" ];
+var EXPORTED_SYMBOLS = [ "XPCOMUtils" ];
 
-this.XPCOMUtils = {
+var XPCOMUtils = {
   /**
    * Generate a QueryInterface implementation. The returned function must be
    * assigned to the 'QueryInterface' property of a JS object. When invoked on
    * that object, it checks if the given iid is listed in the |interfaces|
    * param, and if it is, returns |this| (the object it was called on).
    * If the JS object has a classInfo property it'll be returned for the
    * nsIClassInfo IID, generateCI can be used to generate the classInfo
    * property.
--- a/js/xpconnect/tests/chrome/file_expandosharing.jsm
+++ b/js/xpconnect/tests/chrome/file_expandosharing.jsm
@@ -1,10 +1,10 @@
-this.EXPORTED_SYMBOLS = ['checkFromJSM'];
+var EXPORTED_SYMBOLS = ['checkFromJSM'];
 
-this.checkFromJSM = function checkFromJSM(target, is_op) {
+function checkFromJSM(target, is_op) {
   is_op(target.numProp, 42, "Number expando works");
   is_op(target.strProp, "foo", "String expando works");
   // If is_op is todo_is, target.objProp will be undefined.
   try {
     is_op(target.objProp.bar, "baz", "Object expando works");
   } catch(e) { is_op(0, 1, "No object expando"); }
-}
+}
\ No newline at end of file
--- a/js/xpconnect/tests/unit/bogus_element_type.jsm
+++ b/js/xpconnect/tests/unit/bogus_element_type.jsm
@@ -1,1 +1,1 @@
-this.EXPORTED_SYMBOLS = [{}];
+var EXPORTED_SYMBOLS = [{}];
--- a/js/xpconnect/tests/unit/bogus_exports_type.jsm
+++ b/js/xpconnect/tests/unit/bogus_exports_type.jsm
@@ -1,1 +1,1 @@
-this.EXPORTED_SYMBOLS = "not an array";
+var EXPORTED_SYMBOLS = "not an array";
--- a/js/xpconnect/tests/unit/recursive_importA.jsm
+++ b/js/xpconnect/tests/unit/recursive_importA.jsm
@@ -1,12 +1,12 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["foo", "bar"];
+var EXPORTED_SYMBOLS = ["foo", "bar"];
 
 function foo() {
   return "foo";
 }
 
 var bar = {}
 ChromeUtils.import("resource://test/recursive_importB.jsm", bar);
--- a/js/xpconnect/tests/unit/recursive_importB.jsm
+++ b/js/xpconnect/tests/unit/recursive_importB.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["baz", "qux"];
+var EXPORTED_SYMBOLS = ["baz", "qux"];
 
 function baz() {
   return "baz";
 }
 
 var qux = {}
 ChromeUtils.import("resource://test/recursive_importA.jsm", qux);
 
--- a/layout/tools/reftest/globals.jsm
+++ b/layout/tools/reftest/globals.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [];
+var EXPORTED_SYMBOLS = [];
 
 for (let [key, val] of Object.entries({
   /* Constants */
   XHTML_NS: "http://www.w3.org/1999/xhtml",
   XUL_NS: "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
 
   NS_LOCAL_FILE_CONTRACTID: "@mozilla.org/file/local;1",
   NS_GFXINFO_CONTRACTID: "@mozilla.org/gfx/info;1",
--- a/layout/tools/reftest/manifest.jsm
+++ b/layout/tools/reftest/manifest.jsm
@@ -1,16 +1,16 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- /
 /* vim: set shiftwidth=4 tabstop=8 autoindent cindent expandtab: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ReadTopManifest", "CreateUrls"];
+var EXPORTED_SYMBOLS = ["ReadTopManifest", "CreateUrls"];
 
 var CC = Components.classes;
 const CI = Components.interfaces;
 const CU = Components.utils;
 
 CU.import("chrome://reftest/content/globals.jsm", this);
 CU.import("chrome://reftest/content/reftest.jsm", this);
 CU.import("resource://gre/modules/Services.jsm");
--- a/layout/tools/reftest/reftest.jsm
+++ b/layout/tools/reftest/reftest.jsm
@@ -1,16 +1,16 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- /
 /* vim: set shiftwidth=4 tabstop=8 autoindent cindent expandtab: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
     "OnRefTestLoad",
     "OnRefTestUnload",
     "getTestPlugin"
 ];
 
 var CC = Components.classes;
 const CI = Components.interfaces;
 const CR = Components.results;
--- a/mobile/android/modules/Accounts.jsm
+++ b/mobile/android/modules/Accounts.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Accounts"];
+var EXPORTED_SYMBOLS = ["Accounts"];
 
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 /**
  * A promise-based API for querying the existence of Sync accounts,
  * and accessing the Sync setup wizard.
  *
--- a/mobile/android/modules/ActionBarHandler.jsm
+++ b/mobile/android/modules/ActionBarHandler.jsm
@@ -1,15 +1,15 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ActionBarHandler"];
+var EXPORTED_SYMBOLS = ["ActionBarHandler"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   BrowserUtils: "resource://gre/modules/BrowserUtils.jsm",
   EventDispatcher: "resource://gre/modules/Messaging.jsm",
   GeckoViewUtils: "resource://gre/modules/GeckoViewUtils.jsm",
   PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm",
--- a/mobile/android/modules/BrowserActions.jsm
+++ b/mobile/android/modules/BrowserActions.jsm
@@ -3,17 +3,17 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 
-this.EXPORTED_SYMBOLS = ["BrowserActions"];
+var EXPORTED_SYMBOLS = ["BrowserActions"];
 
 var BrowserActions = {
   _browserActions: {},
   _browserActionTitles: {},
 
   _initialized: false,
 
   _nextMenuId: 0,
--- a/mobile/android/modules/DelayedInit.jsm
+++ b/mobile/android/modules/DelayedInit.jsm
@@ -1,16 +1,16 @@
 /* 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";
 
 /* globals MessageLoop */
 
-this.EXPORTED_SYMBOLS = ["DelayedInit"];
+var EXPORTED_SYMBOLS = ["DelayedInit"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "MessageLoop",
                                    "@mozilla.org/message-loop;1",
                                    "nsIMessageLoop");
 
 /**
--- a/mobile/android/modules/DownloadNotifications.jsm
+++ b/mobile/android/modules/DownloadNotifications.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["DownloadNotifications"];
+var EXPORTED_SYMBOLS = ["DownloadNotifications"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Downloads", "resource://gre/modules/Downloads.jsm");
 ChromeUtils.defineModuleGetter(this, "FileUtils", "resource://gre/modules/FileUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Notifications", "resource://gre/modules/Notifications.jsm");
 ChromeUtils.defineModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm");
 ChromeUtils.defineModuleGetter(this, "Services", "resource://gre/modules/Services.jsm");
--- a/mobile/android/modules/FormAssistant.jsm
+++ b/mobile/android/modules/FormAssistant.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["FormAssistant"];
+var EXPORTED_SYMBOLS = ["FormAssistant"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   FormHistory: "resource://gre/modules/FormHistory.jsm",
   GeckoViewUtils: "resource://gre/modules/GeckoViewUtils.jsm",
   Services: "resource://gre/modules/Services.jsm",
 });
--- a/mobile/android/modules/FxAccountsWebChannel.jsm
+++ b/mobile/android/modules/FxAccountsWebChannel.jsm
@@ -5,17 +5,17 @@
 "use strict";
 
 /**
  * Firefox Accounts Web Channel.
  *
  * Use the WebChannel component to receive messages about account
  * state changes.
  */
-this.EXPORTED_SYMBOLS = ["EnsureFxAccountsWebChannel"];
+var EXPORTED_SYMBOLS = ["EnsureFxAccountsWebChannel"];
 
 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components; /* global Components */
 
 ChromeUtils.import("resource://gre/modules/Accounts.jsm"); /* global Accounts */
 ChromeUtils.import("resource://gre/modules/Services.jsm"); /* global Services */
 ChromeUtils.import("resource://gre/modules/WebChannel.jsm"); /* global WebChannel */
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm"); /* global XPCOMUtils */
 
@@ -376,17 +376,17 @@ this.FxAccountsWebChannel.prototype = {
   }
 };
 
 var singleton;
 // The entry-point for this module, which ensures only one of our channels is
 // ever created - we require this because the WebChannel is global in scope and
 // allowing multiple channels would cause such notifications to be sent multiple
 // times.
-this.EnsureFxAccountsWebChannel = () => {
+var EnsureFxAccountsWebChannel = () => {
   if (!singleton) {
     let contentUri = Services.urlFormatter.formatURLPref("identity.fxaccounts.remote.webchannel.uri");
     // The FxAccountsWebChannel listens for events and updates the Java layer.
     singleton = new this.FxAccountsWebChannel({
       content_uri: contentUri,
       channel_id: WEBCHANNEL_ID,
     });
   }
--- a/mobile/android/modules/HelperApps.jsm
+++ b/mobile/android/modules/HelperApps.jsm
@@ -15,17 +15,17 @@ ChromeUtils.defineModuleGetter(this, "Ev
                                "resource://gre/modules/Messaging.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "ContentAreaUtils", function() {
   let ContentAreaUtils = {};
   Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", ContentAreaUtils);
   return ContentAreaUtils;
 });
 
-this.EXPORTED_SYMBOLS = ["App", "HelperApps"];
+var EXPORTED_SYMBOLS = ["App", "HelperApps"];
 
 function App(data) {
   this.name = data.name;
   this.isDefault = data.isDefault;
   this.packageName = data.packageName;
   this.activityName = data.activityName;
   this.iconUri = "-moz-icon://" + data.packageName;
 }
--- a/mobile/android/modules/Home.jsm
+++ b/mobile/android/modules/Home.jsm
@@ -1,16 +1,16 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Home"];
+var EXPORTED_SYMBOLS = ["Home"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/SharedPreferences.jsm");
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 
 // Keep this in sync with the constant defined in PanelAuthCache.java
 const PREFS_PANEL_AUTH_PREFIX = "home_panels_auth_";
 
@@ -460,17 +460,17 @@ var HomePanels = (function() {
       let authKey = PREFS_PANEL_AUTH_PREFIX + id;
       let sharedPrefs = SharedPreferences.forProfile();
       sharedPrefs.setBoolPref(authKey, isAuthenticated);
     }
   });
 })();
 
 // Public API
-this.Home = Object.freeze({
+var Home = Object.freeze({
   banner: HomeBanner,
   panels: HomePanels,
 
   // Lazy notification observer registered in browser.js
   onEvent: function(event, data, callback) {
     if (event in HomeBannerMessageHandlers) {
       HomeBannerMessageHandlers[event](data);
     } else if (event in HomePanelsMessageHandlers) {
--- a/mobile/android/modules/HomeProvider.jsm
+++ b/mobile/android/modules/HomeProvider.jsm
@@ -1,16 +1,16 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "HomeProvider" ];
+var EXPORTED_SYMBOLS = [ "HomeProvider" ];
 
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Sqlite.jsm");
 ChromeUtils.import("resource://gre/modules/Task.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
@@ -114,28 +114,28 @@ function syncTimerCallback(timer) {
       let success = HomeProvider.requestSync(datasetId, callback);
       if (success) {
         Services.prefs.setIntPref(getLastSyncPrefName(datasetId), now);
       }
     }
   }
 }
 
-this.HomeStorage = function(datasetId) {
+var HomeStorage = function(datasetId) {
   this.datasetId = datasetId;
 };
 
-this.ValidationError = function(message) {
+var ValidationError = function(message) {
   this.name = "ValidationError";
   this.message = message;
 };
 ValidationError.prototype = new Error();
 ValidationError.prototype.constructor = ValidationError;
 
-this.HomeProvider = Object.freeze({
+var HomeProvider = Object.freeze({
   ValidationError: ValidationError,
 
   /**
    * Returns a storage associated with a given dataset identifer.
    *
    * @param datasetId
    *        (string) Unique identifier for the dataset.
    *
--- a/mobile/android/modules/InputWidgetHelper.jsm
+++ b/mobile/android/modules/InputWidgetHelper.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["InputWidgetHelper"];
+var EXPORTED_SYMBOLS = ["InputWidgetHelper"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   Prompt: "resource://gre/modules/Prompt.jsm",
   Services: "resource://gre/modules/Services.jsm",
 });
 
--- a/mobile/android/modules/MediaPlayerApp.jsm
+++ b/mobile/android/modules/MediaPlayerApp.jsm
@@ -1,16 +1,16 @@
 // -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["MediaPlayerApp"];
+var EXPORTED_SYMBOLS = ["MediaPlayerApp"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 
 // Helper function for sending commands to Java.
 function send(type, data, callback) {
   let msg = {
     type: type
--- a/mobile/android/modules/NetErrorHelper.jsm
+++ b/mobile/android/modules/NetErrorHelper.jsm
@@ -3,17 +3,17 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 ChromeUtils.import("resource://gre/modules/UITelemetry.jsm");
 
-this.EXPORTED_SYMBOLS = ["NetErrorHelper"];
+var EXPORTED_SYMBOLS = ["NetErrorHelper"];
 
 const KEY_CODE_ENTER = 13;
 
 /* Handlers is a list of objects that will be notified when an error page is shown
  * or when an event occurs on the page that they are registered to handle. Registration
  * is done by just adding yourself to the dictionary.
  *
  * handlers.myKey = {
--- a/mobile/android/modules/Notifications.jsm
+++ b/mobile/android/modules/Notifications.jsm
@@ -1,17 +1,17 @@
 /* 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";
 
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 
-this.EXPORTED_SYMBOLS = ["Notifications"];
+var EXPORTED_SYMBOLS = ["Notifications"];
 
 var _notificationsMap = {};
 var _handlersMap = {};
 
 function Notification(aId, aOptions) {
   this._id = aId;
   this._when = (new Date()).getTime();
   this.fillWithOptions(aOptions);
--- a/mobile/android/modules/PageActions.jsm
+++ b/mobile/android/modules/PageActions.jsm
@@ -7,17 +7,17 @@
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "uuidgen",
                                    "@mozilla.org/uuid-generator;1",
                                    "nsIUUIDGenerator");
 
-this.EXPORTED_SYMBOLS = ["PageActions"];
+var EXPORTED_SYMBOLS = ["PageActions"];
 
 // Copied from browser.js
 // TODO: We should move this method to a common importable location
 function resolveGeckoURI(aURI) {
   if (!aURI)
     throw "Can't resolve an empty uri";
 
   if (aURI.startsWith("chrome://")) {
--- a/mobile/android/modules/Prompt.jsm
+++ b/mobile/android/modules/Prompt.jsm
@@ -7,17 +7,17 @@
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   EventDispatcher: "resource://gre/modules/Messaging.jsm",
   GeckoViewUtils: "resource://gre/modules/GeckoViewUtils.jsm",
   Services: "resource://gre/modules/Services.jsm",
 });
 
-this.EXPORTED_SYMBOLS = ["Prompt", "DoorHanger"];
+var EXPORTED_SYMBOLS = ["Prompt", "DoorHanger"];
 
 function log(msg) {
   Services.console.logStringMessage(msg);
 }
 
 function Prompt(aOptions) {
   this.window = "window" in aOptions ? aOptions.window : null;
 
--- a/mobile/android/modules/RuntimePermissions.jsm
+++ b/mobile/android/modules/RuntimePermissions.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["RuntimePermissions"];
+var EXPORTED_SYMBOLS = ["RuntimePermissions"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "EventDispatcher",
                                "resource://gre/modules/Messaging.jsm");
 
 // See: http://developer.android.com/reference/android/Manifest.permission.html
 const ACCESS_COARSE_LOCATION = "android.permission.ACCESS_COARSE_LOCATION";
--- a/mobile/android/modules/SSLExceptions.jsm
+++ b/mobile/android/modules/SSLExceptions.jsm
@@ -2,17 +2,17 @@
  * 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";
 
 ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
-this.EXPORTED_SYMBOLS = ["SSLExceptions"];
+var EXPORTED_SYMBOLS = ["SSLExceptions"];
 
 /**
   A class to add exceptions to override SSL certificate problems. The functionality
   itself is borrowed from exceptionDialog.js.
 */
 function SSLExceptions() {
   this._overrideService = Cc["@mozilla.org/security/certoverride;1"]
                           .getService(Ci.nsICertOverrideService);
--- a/mobile/android/modules/Sanitizer.jsm
+++ b/mobile/android/modules/Sanitizer.jsm
@@ -13,17 +13,17 @@ XPCOMUtils.defineLazyModuleGetters(this,
   Downloads: "resource://gre/modules/Downloads.jsm",
   EventDispatcher: "resource://gre/modules/Messaging.jsm",
   FormHistory: "resource://gre/modules/FormHistory.jsm",
   OS: "resource://gre/modules/osfile.jsm",
   Task: "resource://gre/modules/Task.jsm",
   TelemetryStopwatch: "resource://gre/modules/TelemetryStopwatch.jsm",
 });
 
-this.EXPORTED_SYMBOLS = ["Sanitizer"];
+var EXPORTED_SYMBOLS = ["Sanitizer"];
 
 function Sanitizer() {}
 Sanitizer.prototype = {
   clearItem: function(aItemName, startTime) {
     // Only a subset of items support deletion with startTime.
     // Those who do not will be rejected with error message.
     if (typeof startTime != "undefined") {
       switch (aItemName) {
@@ -352,9 +352,9 @@ Sanitizer.prototype = {
             aCallback(false);
           });
       }
     }
 
   }
 };
 
-this.Sanitizer = new Sanitizer();
+var Sanitizer = new Sanitizer();
--- a/mobile/android/modules/SelectHelper.jsm
+++ b/mobile/android/modules/SelectHelper.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SelectHelper"];
+var EXPORTED_SYMBOLS = ["SelectHelper"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   Prompt: "resource://gre/modules/Prompt.jsm",
   Services: "resource://gre/modules/Services.jsm",
 });
 
--- a/mobile/android/modules/SharedPreferences.jsm
+++ b/mobile/android/modules/SharedPreferences.jsm
@@ -1,16 +1,16 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SharedPreferences"];
+var EXPORTED_SYMBOLS = ["SharedPreferences"];
 
 // For adding observers.
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 
 var Scope = Object.freeze({
   APP:          "app",
   PROFILE:      "profile",
--- a/mobile/android/modules/Snackbars.jsm
+++ b/mobile/android/modules/Snackbars.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Snackbars"];
+var EXPORTED_SYMBOLS = ["Snackbars"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "EventDispatcher", "resource://gre/modules/Messaging.jsm");
 
 const LENGTH_INDEFINITE = -2;
 const LENGTH_LONG = 0;
 const LENGTH_SHORT = -1;
--- a/mobile/android/modules/WebrtcUI.jsm
+++ b/mobile/android/modules/WebrtcUI.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["WebrtcUI"];
+var EXPORTED_SYMBOLS = ["WebrtcUI"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   DoorHanger: "resource://gre/modules/Prompt.jsm",
   Notifications: "resource://gre/modules/Notifications.jsm",
   RuntimePermissions: "resource://gre/modules/RuntimePermissions.jsm",
   Services: "resource://gre/modules/Services.jsm",
--- a/mobile/android/modules/WebsiteMetadata.jsm
+++ b/mobile/android/modules/WebsiteMetadata.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["WebsiteMetadata"];
+var EXPORTED_SYMBOLS = ["WebsiteMetadata"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "EventDispatcher", "resource://gre/modules/Messaging.jsm");
 ChromeUtils.defineModuleGetter(this, "Task", "resource://gre/modules/Task.jsm");
 
 var WebsiteMetadata = {
   /**
--- a/mobile/android/modules/geckoview/GeckoViewContent.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewContent.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewContent"];
+var EXPORTED_SYMBOLS = ["GeckoViewContent"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
     ChromeUtils.import("resource://gre/modules/AndroidLog.jsm",
                        {}).AndroidLog.d.bind(null, "ViewContent"));
 
--- a/mobile/android/modules/geckoview/GeckoViewContentModule.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewContentModule.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewContentModule"];
+var EXPORTED_SYMBOLS = ["GeckoViewContentModule"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "EventDispatcher",
   "resource://gre/modules/Messaging.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
     ChromeUtils.import("resource://gre/modules/AndroidLog.jsm",
--- a/mobile/android/modules/geckoview/GeckoViewModule.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewModule.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewModule"];
+var EXPORTED_SYMBOLS = ["GeckoViewModule"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
     ChromeUtils.import("resource://gre/modules/AndroidLog.jsm",
                        {}).AndroidLog.d.bind(null, "ViewModule"));
 
 // function debug(aMsg) {
--- a/mobile/android/modules/geckoview/GeckoViewNavigation.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewNavigation.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewNavigation"];
+var EXPORTED_SYMBOLS = ["GeckoViewNavigation"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "EventDispatcher",
   "resource://gre/modules/Messaging.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
--- a/mobile/android/modules/geckoview/GeckoViewProgress.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewProgress.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewProgress"];
+var EXPORTED_SYMBOLS = ["GeckoViewProgress"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "OverrideService",
   "@mozilla.org/security/certoverride;1", "nsICertOverrideService");
 
--- a/mobile/android/modules/geckoview/GeckoViewRemoteDebugger.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewRemoteDebugger.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewRemoteDebugger"];
+var EXPORTED_SYMBOLS = ["GeckoViewRemoteDebugger"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
   ChromeUtils.import("resource://gre/modules/AndroidLog.jsm", {})
     .AndroidLog.d.bind(null, "ViewRemoteDebugger"));
--- a/mobile/android/modules/geckoview/GeckoViewScroll.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewScroll.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewScroll"];
+var EXPORTED_SYMBOLS = ["GeckoViewScroll"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
     ChromeUtils.import("resource://gre/modules/AndroidLog.jsm",
                        {}).AndroidLog.d.bind(null, "ViewScroll"));
 
--- a/mobile/android/modules/geckoview/GeckoViewSettings.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewSettings.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewSettings"];
+var EXPORTED_SYMBOLS = ["GeckoViewSettings"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "SafeBrowsing",
   "resource://gre/modules/SafeBrowsing.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
--- a/mobile/android/modules/geckoview/GeckoViewTab.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewTab.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewTab"];
+var EXPORTED_SYMBOLS = ["GeckoViewTab"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
     ChromeUtils.import("resource://gre/modules/AndroidLog.jsm",
                        {}).AndroidLog.d.bind(null, "ViewTab"));
 
--- a/mobile/android/modules/geckoview/GeckoViewTrackingProtection.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewTrackingProtection.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["GeckoViewTrackingProtection"];
+var EXPORTED_SYMBOLS = ["GeckoViewTrackingProtection"];
 
 ChromeUtils.import("resource://gre/modules/GeckoViewModule.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "dump", () =>
     ChromeUtils.import("resource://gre/modules/AndroidLog.jsm",
               {}).AndroidLog.d.bind(null, "ViewTrackingProtection"));
 
--- a/mobile/android/modules/geckoview/GeckoViewUtils.jsm
+++ b/mobile/android/modules/geckoview/GeckoViewUtils.jsm
@@ -5,17 +5,17 @@
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   Services: "resource://gre/modules/Services.jsm",
   EventDispatcher: "resource://gre/modules/Messaging.jsm",
 });
 
-this.EXPORTED_SYMBOLS = ["GeckoViewUtils"];
+var EXPORTED_SYMBOLS = ["GeckoViewUtils"];
 
 var GeckoViewUtils = {
   /**
    * Define a lazy getter that loads an object from external code, and
    * optionally handles observer and/or message manager notifications for the
    * object, so the object only loads when a notification is received.
    *
    * @param scope     Scope for holding the loaded object.
--- a/mobile/android/modules/geckoview/Messaging.jsm
+++ b/mobile/android/modules/geckoview/Messaging.jsm
@@ -1,17 +1,17 @@
 /* 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";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.EXPORTED_SYMBOLS = ["sendMessageToJava", "Messaging", "EventDispatcher"];
+var EXPORTED_SYMBOLS = ["sendMessageToJava", "Messaging", "EventDispatcher"];
 
 ChromeUtils.defineModuleGetter(this, "Task", "resource://gre/modules/Task.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "UUIDGen",
                                    "@mozilla.org/uuid-generator;1",
                                    "nsIUUIDGenerator");
 
 const IS_PARENT_PROCESS = (Services.appinfo.processType ==
--- a/netwerk/base/NetUtil.jsm
+++ b/netwerk/base/NetUtil.jsm
@@ -1,15 +1,15 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 4 -*-
  * vim: sw=4 ts=4 sts=4 et filetype=javascript
  * 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "NetUtil",
 ];
 
 /**
  * Necko utilities
  */
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -21,17 +21,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const BinaryInputStream = Components.Constructor("@mozilla.org/binaryinputstream;1",
                                                  "nsIBinaryInputStream", "setInputStream");
 
 ////////////////////////////////////////////////////////////////////////////////
 //// NetUtil Object
 
-this.NetUtil = {
+var NetUtil = {
     /**
      * Function to perform simple async copying from aSource (an input stream)
      * to aSink (an output stream).  The copy will happen on some background
      * thread.  Both streams will be closed when the copy completes.
      *
      * @param aSource
      *        The input stream to read from
      * @param aSink
--- a/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm
+++ b/netwerk/dns/mdns/libmdns/MulticastDNSAndroid.jsm
@@ -1,16 +1,16 @@
 // -*- Mode: js2; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["MulticastDNS"];
+var EXPORTED_SYMBOLS = ["MulticastDNS"];
 
 ChromeUtils.import("resource://gre/modules/Messaging.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const DEBUG = false;
 
 var log = function(s) {};
 if (DEBUG) {
--- a/netwerk/dns/mdns/libmdns/fallback/DNSPacket.jsm
+++ b/netwerk/dns/mdns/libmdns/fallback/DNSPacket.jsm
@@ -1,17 +1,17 @@
 /* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil; tab-width: 2 -*- */
 /* 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/. */
 /* jshint esnext: true, moz: true */
 
 'use strict';
 
-this.EXPORTED_SYMBOLS = ['DNSPacket'];
+var EXPORTED_SYMBOLS = ['DNSPacket'];
 
 ChromeUtils.import('resource://gre/modules/Services.jsm');
 
 ChromeUtils.import('resource://gre/modules/DataReader.jsm');
 ChromeUtils.import('resource://gre/modules/DataWriter.jsm');
 ChromeUtils.import('resource://gre/modules/DNSRecord.jsm');
 ChromeUtils.import('resource://gre/modules/DNSResourceRecord.jsm');
 
--- a/netwerk/dns/mdns/libmdns/fallback/DNSRecord.jsm
+++ b/netwerk/dns/mdns/libmdns/fallback/DNSRecord.jsm
@@ -1,17 +1,17 @@
 /* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil; tab-width: 2 -*- */
 /* 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/. */
 /* jshint esnext: true, moz: true */
 
 'use strict';
 
-this.EXPORTED_SYMBOLS = ['DNSRecord'];
+var EXPORTED_SYMBOLS = ['DNSRecord'];
 
 ChromeUtils.import('resource://gre/modules/DataWriter.jsm');
 ChromeUtils.import('resource://gre/modules/DNSTypes.jsm');
 
 class DNSRecord {
   constructor(properties = {}) {
     this.name       = properties.name       || '';
     this.recordType = properties.recordType || DNS_RECORD_TYPES.ANY;
--- a/netwerk/dns/mdns/libmdns/fallback/DNSResourceRecord.jsm
+++ b/netwerk/dns/mdns/libmdns/fallback/DNSResourceRecord.jsm
@@ -1,17 +1,17 @@
 /* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil; tab-width: 2 -*- */
 /* 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/. */
 /* jshint esnext: true, moz: true */
 
 'use strict';
 
-this.EXPORTED_SYMBOLS = ['DNSResourceRecord'];
+var EXPORTED_SYMBOLS = ['DNSResourceRecord'];
 
 ChromeUtils.import('resource://gre/modules/Services.jsm');
 ChromeUtils.import('resource://gre/modules/DataReader.jsm');
 ChromeUtils.import('resource://gre/modules/DataWriter.jsm');
 ChromeUtils.import('resource://gre/modules/DNSRecord.jsm');
 ChromeUtils.import('resource://gre/modules/DNSTypes.jsm');
 
 function debug(msg) {
--- a/netwerk/dns/mdns/libmdns/fallback/DNSTypes.jsm
+++ b/netwerk/dns/mdns/libmdns/fallback/DNSTypes.jsm
@@ -1,17 +1,17 @@
 /* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil; tab-width: 2 -*- */
 /* 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/. */
 /* jshint esnext: true, moz: true */
 
 'use strict';
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   'DNS_QUERY_RESPONSE_CODES',
   'DNS_AUTHORITATIVE_ANSWER_CODES',
   'DNS_CLASS_CODES',
   'DNS_RECORD_TYPES'
 ];
 
 let DNS_QUERY_RESPONSE_CODES = {
   QUERY           : 0,      // RFC 1035 - Query
--- a/netwerk/dns/mdns/libmdns/fallback/DataReader.jsm
+++ b/netwerk/dns/mdns/libmdns/fallback/DataReader.jsm
@@ -1,17 +1,17 @@
 /* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil; tab-width: 2 -*- */
 /* 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/. */
 /* jshint esnext: true, moz: true */
 
 'use strict';
 
-this.EXPORTED_SYMBOLS = ['DataReader'];
+var EXPORTED_SYMBOLS = ['DataReader'];
 
 class DataReader {
   // `data` is `Uint8Array`
   constructor(data, startByte = 0) {
     this._data = data;
     this._cursor = startByte;
   }
 
--- a/netwerk/dns/mdns/libmdns/fallback/DataWriter.jsm
+++ b/netwerk/dns/mdns/libmdns/fallback/DataWriter.jsm
@@ -1,17 +1,17 @@
 /* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil; tab-width: 2 -*- */
 /* 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/. */
 /* jshint esnext: true, moz: true */
 
 'use strict';
 
-this.EXPORTED_SYMBOLS = ['DataWriter'];
+var EXPORTED_SYMBOLS = ['DataWriter'];
 
 class DataWriter {
   constructor(data, maxBytes = 512) {
     if (typeof data === 'number') {
       maxBytes = data;
       data = undefined;
     }
 
--- a/netwerk/dns/mdns/libmdns/fallback/MulticastDNS.jsm
+++ b/netwerk/dns/mdns/libmdns/fallback/MulticastDNS.jsm
@@ -1,17 +1,17 @@
 /* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil; tab-width: 2 -*- */
 /* 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/. */
 /* jshint esnext: true, moz: true */
 
 'use strict';
 
-this.EXPORTED_SYMBOLS = ['MulticastDNS'];
+var EXPORTED_SYMBOLS = ['MulticastDNS'];
 
 ChromeUtils.import('resource://gre/modules/Services.jsm');
 ChromeUtils.import('resource://gre/modules/Timer.jsm');
 ChromeUtils.import('resource://gre/modules/XPCOMUtils.jsm');
 
 ChromeUtils.import('resource://gre/modules/DNSPacket.jsm');
 ChromeUtils.import('resource://gre/modules/DNSRecord.jsm');
 ChromeUtils.import('resource://gre/modules/DNSResourceRecord.jsm');
--- a/netwerk/protocol/http/UserAgentOverrides.jsm
+++ b/netwerk/protocol/http/UserAgentOverrides.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "UserAgentOverrides" ];
+var EXPORTED_SYMBOLS = [ "UserAgentOverrides" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/UserAgentUpdates.jsm");
 
 const PREF_OVERRIDES_ENABLED = "general.useragent.site_specific_overrides";
 const MAX_OVERRIDE_FOR_HOST_CACHE_SIZE = 250;
 
@@ -25,17 +25,17 @@ var gOverrides = new Map;
 var gUpdatedOverrides;
 var gOverrideForHostCache = new Map;
 var gInitialized = false;
 var gOverrideFunctions = [
   function (aHttpChannel) { return UserAgentOverrides.getOverrideForURI(aHttpChannel.URI); }
 ];
 var gBuiltUAs = new Map;
 
-this.UserAgentOverrides = {
+var UserAgentOverrides = {
   init: function uao_init() {
     if (gInitialized)
       return;
 
     gPrefBranch = Services.prefs.getBranch("general.useragent.override.");
     gPrefBranch.addObserver("", buildOverrides);
 
     Services.prefs.addObserver(PREF_OVERRIDES_ENABLED, buildOverrides);
--- a/netwerk/protocol/http/UserAgentUpdates.jsm
+++ b/netwerk/protocol/http/UserAgentUpdates.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["UserAgentUpdates"];
+var EXPORTED_SYMBOLS = ["UserAgentUpdates"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
 ChromeUtils.defineModuleGetter(
@@ -80,17 +80,17 @@ function readChannel(url) {
       });
     } catch (ex) {
       reject(new Error("UserAgentUpdates: Could not fetch " + url + " " +
                        ex + "\n" + ex.stack));
     }
   });
 }
 
-this.UserAgentUpdates = {
+var UserAgentUpdates = {
   init: function(callback) {
     if (gInitialized) {
       return;
     }
     gInitialized = true;
 
     this._callback = callback;
     this._lastUpdated = 0;
--- a/netwerk/test/httpserver/httpd.js
+++ b/netwerk/test/httpserver/httpd.js
@@ -5,17 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * An implementation of an HTTP server both as a loadable script and as an XPCOM
  * component.  See the accompanying README file for user documentation on
  * httpd.js.
  */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "HTTP_400",
   "HTTP_401",
   "HTTP_402",
   "HTTP_403",
   "HTTP_404",
   "HTTP_405",
   "HTTP_406",
   "HTTP_407",
@@ -69,56 +69,56 @@ function NS_ASSERT(cond, msg)
     var stack = new Error().stack.split(/\n/);
     dumpn(stack.map(function(val) { return "###!!!   " + val; }).join("\n"));
 
     throw Cr.NS_ERROR_ABORT;
   }
 }
 
 /** Constructs an HTTP error object. */
-this.HttpError = function HttpError(code, description)
+function HttpError(code, description)
 {
   this.code = code;
   this.description = description;
 }
 HttpError.prototype =
 {
   toString: function()
   {
     return this.code + " " + this.description;
   }
 };
 
 /**
  * Errors thrown to trigger specific HTTP server responses.
  */
-this.HTTP_400 = new HttpError(400, "Bad Request");
-this.HTTP_401 = new HttpError(401, "Unauthorized");
-this.HTTP_402 = new HttpError(402, "Payment Required");
-this.HTTP_403 = new HttpError(403, "Forbidden");
-this.HTTP_404 = new HttpError(404, "Not Found");
-this.HTTP_405 = new HttpError(405, "Method Not Allowed");
-this.HTTP_406 = new HttpError(406, "Not Acceptable");
-this.HTTP_407 = new HttpError(407, "Proxy Authentication Required");
-this.HTTP_408 = new HttpError(408, "Request Timeout");
-this.HTTP_409 = new HttpError(409, "Conflict");
-this.HTTP_410 = new HttpError(410, "Gone");
-this.HTTP_411 = new HttpError(411, "Length Required");
-this.HTTP_412 = new HttpError(412, "Precondition Failed");
-this.HTTP_413 = new HttpError(413, "Request Entity Too Large");
-this.HTTP_414 = new HttpError(414, "Request-URI Too Long");
-this.HTTP_415 = new HttpError(415, "Unsupported Media Type");
-this.HTTP_417 = new HttpError(417, "Expectation Failed");
-
-this.HTTP_500 = new HttpError(500, "Internal Server Error");
-this.HTTP_501 = new HttpError(501, "Not Implemented");
-this.HTTP_502 = new HttpError(502, "Bad Gateway");
-this.HTTP_503 = new HttpError(503, "Service Unavailable");
-this.HTTP_504 = new HttpError(504, "Gateway Timeout");
-this.HTTP_505 = new HttpError(505, "HTTP Version Not Supported");
+var HTTP_400 = new HttpError(400, "Bad Request");
+var HTTP_401 = new HttpError(401, "Unauthorized");
+var HTTP_402 = new HttpError(402, "Payment Required");
+var HTTP_403 = new HttpError(403, "Forbidden");
+var HTTP_404 = new HttpError(404, "Not Found");
+var HTTP_405 = new HttpError(405, "Method Not Allowed");
+var HTTP_406 = new HttpError(406, "Not Acceptable");
+var HTTP_407 = new HttpError(407, "Proxy Authentication Required");
+var HTTP_408 = new HttpError(408, "Request Timeout");
+var HTTP_409 = new HttpError(409, "Conflict");
+var HTTP_410 = new HttpError(410, "Gone");
+var HTTP_411 = new HttpError(411, "Length Required");
+var HTTP_412 = new HttpError(412, "Precondition Failed");
+var HTTP_413 = new HttpError(413, "Request Entity Too Large");
+var HTTP_414 = new HttpError(414, "Request-URI Too Long");
+var HTTP_415 = new HttpError(415, "Unsupported Media Type");
+var HTTP_417 = new HttpError(417, "Expectation Failed");
+
+var HTTP_500 = new HttpError(500, "Internal Server Error");
+var HTTP_501 = new HttpError(501, "Not Implemented");
+var HTTP_502 = new HttpError(502, "Bad Gateway");
+var HTTP_503 = new HttpError(503, "Service Unavailable");
+var HTTP_504 = new HttpError(504, "Gateway Timeout");
+var HTTP_505 = new HttpError(505, "HTTP Version Not Supported");
 
 /** Creates a hash with fields corresponding to the values in arr. */
 function array2obj(arr)
 {
   var obj = {};
   for (var i = 0; i < arr.length; i++)
     obj[arr[i]] = arr[i];
   return obj;
@@ -848,17 +848,17 @@ nsHttpServer.prototype =
   _requestQuit: function()
   {
     dumpn(">>> requesting a quit");
     dumpStack();
     this._doQuit = true;
   }
 };
 
-this.HttpServer = nsHttpServer;
+var HttpServer = nsHttpServer;
 
 //
 // RFC 2396 section 3.2.2:
 //
 // host        = hostname | IPv4address
 // hostname    = *( domainlabel "." ) toplabel [ "." ]
 // domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
 // toplabel    = alpha | alpha *( alphanum | "-" ) alphanum
@@ -5316,17 +5316,17 @@ Request.prototype =
     if (!this._bag)
       this._bag = new WritablePropertyBag();
   }
 };
 
 
 // XPCOM trappings
 
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([nsHttpServer]);
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([nsHttpServer]);
 
 /**
  * Creates a new HTTP server listening for loopback traffic on the given port,
  * starts it, and runs the server until the server processes a shutdown request,
  * spinning an event loop so that events posted by the server's socket are
  * processed.
  *
  * This method is primarily intended for use in running this script from within
--- a/security/manager/ssl/X509.jsm
+++ b/security/manager/ssl/X509.jsm
@@ -624,10 +624,10 @@ class SubjectPublicKeyInfo extends Decod
     }
     this._subjectPublicKey = subjectPublicKeyBitString.contents;
 
     contents.assertAtEnd();
     this._der.assertAtEnd();
   }
 }
 
-this.X509 = { Certificate };
-this.EXPORTED_SYMBOLS = ["X509"];
+var X509 = { Certificate };
+var EXPORTED_SYMBOLS = ["X509"];
--- a/services/common/async.js
+++ b/services/common/async.js
@@ -1,28 +1,28 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Async"];
+var EXPORTED_SYMBOLS = ["Async"];
 
 // Constants for makeSyncCallback, waitForSyncCallback.
 const CB_READY = {};
 const CB_COMPLETE = {};
 const CB_FAIL = {};
 
 const REASON_ERROR = Ci.mozIStorageStatementCallback.REASON_ERROR;
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 /*
  * Helpers for various async operations.
  */
-this.Async = {
+var Async = {
 
   /**
    * Execute an arbitrary number of asynchronous functions one after the
    * other, passing the callback arguments on to the next one.  All functions
    * must take a callback function as their last argument.  The 'this' object
    * will be whatever chain()'s is.
    *
    * @usage this._chain = Async.chain;
--- a/services/common/blocklist-clients.js
+++ b/services/common/blocklist-clients.js
@@ -1,19 +1,19 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AddonBlocklistClient",
-                         "GfxBlocklistClient",
-                         "OneCRLBlocklistClient",
-                         "PinningBlocklistClient",
-                         "PluginBlocklistClient"];
+var EXPORTED_SYMBOLS = ["AddonBlocklistClient",
+                        "GfxBlocklistClient",
+                        "OneCRLBlocklistClient",
+                        "PinningBlocklistClient",
+                        "PluginBlocklistClient"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 const { OS } = ChromeUtils.import("resource://gre/modules/osfile.jsm", {});
 Cu.importGlobalProperties(["fetch"]);
 
 ChromeUtils.defineModuleGetter(this, "FileUtils",
                                "resource://gre/modules/FileUtils.jsm");
@@ -431,44 +431,44 @@ async function updateJSONBlocklist(filen
     // Notify change to `nsBlocklistService`
     const eventData = {filename};
     Services.cpmm.sendAsyncMessage("Blocklist:reload-from-disk", eventData);
   } catch (e) {
     Cu.reportError(e);
   }
 }
 
-this.OneCRLBlocklistClient = new BlocklistClient(
+var OneCRLBlocklistClient = new BlocklistClient(
   Services.prefs.getCharPref(PREF_BLOCKLIST_ONECRL_COLLECTION),
   PREF_BLOCKLIST_ONECRL_CHECKED_SECONDS,
   updateCertBlocklist,
   Services.prefs.getCharPref(PREF_BLOCKLIST_BUCKET),
   "onecrl.content-signature.mozilla.org"
 );
 
-this.AddonBlocklistClient = new BlocklistClient(
+var AddonBlocklistClient = new BlocklistClient(
   Services.prefs.getCharPref(PREF_BLOCKLIST_ADDONS_COLLECTION),
   PREF_BLOCKLIST_ADDONS_CHECKED_SECONDS,
   (records) => updateJSONBlocklist(this.AddonBlocklistClient.filename, records),
   Services.prefs.getCharPref(PREF_BLOCKLIST_BUCKET)
 );
 
-this.GfxBlocklistClient = new BlocklistClient(
+var GfxBlocklistClient = new BlocklistClient(
   Services.prefs.getCharPref(PREF_BLOCKLIST_GFX_COLLECTION),
   PREF_BLOCKLIST_GFX_CHECKED_SECONDS,
   (records) => updateJSONBlocklist(this.GfxBlocklistClient.filename, records),
   Services.prefs.getCharPref(PREF_BLOCKLIST_BUCKET)
 );
 
-this.PluginBlocklistClient = new BlocklistClient(
+var PluginBlocklistClient = new BlocklistClient(
   Services.prefs.getCharPref(PREF_BLOCKLIST_PLUGINS_COLLECTION),
   PREF_BLOCKLIST_PLUGINS_CHECKED_SECONDS,
   (records) => updateJSONBlocklist(this.PluginBlocklistClient.filename, records),
   Services.prefs.getCharPref(PREF_BLOCKLIST_BUCKET)
 );
 
-this.PinningPreloadClient = new BlocklistClient(
+var PinningPreloadClient = new BlocklistClient(
   Services.prefs.getCharPref(PREF_BLOCKLIST_PINNING_COLLECTION),
   PREF_BLOCKLIST_PINNING_CHECKED_SECONDS,
   updatePinningList,
   Services.prefs.getCharPref(PREF_BLOCKLIST_PINNING_BUCKET),
   "pinning-preload.content-signature.mozilla.org"
 );
--- a/services/common/blocklist-updater.js
+++ b/services/common/blocklist-updater.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["checkVersions", "addTestBlocklistClient"];
+var EXPORTED_SYMBOLS = ["checkVersions", "addTestBlocklistClient"];
 
 const CC = Components.Constructor;
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 Cu.importGlobalProperties(["fetch"]);
 ChromeUtils.defineModuleGetter(this, "UptakeTelemetry",
                                "resource://services-common/uptake-telemetry.js");
@@ -31,17 +31,17 @@ XPCOMUtils.defineLazyGetter(this, "gBloc
     [BlocklistClients.AddonBlocklistClient.collectionName]: BlocklistClients.AddonBlocklistClient,
     [BlocklistClients.GfxBlocklistClient.collectionName]: BlocklistClients.GfxBlocklistClient,
     [BlocklistClients.PluginBlocklistClient.collectionName]: BlocklistClients.PluginBlocklistClient,
     [BlocklistClients.PinningPreloadClient.collectionName]: BlocklistClients.PinningPreloadClient,
   };
 });
 
 // Add a blocklist client for testing purposes. Do not use for any other purpose
-this.addTestBlocklistClient = (name, client) => { gBlocklistClients[name] = client; };
+var addTestBlocklistClient = (name, client) => { gBlocklistClients[name] = client; };
 
 
 async function pollChanges(url, lastEtag) {
   //
   // Fetch a versionInfo object from the server that looks like:
   // {"data":[
   //   {
   //     "host":"kinto-ota.dev.mozaws.net",
@@ -86,17 +86,17 @@ async function pollChanges(url, lastEtag
   }
 
   return {versionInfo, currentEtag, serverTimeMillis, backoffSeconds};
 }
 
 
 // This is called by the ping mechanism.
 // returns a promise that rejects if something goes wrong
-this.checkVersions = async function() {
+var checkVersions = async function() {
   // Check if the server backoff time is elapsed.
   if (Services.prefs.prefHasUserValue(PREF_SETTINGS_SERVER_BACKOFF)) {
     const backoffReleaseTime = Services.prefs.getCharPref(PREF_SETTINGS_SERVER_BACKOFF);
     const remainingMilliseconds = parseInt(backoffReleaseTime, 10) - Date.now();
     if (remainingMilliseconds > 0) {
       // Backoff time has not elapsed yet.
       UptakeTelemetry.report(TELEMETRY_HISTOGRAM_KEY,
                              UptakeTelemetry.STATUS.BACKOFF);
--- a/services/common/hawkclient.js
+++ b/services/common/hawkclient.js
@@ -19,17 +19,17 @@
  *
  * This library provides a stateful HAWK client that calculates (roughly) the
  * clock delta on the client vs the server.  The library provides an interface
  * for deriving HAWK credentials and making HAWK-authenticated REST requests to
  * a single remote server.  Therefore, callers who want to interact with
  * multiple HAWK services should instantiate one HawkClient per service.
  */
 
-this.EXPORTED_SYMBOLS = ["HawkClient"];
+var EXPORTED_SYMBOLS = ["HawkClient"];
 
 ChromeUtils.import("resource://services-crypto/utils.js");
 ChromeUtils.import("resource://services-common/hawkrequest.js");
 ChromeUtils.import("resource://services-common/observers.js");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
@@ -83,17 +83,17 @@ XPCOMUtils.defineLazyGetter(this, "logPI
  * computation of the timestamp in the HAWK Authorization header.
  *
  * Clients should create one HawkClient object per each server they wish to
  * interact with.
  *
  * @param host
  *        The url of the host
  */
-this.HawkClient = function(host) {
+var HawkClient = function(host) {
   this.host = host;
 
   // Clock offset in milliseconds between our client's clock and the date
   // reported in responses from our host.
   this._localtimeOffsetMsec = 0;
 };
 
 this.HawkClient.prototype = {
--- a/services/common/hawkrequest.js
+++ b/services/common/hawkrequest.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "HAWKAuthenticatedRESTRequest",
   "deriveHawkCredentials"
 ];
 
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
@@ -45,17 +45,17 @@ const Prefs = new Preferences("services.
  *                                as headers on the request>
  *
  * extra.localtimeOffsetMsec is the value in milliseconds that must be added to
  * the local clock to make it agree with the server's clock.  For instance, if
  * the local clock is two minutes ahead of the server, the time offset in
  * milliseconds will be -120000.
  */
 
-this.HAWKAuthenticatedRESTRequest =
+var HAWKAuthenticatedRESTRequest =
  function HawkAuthenticatedRESTRequest(uri, credentials, extra = {}) {
   RESTRequest.call(this, uri);
 
   this.credentials = credentials;
   this.now = extra.now || Date.now();
   this.localtimeOffsetMsec = extra.localtimeOffsetMsec || 0;
   this._log.trace("local time, offset: " + this.now + ", " + (this.localtimeOffsetMsec));
   this.extraHeaders = extra.headers || {};
@@ -117,47 +117,47 @@ HAWKAuthenticatedRESTRequest.prototype =
   *        Returns an object:
   *        {
   *          algorithm: sha256
   *          id: the Hawk id (from the first 32 bytes derived)
   *          key: the Hawk key (from bytes 32 to 64)
   *          extra: size - 64 extra bytes (if size > 64)
   *        }
   */
-this.deriveHawkCredentials = function deriveHawkCredentials(tokenHex,
+function deriveHawkCredentials(tokenHex,
                                                             context,
                                                             size = 96,
                                                             hexKey = false) {
   let token = CommonUtils.hexToBytes(tokenHex);
   let out = CryptoUtils.hkdf(token, undefined, Credentials.keyWord(context), size);
 
   let result = {
     algorithm: "sha256",
     key: hexKey ? CommonUtils.bytesAsHex(out.slice(32, 64)) : out.slice(32, 64),
     id: CommonUtils.bytesAsHex(out.slice(0, 32))
   };
   if (size > 64) {
     result.extra = out.slice(64);
   }
 
   return result;
-};
+}
 
 // With hawk request, we send the user's accepted-languages with each request.
 // To keep the number of times we read this pref at a minimum, maintain the
 // preference in a stateful object that notices and updates itself when the
 // pref is changed.
-this.Intl = function Intl() {
+function Intl() {
   // We won't actually query the pref until the first time we need it
   this._accepted = "";
   this._everRead = false;
   this._log = Log.repository.getLogger("Services.Common.RESTRequest");
   this._log.level = Log.Level[Prefs.get("log.logger.rest.request")];
   this.init();
-};
+}
 
 this.Intl.prototype = {
   init() {
     Services.prefs.addObserver("intl.accept_languages", this);
   },
 
   uninit() {
     Services.prefs.removeObserver("intl.accept_languages", this);
--- a/services/common/kinto-http-client.js
+++ b/services/common/kinto-http-client.js
@@ -15,17 +15,17 @@
 "use strict";
 
 /*
  * This file is generated from kinto-http.js - do not modify directly.
  */
 
 const global = this;
 
-this.EXPORTED_SYMBOLS = ["KintoHttpClient"];
+var EXPORTED_SYMBOLS = ["KintoHttpClient"];
 
 /*
  * Version 4.5.3 - 5179c56
  */
 
 (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.KintoHttpClient = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){
 /*
  *
--- a/services/common/kinto-offline-client.js
+++ b/services/common/kinto-offline-client.js
@@ -25,17 +25,17 @@
 // global object, so expose the global object explicitly. Babel's
 // compiled output will use a variable called "global" if one is
 // present.
 //
 // See https://bugzilla.mozilla.org/show_bug.cgi?id=1394556#c3 for
 // more details.
 const global = this;
 
-this.EXPORTED_SYMBOLS = ["Kinto"];
+var EXPORTED_SYMBOLS = ["Kinto"];
 
 /*
  * Version 11.0.0 - 1dbc5fb
  */
 
 (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Kinto = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){
 /*
  *
--- a/services/common/kinto-storage-adapter.js
+++ b/services/common/kinto-storage-adapter.js
@@ -481,9 +481,9 @@ function transactionProxy(collection, pr
     get(id) {
       // Gecko JS engine outputs undesired warnings if id is not in preloaded.
       return id in preloaded ? preloaded[id] : undefined;
     }
   };
 }
 this.FirefoxAdapter = FirefoxAdapter;
 
-this.EXPORTED_SYMBOLS = ["FirefoxAdapter"];
+var EXPORTED_SYMBOLS = ["FirefoxAdapter"];
--- a/services/common/logmanager.js
+++ b/services/common/logmanager.js
@@ -12,17 +12,17 @@ ChromeUtils.defineModuleGetter(this, "Lo
   "resource://gre/modules/Log.jsm");
 ChromeUtils.defineModuleGetter(this, "OS",
   "resource://gre/modules/osfile.jsm");
 ChromeUtils.defineModuleGetter(this, "CommonUtils",
   "resource://services-common/utils.js");
 
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "LogManager",
 ];
 
 const DEFAULT_MAX_ERROR_AGE = 20 * 24 * 60 * 60; // 20 days
 
 // "shared" logs (ie, where the same log name is used by multiple LogManager
 // instances) are a fact of life here - eg, FirefoxAccounts logs are used by
 // both Sync and Reading List.
--- a/services/common/modules-testing/logging.js
+++ b/services/common/modules-testing/logging.js
@@ -1,22 +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/. */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "getTestLogger",
   "initTestLogging",
 ];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 
-this.initTestLogging = function initTestLogging(level) {
+function initTestLogging(level) {
   function LogStats() {
     this.errorsLogged = 0;
   }
   LogStats.prototype = {
     format: function format(message) {
       if (message.level == Log.Level.Error) {
         this.errorsLogged += 1;
       }
@@ -43,14 +43,14 @@ this.initTestLogging = function initTest
   log.ownAppenders = [appender];
   log.updateAppenders();
 
   // SQLite logging is noisy in these tests - we make it quiet by default
   // (although individual tests are free to bump it later)
   Log.repository.getLogger("Sqlite").level = Log.Level.Info;
 
   return logStats;
-};
+}
 
-this.getTestLogger = function getTestLogger(component) {
+function getTestLogger(component) {
   return Log.repository.getLogger("Testing");
-};
+}
 
--- a/services/common/observers.js
+++ b/services/common/observers.js
@@ -1,24 +1,24 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Observers"];
+var EXPORTED_SYMBOLS = ["Observers"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 /**
  * A service for adding, removing and notifying observers of notifications.
  * Wraps the nsIObserverService interface.
  *
  * @version 0.2
  */
-this.Observers = {
+var Observers = {
   /**
    * Register the given callback as an observer of the given topic.
    *
    * @param   topic       {String}
    *          the topic to observe
    *
    * @param   callback    {Object}
    *          the callback; an Object that implements nsIObserver or a Function
--- a/services/common/rest.js
+++ b/services/common/rest.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "RESTRequest",
   "RESTResponse",
   "TokenAuthenticatedRESTRequest",
 ];
 
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
@@ -70,31 +70,31 @@ const Prefs = new Preferences("services.
  *       return;
  *     }
  *     // Process body data and reset it so we don't process the same data twice.
  *     processIncrementalData(this.response.body);
  *     this.response.body = "";
  *   });
  *   request.get();
  */
-this.RESTRequest = function RESTRequest(uri) {
+function RESTRequest(uri) {
   this.status = this.NOT_SENT;
 
   // If we don't have an nsIURI object yet, make one. This will throw if
   // 'uri' isn't a valid URI string.
   if (!(uri instanceof Ci.nsIURI)) {
     uri = Services.io.newURI(uri);
   }
   this.uri = uri;
 
   this._headers = {};
   this._log = Log.repository.getLogger(this._logName);
   this._log.level =
     Log.Level[Prefs.get("log.logger.rest.request")];
-};
+}
 RESTRequest.prototype = {
 
   _logName: "Services.Common.RESTRequest",
 
   QueryInterface: XPCOMUtils.generateQI([
     Ci.nsIBadCertListener2,
     Ci.nsIInterfaceRequestor,
     Ci.nsIChannelEventSink
@@ -637,21 +637,21 @@ RESTRequest.prototype = {
     callback.onRedirectVerifyCallback(Cr.NS_OK);
   }
 };
 
 /**
  * Response object for a RESTRequest. This will be created automatically by
  * the RESTRequest.
  */
-this.RESTResponse = function RESTResponse() {
+function RESTResponse() {
   this._log = Log.repository.getLogger(this._logName);
   this._log.level =
     Log.Level[Prefs.get("log.logger.rest.response")];
-};
+}
 RESTResponse.prototype = {
 
   _logName: "Services.Common.RESTResponse",
 
   /**
    * Corresponding REST request
    */
   request: null,
@@ -738,22 +738,21 @@ RESTResponse.prototype = {
  *        from which the MAC Authentication header for this request will be
  *        derived. A token as obtained from
  *        TokenServerClient.getTokenFromBrowserIDAssertion is accepted.
  * @param extra
  *        (Object) Optional extra parameters. Valid keys are: nonce_bytes, ts,
  *        nonce, and ext. See CrytoUtils.computeHTTPMACSHA1 for information on
  *        the purpose of these values.
  */
-this.TokenAuthenticatedRESTRequest =
- function TokenAuthenticatedRESTRequest(uri, authToken, extra) {
+function TokenAuthenticatedRESTRequest(uri, authToken, extra) {
   RESTRequest.call(this, uri);
   this.authToken = authToken;
   this.extra = extra || {};
-};
+}
 TokenAuthenticatedRESTRequest.prototype = {
   __proto__: RESTRequest.prototype,
 
   dispatch: function dispatch(method, data, onComplete, onProgress) {
     let sig = CryptoUtils.computeHTTPMACSHA1(
       this.authToken.id, this.authToken.key, method, this.uri, this.extra
     );
 
--- a/services/common/tokenserverclient.js
+++ b/services/common/tokenserverclient.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TokenServerClient",
   "TokenServerClientError",
   "TokenServerClientNetworkError",
   "TokenServerClientServerError",
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
@@ -21,23 +21,23 @@ const PREF_LOG_LEVEL = "services.common.
 /**
  * Represents a TokenServerClient error that occurred on the client.
  *
  * This is the base type for all errors raised by client operations.
  *
  * @param message
  *        (string) Error message.
  */
-this.TokenServerClientError = function TokenServerClientError(message) {
+function TokenServerClientError(message) {
   this.name = "TokenServerClientError";
   this.message = message || "Client error.";
   // Without explicitly setting .stack, all stacks from these errors will point
   // to the "new Error()" call a few lines down, which isn't helpful.
   this.stack = Error().stack;
-};
+}
 TokenServerClientError.prototype = new Error();
 TokenServerClientError.prototype.constructor = TokenServerClientError;
 TokenServerClientError.prototype._toStringFields = function() {
   return {message: this.message};
 };
 TokenServerClientError.prototype.toString = function() {
   return this.name + "(" + JSON.stringify(this._toStringFields()) + ")";
 };
@@ -48,22 +48,21 @@ TokenServerClientError.prototype.toJSON 
 };
 
 /**
  * Represents a TokenServerClient error that occurred in the network layer.
  *
  * @param error
  *        The underlying error thrown by the network layer.
  */
-this.TokenServerClientNetworkError =
- function TokenServerClientNetworkError(error) {
+function TokenServerClientNetworkError(error) {
   this.name = "TokenServerClientNetworkError";
   this.error = error;
   this.stack = Error().stack;
-};
+}
 TokenServerClientNetworkError.prototype = new TokenServerClientError();
 TokenServerClientNetworkError.prototype.constructor =
   TokenServerClientNetworkError;
 TokenServerClientNetworkError.prototype._toStringFields = function() {
   return {error: this.error};
 };
 
 /**
@@ -91,24 +90,23 @@ TokenServerClientNetworkError.prototype.
  *     expected.
  *
  *   general -- A general server error has occurred. Clients should
  *     interpret this as an opaque failure.
  *
  * @param message
  *        (string) Error message.
  */
-this.TokenServerClientServerError =
- function TokenServerClientServerError(message, cause = "general") {
+function TokenServerClientServerError(message, cause = "general") {
   this.now = new Date().toISOString(); // may be useful to diagnose time-skew issues.
   this.name = "TokenServerClientServerError";
   this.message = message || "Server error.";
   this.cause = cause;
   this.stack = Error().stack;
-};
+}
 TokenServerClientServerError.prototype = new TokenServerClientError();
 TokenServerClientServerError.prototype.constructor =
   TokenServerClientServerError;
 
 TokenServerClientServerError.prototype._toStringFields = function() {
   let fields = {
     now: this.now,
     message: this.message,
@@ -140,20 +138,20 @@ TokenServerClientServerError.prototype._
  * Areas to Improve:
  *
  *  - The server sends a JSON response on error. The client does not currently
  *    parse this. It might be convenient if it did.
  *  - Currently most non-200 status codes are rolled into one error type. It
  *    might be helpful if callers had a richer API that communicated who was
  *    at fault (e.g. differentiating a 503 from a 401).
  */
-this.TokenServerClient = function TokenServerClient() {
+function TokenServerClient() {
   this._log = Log.repository.getLogger("Services.Common.TokenServerClient");
   this._log.manageLevelFromPref(PREF_LOG_LEVEL);
-};
+}
 TokenServerClient.prototype = {
   /**
    * Logger instance.
    */
   _log: null,
 
   /**
    * Obtain a token from a BrowserID assertion against a specific URL.
--- a/services/common/uptake-telemetry.js
+++ b/services/common/uptake-telemetry.js
@@ -1,16 +1,16 @@
 /* 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";
 
 
-this.EXPORTED_SYMBOLS = ["UptakeTelemetry"];
+var EXPORTED_SYMBOLS = ["UptakeTelemetry"];
 
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm", {});
 
 
 // Telemetry report results.
 const TELEMETRY_HISTOGRAM_ID = "UPTAKE_REMOTE_CONTENT_RESULT_1";
 
 /**
--- a/services/common/utils.js
+++ b/services/common/utils.js
@@ -1,21 +1,21 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["CommonUtils"];
+var EXPORTED_SYMBOLS = ["CommonUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.defineModuleGetter(this, "OS",
                                "resource://gre/modules/osfile.jsm");
 
-this.CommonUtils = {
+var CommonUtils = {
   /*
    * Set manipulation methods. These should be lifted into toolkit, or added to
    * `Set` itself.
    */
 
   /**
    * Return elements of `a` or `b`.
    */
--- a/services/crypto/modules/WeaveCrypto.js
+++ b/services/crypto/modules/WeaveCrypto.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["WeaveCrypto"];
+var EXPORTED_SYMBOLS = ["WeaveCrypto"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 
 Cu.importGlobalProperties(["crypto"]);
 
 const CRYPT_ALGO        = "AES-CBC";
@@ -16,19 +16,19 @@ const AES_CBC_IV_SIZE   = 16;
 const OPERATIONS        = { ENCRYPT: 0, DECRYPT: 1 };
 const UTF_LABEL          = "utf-8";
 
 const KEY_DERIVATION_ALGO         = "PBKDF2";
 const KEY_DERIVATION_HASHING_ALGO = "SHA-1";
 const KEY_DERIVATION_ITERATIONS   = 4096; // PKCS#5 recommends at least 1000.
 const DERIVED_KEY_ALGO            = CRYPT_ALGO;
 
-this.WeaveCrypto = function WeaveCrypto() {
+function WeaveCrypto() {
     this.init();
-};
+}
 
 WeaveCrypto.prototype = {
     prefBranch: null,
     debug: true,  // services.sync.log.cryptoDebug
 
     observer: {
         _self: null,
 
--- a/services/crypto/modules/jwcrypto.jsm
+++ b/services/crypto/modules/jwcrypto.jsm
@@ -11,17 +11,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this,
                                    "IdentityCryptoService",
                                    "@mozilla.org/identity/crypto-service;1",
                                    "nsIIdentityCryptoService");
 
-this.EXPORTED_SYMBOLS = ["jwcrypto"];
+var EXPORTED_SYMBOLS = ["jwcrypto"];
 
 const PREF_LOG_LEVEL = "services.crypto.jwcrypto.log.level";
 
 XPCOMUtils.defineLazyGetter(this, "log", function() {
   let log = Log.repository.getLogger("Services.Crypto.jwcrypto");
   // Default log level is "Error", but consumers can change this with the pref
   // "services.crypto.jwcrypto.log.level".
   log.level = Log.Level.Error;
@@ -182,10 +182,10 @@ jwcryptoClass.prototype = {
 
       var signedAssertion = headerBytes + "." + payloadBytes + "." + signature;
       return aCallback(null, aCert + "~" + signedAssertion);
     });
   }
 
 };
 
-this.jwcrypto = new jwcryptoClass();
+var jwcrypto = new jwcryptoClass();
 this.jwcrypto.ALGORITHMS = ALGORITHMS;
--- a/services/crypto/modules/utils.js
+++ b/services/crypto/modules/utils.js
@@ -1,19 +1,19 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["CryptoUtils"];
+var EXPORTED_SYMBOLS = ["CryptoUtils"];
 
 ChromeUtils.import("resource://services-common/observers.js");
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.CryptoUtils = {
+var CryptoUtils = {
   xor: function xor(a, b) {
     let bytes = [];
 
     if (a.length != b.length) {
       throw new Error("can't xor unequal length strings: " + a.length + " vs " + b.length);
     }
 
     for (let i = 0; i < a.length; i++) {
--- a/services/fxaccounts/Credentials.jsm
+++ b/services/fxaccounts/Credentials.jsm
@@ -6,17 +6,17 @@
  * This module implements client-side key stretching for use in Firefox
  * Accounts account creation and login.
  *
  * See https://github.com/mozilla/fxa-auth-server/wiki/onepw-protocol
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["Credentials"];
+var EXPORTED_SYMBOLS = ["Credentials"];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://services-crypto/utils.js");
 ChromeUtils.import("resource://services-common/utils.js");
 
 const PROTOCOL_VERSION = "identity.mozilla.com/picl/v1/";
 const PBKDF2_ROUNDS = 1000;
@@ -37,17 +37,17 @@ try {
 } catch (e) {
   this.LOG_LEVEL = Log.Level.Error;
 }
 
 var log = Log.repository.getLogger("Identity.FxAccounts");
 log.level = LOG_LEVEL;
 log.addAppender(new Log.ConsoleAppender(new Log.BasicFormatter()));
 
-this.Credentials = Object.freeze({
+var Credentials = Object.freeze({
   /**
    * Make constants accessible to tests
    */
   constants: {
     PROTOCOL_VERSION,
     PBKDF2_ROUNDS,
     STRETCHED_PW_LENGTH_BYTES,
     HKDF_SALT,
--- a/services/fxaccounts/FxAccounts.jsm
+++ b/services/fxaccounts/FxAccounts.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["fxAccounts", "FxAccounts"];
+var EXPORTED_SYMBOLS = ["fxAccounts", "FxAccounts"];
 
 Cu.importGlobalProperties(["URL"]);
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://services-common/rest.js");
 ChromeUtils.import("resource://services-crypto/utils.js");
@@ -320,17 +320,17 @@ function copyObjectProperties(from, to, 
 
 function urlsafeBase64Encode(key) {
   return ChromeUtils.base64URLEncode(new Uint8Array(key), { pad: false });
 }
 
 /**
  * The public API's constructor.
  */
-this.FxAccounts = function(mockInternal) {
+var FxAccounts = function(mockInternal) {
   let external = {};
   let internal;
 
   if (!mockInternal) {
     internal = new FxAccountsInternal();
     copyObjectProperties(FxAccountsInternal.prototype, external, internal, publicProperties);
   } else {
     internal = Object.create(FxAccountsInternal.prototype, Object.getOwnPropertyDescriptors(mockInternal));
--- a/services/fxaccounts/FxAccountsClient.jsm
+++ b/services/fxaccounts/FxAccountsClient.jsm
@@ -1,29 +1,29 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["FxAccountsClient"];
+var EXPORTED_SYMBOLS = ["FxAccountsClient"];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://services-common/hawkclient.js");
 ChromeUtils.import("resource://services-common/hawkrequest.js");
 ChromeUtils.import("resource://services-crypto/utils.js");
 ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js");
 ChromeUtils.import("resource://gre/modules/Credentials.jsm");
 
 const HOST_PREF = "identity.fxaccounts.auth.uri";
 
 const SIGNIN = "/account/login";
 const SIGNUP = "/account/create";
 
-this.FxAccountsClient = function(host = Services.prefs.getCharPref(HOST_PREF)) {
+var FxAccountsClient = function(host = Services.prefs.getCharPref(HOST_PREF)) {
   this.host = host;
 
   // The FxA auth server expects requests to certain endpoints to be authorized
   // using Hawk.
   this.hawk = new HawkClient(host);
   this.hawk.observerPrefix = "FxA:hawk";
 
   // Manage server backoff state. C.f.
--- a/services/fxaccounts/FxAccountsCommon.js
+++ b/services/fxaccounts/FxAccountsCommon.js
@@ -240,17 +240,17 @@ exports.SERVER_ERRNO_TO_ERROR = {};
 // Error mapping
 exports.ERROR_TO_GENERAL_ERROR_CLASS = {};
 
 for (let id in exports) {
   this[id] = exports[id];
 }
 
 // Allow this file to be imported via Components.utils.import().
-this.EXPORTED_SYMBOLS = Object.keys(exports);
+var EXPORTED_SYMBOLS = Object.keys(exports);
 
 // Set these up now that everything has been loaded into |this|.
 exports.SERVER_ERRNO_TO_ERROR[exports.ERRNO_ACCOUNT_ALREADY_EXISTS]         = exports.ERROR_ACCOUNT_ALREADY_EXISTS;
 exports.SERVER_ERRNO_TO_ERROR[exports.ERRNO_ACCOUNT_DOES_NOT_EXIST]         = exports.ERROR_ACCOUNT_DOES_NOT_EXIST;
 exports.SERVER_ERRNO_TO_ERROR[exports.ERRNO_INCORRECT_PASSWORD]             = exports.ERROR_INVALID_PASSWORD;
 exports.SERVER_ERRNO_TO_ERROR[exports.ERRNO_UNVERIFIED_ACCOUNT]             = exports.ERROR_UNVERIFIED_ACCOUNT;
 exports.SERVER_ERRNO_TO_ERROR[exports.ERRNO_INVALID_VERIFICATION_CODE]      = exports.ERROR_INVALID_VERIFICATION_CODE;
 exports.SERVER_ERRNO_TO_ERROR[exports.ERRNO_NOT_VALID_JSON_BODY]            = exports.ERROR_NOT_VALID_JSON_BODY;
--- a/services/fxaccounts/FxAccountsConfig.jsm
+++ b/services/fxaccounts/FxAccountsConfig.jsm
@@ -1,13 +1,13 @@
 /* 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";
-this.EXPORTED_SYMBOLS = ["FxAccountsConfig"];
+var EXPORTED_SYMBOLS = ["FxAccountsConfig"];
 
 ChromeUtils.import("resource://services-common/rest.js");
 ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "fxAccounts",
                                "resource://gre/modules/FxAccounts.jsm");
@@ -27,17 +27,17 @@ XPCOMUtils.defineLazyPreferenceGetter(th
 const CONFIG_PREFS = [
   "identity.fxaccounts.remote.root",
   "identity.fxaccounts.auth.uri",
   "identity.fxaccounts.remote.oauth.uri",
   "identity.fxaccounts.remote.profile.uri",
   "identity.sync.tokenserver.uri",
 ];
 
-this.FxAccountsConfig = {
+var FxAccountsConfig = {
   async promiseSignUpURI(entrypoint) {
     return this._buildURL("signup", {entrypoint});
   },
 
   async promiseSignInURI(entrypoint) {
     return this._buildURL("signin", {entrypoint});
   },
 
--- a/services/fxaccounts/FxAccountsOAuthGrantClient.jsm
+++ b/services/fxaccounts/FxAccountsOAuthGrantClient.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Firefox Accounts OAuth Grant Client allows clients to obtain
  * an OAuth token from a BrowserID assertion. Only certain client
  * IDs support this privilage.
  */
 
-this.EXPORTED_SYMBOLS = ["FxAccountsOAuthGrantClient", "FxAccountsOAuthGrantClientError"];
+var EXPORTED_SYMBOLS = ["FxAccountsOAuthGrantClient", "FxAccountsOAuthGrantClientError"];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js");
 ChromeUtils.import("resource://services-common/rest.js");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 Cu.importGlobalProperties(["URL"]);
 
@@ -30,17 +30,17 @@ const ALLOW_HTTP_PREF = "identity.fxacco
  *     @param {String} options.parameters.client_id
  *     OAuth id returned from client registration
  *     @param {String} options.parameters.serverURL
  *     The FxA OAuth server URL
  *   @param [authorizationEndpoint] {String}
  *   Optional authorization endpoint for the OAuth server
  * @constructor
  */
-this.FxAccountsOAuthGrantClient = function(options) {
+var FxAccountsOAuthGrantClient = function(options) {
 
   this._validateOptions(options);
   this.parameters = options;
 
   try {
     this.serverURL = new URL(this.parameters.serverURL);
   } catch (e) {
     throw new Error("Invalid 'serverURL'");
@@ -208,17 +208,17 @@ this.FxAccountsOAuthGrantClient.prototyp
  *   @param {number} [details.errno]
  *          Error number
  *   @param {String} [details.error]
  *          Error description
  *   @param {String|null} [details.message]
  *          Error message
  * @constructor
  */
-this.FxAccountsOAuthGrantClientError = function(details) {
+var FxAccountsOAuthGrantClientError = function(details) {
   details = details || {};
 
   this.name = "FxAccountsOAuthGrantClientError";
   this.code = details.code || null;
   this.errno = details.errno || ERRNO_UNKNOWN_ERROR;
   this.error = details.error || ERROR_UNKNOWN;
   this.message = details.message || null;
 };
--- a/services/fxaccounts/FxAccountsProfile.jsm
+++ b/services/fxaccounts/FxAccountsProfile.jsm
@@ -7,27 +7,27 @@
 /**
  * Firefox Accounts Profile helper.
  *
  * This class abstracts interaction with the profile server for an account.
  * It will handle things like fetching profile data, listening for updates to
  * the user's profile in open browser tabs, and cacheing/invalidating profile data.
  */
 
-this.EXPORTED_SYMBOLS = ["FxAccountsProfile"];
+var EXPORTED_SYMBOLS = ["FxAccountsProfile"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js");
 ChromeUtils.import("resource://gre/modules/FxAccounts.jsm");
 
 ChromeUtils.defineModuleGetter(this, "FxAccountsProfileClient",
   "resource://gre/modules/FxAccountsProfileClient.jsm");
 
-this.FxAccountsProfile = function(options = {}) {
+var FxAccountsProfile = function(options = {}) {
   this._currentFetchPromise = null;
   this._cachedAt = 0; // when we saved the cached version.
   this._isNotifying = false; // are we sending a notification?
   this.fxa = options.fxa || fxAccounts;
   this.client = options.profileClient || new FxAccountsProfileClient({
     fxa: this.fxa,
     serverURL: options.profileServerUrl,
   });
--- a/services/fxaccounts/FxAccountsProfileClient.jsm
+++ b/services/fxaccounts/FxAccountsProfileClient.jsm
@@ -2,17 +2,17 @@
  * 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/. */
 
 /**
  * A client to fetch profile information for a Firefox Account.
  */
  "use strict;";
 
-this.EXPORTED_SYMBOLS = ["FxAccountsProfileClient", "FxAccountsProfileClientError"];
+var EXPORTED_SYMBOLS = ["FxAccountsProfileClient", "FxAccountsProfileClientError"];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js");
 ChromeUtils.import("resource://gre/modules/FxAccounts.jsm");
 ChromeUtils.import("resource://services-common/rest.js");
 
 Cu.importGlobalProperties(["URL"]);
 
@@ -22,17 +22,17 @@ Cu.importGlobalProperties(["URL"]);
  * @param {Object} options Options
  *   @param {String} options.serverURL
  *   The URL of the profile server to query.
  *   Example: https://profile.accounts.firefox.com/v1
  *   @param {String} options.token
  *   The bearer token to access the profile server
  * @constructor
  */
-this.FxAccountsProfileClient = function(options) {
+var FxAccountsProfileClient = function(options) {
   if (!options || !options.serverURL) {
     throw new Error("Missing 'serverURL' configuration option");
   }
 
   this.fxa = options.fxa || fxAccounts;
   // This is a work-around for loop that manages its own oauth tokens.
   // * If |token| is in options we use it and don't attempt any token refresh
   //  on 401. This is for loop.
@@ -221,17 +221,17 @@ this.FxAccountsProfileClient.prototype =
  *   @param {number} [details.errno]
  *          Error number
  *   @param {String} [details.error]
  *          Error description
  *   @param {String|null} [details.message]
  *          Error message
  * @constructor
  */
-this.FxAccountsProfileClientError = function(details) {
+var FxAccountsProfileClientError = function(details) {
   details = details || {};
 
   this.name = "FxAccountsProfileClientError";
   this.code = details.code || null;
   this.errno = details.errno || ERRNO_UNKNOWN_ERROR;
   this.error = details.error || ERROR_UNKNOWN;
   this.message = details.message || null;
 };
--- a/services/fxaccounts/FxAccountsStorage.jsm
+++ b/services/fxaccounts/FxAccountsStorage.jsm
@@ -1,14 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "FxAccountsStorageManagerCanStoreField",
   "FxAccountsStorageManager",
 ];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
@@ -18,17 +18,17 @@ ChromeUtils.import("resource://services-
 // the storage manager without having a reference to a manager instance.
 function FxAccountsStorageManagerCanStoreField(fieldName) {
   return FXA_PWDMGR_MEMORY_FIELDS.has(fieldName) ||
          FXA_PWDMGR_PLAINTEXT_FIELDS.has(fieldName) ||
          FXA_PWDMGR_SECURE_FIELDS.has(fieldName);
 }
 
 // The storage manager object.
-this.FxAccountsStorageManager = function(options = {}) {
+var FxAccountsStorageManager = function(options = {}) {
   this.options = {
     filename: options.filename || DEFAULT_STORAGE_FILENAME,
     baseDir: options.baseDir || OS.Constants.Path.profileDir,
   };
   this.plainStorage = new JSONStorage(this.options);
   // Tests may want to pretend secure storage isn't available.
   let useSecure = "useSecure" in options ? options.useSecure : true;
   if (useSecure) {
--- a/services/fxaccounts/FxAccountsWebChannel.jsm
+++ b/services/fxaccounts/FxAccountsWebChannel.jsm
@@ -5,17 +5,17 @@
 
 /**
  * Firefox Accounts Web Channel.
  *
  * Uses the WebChannel component to receive messages
  * about account state changes.
  */
 
-this.EXPORTED_SYMBOLS = ["EnsureFxAccountsWebChannel"];
+var EXPORTED_SYMBOLS = ["EnsureFxAccountsWebChannel"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccountsCommon.js");
 
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "WebChannel",
                                "resource://gre/modules/WebChannel.jsm");
@@ -516,17 +516,17 @@ this.FxAccountsWebChannelHelpers.prototy
 };
 
 var singleton;
 // The entry-point for this module, which ensures only one of our channels is
 // ever created - we require this because the WebChannel is global in scope
 // (eg, it uses the observer service to tell interested parties of interesting
 // things) and allowing multiple channels would cause such notifications to be
 // sent multiple times.
-this.EnsureFxAccountsWebChannel = () => {
+var EnsureFxAccountsWebChannel = () => {
   let contentUri = Services.urlFormatter.formatURLPref("identity.fxaccounts.remote.root");
   if (singleton && singleton._contentUri !== contentUri) {
     singleton.tearDown();
     singleton = null;
   }
   if (!singleton) {
     try {
       if (contentUri) {
--- a/services/sync/modules-testing/fakeservices.js
+++ b/services/sync/modules-testing/fakeservices.js
@@ -1,26 +1,26 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "FakeCryptoService",
   "FakeFilesystemService",
   "FakeGUIDService",
   "fakeSHA256HMAC",
 ];
 
 ChromeUtils.import("resource://services-sync/main.js");
 ChromeUtils.import("resource://services-sync/record.js");
 ChromeUtils.import("resource://services-sync/util.js");
 
-this.FakeFilesystemService = function FakeFilesystemService(contents) {
+function FakeFilesystemService(contents) {
   this.fakeContents = contents;
   let self = this;
 
   // Save away the unmocked versions of the functions we replace here for tests
   // that really want the originals. As this may be called many times per test,
   // we must be careful to not replace them with ones we previously replaced.
   // (And WTF are we bothering with these mocks in the first place? Is the
   // performance of the filesystem *really* such that it outweighs the downside
@@ -53,50 +53,50 @@ this.FakeFilesystemService = function Fa
     delete self.fakeContents[fromPath];
     return Promise.resolve();
   };
 
   Utils.jsonRemove = function jsonRemove(filePath, that) {
     delete self.fakeContents["weave/" + filePath + ".json"];
     return Promise.resolve();
   };
-};
+}
 
-this.fakeSHA256HMAC = function fakeSHA256HMAC(message) {
+function fakeSHA256HMAC(message) {
    message = message.substr(0, 64);
    while (message.length < 64) {
      message += " ";
    }
    return message;
-};
+}
 
-this.FakeGUIDService = function FakeGUIDService() {
+function FakeGUIDService() {
   let latestGUID = 0;
 
   Utils.makeGUID = function makeGUID() {
     // ensure that this always returns a unique 12 character string
     let nextGUID = "fake-guid-" + String(latestGUID++).padStart(2, "0");
     return nextGUID.slice(nextGUID.length - 12, nextGUID.length);
   };
-};
+}
 
 /*
  * Mock implementation of WeaveCrypto. It does not encrypt or
  * decrypt, merely returning the input verbatim.
  */
-this.FakeCryptoService = function FakeCryptoService() {
+function FakeCryptoService() {
   this.counter = 0;
 
   delete Weave.Crypto; // get rid of the getter first
   Weave.Crypto = this;
 
   CryptoWrapper.prototype.ciphertextHMAC = function ciphertextHMAC(keyBundle) {
     return fakeSHA256HMAC(this.ciphertext);
   };
-};
+}
 FakeCryptoService.prototype = {
 
   async encrypt(clearText, symmetricKey, iv) {
     return clearText;
   },
 
   async decrypt(cipherText, symmetricKey, iv) {
     return cipherText;
--- a/services/sync/modules-testing/fxa_utils.js
+++ b/services/sync/modules-testing/fxa_utils.js
@@ -1,24 +1,24 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "initializeIdentityWithTokenServerResponse",
 ];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/main.js");
 ChromeUtils.import("resource://services-sync/browserid_identity.js");
 ChromeUtils.import("resource://services-common/tokenserverclient.js");
 ChromeUtils.import("resource://testing-common/services/common/logging.js");
 ChromeUtils.import("resource://testing-common/services/sync/utils.js");
 
 // Create a new browserid_identity object and initialize it with a
 // mocked TokenServerClient which always receives the specified response.
-this.initializeIdentityWithTokenServerResponse = function(response) {
+var initializeIdentityWithTokenServerResponse = function(response) {
   // First create a mock "request" object that well' hack into the token server.
   // A log for it
   let requestLog = Log.repository.getLogger("testing.mock-rest");
   if (!requestLog.appenders.length) { // might as well see what it says :)
     requestLog.addAppender(new Log.DumpAppender());
     requestLog.level = Log.Level.Trace;
   }
 
--- a/services/sync/modules-testing/rotaryengine.js
+++ b/services/sync/modules-testing/rotaryengine.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "RotaryEngine",
   "RotaryRecord",
   "RotaryStore",
   "RotaryTracker",
 ];
 
 ChromeUtils.import("resource://services-sync/engines.js");
 ChromeUtils.import("resource://services-sync/record.js");
@@ -17,28 +17,28 @@ ChromeUtils.import("resource://services-
 
 /*
  * A fake engine implementation.
  * This is used all over the place.
  *
  * Complete with record, store, and tracker implementations.
  */
 
-this.RotaryRecord = function RotaryRecord(collection, id) {
+function RotaryRecord(collection, id) {
   CryptoWrapper.call(this, collection, id);
-};
+}
 RotaryRecord.prototype = {
   __proto__: CryptoWrapper.prototype
 };
 Utils.deferGetSet(RotaryRecord, "cleartext", ["denomination"]);
 
-this.RotaryStore = function RotaryStore(name, engine) {
+function RotaryStore(name, engine) {
   Store.call(this, name, engine);
   this.items = {};
-};
+}
 RotaryStore.prototype = {
   __proto__: Store.prototype,
 
   async create(record) {
     this.items[record.id] = record.denomination;
   },
 
   async remove(record) {
@@ -81,31 +81,31 @@ RotaryStore.prototype = {
     return ids;
   },
 
   async wipe() {
     this.items = {};
   }
 };
 
-this.RotaryTracker = function RotaryTracker(name, engine) {
+function RotaryTracker(name, engine) {
   Tracker.call(this, name, engine);
-};
+}
 RotaryTracker.prototype = {
   __proto__: Tracker.prototype,
   persistChangedIDs: false,
 };
 
 
-this.RotaryEngine = function RotaryEngine(service) {
+function RotaryEngine(service) {
   SyncEngine.call(this, "Rotary", service);
   // Ensure that the engine starts with a clean slate.
   this.toFetch        = new SerializableSet();
   this.previousFailed = new SerializableSet();
-};
+}
 RotaryEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _storeObj: RotaryStore,
   _trackerObj: RotaryTracker,
   _recordObj: RotaryRecord,
 
   async _findDupe(item) {
     // This is a Special Value® used for testing proper reconciling on dupe
--- a/services/sync/modules-testing/utils.js
+++ b/services/sync/modules-testing/utils.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "encryptPayload",
   "makeIdentityConfig",
   "makeFxAccountsInternalMock",
   "configureFxAccountIdentity",
   "configureIdentity",
   "SyncTestingInfrastructure",
   "waitForZeroTimer",
   "promiseZeroTimer",
@@ -72,46 +72,46 @@ MockFxaStorageManager.prototype = {
   }
 };
 
 /**
  * First wait >100ms (nsITimers can take up to that much time to fire, so
  * we can account for the timer in delayedAutoconnect) and then two event
  * loop ticks (to account for the CommonUtils.nextTick() in autoConnect).
  */
-this.waitForZeroTimer = function waitForZeroTimer(callback) {
+function waitForZeroTimer(callback) {
   let ticks = 2;
   function wait() {
     if (ticks) {
       ticks -= 1;
       CommonUtils.nextTick(wait);
       return;
     }
     callback();
   }
   CommonUtils.namedTimer(wait, 150, {}, "timer");
-};
+}
 
-this.promiseZeroTimer = function() {
+var promiseZeroTimer = function() {
   return new Promise(resolve => {
     waitForZeroTimer(resolve);
   });
 };
 
-this.promiseNamedTimer = function(wait, thisObj, name) {
+var promiseNamedTimer = function(wait, thisObj, name) {
   return new Promise(resolve => {
     CommonUtils.namedTimer(resolve, wait, thisObj, name);
   });
 };
 
 // Return an identity configuration suitable for testing with our identity
 // providers.  |overrides| can specify overrides for any default values.
 // |server| is optional, but if specified, will be used to form the cluster
 // URL for the FxA identity.
-this.makeIdentityConfig = function(overrides) {
+var makeIdentityConfig = function(overrides) {
   // first setup the defaults.
   let result = {
     // Username used in both fxaccount and sync identity configs.
     username: "foo",
     // fxaccount specific credentials.
     fxaccount: {
       user: {
         assertion: "assertion",
@@ -143,17 +143,17 @@ this.makeIdentityConfig = function(overr
     if (overrides.fxaccount) {
       // TODO: allow just some attributes to be specified
       result.fxaccount = overrides.fxaccount;
     }
   }
   return result;
 };
 
-this.makeFxAccountsInternalMock = function(config) {
+var makeFxAccountsInternalMock = function(config) {
   return {
     newAccountState(credentials) {
       // We only expect this to be called with null indicating the (mock)
       // storage should be read.
       if (credentials) {
         throw new Error("Not expecting to have credentials passed");
       }
       let storageManager = new MockFxaStorageManager();
@@ -164,19 +164,19 @@ this.makeFxAccountsInternalMock = functi
     _getAssertion(audience) {
       return Promise.resolve("assertion");
     },
   };
 };
 
 // Configure an instance of an FxAccount identity provider with the specified
 // config (or the default config if not specified).
-this.configureFxAccountIdentity = function(authService,
-                                           config = makeIdentityConfig(),
-                                           fxaInternal = makeFxAccountsInternalMock(config)) {
+var configureFxAccountIdentity = function(authService,
+                                          config = makeIdentityConfig(),
+                                          fxaInternal = makeFxAccountsInternalMock(config)) {
   // until we get better test infrastructure for bid_identity, we set the
   // signedin user's "email" to the username, simply as many tests rely on this.
   config.fxaccount.user.email = config.username;
 
   let fxa = new FxAccounts(fxaInternal);
 
   let MockFxAccountsClient = function() {
     FxAccountsClient.apply(this);
@@ -199,17 +199,17 @@ this.configureFxAccountIdentity = functi
   authService._fxaService = fxa;
   authService._tokenServerClient = mockTSC;
   // Set the "account" of the browserId manager to be the "email" of the
   // logged in user of the mockFXA service.
   authService._signedInUser = config.fxaccount.user;
   authService._account = config.fxaccount.user.email;
 };
 
-this.configureIdentity = async function(identityOverrides, server) {
+var configureIdentity = async function(identityOverrides, server) {
   let config = makeIdentityConfig(identityOverrides, server);
   let ns = {};
   ChromeUtils.import("resource://services-sync/service.js", ns);
 
   // If a server was specified, ensure FxA has a correct cluster URL available.
   if (server && !config.fxaccount.token.endpoint) {
     let ep = server.baseURI;
     if (!ep.endsWith("/")) {
@@ -233,54 +233,54 @@ this.configureIdentity = async function(
 
 function syncTestLogging(level = "Trace") {
   let logStats = initTestLogging(level);
   Services.prefs.setStringPref("services.sync.log.logger", level);
   Services.prefs.setStringPref("services.sync.log.logger.engine", "");
   return logStats;
 }
 
-this.SyncTestingInfrastructure = async function(server, username) {
+var SyncTestingInfrastructure = async function(server, username) {
   let ns = {};
   ChromeUtils.import("resource://services-sync/service.js", ns);
 
   let config = makeIdentityConfig({ username });
   await configureIdentity(config, server);
   return {
     logStats: syncTestLogging(),
     fakeFilesystem: new FakeFilesystemService({}),
     fakeGUIDService: new FakeGUIDService(),
     fakeCryptoService: new FakeCryptoService(),
   };
 };
 
 /**
  * Turn WBO cleartext into fake "encrypted" payload as it goes over the wire.
  */
-this.encryptPayload = function encryptPayload(cleartext) {
+function encryptPayload(cleartext) {
   if (typeof cleartext == "object") {
     cleartext = JSON.stringify(cleartext);
   }
 
   return {
     ciphertext: cleartext, // ciphertext == cleartext with fake crypto
     IV: "irrelevant",
     hmac: fakeSHA256HMAC(cleartext, CryptoUtils.makeHMACKey("")),
   };
-};
+}
 
-this.sumHistogram = function(name, options = {}) {
+var sumHistogram = function(name, options = {}) {
   let histogram = options.key ? Services.telemetry.getKeyedHistogramById(name) :
                   Services.telemetry.getHistogramById(name);
   let snapshot = histogram.snapshot(options.key);
   let sum = -Infinity;
   if (snapshot) {
     sum = snapshot.sum;
   }
   histogram.clear();
   return sum;
 };
 
-this.getLoginTelemetryScalar = function() {
+var getLoginTelemetryScalar = function() {
   let dataset = Services.telemetry.DATASET_RELEASE_CHANNEL_OPTOUT;
   let snapshot = Services.telemetry.snapshotKeyedScalars(dataset, true);
   return snapshot.parent ? snapshot.parent["services.sync.sync_login_state_transitions"] : {};
 };
--- a/services/sync/modules/SyncedTabs.jsm
+++ b/services/sync/modules/SyncedTabs.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SyncedTabs"];
+var EXPORTED_SYMBOLS = ["SyncedTabs"];
 
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/main.js");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 
@@ -215,17 +215,17 @@ let SyncedTabsInternal = {
 Services.obs.addObserver(SyncedTabsInternal, "weave:engine:sync:finish");
 Services.obs.addObserver(SyncedTabsInternal, "weave:service:start-over");
 // Observe the pref the indicates the state of the tabs engine has changed.
 // This will force consumers to re-evaluate the state of sync and update
 // accordingly.
 Services.prefs.addObserver("services.sync.engine.tabs", SyncedTabsInternal);
 
 // The public interface.
-this.SyncedTabs = {
+var SyncedTabs = {
   // A mock-point for tests.
   _internal: SyncedTabsInternal,
 
   // We make the topic for the observer notification public.
   TOPIC_TABS_CHANGED,
 
   // Returns true if Sync is configured to Sync tabs, false otherwise
   get isConfiguredToSyncTabs() {
--- a/services/sync/modules/UIState.jsm
+++ b/services/sync/modules/UIState.jsm
@@ -9,17 +9,17 @@
  * @property {string} status The Sync/FxA status, see STATUS_* constants.
  * @property {string} [email] The FxA email configured to log-in with Sync.
  * @property {string} [displayName] The user's FxA display name.
  * @property {string} [avatarURL] The user's FxA avatar URL.
  * @property {Date} [lastSync] The last sync time.
  * @property {boolean} [syncing] Whether or not we are currently syncing.
  */
 
-this.EXPORTED_SYMBOLS = ["UIState"];
+var EXPORTED_SYMBOLS = ["UIState"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Weave",
                                "resource://services-sync/main.js");
 
 const TOPICS = [
   "weave:service:login:change",
@@ -236,17 +236,17 @@ const UIStateInternal = {
 
 ChromeUtils.defineModuleGetter(UIStateInternal, "fxAccounts",
                                "resource://gre/modules/FxAccounts.jsm");
 
 for (let topic of TOPICS) {
   Services.obs.addObserver(UIStateInternal, topic);
 }
 
-this.UIState = {
+var UIState = {
   _internal: UIStateInternal,
 
   ON_UPDATE,
 
   STATUS_NOT_CONFIGURED,
   STATUS_LOGIN_FAILED,
   STATUS_NOT_VERIFIED,
   STATUS_SIGNED_IN,
--- a/services/sync/modules/addonsreconciler.js
+++ b/services/sync/modules/addonsreconciler.js
@@ -19,24 +19,24 @@
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
 
 const DEFAULT_STATE_FILE = "addonsreconciler";
 
-this.CHANGE_INSTALLED   = 1;
-this.CHANGE_UNINSTALLED = 2;
-this.CHANGE_ENABLED     = 3;
-this.CHANGE_DISABLED    = 4;
+var CHANGE_INSTALLED   = 1;
+var CHANGE_UNINSTALLED = 2;
+var CHANGE_ENABLED     = 3;
+var CHANGE_DISABLED    = 4;
 
-this.EXPORTED_SYMBOLS = ["AddonsReconciler", "CHANGE_INSTALLED",
-                         "CHANGE_UNINSTALLED", "CHANGE_ENABLED",
-                         "CHANGE_DISABLED"];
+var EXPORTED_SYMBOLS = ["AddonsReconciler", "CHANGE_INSTALLED",
+                        "CHANGE_UNINSTALLED", "CHANGE_ENABLED",
+                        "CHANGE_DISABLED"];
 /**
  * Maintains state of add-ons.
  *
  * State is maintained in 2 data structures, an object mapping add-on IDs
  * to metadata and an array of changes over time. The object mapping can be
  * thought of as a minimal copy of data from AddonManager which is needed for
  * Sync. The array is effectively a log of changes over time.
  *
@@ -106,23 +106,23 @@ this.EXPORTED_SYMBOLS = ["AddonsReconcil
  * Restartless add-ons have interesting behavior during uninstall. These
  * add-ons are first disabled then they are actually uninstalled. So, we will
  * see AL.onDisabling and AL.onDisabled. The onUninstalling and onUninstalled
  * events only come after the Addon Manager is closed or another view is
  * switched to. In the case of Sync performing the uninstall, the uninstall
  * events will occur immediately. However, we still see disabling events and
  * heed them like they were normal. In the end, the state is proper.
  */
-this.AddonsReconciler = function AddonsReconciler(queueCaller) {
+function AddonsReconciler(queueCaller) {
   this._log = Log.repository.getLogger("Sync.AddonsReconciler");
   this._log.manageLevelFromPref("services.sync.log.logger.addonsreconciler");
   this.queueCaller = queueCaller;
 
   Svc.Obs.add("xpcom-shutdown", this.stopListening, this);
-};
+}
 AddonsReconciler.prototype = {
   /** Flag indicating whether we are listening to AddonManager events. */
   _listening: false,
 
   /**
    * Define this as false if the reconciler should not persist state
    * to disk when handling events.
    *
--- a/services/sync/modules/addonutils.js
+++ b/services/sync/modules/addonutils.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AddonUtils"];
+var EXPORTED_SYMBOLS = ["AddonUtils"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/util.js");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager",
   "resource://gre/modules/AddonManager.jsm");
 ChromeUtils.defineModuleGetter(this, "AddonRepository",
--- a/services/sync/modules/bookmark_repair.js
+++ b/services/sync/modules/bookmark_repair.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["BookmarkRepairRequestor", "BookmarkRepairResponder"];
+var EXPORTED_SYMBOLS = ["BookmarkRepairRequestor", "BookmarkRepairResponder"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://services-sync/collection_repair.js");
 ChromeUtils.import("resource://services-sync/constants.js");
--- a/services/sync/modules/bookmark_validator.js
+++ b/services/sync/modules/bookmark_validator.js
@@ -15,17 +15,17 @@ ChromeUtils.defineModuleGetter(this, "As
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
                                "resource://gre/modules/PlacesUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PlacesSyncUtils",
                                "resource://gre/modules/PlacesSyncUtils.jsm");
 
 Cu.importGlobalProperties(["URLSearchParams"]);
 
-this.EXPORTED_SYMBOLS = ["BookmarkValidator", "BookmarkProblemData"];
+var EXPORTED_SYMBOLS = ["BookmarkValidator", "BookmarkProblemData"];
 
 const LEFT_PANE_ROOT_ANNO = "PlacesOrganizer/OrganizerFolder";
 const LEFT_PANE_QUERY_ANNO = "PlacesOrganizer/OrganizerQuery";
 const QUERY_PROTOCOL = "place:";
 
 // Indicates if a local bookmark tree node should be excluded from syncing.
 function isNodeIgnored(treeNode) {
   return treeNode.annos && treeNode.annos.some(anno => anno.name == LEFT_PANE_ROOT_ANNO ||
--- a/services/sync/modules/browserid_identity.js
+++ b/services/sync/modules/browserid_identity.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["BrowserIDManager", "AuthenticationError"];
+var EXPORTED_SYMBOLS = ["BrowserIDManager", "AuthenticationError"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccounts.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://services-common/utils.js");
@@ -46,17 +46,17 @@ const OBSERVER_TOPICS = [
   fxAccountsCommon.ONLOGOUT_NOTIFICATION,
   fxAccountsCommon.ON_ACCOUNT_STATE_CHANGE_NOTIFICATION,
 ];
 
 // A telemetry helper that records how long a user was in a "bad" state.
 // It is recorded in the *main* ping, *not* the Sync ping.
 // These bad states may persist across browser restarts, and may never change
 // (eg, users may *never* validate)
-this.telemetryHelper = {
+var telemetryHelper = {
   // These are both the "status" values passed to maybeRecordLoginState and
   // the key we use for our keyed scalar.
   STATES: {
     SUCCESS: "SUCCESS",
     NOTVERIFIED: "NOTVERIFIED",
     REJECTED: "REJECTED",
   },
 
@@ -147,27 +147,27 @@ function AuthenticationError(details, so
 }
 
 AuthenticationError.prototype = {
   toString() {
     return "AuthenticationError(" + this.details + ")";
   }
 };
 
-this.BrowserIDManager = function BrowserIDManager() {
+function BrowserIDManager() {
   // NOTE: _fxaService and _tokenServerClient are replaced with mocks by
   // the test suite.
   this._fxaService = fxAccounts;
   this._tokenServerClient = new TokenServerClient();
   this._tokenServerClient.observerPrefix = "weave:service";
   // will be a promise that resolves when we are ready to authenticate
   this.whenReadyToAuthenticate = null;
   this._log = log;
   XPCOMUtils.defineLazyPreferenceGetter(this, "_username", "services.sync.username");
-};
+}
 
 this.BrowserIDManager.prototype = {
   _fxaService: null,
   _tokenServerClient: null,
   // https://docs.services.mozilla.com/token/apis.html
   _token: null,
   _signedInUser: null, // the signedinuser we got from FxAccounts.
 
--- a/services/sync/modules/collection_repair.js
+++ b/services/sync/modules/collection_repair.js
@@ -4,20 +4,20 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://services-sync/main.js");
 
 ChromeUtils.defineModuleGetter(this, "BookmarkRepairRequestor",
   "resource://services-sync/bookmark_repair.js");
 
-this.EXPORTED_SYMBOLS = ["getRepairRequestor", "getAllRepairRequestors",
-                         "CollectionRepairRequestor",
-                         "getRepairResponder",
-                         "CollectionRepairResponder"];
+var EXPORTED_SYMBOLS = ["getRepairRequestor", "getAllRepairRequestors",
+                        "CollectionRepairRequestor",
+                        "getRepairResponder",
+                        "CollectionRepairResponder"];
 
 // The individual requestors/responders, lazily loaded.
 const REQUESTORS = {
   bookmarks: ["bookmark_repair.js", "BookmarkRepairRequestor"],
 };
 
 const RESPONDERS = {
   bookmarks: ["bookmark_repair.js", "BookmarkRepairResponder"],
--- a/services/sync/modules/collection_validator.js
+++ b/services/sync/modules/collection_validator.js
@@ -5,17 +5,17 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Async",
                                "resource://services-common/async.js");
 
 
-this.EXPORTED_SYMBOLS = ["CollectionValidator", "CollectionProblemData"];
+var EXPORTED_SYMBOLS = ["CollectionValidator", "CollectionProblemData"];
 
 class CollectionProblemData {
   constructor() {
     this.missingIDs = 0;
     this.clientDuplicates = [];
     this.duplicates = [];
     this.clientMissing = [];
     this.serverMissing = [];
--- a/services/sync/modules/constants.js
+++ b/services/sync/modules/constants.js
@@ -1,14 +1,14 @@
 /* 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/. */
 
 // Process each item in the "constants hash" to add to "global" and give a name
-this.EXPORTED_SYMBOLS = [];
+var EXPORTED_SYMBOLS = [];
 for (let [key, val] of Object.entries({
 
 // Don't manually modify this line, as it is automatically replaced on merge day
 // by the gecko_migration.py script.
 WEAVE_VERSION: "1.62.0",
 
 // Sync Server API version that the client supports.
 SYNC_API_VERSION:                      "1.5",
--- a/services/sync/modules/doctor.js
+++ b/services/sync/modules/doctor.js
@@ -4,17 +4,17 @@
 
 // A doctor for our collections. She can be asked to make a consultation, and
 // may just diagnose an issue without attempting to cure it, may diagnose and
 // attempt to cure, or may decide she is overworked and underpaid.
 // Or something - naming is hard :)
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["Doctor"];
+var EXPORTED_SYMBOLS = ["Doctor"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://services-common/observers.js");
 ChromeUtils.import("resource://services-sync/service.js");
 ChromeUtils.import("resource://services-sync/resource.js");
@@ -22,19 +22,19 @@ ChromeUtils.import("resource://services-
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.defineModuleGetter(this, "getRepairRequestor",
   "resource://services-sync/collection_repair.js");
 ChromeUtils.defineModuleGetter(this, "getAllRepairRequestors",
   "resource://services-sync/collection_repair.js");
 
 const log = Log.repository.getLogger("Sync.Doctor");
 
-this.REPAIR_ADVANCE_PERIOD = 86400; // 1 day
+var REPAIR_ADVANCE_PERIOD = 86400; // 1 day
 
-this.Doctor = {
+var Doctor = {
   anyClientsRepairing(service, collection, ignoreFlowID = null) {
     if (!service || !service.clientsEngine) {
       log.info("Missing clients engine, assuming we're in test code");
       return false;
     }
     return service.clientsEngine.remoteClients.some(client =>
       client.commands && client.commands.some(command => {
         if (command.command != "repairResponse" && command.command != "repairRequest") {
--- a/services/sync/modules/engines.js
+++ b/services/sync/modules/engines.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "EngineManager",
   "SyncEngine",
   "Tracker",
   "Store",
   "Changeset"
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -38,17 +38,17 @@ function ensureDirectory(path) {
  *
  * There are two things they keep track of:
  * 1) A score, indicating how urgently the engine wants to sync
  * 2) A list of IDs for all the changed items that need to be synced
  * and updating their 'score', indicating how urgently they
  * want to sync.
  *
  */
-this.Tracker = function Tracker(name, engine) {
+function Tracker(name, engine) {
   if (!engine) {
     throw new Error("Tracker must be associated with an Engine instance.");
   }
 
   name = name || "Unnamed";
   this.name = this.file = name.toLowerCase();
   this.engine = engine;
 
@@ -59,17 +59,17 @@ this.Tracker = function Tracker(name, en
   this._storage = new JSONFile({
     path: Utils.jsonFilePath("changes/" + this.file),
     dataPostProcessor: json => this._dataPostProcessor(json),
     beforeSave: () => this._beforeSave(),
   });
   this.ignoreAll = false;
 
   this.asyncObserver = Async.asyncObserver(this, this._log);
-};
+}
 
 Tracker.prototype = {
   /*
    * Score can be called as often as desired to decide which engines to sync
    *
    * Valid values for score:
    * -1: Do not sync unless the user specifically requests it (almost disabled)
    * 0: Nothing has changed
@@ -269,31 +269,31 @@ Tracker.prototype = {
  * Store implementations require a number of functions to be implemented. These
  * are all documented below.
  *
  * For stores that deal with many records or which have expensive store access
  * routines, it is highly recommended to implement a custom applyIncomingBatch
  * and/or applyIncoming function on top of the basic APIs.
  */
 
-this.Store = function Store(name, engine) {
+function Store(name, engine) {
   if (!engine) {
     throw new Error("Store must be associated with an Engine instance.");
   }
 
   name = name || "Unnamed";
   this.name = name.toLowerCase();
   this.engine = engine;
 
   this._log = Log.repository.getLogger(`Sync.Engine.${name}.Store`);
 
   XPCOMUtils.defineLazyGetter(this, "_timer", function() {
     return Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
   });
-};
+}
 Store.prototype = {
 
   /**
    * Apply multiple incoming records against the store.
    *
    * This is called with a set of incoming records to process. The function
    * should look at each record, reconcile with the current local state, and
    * make the local changes required to bring its state in alignment with the
@@ -457,29 +457,29 @@ Store.prototype = {
    * can be thought of as clearing out all state and restoring the "new
    * browser" state.
    */
   async wipe() {
     throw new Error("override wipe in a subclass");
   }
 };
 
-this.EngineManager = function EngineManager(service) {
+function EngineManager(service) {
   this.service = service;
 
   this._engines = {};
 
   // This will be populated by Service on startup.
   this._declined = new Set();
   this._log = Log.repository.getLogger("Sync.EngineManager");
   this._log.manageLevelFromPref("services.sync.log.logger.service.engines");
   // define the default level for all engine logs here (although each engine
   // allows its level to be controlled via a specific, non-default pref)
   Log.repository.getLogger(`Sync.Engine`).manageLevelFromPref("services.sync.log.logger.engine");
-};
+}
 EngineManager.prototype = {
   get(name) {
     // Return an array of engines if we have an array of names
     if (Array.isArray(name)) {
       let engines = [];
       name.forEach(function(name) {
         let engine = this.get(name);
         if (engine) {
@@ -624,17 +624,17 @@ EngineManager.prototype = {
     for (let name in this._engines) {
       let engine = this._engines[name];
       delete this._engines[name];
       await engine.finalize();
     }
   },
 };
 
-this.SyncEngine = function SyncEngine(name, service) {
+function SyncEngine(name, service) {
   if (!service) {
     throw new Error("SyncEngine must be associated with a Service instance.");
   }
 
   this.Name = name || "Unnamed";
   this.name = name.toLowerCase();
   this.service = service;
 
@@ -696,17 +696,17 @@ this.SyncEngine = function SyncEngine(na
   // weak upload. A normal ("strong") upload is problematic here because
   // in the case of a conflict from the server, there's a window where our
   // record would be marked as modified more recently than a change that occurs
   // on another device change, and we lose data from the user.
   //
   // Additionally, we use this as the set of items to upload for bookmark
   // repair reponse, which has similar constraints.
   this._needWeakUpload = new Map();
-};
+}
 
 // Enumeration to define approaches to handling bad records.
 // Attached to the constructor to allow use as a kind of static enumeration.
 SyncEngine.kRecoveryStrategy = {
   ignore: "ignore",
   retry:  "retry",
   error:  "error"
 };
--- a/services/sync/modules/engines/addons.js
+++ b/services/sync/modules/engines/addons.js
@@ -47,17 +47,17 @@ ChromeUtils.import("resource://services-
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://services-sync/collection_validator.js");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager",
                                "resource://gre/modules/AddonManager.jsm");
 ChromeUtils.defineModuleGetter(this, "AddonRepository",
                                "resource://gre/modules/addons/AddonRepository.jsm");
 
-this.EXPORTED_SYMBOLS = ["AddonsEngine", "AddonValidator"];
+var EXPORTED_SYMBOLS = ["AddonsEngine", "AddonValidator"];
 
 // 7 days in milliseconds.
 const PRUNE_ADDON_CHANGES_THRESHOLD = 60 * 60 * 24 * 7 * 1000;
 
 /**
  * AddonRecord represents the state of an add-on in an application.
  *
  * Each add-on has its own record for each application ID it is installed
@@ -104,21 +104,21 @@ Utils.deferGetSet(AddonRecord, "cleartex
  *
  * The engine maintains an instance of an AddonsReconciler, which is the entity
  * maintaining state for add-ons. It provides the history and tracking APIs
  * that AddonManager doesn't.
  *
  * The engine instance overrides a handful of functions on the base class. The
  * rationale for each is documented by that function.
  */
-this.AddonsEngine = function AddonsEngine(service) {
+function AddonsEngine(service) {
   SyncEngine.call(this, "Addons", service);
 
   this._reconciler = new AddonsReconciler(this._tracker.asyncObserver);
-};
+}
 AddonsEngine.prototype = {
   __proto__:              SyncEngine.prototype,
   _storeObj:              AddonsStore,
   _trackerObj:            AddonsTracker,
   _recordObj:             AddonRecord,
   version:                1,
 
   syncPriority:           5,
--- a/services/sync/modules/engines/bookmarks.js
+++ b/services/sync/modules/engines/bookmarks.js
@@ -1,16 +1,16 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["BookmarksEngine", "PlacesItem", "Bookmark",
-                         "BookmarkFolder", "BookmarkQuery",
-                         "Livemark", "BookmarkSeparator",
-                         "BufferedBookmarksEngine"];
+var EXPORTED_SYMBOLS = ["BookmarksEngine", "PlacesItem", "Bookmark",
+                        "BookmarkFolder", "BookmarkQuery",
+                        "Livemark", "BookmarkSeparator",
+                        "BufferedBookmarksEngine"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://services-sync/engines.js");
 ChromeUtils.import("resource://services-sync/record.js");
 ChromeUtils.import("resource://services-sync/util.js");
@@ -82,20 +82,20 @@ function getTypeObject(type) {
     case "separator":
       return BookmarkSeparator;
     case "item":
       return PlacesItem;
   }
   return null;
 }
 
-this.PlacesItem = function PlacesItem(collection, id, type) {
+function PlacesItem(collection, id, type) {
   CryptoWrapper.call(this, collection, id);
   this.type = type || "item";
-};
+}
 PlacesItem.prototype = {
   async decrypt(keyBundle) {
     // Do the normal CryptoWrapper decrypt, but change types before returning
     let clear = await CryptoWrapper.prototype.decrypt.call(this, keyBundle);
 
     // Convert the abstract places item to the actual object type
     if (!this.deleted)
       this.__proto__ = this.getTypeObject(this.type).prototype;
@@ -140,19 +140,19 @@ PlacesItem.prototype = {
     }
   },
 };
 
 Utils.deferGetSet(PlacesItem,
                   "cleartext",
                   ["hasDupe", "parentid", "parentName", "type", "dateAdded"]);
 
-this.Bookmark = function Bookmark(collection, id, type) {
+function Bookmark(collection, id, type) {
   PlacesItem.call(this, collection, id, type || "bookmark");
-};
+}
 Bookmark.prototype = {
   __proto__: PlacesItem.prototype,
   _logName: "Sync.Record.Bookmark",
 
   toSyncBookmark() {
     let info = PlacesItem.prototype.toSyncBookmark.call(this);
     info.title = this.title;
     info.url = this.bmkUri;
@@ -174,19 +174,19 @@ Bookmark.prototype = {
   },
 };
 
 Utils.deferGetSet(Bookmark,
                   "cleartext",
                   ["title", "bmkUri", "description",
                    "loadInSidebar", "tags", "keyword"]);
 
-this.BookmarkQuery = function BookmarkQuery(collection, id) {
+function BookmarkQuery(collection, id) {
   Bookmark.call(this, collection, id, "query");
-};
+}
 BookmarkQuery.prototype = {
   __proto__: Bookmark.prototype,
   _logName: "Sync.Record.BookmarkQuery",
 
   toSyncBookmark() {
     let info = Bookmark.prototype.toSyncBookmark.call(this);
     info.folder = this.folderName;
     info.query = this.queryId;
@@ -199,19 +199,19 @@ BookmarkQuery.prototype = {
     this.queryId = item.query;
   },
 };
 
 Utils.deferGetSet(BookmarkQuery,
                   "cleartext",
                   ["folderName", "queryId"]);
 
-this.BookmarkFolder = function BookmarkFolder(collection, id, type) {
+function BookmarkFolder(collection, id, type) {
   PlacesItem.call(this, collection, id, type || "folder");
-};
+}
 BookmarkFolder.prototype = {
   __proto__: PlacesItem.prototype,
   _logName: "Sync.Record.Folder",
 
   toSyncBookmark() {
     let info = PlacesItem.prototype.toSyncBookmark.call(this);
     info.description = this.description;
     info.title = this.title;
@@ -224,19 +224,19 @@ BookmarkFolder.prototype = {
     this.description = item.description;
     this.children = item.childRecordIds;
   },
 };
 
 Utils.deferGetSet(BookmarkFolder, "cleartext", ["description", "title",
                                                 "children"]);
 
-this.Livemark = function Livemark(collection, id) {
+function Livemark(collection, id) {
   BookmarkFolder.call(this, collection, id, "livemark");
-};
+}
 Livemark.prototype = {
   __proto__: BookmarkFolder.prototype,
   _logName: "Sync.Record.Livemark",
 
   toSyncBookmark() {
     let info = BookmarkFolder.prototype.toSyncBookmark.call(this);
     info.feed = this.feedUri;
     info.site = this.siteUri;
@@ -249,19 +249,19 @@ Livemark.prototype = {
     if (item.site) {
       this.siteUri = item.site.href;
     }
   },
 };
 
 Utils.deferGetSet(Livemark, "cleartext", ["siteUri", "feedUri"]);
 
-this.BookmarkSeparator = function BookmarkSeparator(collection, id) {
+function BookmarkSeparator(collection, id) {
   PlacesItem.call(this, collection, id, "separator");
-};
+}
 BookmarkSeparator.prototype = {
   __proto__: PlacesItem.prototype,
   _logName: "Sync.Record.Separator",
 
   fromSyncBookmark(item) {
     PlacesItem.prototype.fromSyncBookmark.call(this, item);
     this.pos = item.index;
   },
@@ -374,19 +374,19 @@ BaseBookmarksEngine.prototype = {
   }
 };
 
 /**
  * The original bookmarks engine. Uses an in-memory GUID map for deduping, and
  * the default implementation for reconciling changes. Handles child ordering
  * and deletions at the end of a sync.
  */
-this.BookmarksEngine = function BookmarksEngine(service) {
+function BookmarksEngine(service) {
   BaseBookmarksEngine.apply(this, arguments);
-};
+}
 
 BookmarksEngine.prototype = {
   __proto__: BaseBookmarksEngine.prototype,
   _storeObj: BookmarksStore,
 
   emptyChangeset() {
     return new BookmarksChangeset();
   },
@@ -676,19 +676,19 @@ BookmarksEngine.prototype = {
 };
 
 /**
  * The buffered bookmarks engine uses a different store that stages downloaded
  * bookmarks in a separate database, instead of writing directly to Places. The
  * buffer handles reconciliation, so we stub out `_reconcile`, and wait to pull
  * changes until we're ready to upload.
  */
-this.BufferedBookmarksEngine = function BufferedBookmarksEngine() {
+function BufferedBookmarksEngine() {
   BaseBookmarksEngine.apply(this, arguments);
-};
+}
 
 BufferedBookmarksEngine.prototype = {
   __proto__: BaseBookmarksEngine.prototype,
   _storeObj: BufferedBookmarksStore,
   // Used to override the engine name in telemetry, so that we can distinguish
   // errors that happen when the buffered engine is enabled vs when the
   // non-buffered engine is enabled.
   overrideTelemetryName: "bookmarks-buffered",
--- a/services/sync/modules/engines/clients.js
+++ b/services/sync/modules/engines/clients.js
@@ -15,17 +15,17 @@
  * - Immediately after successful upload, we delete commands-syncing.json from
  *   disk (and clear _currentlySyncingCommands). We reconcile our local records
  *   with what we just wrote in the server, and add failed IDs commands
  *   back in commands.json
  * - Any time we need to "save" a command for future syncs, we load
  *   commands.json, update it, and write it back out.
  */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "ClientEngine",
   "ClientsRec"
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://services-sync/constants.js");
@@ -60,42 +60,42 @@ const LAST_MODIFIED_ON_PROCESS_COMMAND_P
 function hasDupeCommand(commands, action) {
   if (!commands) {
     return false;
   }
   return commands.some(other => other.command == action.command &&
     Utils.deepEquals(other.args, action.args));
 }
 
-this.ClientsRec = function ClientsRec(collection, id) {
+function ClientsRec(collection, id) {
   CryptoWrapper.call(this, collection, id);
-};
+}
 ClientsRec.prototype = {
   __proto__: CryptoWrapper.prototype,
   _logName: "Sync.Record.Clients",
   ttl: CLIENTS_TTL
 };
 
 Utils.deferGetSet(ClientsRec,
                   "cleartext",
                   ["name", "type", "commands",
                    "version", "protocols",
                    "formfactor", "os", "appPackage", "application", "device",
                    "fxaDeviceId"]);
 
 
-this.ClientEngine = function ClientEngine(service) {
+function ClientEngine(service) {
   SyncEngine.call(this, "Clients", service);
 
   // Reset the last sync timestamp on every startup so that we fetch all clients
   this.resetLastSync();
   this.fxAccounts = fxAccounts;
   this.addClientCommandQueue = Promise.resolve();
   Utils.defineLazyIDProperty(this, "localID", "services.sync.client.GUID");
-};
+}
 ClientEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _storeObj: ClientStore,
   _recordObj: ClientsRec,
   _trackerObj: ClientsTracker,
   allowSkippedRecord: false,
   _knownStaleFxADeviceIds: null,
   _lastDeviceCounts: null,
--- a/services/sync/modules/engines/extension-storage.js
+++ b/services/sync/modules/engines/extension-storage.js
@@ -1,34 +1,34 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ExtensionStorageEngine"];
+var EXPORTED_SYMBOLS = ["ExtensionStorageEngine"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://services-sync/engines.js");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.defineModuleGetter(this, "extensionStorageSync",
                                "resource://gre/modules/ExtensionStorageSync.jsm");
 
 /**
  * The Engine that manages syncing for the web extension "storage"
  * API, and in particular ext.storage.sync.
  *
  * ext.storage.sync is implemented using Kinto, so it has mechanisms
  * for syncing that we do not need to integrate in the Firefox Sync
  * framework, so this is something of a stub.
  */
-this.ExtensionStorageEngine = function ExtensionStorageEngine(service) {
+function ExtensionStorageEngine(service) {
   SyncEngine.call(this, "Extension-Storage", service);
-};
+}
 ExtensionStorageEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _trackerObj: ExtensionStorageTracker,
   // we don't need these since we implement our own sync logic
   _storeObj: undefined,
   _recordObj: undefined,
 
   syncPriority: 10,
--- a/services/sync/modules/engines/forms.js
+++ b/services/sync/modules/engines/forms.js
@@ -1,30 +1,30 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["FormEngine", "FormRec", "FormValidator"];
+var EXPORTED_SYMBOLS = ["FormEngine", "FormRec", "FormValidator"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://services-sync/engines.js");
 ChromeUtils.import("resource://services-sync/record.js");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://services-sync/collection_validator.js");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.defineModuleGetter(this, "FormHistory",
                                "resource://gre/modules/FormHistory.jsm");
 
 const FORMS_TTL = 3 * 365 * 24 * 60 * 60; // Three years in seconds.
 
-this.FormRec = function FormRec(collection, id) {
+function FormRec(collection, id) {
   CryptoWrapper.call(this, collection, id);
-};
+}
 FormRec.prototype = {
   __proto__: CryptoWrapper.prototype,
   _logName: "Sync.Record.Form",
   ttl: FORMS_TTL
 };
 
 Utils.deferGetSet(FormRec, "cleartext", ["name", "value"]);
 
@@ -91,19 +91,19 @@ var FormWrapper = {
       guid: oldGUID,
       newGuid: newGUID,
     };
     await this._update(changes);
   }
 
 };
 
-this.FormEngine = function FormEngine(service) {
+function FormEngine(service) {
   SyncEngine.call(this, "Forms", service);
-};
+}
 FormEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _storeObj: FormStore,
   _trackerObj: FormTracker,
   _recordObj: FormRec,
 
   syncPriority: 6,
 
--- a/services/sync/modules/engines/history.js
+++ b/services/sync/modules/engines/history.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["HistoryEngine", "HistoryRec"];
+var EXPORTED_SYMBOLS = ["HistoryEngine", "HistoryRec"];
 
 const HISTORY_TTL = 5184000; // 60 days in milliseconds
 const THIRTY_DAYS_IN_MS = 2592000000; // 30 days in milliseconds
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://services-sync/constants.js");
@@ -16,31 +16,31 @@ ChromeUtils.import("resource://services-
 ChromeUtils.import("resource://services-sync/util.js");
 
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
                                "resource://gre/modules/PlacesUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "PlacesSyncUtils",
                                "resource://gre/modules/PlacesSyncUtils.jsm");
 
-this.HistoryRec = function HistoryRec(collection, id) {
+function HistoryRec(collection, id) {
   CryptoWrapper.call(this, collection, id);
-};
+}
 HistoryRec.prototype = {
   __proto__: CryptoWrapper.prototype,
   _logName: "Sync.Record.History",
   ttl: HISTORY_TTL
 };
 
 Utils.deferGetSet(HistoryRec, "cleartext", ["histUri", "title", "visits"]);
 
 
-this.HistoryEngine = function HistoryEngine(service) {
+function HistoryEngine(service) {
   SyncEngine.call(this, "History", service);
-};
+}
 HistoryEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _recordObj: HistoryRec,
   _storeObj: HistoryStore,
   _trackerObj: HistoryTracker,
   downloadLimit: MAX_HISTORY_DOWNLOAD,
 
   syncPriority: 7,
--- a/services/sync/modules/engines/passwords.js
+++ b/services/sync/modules/engines/passwords.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PasswordEngine", "LoginRec", "PasswordValidator"];
+var EXPORTED_SYMBOLS = ["PasswordEngine", "LoginRec", "PasswordValidator"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://services-sync/record.js");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://services-sync/collection_validator.js");
 ChromeUtils.import("resource://services-sync/engines.js");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://services-common/async.js");
@@ -38,19 +38,19 @@ function isSyncableChange(oldLogin, newL
   for (let property of SYNCABLE_LOGIN_FIELDS) {
     if (oldLogin[property] != newLogin[property]) {
       return true;
     }
   }
   return false;
 }
 
-this.LoginRec = function LoginRec(collection, id) {
+function LoginRec(collection, id) {
   CryptoWrapper.call(this, collection, id);
-};
+}
 LoginRec.prototype = {
   __proto__: CryptoWrapper.prototype,
   _logName: "Sync.Record.Login",
 
   cleartextToString() {
     let o = Object.assign({}, this.cleartext);
     if (o.password) {
       o.password = "X".repeat(o.password.length);
@@ -61,19 +61,19 @@ LoginRec.prototype = {
 
 Utils.deferGetSet(LoginRec, "cleartext", [
     "hostname", "formSubmitURL",
     "httpRealm", "username", "password", "usernameField", "passwordField",
     "timeCreated", "timePasswordChanged",
     ]);
 
 
-this.PasswordEngine = function PasswordEngine(service) {
+function PasswordEngine(service) {
   SyncEngine.call(this, "Passwords", service);
-};
+}
 PasswordEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _storeObj: PasswordStore,
   _trackerObj: PasswordTracker,
   _recordObj: LoginRec,
 
   syncPriority: 2,
 
--- a/services/sync/modules/engines/prefs.js
+++ b/services/sync/modules/engines/prefs.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PrefsEngine", "PrefRec"];
+var EXPORTED_SYMBOLS = ["PrefsEngine", "PrefRec"];
 
 const PREF_SYNC_PREFS_PREFIX = "services.sync.prefs.sync.";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 ChromeUtils.import("resource://services-sync/engines.js");
 ChromeUtils.import("resource://services-sync/record.js");
@@ -16,30 +16,30 @@ ChromeUtils.import("resource://services-
 ChromeUtils.import("resource://services-common/utils.js");
 
 ChromeUtils.defineModuleGetter(this, "LightweightThemeManager",
                           "resource://gre/modules/LightweightThemeManager.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "PREFS_GUID",
                             () => CommonUtils.encodeBase64URL(Services.appinfo.ID));
 
-this.PrefRec = function PrefRec(collection, id) {
+function PrefRec(collection, id) {
   CryptoWrapper.call(this, collection, id);
-};
+}
 PrefRec.prototype = {
   __proto__: CryptoWrapper.prototype,
   _logName: "Sync.Record.Pref",
 };
 
 Utils.deferGetSet(PrefRec, "cleartext", ["value"]);
 
 
-this.PrefsEngine = function PrefsEngine(service) {
+function PrefsEngine(service) {
   SyncEngine.call(this, "Prefs", service);
-};
+}
 PrefsEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _storeObj: PrefStore,
   _trackerObj: PrefTracker,
   _recordObj: PrefRec,
   version: 2,
 
   syncPriority: 1,
--- a/services/sync/modules/engines/tabs.js
+++ b/services/sync/modules/engines/tabs.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["TabEngine", "TabSetRecord"];
+var EXPORTED_SYMBOLS = ["TabEngine", "TabSetRecord"];
 
 const TABS_TTL = 1814400; // 21 days.
 const TAB_ENTRIES_LIMIT = 5; // How many URLs to include in tab history.
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/engines.js");
@@ -15,31 +15,31 @@ ChromeUtils.import("resource://services-
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://services-sync/constants.js");
 
 ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
   "resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "SessionStore",
   "resource:///modules/sessionstore/SessionStore.jsm");
 
-this.TabSetRecord = function TabSetRecord(collection, id) {
+function TabSetRecord(collection, id) {
   CryptoWrapper.call(this, collection, id);
-};
+}
 TabSetRecord.prototype = {
   __proto__: CryptoWrapper.prototype,
   _logName: "Sync.Record.Tabs",
   ttl: TABS_TTL,
 };
 
 Utils.deferGetSet(TabSetRecord, "cleartext", ["clientName", "tabs"]);
 
 
-this.TabEngine = function TabEngine(service) {
+function TabEngine(service) {
   SyncEngine.call(this, "Tabs", service);
-};
+}
 TabEngine.prototype = {
   __proto__: SyncEngine.prototype,
   _storeObj: TabStore,
   _trackerObj: TabTracker,
   _recordObj: TabSetRecord,
   // A flag to indicate if we have synced in this session. This is to help
   // consumers of remote tabs that may want to differentiate between "I've an
   // empty tab list as I haven't yet synced" vs "I've an empty tab list
--- a/services/sync/modules/keys.js
+++ b/services/sync/modules/keys.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "BulkKeyBundle",
 ];
 
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/main.js");
 ChromeUtils.import("resource://services-sync/util.js");
@@ -116,23 +116,23 @@ KeyBundle.prototype = {
 
 };
 
 /**
  * Represents a KeyBundle associated with a collection.
  *
  * This is just a KeyBundle with a collection attached.
  */
-this.BulkKeyBundle = function BulkKeyBundle(collection) {
+function BulkKeyBundle(collection) {
   let log = Log.repository.getLogger("Sync.BulkKeyBundle");
   log.info("BulkKeyBundle being created for " + collection);
   KeyBundle.call(this);
 
   this._collection = collection;
-};
+}
 BulkKeyBundle.fromHexKey = function(hexKey) {
   let key = CommonUtils.hexToBytes(hexKey);
   let bundle = new BulkKeyBundle();
   // [encryptionKey, hmacKey]
   bundle.keyPair = [key.slice(0, 32), key.slice(32, 64)];
   return bundle;
 };
 
--- a/services/sync/modules/main.js
+++ b/services/sync/modules/main.js
@@ -1,17 +1,17 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Weave"];
+var EXPORTED_SYMBOLS = ["Weave"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.Weave = {};
+var Weave = {};
 ChromeUtils.import("resource://services-sync/constants.js", Weave);
 var lazies = {
   "service.js":           ["Service"],
   "status.js":            ["Status"],
   "util.js":              ["Utils", "Svc"]
 };
 
 function lazyImport(module, dest, props) {
--- a/services/sync/modules/policies.js
+++ b/services/sync/modules/policies.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "ErrorHandler",
   "SyncScheduler",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/constants.js");
@@ -29,20 +29,20 @@ XPCOMUtils.defineLazyServiceGetter(this,
 
 // Get the value for an interval that's stored in preferences. To save users
 // from themselves (and us from them!) the minimum time they can specify
 // is 60s.
 function getThrottledIntervalPreference(prefName) {
   return Math.max(Svc.Prefs.get(prefName), 60) * 1000;
 }
 
-this.SyncScheduler = function SyncScheduler(service) {
+function SyncScheduler(service) {
   this.service = service;
   this.init();
-};
+}
 SyncScheduler.prototype = {
   _log: Log.repository.getLogger("Sync.SyncScheduler"),
 
   _fatalLoginStatus: [LOGIN_FAILED_NO_PASSPHRASE,
                       LOGIN_FAILED_INVALID_PASSPHRASE,
                       LOGIN_FAILED_LOGIN_REJECTED],
 
   /**
@@ -651,20 +651,20 @@ SyncScheduler.prototype = {
 
     // Clear out any scheduled syncs
     if (this.syncTimer)
       this.syncTimer.clear();
   },
 
 };
 
-this.ErrorHandler = function ErrorHandler(service) {
+function ErrorHandler(service) {
   this.service = service;
   this.init();
-};
+}
 ErrorHandler.prototype = {
   MINIMUM_ALERT_INTERVAL_MSEC: 604800000,   // One week.
 
   /**
    * Flag that turns on error reporting for all errors, incl. network errors.
    */
   dontIgnoreErrors: false,
 
--- a/services/sync/modules/record.js
+++ b/services/sync/modules/record.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "WBORecord",
   "RecordManager",
   "CryptoWrapper",
   "CollectionKeyManager",
   "Collection",
 ];
 
 const CRYPTO_COLLECTION = "crypto";
@@ -17,22 +17,22 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://services-sync/keys.js");
 ChromeUtils.import("resource://services-sync/main.js");
 ChromeUtils.import("resource://services-sync/resource.js");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.import("resource://services-common/utils.js");
 
-this.WBORecord = function WBORecord(collection, id) {
+function WBORecord(collection, id) {
   this.data = {};
   this.payload = {};
   this.collection = collection; // Optional.
   this.id = id; // Optional.
-};
+}
 WBORecord.prototype = {
   _logName: "Sync.Record.WBO",
 
   get sortindex() {
     if (this.data.sortindex)
       return this.data.sortindex;
     return 0;
   },
@@ -98,22 +98,22 @@ WBORecord.prototype = {
       "ttl: " + this.ttl + "  " +
       "payload: " + JSON.stringify(this.payload) +
       " }";
   }
 };
 
 Utils.deferGetSet(WBORecord, "data", ["id", "modified", "sortindex", "payload"]);
 
-this.CryptoWrapper = function CryptoWrapper(collection, id) {
+function CryptoWrapper(collection, id) {
   this.cleartext = {};
   WBORecord.call(this, collection, id);
   this.ciphertext = null;
   this.id = id;
-};
+}
 CryptoWrapper.prototype = {
   __proto__: WBORecord.prototype,
   _logName: "Sync.Record.CryptoWrapper",
 
   ciphertextHMAC: function ciphertextHMAC(keyBundle) {
     let hasher = keyBundle.sha256HMACHasher;
     if (!hasher) {
       throw new Error("Cannot compute HMAC without an HMAC key.");
@@ -211,22 +211,22 @@ CryptoWrapper.prototype = {
 };
 
 Utils.deferGetSet(CryptoWrapper, "payload", ["ciphertext", "IV", "hmac"]);
 Utils.deferGetSet(CryptoWrapper, "cleartext", "deleted");
 
 /**
  * An interface and caching layer for records.
  */
-this.RecordManager = function RecordManager(service) {
+function RecordManager(service) {
   this.service = service;
 
   this._log = Log.repository.getLogger(this._logName);
   this._records = {};
-};
+}
 RecordManager.prototype = {
   _recordType: CryptoWrapper,
   _logName: "Sync.RecordManager",
 
   async import(url) {
     this._log.trace("Importing record: " + (url.spec ? url.spec : url));
     try {
       // Clear out the last response with empty object if GET fails
@@ -279,23 +279,23 @@ RecordManager.prototype = {
 };
 
 /**
  * Keeps track of mappings between collection names ('tabs') and KeyBundles.
  *
  * You can update this thing simply by giving it /info/collections. It'll
  * use the last modified time to bring itself up to date.
  */
-this.CollectionKeyManager = function CollectionKeyManager(lastModified, default_, collections) {
+function CollectionKeyManager(lastModified, default_, collections) {
   this.lastModified = lastModified || 0;
   this._default = default_ || null;
   this._collections = collections || {};
 
   this._log = Log.repository.getLogger("Sync.CollectionKeyManager");
-};
+}
 
 // TODO: persist this locally as an Identity. Bug 610913.
 // Note that the last modified time needs to be preserved.
 CollectionKeyManager.prototype = {
 
   /**
    * Generate a new CollectionKeyManager that has the same attributes
    * as this one.
@@ -572,17 +572,17 @@ CollectionKeyManager.prototype = {
     }
 
     let r = this.setContents(payload, storage_keys.modified);
     log.info("Collection keys updated.");
     return r;
   }
 };
 
-this.Collection = function Collection(uri, recordObj, service) {
+function Collection(uri, recordObj, service) {
   if (!service) {
     throw new Error("Collection constructor requires a service.");
   }
 
   Resource.call(this, uri);
 
   // This is a bit hacky, but gets the job done.
   let res = service.resource(uri);
@@ -598,17 +598,17 @@ this.Collection = function Collection(ur
   this._newer = 0;
   this._data = [];
   // optional members used by batch upload operations.
   this._batch = null;
   this._commit = false;
   // Used for batch download operations -- note that this is explicitly an
   // opaque value and not (necessarily) a number.
   this._offset = null;
-};
+}
 Collection.prototype = {
   __proto__: Resource.prototype,
   _logName: "Sync.Collection",
 
   _rebuildURL: function Coll__rebuildURL() {
     // XXX should consider what happens if it's not a URL...
     this.uri.QueryInterface(Ci.nsIURL);
 
--- a/services/sync/modules/resource.js
+++ b/services/sync/modules/resource.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Resource"];
+var EXPORTED_SYMBOLS = ["Resource"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-common/observers.js");
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://services-sync/util.js");
 const {setTimeout, clearTimeout} = ChromeUtils.import("resource://gre/modules/Timer.jsm", {});
 Cu.importGlobalProperties(["fetch"]);
@@ -22,22 +22,22 @@ Cu.importGlobalProperties(["fetch"]);
  * The 'resource' object has the following methods to issue HTTP requests
  * of the corresponding HTTP methods:
  *
  *   get(callback)
  *   put(data, callback)
  *   post(data, callback)
  *   delete(callback)
  */
-this.Resource = function Resource(uri) {
+function Resource(uri) {
   this._log = Log.repository.getLogger(this._logName);
   this._log.manageLevelFromPref("services.sync.log.logger.network.resources");
   this.uri = uri;
   this._headers = {};
-};
+}
 // (static) Caches the latest server timestamp (X-Weave-Timestamp header).
 Resource.serverTime = null;
 
 XPCOMUtils.defineLazyPreferenceGetter(Resource,
                                       "SEND_VERSION_INFO",
                                       "services.sync.sendVersionInfo",
                                       true);
 Resource.prototype = {
--- a/services/sync/modules/service.js
+++ b/services/sync/modules/service.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Service"];
+var EXPORTED_SYMBOLS = ["Service"];
 
 // How long before refreshing the cluster
 const CLUSTER_BACKOFF = 5 * 60 * 1000; // 5 minutes
 
 // How long a key to generate from an old passphrase.
 const PBKDF2_KEY_BYTES = 16;
 
 const CRYPTO_COLLECTION = "crypto";
@@ -1405,12 +1405,12 @@ Sync11Service.prototype = {
     })();
   },
 
   recordTelemetryEvent(object, method, value, extra = undefined) {
     Svc.Obs.notify("weave:telemetry:event", { object, method, value, extra });
   },
 };
 
-this.Service = new Sync11Service();
+var Service = new Sync11Service();
 this.Service.promiseInitialized = new Promise(resolve => {
   this.Service.onStartup().then(resolve);
 });
--- a/services/sync/modules/stages/declined.js
+++ b/services/sync/modules/stages/declined.js
@@ -4,27 +4,27 @@
 
 /**
  * This file contains code for maintaining the set of declined engines,
  * in conjunction with EngineManager.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["DeclinedEngines"];
+var EXPORTED_SYMBOLS = ["DeclinedEngines"];
 
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://services-common/observers.js");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 
 
 
-this.DeclinedEngines = function(service) {
+var DeclinedEngines = function(service) {
   this._log = Log.repository.getLogger("Sync.Declined");
   this._log.manageLevelFromPref("services.sync.log.logger.declined");
 
   this.service = service;
 };
 this.DeclinedEngines.prototype = {
   updateDeclined(meta, engineManager = this.service.engineManager) {
     let enabled = new Set(engineManager.getEnabled().map(e => e.name));
--- a/services/sync/modules/stages/enginesync.js
+++ b/services/sync/modules/stages/enginesync.js
@@ -1,37 +1,37 @@
 /* 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/. */
 
 /**
  * This file contains code for synchronizing engines.
  */
 
-this.EXPORTED_SYMBOLS = ["EngineSynchronizer"];
+var EXPORTED_SYMBOLS = ["EngineSynchronizer"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://services-sync/util.js");
 ChromeUtils.import("resource://services-common/async.js");
 ChromeUtils.defineModuleGetter(this, "Doctor",
                                "resource://services-sync/doctor.js");
 
 /**
  * Perform synchronization of engines.
  *
  * This was originally split out of service.js. The API needs lots of love.
  */
-this.EngineSynchronizer = function EngineSynchronizer(service) {
+function EngineSynchronizer(service) {
   this._log = Log.repository.getLogger("Sync.Synchronizer");
   this._log.manageLevelFromPref("services.sync.log.logger.synchronizer");
 
   this.service = service;
-};
+}
 
 EngineSynchronizer.prototype = {
   async sync(engineNamesToSync, why) {
     let fastSync = why && why == "sleep";
     let startTime = Date.now();
 
     this.service.status.resetSync();
 
--- a/services/sync/modules/status.js
+++ b/services/sync/modules/status.js
@@ -1,20 +1,20 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Status"];
+var EXPORTED_SYMBOLS = ["Status"];
 
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/browserid_identity.js");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.Status = {
+var Status = {
   _log: Log.repository.getLogger("Sync.Status"),
   __authManager: null,
   ready: false,
 
   get _authManager() {
     if (this.__authManager) {
       return this.__authManager;
     }
--- a/services/sync/modules/telemetry.js
+++ b/services/sync/modules/telemetry.js
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SyncTelemetry"];
+var EXPORTED_SYMBOLS = ["SyncTelemetry"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-sync/browserid_identity.js");
 ChromeUtils.import("resource://services-sync/main.js");
 ChromeUtils.import("resource://services-sync/status.js");
 ChromeUtils.import("resource://services-sync/util.js");
@@ -743,9 +743,9 @@ class SyncTelemetryImpl {
       name: "unexpectederror",
       error: cleanErrorMessage(msg)
     };
   }
 
 }
 
 /* global SyncTelemetry */
-this.SyncTelemetry = new SyncTelemetryImpl(ENGINES);
+var SyncTelemetry = new SyncTelemetryImpl(ENGINES);
--- a/services/sync/modules/util.js
+++ b/services/sync/modules/util.js
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Utils", "Svc", "SerializableSet"];
+var EXPORTED_SYMBOLS = ["Utils", "Svc", "SerializableSet"];
 
 ChromeUtils.import("resource://services-common/observers.js");
 ChromeUtils.import("resource://services-common/utils.js");
 ChromeUtils.import("resource://services-crypto/utils.js");
 ChromeUtils.import("resource://services-sync/constants.js");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -48,17 +48,17 @@ class HMACMismatch extends Error {
     super(message);
     this.name = "HMACMismatch";
   }
 }
 
 /*
  * Utility functions
  */
-this.Utils = {
+var Utils = {
   // Aliases from CryptoUtils.
   generateRandomBytes: CryptoUtils.generateRandomBytes,
   computeHTTPMACSHA1: CryptoUtils.computeHTTPMACSHA1,
   digestUTF8: CryptoUtils.digestUTF8,
   digestBytes: CryptoUtils.digestBytes,
   sha1: CryptoUtils.sha1,
   sha1Base32: CryptoUtils.sha1Base32,
   sha256: CryptoUtils.sha256,
@@ -773,16 +773,16 @@ XPCOMUtils.defineLazyGetter(Utils, "_utf
 });
 
 XPCOMUtils.defineLazyGetter(Utils, "utf8Encoder", () =>
   new TextEncoder("utf-8"));
 
 /*
  * Commonly-used services
  */
-this.Svc = {};
+var Svc = {};
 Svc.Prefs = new Preferences(PREFS_BRANCH);
 Svc.Obs = Observers;
 
 Svc.Obs.add("xpcom-shutdown", function() {
   for (let name in Svc)
     delete Svc[name];
 });
--- a/services/sync/tps/extensions/tps/resource/auth/fxaccounts.jsm
+++ b/services/sync/tps/extensions/tps/resource/auth/fxaccounts.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Authentication",
 ];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccounts.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccountsClient.jsm");
 ChromeUtils.import("resource://gre/modules/FxAccountsConfig.jsm");
--- a/testing/mochitest/BrowserTestUtils/BrowserTestUtils.jsm
+++ b/testing/mochitest/BrowserTestUtils/BrowserTestUtils.jsm
@@ -6,17 +6,17 @@
  * This module implements a number of utilities useful for browser tests.
  *
  * All asynchronous helper methods should return promises, rather than being
  * callback based.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "BrowserTestUtils",
 ];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://testing-common/TestUtils.jsm");
 ChromeUtils.import("resource://testing-common/ContentTask.jsm");
@@ -62,17 +62,17 @@ Cu.permitCPOWsInScope(this);
 var gSendCharCount = 0;
 var gSynthesizeKeyCount = 0;
 var gSynthesizeCompositionCount = 0;
 var gSynthesizeCompositionChangeCount = 0;
 
 const kAboutPageRegistrationContentScript =
   "chrome://mochikit/content/tests/BrowserTestUtils/content-about-page-utils.js";
 
-this.BrowserTestUtils = {
+var BrowserTestUtils = {
   /**
    * Loads a page in a new tab, executes a Task and closes the tab.
    *
    * @param options
    *        An object  or string.
    *        If this is a string it is the url to open and will be opened in the
    *        currently active browser window.
    *        If an object it should have the following properties:
--- a/testing/mochitest/BrowserTestUtils/ContentTask.jsm
+++ b/testing/mochitest/BrowserTestUtils/ContentTask.jsm
@@ -1,17 +1,17 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ts=2 et sw=2 tw=80 filetype=javascript: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "ContentTask"
 ];
 
 ChromeUtils.import("resource://gre/modules/Promise.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const FRAME_SCRIPT = "resource://testing-common/content-task.js";
 
@@ -28,17 +28,17 @@ var gPromises = new Map();
 /**
  * Incrementing integer to generate unique message id.
  */
 var gMessageID = 1;
 
 /**
  * This object provides the public module functions.
  */
-this.ContentTask = {
+var ContentTask = {
   /**
    * _testScope saves the current testScope from
    * browser-test.js. This is used to implement SimpleTest functions
    * like ok() and is() in the content process. The scope is only
    * valid for tasks spawned in the current test, so we keep track of
    * the ID of the first task spawned in this test (_scopeValidId).
    */
   _testScope: null,
--- a/testing/mochitest/BrowserTestUtils/ContentTaskUtils.jsm
+++ b/testing/mochitest/BrowserTestUtils/ContentTaskUtils.jsm
@@ -7,23 +7,23 @@
  * into content scope.
  *
  * All asynchronous helper methods should return promises, rather than being
  * callback based.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "ContentTaskUtils",
 ];
 
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.ContentTaskUtils = {
+var ContentTaskUtils = {
   /**
    * Will poll a condition function until it returns true.
    *
    * @param condition
    *        A condition function that must return true or false. If the
    *        condition ever throws, this is also treated as a false.
    * @param interval
    *        The time interval to poll the condition function. Defaults
--- a/testing/mochitest/ShutdownLeaksCollector.jsm
+++ b/testing/mochitest/ShutdownLeaksCollector.jsm
@@ -1,16 +1,16 @@
 /* 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/. */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.EXPORTED_SYMBOLS = ["ContentCollector"];
+var EXPORTED_SYMBOLS = ["ContentCollector"];
 
 // This listens for the message "browser-test:collect-request". When it gets it,
 // it runs some GCs and CCs, then prints out a message indicating the collections
 // are complete. Mochitest uses this information to determine when windows and
 // docshells should be destroyed.
 
 var ContentCollector = {
   init: function() {
--- a/testing/mochitest/tests/Harness_sanity/ImportTesting.jsm
+++ b/testing/mochitest/tests/Harness_sanity/ImportTesting.jsm
@@ -1,5 +1,5 @@
-this.EXPORTED_SYMBOLS = ["ImportTesting"];
+var EXPORTED_SYMBOLS = ["ImportTesting"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 // Empty module for testing via SpecialPowers.importInMainProcess.
--- a/testing/modules/AppData.jsm
+++ b/testing/modules/AppData.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "makeFakeAppDir",
 ];
 
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/Promise.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 // Reference needed in order for fake app dir provider to be active.
@@ -23,17 +23,17 @@ var gFakeAppDirectoryProvider;
  *
  * We create the new UAppData directory under the profile's directory
  * because the profile directory is automatically cleaned as part of
  * test shutdown.
  *
  * This returns a promise that will be resolved once the new directory
  * is created and installed.
  */
-this.makeFakeAppDir = function() {
+var makeFakeAppDir = function() {
   let dirMode = OS.Constants.libc.S_IRWXU;
   let baseFile = Services.dirsvc.get("ProfD", Ci.nsIFile);
   let appD = baseFile.clone();
   appD.append("UAppData");
 
   if (gFakeAppDirectoryProvider) {
     return Promise.resolve(appD.path);
   }
--- a/testing/modules/AppInfo.jsm
+++ b/testing/modules/AppInfo.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "newAppInfo",
   "getAppInfo",
   "updateAppInfo",
 ];
 
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
@@ -28,17 +28,17 @@ let origRuntime = Cc["@mozilla.org/xre/a
  *   name:            nsIXULAppInfo.name
  *   version:         nsIXULAppInfo.version
  *   platformVersion: nsIXULAppInfo.platformVersion
  *   OS:              nsIXULRuntime.OS
  *
  *   crashReporter:   nsICrashReporter interface is implemented if true
  *   extraProps:      extra properties added to XULAppInfo
  */
-this.newAppInfo = function(options = {}) {
+var newAppInfo = function(options = {}) {
   let ID = ("ID" in options) ? options.ID : "xpcshell@tests.mozilla.org";
   let name = ("name" in options) ? options.name : "xpcshell";
   let version = ("version" in options) ? options.version : "1";
   let platformVersion
       = ("platformVersion" in options) ? options.platformVersion : "p-ver";
   let OS = ("OS" in options) ? options.OS : "XPCShell";
   let extraProps = ("extraProps" in options) ? options.extraProps : {};
 
@@ -95,27 +95,27 @@ this.newAppInfo = function(options = {})
   return appInfo;
 };
 
 var currentAppInfo = newAppInfo();
 
 /**
  * Obtain a reference to the current object used to define XULAppInfo.
  */
-this.getAppInfo = function() { return currentAppInfo; };
+var getAppInfo = function() { return currentAppInfo; };
 
 /**
  * Update the current application info.
  *
  * See newAppInfo for options.
  *
  * To change the current XULAppInfo, simply call this function. If there was
  * a previously registered app info object, it will be unloaded and replaced.
  */
-this.updateAppInfo = function(options) {
+var updateAppInfo = function(options) {
   currentAppInfo = newAppInfo(options);
 
   let id = Components.ID("{fbfae60b-64a4-44ef-a911-08ceb70b9f31}");
   let cid = "@mozilla.org/xre/app-info;1";
   let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
 
   // Unregister an existing factory if one exists.
   try {
--- a/testing/modules/Assert.jsm
+++ b/testing/modules/Assert.jsm
@@ -7,17 +7,17 @@
 // specific section of the CommonJS spec.
 //
 // Originally from narwhal.js (http://narwhaljs.org)
 // Copyright (c) 2009 Thomas Robinson <280north.com>
 // MIT license: http://opensource.org/licenses/MIT
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Assert"
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/ObjectUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Promise",
                                "resource://gre/modules/Promise.jsm");
--- a/testing/modules/CoverageUtils.jsm
+++ b/testing/modules/CoverageUtils.jsm
@@ -1,27 +1,27 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "CoverageCollector",
 ];
 
 /* globals Debugger */
 const {addDebuggerToGlobal} = ChromeUtils.import("resource://gre/modules/jsdebugger.jsm",
                                                  {});
 addDebuggerToGlobal(Cu.getGlobalForObject(this));
 
 /**
  * Records coverage for each test by way of the js debugger.
  */
-this.CoverageCollector = function(prefix) {
+var CoverageCollector = function(prefix) {
   this._prefix = prefix;
   this._dbg = new Debugger();
   this._dbg.collectCoverageInfo = true;
   this._dbg.addAllGlobalsAsDebuggees();
   this._scripts = this._dbg.findScripts();
 
   this._dbg.onNewScript = (script) => {
     this._scripts.push(script);
--- a/testing/modules/FileTestUtils.jsm
+++ b/testing/modules/FileTestUtils.jsm
@@ -3,31 +3,31 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Provides testing functions dealing with local files and their contents.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "FileTestUtils",
 ];
 
 ChromeUtils.import("resource://gre/modules/AsyncShutdown.jsm", this);
 ChromeUtils.import("resource://gre/modules/DownloadPaths.jsm", this);
 ChromeUtils.import("resource://gre/modules/FileUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://testing-common/Assert.jsm", this);
 
 let gFileCounter = 1;
 let gPathsToRemove = [];
 
-this.FileTestUtils = {
+var FileTestUtils = {
   /**
    * Returns a reference to a temporary file that is guaranteed not to exist and
    * to have never been created before. If a file or a directory with this name
    * is created by the test, it will be deleted when all tests terminate.
    *
    * @param suggestedName [optional]
    *        Any extension on this template file name will be preserved. If this
    *        is unspecified, the returned file name will have the generic ".dat"
--- a/testing/modules/MockRegistrar.jsm
+++ b/testing/modules/MockRegistrar.jsm
@@ -1,25 +1,25 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "MockRegistrar",
 ];
 
 const Cm = Components.manager;
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 var logger = Log.repository.getLogger("MockRegistrar");
 
-this.MockRegistrar = Object.freeze({
+var MockRegistrar = Object.freeze({
   _registeredComponents: new Map(),
   _originalCIDs: new Map(),
   get registrar() {
     return Cm.QueryInterface(Ci.nsIComponentRegistrar);
   },
 
   /**
    * Register a mock to override target interfaces.
--- a/testing/modules/MockRegistry.jsm
+++ b/testing/modules/MockRegistry.jsm
@@ -1,12 +1,12 @@
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["MockRegistry"];
+var EXPORTED_SYMBOLS = ["MockRegistry"];
 
 ChromeUtils.import("resource://testing-common/MockRegistrar.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 class MockRegistry {
   constructor() {
     // Three level structure of Maps pointing to Maps pointing to Maps
     // this.roots is the top of the structure and has ROOT_KEY_* values
--- a/testing/modules/StructuredLog.jsm
+++ b/testing/modules/StructuredLog.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "StructuredLogger",
   "StructuredFormatter"
 ];
 
 /**
  * TestLogger: Logger class generating messages compliant with the
  * structured logging protocol for tests exposed by mozlog
  *
@@ -18,17 +18,17 @@ this.EXPORTED_SYMBOLS = [
  * @param dumpFun
  *        An underlying function to be used to log raw messages. This function
  *        will receive the complete serialized json string to log.
  * @param mutators
  *        An array of functions used to add global context to log messages.
  *        These will each be called with the complete object to log as an
  *        argument.
  */
-this.StructuredLogger = function(name, dumpFun = dump, mutators = []) {
+var StructuredLogger = function(name, dumpFun = dump, mutators = []) {
   this.name = name;
   this._dumpFun = dumpFun;
   this._mutatorFuns = mutators;
 };
 
 /**
  * Log functions producing messages in the format specified by mozlog
  */
@@ -209,17 +209,17 @@ StructuredLogger.prototype = {
   },
 };
 
 
 /**
  * StructuredFormatter: Formatter class turning structured messages
  * into human-readable messages.
  */
-this.StructuredFormatter = function() {
+var StructuredFormatter = function() {
     this.testStartTimes = {};
 };
 
 StructuredFormatter.prototype = {
 
   log(message) {
     return message.message;
   },
--- a/testing/modules/TestUtils.jsm
+++ b/testing/modules/TestUtils.jsm
@@ -13,25 +13,25 @@
  * browser windows and tabs.
  *
  * Individual components also offer testing functions to other components, for
  * example LoginTestUtils.jsm.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TestUtils",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.TestUtils = {
+var TestUtils = {
   executeSoon(callbackFn) {
     Services.tm.dispatchToMainThread(callbackFn);
   },
 
   waitForTick() {
     return new Promise(resolve => this.executeSoon(resolve));
   },
 
--- a/testing/modules/ajv-4.1.1.js
+++ b/testing/modules/ajv-4.1.1.js
@@ -1,12 +1,12 @@
 "use strict";
 const global = this;
 
-this.EXPORTED_SYMBOLS = ["Ajv"];
+var EXPORTED_SYMBOLS = ["Ajv"];
 
 /*
  * ajv 4.1.1: Another JSON Schema Validator
  *
  * https://github.com/epoberezkin/ajv
  *
  * The MIT License (MIT)
  *
--- a/testing/specialpowers/content/MockColorPicker.jsm
+++ b/testing/specialpowers/content/MockColorPicker.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["MockColorPicker"];
+var EXPORTED_SYMBOLS = ["MockColorPicker"];
 
 const Cm = Components.manager;
 
 const CONTRACT_ID = "@mozilla.org/colorpicker;1";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
@@ -27,17 +27,17 @@ var newFactory = function(window) {
     },
     lockFactory(aLock) {
       throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
     },
     QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory])
   };
 };
 
-this.MockColorPicker = {
+var MockColorPicker = {
   init(window) {
     this.reset();
     this.factory = newFactory(window);
     if (!registrar.isCIDRegistered(newClassID)) {
       try {
         oldClassID = registrar.contractIDToCID(CONTRACT_ID);
         oldFactory = Cm.getClassObject(Cc[CONTRACT_ID], Ci.nsIFactory);
       } catch (ex) {
--- a/testing/specialpowers/content/MockFilePicker.jsm
+++ b/testing/specialpowers/content/MockFilePicker.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["MockFilePicker"];
+var EXPORTED_SYMBOLS = ["MockFilePicker"];
 
 const Cm = Components.manager;
 
 const CONTRACT_ID = "@mozilla.org/filepicker;1";
 
 ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -28,17 +28,17 @@ var newFactory = function(window) {
     },
     lockFactory(aLock) {
       throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
     },
     QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory])
   };
 };
 
-this.MockFilePicker = {
+var MockFilePicker = {
   returnOK: Ci.nsIFilePicker.returnOK,
   returnCancel: Ci.nsIFilePicker.returnCancel,
   returnReplace: Ci.nsIFilePicker.returnReplace,
 
   filterAll: Ci.nsIFilePicker.filterAll,
   filterHTML: Ci.nsIFilePicker.filterHTML,
   filterText: Ci.nsIFilePicker.filterText,
   filterImages: Ci.nsIFilePicker.filterImages,
--- a/testing/specialpowers/content/MockPermissionPrompt.jsm
+++ b/testing/specialpowers/content/MockPermissionPrompt.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["MockPermissionPrompt"];
+var EXPORTED_SYMBOLS = ["MockPermissionPrompt"];
 
 const Cm = Components.manager;
 
 const CONTRACT_ID = "@mozilla.org/content-permission/prompt;1";
 
 ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -22,17 +22,17 @@ var newFactory = {
     return new MockPermissionPromptInstance().QueryInterface(aIID);
   },
   lockFactory(aLock) {
     throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
   },
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory])
 };
 
-this.MockPermissionPrompt = {
+var MockPermissionPrompt = {
   init() {
     this.reset();
     if (!registrar.isCIDRegistered(newClassID)) {
       try {
         oldClassID = registrar.contractIDToCID(CONTRACT_ID);
         oldFactory = Cm.getClassObject(Cc[CONTRACT_ID], Ci.nsIFactory);
       } catch (ex) {
         oldClassID = "";
--- a/testing/specialpowers/content/SpecialPowersObserver.jsm
+++ b/testing/specialpowers/content/SpecialPowersObserver.jsm
@@ -21,21 +21,21 @@ const CHILD_SCRIPT = "chrome://specialpo
 const CHILD_SCRIPT_API = "chrome://specialpowers/content/specialpowersAPI.js";
 const CHILD_LOGGER_SCRIPT = "chrome://specialpowers/content/MozillaLogger.js";
 
 
 // Glue to add in the observer API to this object.  This allows us to share code with chrome tests
 Services.scriptloader.loadSubScript("chrome://specialpowers/content/SpecialPowersObserverAPI.js");
 
 /* XPCOM gunk */
-this.SpecialPowersObserver = function SpecialPowersObserver() {
+function SpecialPowersObserver() {
   this._isFrameScriptLoaded = false;
   this._messageManager = Cc["@mozilla.org/globalmessagemanager;1"].
                          getService(Ci.nsIMessageBroadcaster);
-};
+}
 
 
 SpecialPowersObserver.prototype = new SpecialPowersObserverAPI();
 
 SpecialPowersObserver.prototype.classDescription = "Special powers Observer for use in testing.";
 SpecialPowersObserver.prototype.classID = Components.ID("{59a52458-13e0-4d93-9d85-a637344f29a1}");
 SpecialPowersObserver.prototype.contractID = "@mozilla.org/special-powers-observer;1";
 SpecialPowersObserver.prototype.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.nsIObserver]);
@@ -286,17 +286,16 @@ SpecialPowersObserver.prototype.receiveM
       }
       break;
     default:
       return this._receiveMessage(aMessage);
   }
   return undefined;
 };
 
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([SpecialPowersObserver]);
-this.SpecialPowersObserverFactory = Object.freeze({
+var SpecialPowersObserverFactory = Object.freeze({
   createInstance(outer, id) {
     if (outer) { throw Components.results.NS_ERROR_NO_AGGREGATION; }
     return new SpecialPowersObserver();
   },
   loadFactory(lock) {},
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIFactory])
 });
--- a/toolkit/components/addoncompat/CompatWarning.jsm
+++ b/toolkit/components/addoncompat/CompatWarning.jsm
@@ -1,13 +1,13 @@
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["CompatWarning"];
+var EXPORTED_SYMBOLS = ["CompatWarning"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 
 ChromeUtils.defineModuleGetter(this, "console",
                                "resource://gre/modules/Console.jsm");
 
--- a/toolkit/components/addoncompat/Prefetcher.jsm
+++ b/toolkit/components/addoncompat/Prefetcher.jsm
@@ -1,13 +1,13 @@
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["Prefetcher"];
+var EXPORTED_SYMBOLS = ["Prefetcher"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 // Rules are defined at the bottom of this file.
 var PrefetcherRules = {};
 
 /*
--- a/toolkit/components/addoncompat/RemoteAddonsChild.jsm
+++ b/toolkit/components/addoncompat/RemoteAddonsChild.jsm
@@ -1,13 +1,13 @@
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["RemoteAddonsChild"];
+var EXPORTED_SYMBOLS = ["RemoteAddonsChild"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "BrowserUtils",
                                "resource://gre/modules/BrowserUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Prefetcher",
                                "resource://gre/modules/Prefetcher.jsm");
--- a/toolkit/components/addoncompat/RemoteAddonsParent.jsm
+++ b/toolkit/components/addoncompat/RemoteAddonsParent.jsm
@@ -1,13 +1,13 @@
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["RemoteAddonsParent"];
+var EXPORTED_SYMBOLS = ["RemoteAddonsParent"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/RemoteWebProgress.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "NetUtil",
                                "resource://gre/modules/NetUtil.jsm");
 ChromeUtils.defineModuleGetter(this, "Prefetcher",
--- a/toolkit/components/asyncshutdown/AsyncShutdown.jsm
+++ b/toolkit/components/asyncshutdown/AsyncShutdown.jsm
@@ -335,24 +335,24 @@ function getOrigin(topFrame, filename = 
     return {
       filename: "<internal error: could not get origin>",
       lineNumber: -1,
       stack: "<internal error: could not get origin>",
     };
   }
 }
 
-this.EXPORTED_SYMBOLS = ["AsyncShutdown"];
+var EXPORTED_SYMBOLS = ["AsyncShutdown"];
 
 /**
  * {string} topic -> phase
  */
 var gPhases = new Map();
 
-this.AsyncShutdown = {
+var AsyncShutdown = {
   /**
    * Access function getPhase. For testing purposes only.
    */
   get _getPhase() {
     let accepted = Services.prefs.getBoolPref("toolkit.asyncshutdown.testing", false);
     if (accepted) {
       return getPhase;
     }
--- a/toolkit/components/cloudstorage/CloudStorage.jsm
+++ b/toolkit/components/cloudstorage/CloudStorage.jsm
@@ -8,17 +8,17 @@
  *
  * Takes cloud storage providers metadata as JSON input on Mac, Linux and Windows.
  *
  * Handles scan, prompt response save and exposes preferred storage provider.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["CloudStorage"];
+var EXPORTED_SYMBOLS = ["CloudStorage"];
 
 Cu.importGlobalProperties(["fetch"]);
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Downloads",
                                "resource://gre/modules/Downloads.jsm");
@@ -96,17 +96,17 @@ const CLOUD_PROVIDERS_URI = "resource://
  *   A local folder user may have selected for downloaded files to be
  *   saved. This folder is enabled when folderList equals 2.
  */
 
 /**
  * The external API exported by this module.
  */
 
-this.CloudStorage = {
+var CloudStorage = {
   /**
     * Init method to initialize providers metadata
     */
   async init() {
     let isInitialized = null;
     try {
       // Invoke internal method asynchronously to read and
       // parse providers metadata from JSON
--- a/toolkit/components/contentprefs/ContentPrefServiceChild.jsm
+++ b/toolkit/components/contentprefs/ContentPrefServiceChild.jsm
@@ -1,16 +1,16 @@
 /* vim: set ts=2 sw=2 sts=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ContentPrefServiceChild" ];
+var EXPORTED_SYMBOLS = [ "ContentPrefServiceChild" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/ContentPrefUtils.jsm");
 ChromeUtils.import("resource://gre/modules/ContentPrefStore.jsm");
 
 // We only need one bit of information out of the context.
 function contextArg(context) {
--- a/toolkit/components/contentprefs/ContentPrefServiceParent.jsm
+++ b/toolkit/components/contentprefs/ContentPrefServiceParent.jsm
@@ -1,16 +1,16 @@
 /* vim: set ts=2 sw=2 sts=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ContentPrefServiceParent" ];
+var EXPORTED_SYMBOLS = [ "ContentPrefServiceParent" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "_methodsCallableFromChild",
                                "resource://gre/modules/ContentPrefUtils.jsm");
 
 let loadContext = Cc["@mozilla.org/loadcontext;1"].
                     createInstance(Ci.nsILoadContext);
--- a/toolkit/components/contentprefs/ContentPrefUtils.jsm
+++ b/toolkit/components/contentprefs/ContentPrefUtils.jsm
@@ -1,16 +1,16 @@
 /* vim: set ts=2 sw=2 sts=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "ContentPref",
   "cbHandleResult",
   "cbHandleError",
   "cbHandleCompletion",
   "safeCallback",
   "_methodsCallableFromChild",
 ];
 
--- a/toolkit/components/contextualidentity/ContextualIdentityService.jsm
+++ b/toolkit/components/contextualidentity/ContextualIdentityService.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["ContextualIdentityService"];
+var EXPORTED_SYMBOLS = ["ContextualIdentityService"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const DEFAULT_TAB_COLOR = "#909090";
 const SAVE_DELAY_MS = 1500;
 const CONTEXTUAL_IDENTITY_ENABLED_PREF = "privacy.userContext.enabled";
 
@@ -484,9 +484,9 @@ function _ContextualIdentityService(path
     // This migration was needed for bug 1419591. See bug 1419591 to know more.
     data.version = 3;
 
     return data;
   },
 };
 
 let path = OS.Path.join(OS.Constants.Path.profileDir, "containers.json");
-this.ContextualIdentityService = new _ContextualIdentityService(path);
+var ContextualIdentityService = new _ContextualIdentityService(path);
--- a/toolkit/components/crashes/CrashManager.jsm
+++ b/toolkit/components/crashes/CrashManager.jsm
@@ -10,17 +10,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/Log.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/TelemetryController.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "CrashManager",
 ];
 
 /**
  * How long to wait after application startup before crash event files are
  * automatically aggregated.
  *
  * We defer aggregation for performance reasons, as we don't want too many
@@ -107,17 +107,17 @@ function parseAndRemoveField(obj, field)
  *
  *   storeDir (string)
  *     Directory we will use for our data store. This instance will write
  *     data files into the directory specified.
  *
  *   telemetryStoreSizeKey (string)
  *     Telemetry histogram to report store size under.
  */
-this.CrashManager = function(options) {
+var CrashManager = function(options) {
   for (let k of ["pendingDumpsDir", "submittedDumpsDir", "eventsDirs",
     "storeDir"]) {
     if (!(k in options)) {
       throw new Error("Required key not present in options: " + k);
     }
   }
 
   this._log = Log.repository.getLogger("Crashes.CrashManager");
--- a/toolkit/components/crashes/CrashManagerTest.jsm
+++ b/toolkit/components/crashes/CrashManagerTest.jsm
@@ -4,54 +4,54 @@
 
 /*
  * This file provides common and shared functionality to facilitate
  * testing of the Crashes component (CrashManager.jsm).
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "configureLogging",
   "getManager",
   "sleep",
   "TestingCrashManager",
 ];
 
 ChromeUtils.import("resource://gre/modules/CrashManager.jsm", this);
 ChromeUtils.import("resource://gre/modules/Log.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 ChromeUtils.import("resource://gre/modules/Timer.jsm", this);
 
 var loggingConfigured = false;
 
-this.configureLogging = function() {
+var configureLogging = function() {
   if (loggingConfigured) {
     return;
   }
 
   let log = Log.repository.getLogger("Crashes.CrashManager");
   log.level = Log.Level.All;
   let appender = new Log.DumpAppender();
   appender.level = Log.Level.All;
   log.addAppender(appender);
   loggingConfigured = true;
 };
 
-this.sleep = function(wait) {
+var sleep = function(wait) {
   return new Promise(resolve => {
 
     setTimeout(() => {
       resolve();
     }, wait);
 
   });
 };
 
-this.TestingCrashManager = function(options) {
+var TestingCrashManager = function(options) {
   CrashManager.call(this, options);
 };
 
 this.TestingCrashManager.prototype = {
   __proto__: CrashManager.prototype,
 
   createDummyDump(submitted = false, date = new Date(), hr = false) {
     let uuid = Cc["@mozilla.org/uuid-generator;1"]
@@ -136,17 +136,17 @@ this.TestingCrashManager.prototype = {
                                                                type,
                                                                date,
                                                                payload);
   },
 };
 
 var DUMMY_DIR_COUNT = 0;
 
-this.getManager = function() {
+var getManager = function() {
   return (async function() {
     const dirMode = OS.Constants.libc.S_IRWXU;
     let baseFile = OS.Constants.Path.profileDir;
 
     function makeDir(create = true) {
       return (async function() {
         let path = OS.Path.join(baseFile, "dummy-dir-" + DUMMY_DIR_COUNT++);
 
--- a/toolkit/components/crashmonitor/CrashMonitor.jsm
+++ b/toolkit/components/crashmonitor/CrashMonitor.jsm
@@ -26,17 +26,17 @@
  * that a received notification is lost if the program crashes right
  * after a checkpoint, but before crash monitor has been able to write
  * it to disk. Thus, while the presence of a notification in the
  * checkpoint file tells us that the corresponding stage was reached
  * during the last run, the absence of a notification after a crash
  * does not necessarily tell us that the checkpoint wasn't reached.
  */
 
-this.EXPORTED_SYMBOLS = [ "CrashMonitor" ];
+var EXPORTED_SYMBOLS = [ "CrashMonitor" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AsyncShutdown.jsm");
 
 const NOTIFICATIONS = [
   "final-ui-startup",
@@ -121,17 +121,17 @@ var CrashMonitorInternal = {
 
       return Object.freeze(notifications);
     })();
 
     return this.previousCheckpoints;
   }
 };
 
-this.CrashMonitor = {
+var CrashMonitor = {
 
   /**
    * Notifications received during previous session.
    *
    * Return object containing the set of notifications received last
    * session as keys with values set to |true|.
    *
    * @return {Promise} A promise resolving to previous checkpoints
--- a/toolkit/components/ctypes/ctypes.jsm
+++ b/toolkit/components/ctypes/ctypes.jsm
@@ -1,14 +1,14 @@
 /* -*-  indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "ctypes" ];
+var EXPORTED_SYMBOLS = [ "ctypes" ];
 
 /*
  * This is the js module for ctypes. Import it like so:
  *   Components.utils.import("resource://gre/modules/ctypes.jsm");
  *
  * This will create a 'ctypes' object, which provides an interface to describe
  * and instantiate C types and call C functions from a dynamic library.
  *
--- a/toolkit/components/extensions/Extension.jsm
+++ b/toolkit/components/extensions/Extension.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Extension", "ExtensionData", "Langpack"];
+var EXPORTED_SYMBOLS = ["Extension", "ExtensionData", "Langpack"];
 
 /* exported Extension, ExtensionData */
 /* globals Extension ExtensionData */
 
 /*
  * This file is the main entry point for extensions. When an extension
  * loads, its bootstrap.js file creates a Extension instance
  * and calls .startup() on it. It calls .shutdown() when the extension
--- a/toolkit/components/extensions/ExtensionChild.jsm
+++ b/toolkit/components/extensions/ExtensionChild.jsm
@@ -2,17 +2,17 @@
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
 /* exported ExtensionChild */
 
-this.EXPORTED_SYMBOLS = ["ExtensionChild"];
+var EXPORTED_SYMBOLS = ["ExtensionChild"];
 
 /*
  * This file handles addon logic that is independent of the chrome process.
  * When addons run out-of-process, this is the main entry point.
  * Its primary function is managing addon globals.
  *
  * Don't put contentscript logic here, use ExtensionContent.jsm instead.
  */
--- a/toolkit/components/extensions/ExtensionChildDevToolsUtils.jsm
+++ b/toolkit/components/extensions/ExtensionChildDevToolsUtils.jsm
@@ -6,17 +6,17 @@
 "use strict";
 
 /**
  * @fileOverview
  * This module contains utilities for interacting with DevTools
  * from the child process.
  */
 
-this.EXPORTED_SYMBOLS = ["ExtensionChildDevToolsUtils"];
+var EXPORTED_SYMBOLS = ["ExtensionChildDevToolsUtils"];
 
 ChromeUtils.import("resource://gre/modules/EventEmitter.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 // Create a variable to hold the cached ThemeChangeObserver which does not
 // get created until a devtools context has been created.
 let themeChangeObserver;
@@ -75,17 +75,17 @@ class ThemeChangeObserver extends EventE
     Services.cpmm.removeMessageListener("Extension:DevToolsThemeChanged", this);
     this.onDestroyed();
     this.onDestroyed = null;
     this.contexts.clear();
     this.contexts = null;
   }
 }
 
-this.ExtensionChildDevToolsUtils = {
+var ExtensionChildDevToolsUtils = {
   /**
    * Creates an cached instance of the ThemeChangeObserver class and
    * initializes it with the current themeName. This cached instance is
    * destroyed when all of the contexts added to it are closed.
    *
    * @param {string} themeName The name of the current devtools theme.
    * @param {DevToolsContextChild} context The newly created devtools page context.
    */
--- a/toolkit/components/extensions/ExtensionCommon.jsm
+++ b/toolkit/components/extensions/ExtensionCommon.jsm
@@ -8,17 +8,17 @@
 /**
  * This module contains utilities and base classes for logic which is
  * common between the parent and child process, and in particular
  * between ExtensionParent.jsm and ExtensionChild.jsm.
  */
 
 /* exported ExtensionCommon */
 
-this.EXPORTED_SYMBOLS = ["ExtensionCommon"];
+var EXPORTED_SYMBOLS = ["ExtensionCommon"];
 
 Cu.importGlobalProperties(["fetch"]);
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   ConsoleAPI: "resource://gre/modules/Console.jsm",
--- a/toolkit/components/extensions/ExtensionContent.jsm
+++ b/toolkit/components/extensions/ExtensionContent.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ExtensionContent"];
+var EXPORTED_SYMBOLS = ["ExtensionContent"];
 
 /* globals ExtensionContent */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   LanguageDetector: "resource:///modules/translation/LanguageDetector.jsm",
@@ -753,17 +753,17 @@ DocumentManager = {
     return [];
   },
 
   initExtensionContext(extension, window) {
     extension.getContext(window).injectAPI();
   },
 };
 
-this.ExtensionContent = {
+var ExtensionContent = {
   BrowserExtensionContent,
   Script,
 
   shutdownExtension(extension) {
     DocumentManager.shutdownExtension(extension);
   },
 
   // This helper is exported to be integrated in the devtools RDP actors,
--- a/toolkit/components/extensions/ExtensionPageChild.jsm
+++ b/toolkit/components/extensions/ExtensionPageChild.jsm
@@ -2,17 +2,17 @@
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
 /* exported ExtensionPageChild */
 
-this.EXPORTED_SYMBOLS = ["ExtensionPageChild"];
+var EXPORTED_SYMBOLS = ["ExtensionPageChild"];
 
 /**
  * This file handles privileged extension page logic that runs in the
  * child process.
  */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
--- a/toolkit/components/extensions/ExtensionParent.jsm
+++ b/toolkit/components/extensions/ExtensionParent.jsm
@@ -8,17 +8,17 @@
 /**
  * This module contains code for managing APIs that need to run in the
  * parent process, and handles the parent side of operations that need
  * to be proxied from ExtensionChild.jsm.
  */
 
 /* exported ExtensionParent */
 
-this.EXPORTED_SYMBOLS = ["ExtensionParent"];
+var EXPORTED_SYMBOLS = ["ExtensionParent"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   AppConstants: "resource://gre/modules/AppConstants.jsm",
   AsyncShutdown: "resource://gre/modules/AsyncShutdown.jsm",
   DeferredTask: "resource://gre/modules/DeferredTask.jsm",
--- a/toolkit/components/extensions/ExtensionPermissions.jsm
+++ b/toolkit/components/extensions/ExtensionPermissions.jsm
@@ -10,17 +10,17 @@ ChromeUtils.import("resource://gre/modul
 XPCOMUtils.defineLazyModuleGetters(this, {
   ExtensionParent: "resource://gre/modules/ExtensionParent.jsm",
   JSONFile: "resource://gre/modules/JSONFile.jsm",
   OS: "resource://gre/modules/osfile.jsm",
 });
 
 XPCOMUtils.defineLazyGetter(this, "StartupCache", () => ExtensionParent.StartupCache);
 
-this.EXPORTED_SYMBOLS = ["ExtensionPermissions"];
+var EXPORTED_SYMBOLS = ["ExtensionPermissions"];
 
 const FILE_NAME = "extension-preferences.json";
 
 let prefs;
 let _initPromise;
 
 async function _lazyInit() {
   let path = OS.Path.join(OS.Constants.Path.profileDir, FILE_NAME);
@@ -44,17 +44,17 @@ function lazyInit() {
   }
   return _initPromise;
 }
 
 function emptyPermissions() {
   return {permissions: [], origins: []};
 }
 
-this.ExtensionPermissions = {
+var ExtensionPermissions = {
   async _saveSoon(extension) {
     await lazyInit();
 
     prefs.data[extension.id] = await this._getCached(extension);
     return prefs.saveSoon();
   },
 
   async _get(extension) {
--- a/toolkit/components/extensions/ExtensionPreferencesManager.jsm
+++ b/toolkit/components/extensions/ExtensionPreferencesManager.jsm
@@ -15,17 +15,17 @@
  * the following properties:
  *
  * prefNames:   An array of strings, each of which is a preference on
  *              which the setting depends.
  * setCallback: A function that returns an object containing properties and
  *              values that correspond to the prefs to be set.
  */
 
-this.EXPORTED_SYMBOLS = ["ExtensionPreferencesManager"];
+var EXPORTED_SYMBOLS = ["ExtensionPreferencesManager"];
 
 const {Management} = ChromeUtils.import("resource://gre/modules/Extension.jsm", {});
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "ExtensionSettingsStore",
                                "resource://gre/modules/ExtensionSettingsStore.jsm");
--- a/toolkit/components/extensions/ExtensionSettingsStore.jsm
+++ b/toolkit/components/extensions/ExtensionSettingsStore.jsm
@@ -35,17 +35,17 @@
  *     key: {
  *       // ...
  *     }
  *   }
  * }
  *
  */
 
-this.EXPORTED_SYMBOLS = ["ExtensionSettingsStore"];
+var EXPORTED_SYMBOLS = ["ExtensionSettingsStore"];
 
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager",
                                "resource://gre/modules/AddonManager.jsm");
 ChromeUtils.defineModuleGetter(this, "JSONFile",
@@ -236,17 +236,17 @@ function alterSetting(id, type, key, act
     delete _store.data[type][key];
   }
 
   _store.saveSoon();
 
   return returnItem;
 }
 
-this.ExtensionSettingsStore = {
+var ExtensionSettingsStore = {
   /**
    * Loads the JSON file for the SettingsStore into memory.
    * The promise this returns must be resolved before asking the SettingsStore
    * to perform any other operations.
    *
    * @returns {Promise}
    *          A promise that resolves when the Store is ready to be accessed.
    */
--- a/toolkit/components/extensions/ExtensionStorage.jsm
+++ b/toolkit/components/extensions/ExtensionStorage.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ExtensionStorage"];
+var EXPORTED_SYMBOLS = ["ExtensionStorage"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "ExtensionUtils",
                                "resource://gre/modules/ExtensionUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "JSONFile",
                                "resource://gre/modules/JSONFile.jsm");
@@ -76,17 +76,17 @@ class SerializeableMap extends Map {
  */
 function serialize(value) {
   if (value && typeof value === "object" && !isStructuredCloneHolder(value)) {
     return new StructuredCloneHolder(value);
   }
   return value;
 }
 
-this.ExtensionStorage = {
+var ExtensionStorage = {
   // Map<extension-id, Promise<JSONFile>>
   jsonFilePromises: new Map(),
 
   listeners: new Map(),
 
   /**
    * Asynchronously reads the storage file for the given extension ID
    * and returns a Promise for its initialized JSONFile object.
--- a/toolkit/components/extensions/ExtensionStorageSync.jsm
+++ b/toolkit/components/extensions/ExtensionStorageSync.jsm
@@ -5,17 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 // TODO:
 // * find out how the Chrome implementation deals with conflicts
 
 /* exported extensionIdToCollectionId */
 
-this.EXPORTED_SYMBOLS = ["ExtensionStorageSync", "extensionStorageSync"];
+var EXPORTED_SYMBOLS = ["ExtensionStorageSync", "extensionStorageSync"];
 
 const global = this;
 
 Cu.importGlobalProperties(["atob", "btoa"]);
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 const KINTO_PROD_SERVER_URL = "https://webextensions.settings.services.mozilla.com/v1";
 const KINTO_DEFAULT_SERVER_URL = KINTO_PROD_SERVER_URL;
@@ -102,17 +102,17 @@ function throwIfNoFxA(fxAccounts, action
   if (!fxAccounts) {
     throw new Error(`${action} is impossible because FXAccounts is not available; are you on Android?`);
   }
 }
 
 // Global ExtensionStorageSync instance that extensions and Fx Sync use.
 // On Android, because there's no FXAccounts instance, any syncing
 // operations will fail.
-this.extensionStorageSync = null;
+var extensionStorageSync = null;
 
 /**
  * Utility function to enforce an order of fields when computing an HMAC.
  *
  * @param {KeyBundle} keyBundle  The key bundle to use to compute the HMAC
  * @param {string}    id         The record ID to use when computing the HMAC
  * @param {string}    IV         The IV to use when computing the HMAC
  * @param {string}    ciphertext The ciphertext over which to compute the HMAC
@@ -1231,9 +1231,9 @@ class ExtensionStorageSync {
     if (listeners) {
       for (let listener of listeners) {
         runSafeSyncWithoutClone(listener, changes);
       }
     }
   }
 }
 this.ExtensionStorageSync = ExtensionStorageSync;
-this.extensionStorageSync = new ExtensionStorageSync(_fxaService, Services.telemetry);
+extensionStorageSync = new ExtensionStorageSync(_fxaService, Services.telemetry);
--- a/toolkit/components/extensions/ExtensionTestCommon.jsm
+++ b/toolkit/components/extensions/ExtensionTestCommon.jsm
@@ -7,17 +7,17 @@
 
 /**
  * This module contains extension testing helper logic which is common
  * between all test suites.
  */
 
 /* exported ExtensionTestCommon, MockExtension */
 
-this.EXPORTED_SYMBOLS = ["ExtensionTestCommon", "MockExtension"];
+var EXPORTED_SYMBOLS = ["ExtensionTestCommon", "MockExtension"];
 
 Cu.importGlobalProperties(["TextEncoder"]);
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager",
                                "resource://gre/modules/AddonManager.jsm");
@@ -133,17 +133,17 @@ class MockExtension {
     return this._extensionPromise.then(extension => {
       return extension.broadcast("Extension:FlushJarCache", {path: this.file.path});
     }).then(() => {
       return OS.File.remove(this.file.path);
     });
   }
 }
 
-this.ExtensionTestCommon = class ExtensionTestCommon {
+var ExtensionTestCommon = class ExtensionTestCommon {
   /**
    * This code is designed to make it easy to test a WebExtension
    * without creating a bunch of files. Everything is contained in a
    * single JSON blob.
    *
    * Properties:
    *   "background": "<JS code>"
    *     A script to be loaded as the background script.
--- a/toolkit/components/extensions/ExtensionUtils.jsm
+++ b/toolkit/components/extensions/ExtensionUtils.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ExtensionUtils"];
+var EXPORTED_SYMBOLS = ["ExtensionUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "ConsoleAPI",
                                "resource://gre/modules/Console.jsm");
 
 Cu.importGlobalProperties(["crypto", "TextDecoder", "TextEncoder"]);
@@ -671,17 +671,17 @@ function checkLoadURL(url, principal, op
  * @returns {string} text
  *   The hashed string.
  */
 async function stringToCryptoHash(text, algo = "SHA-1") {
   const buffer = await crypto.subtle.digest(algo, utf8Encoder.encode(text));
   return utf8Decoder.decode(buffer);
 }
 
-this.ExtensionUtils = {
+var ExtensionUtils = {
   checkLoadURL,
   defineLazyGetter,
   flushJarCache,
   getConsole,
   getInnerWindowID,
   getMessageManager,
   getUniqueId,
   filterStack,
--- a/toolkit/components/extensions/ExtensionXPCShellUtils.jsm
+++ b/toolkit/components/extensions/ExtensionXPCShellUtils.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ExtensionTestUtils"];
+var EXPORTED_SYMBOLS = ["ExtensionTestUtils"];
 
 ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager",
                                "resource://gre/modules/AddonManager.jsm");
 ChromeUtils.defineModuleGetter(this, "AddonTestUtils",
                                "resource://testing-common/AddonTestUtils.jsm");
--- a/toolkit/components/extensions/FindContent.jsm
+++ b/toolkit/components/extensions/FindContent.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["FindContent"];
+var EXPORTED_SYMBOLS = ["FindContent"];
 
 /* exported FindContent */
 
 class FindContent {
   constructor(docShell) {
     const {Finder} = ChromeUtils.import("resource://gre/modules/Finder.jsm", {});
     this.finder = new Finder(docShell);
   }
--- a/toolkit/components/extensions/LegacyExtensionsUtils.jsm
+++ b/toolkit/components/extensions/LegacyExtensionsUtils.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LegacyExtensionsUtils"];
+var EXPORTED_SYMBOLS = ["LegacyExtensionsUtils"];
 
 /* exported LegacyExtensionsUtils, LegacyExtensionContext */
 
 /**
  * This file exports helpers for Legacy Extensions that want to embed a webextensions
  * and exchange messages with the embedded WebExtension.
  */
 
@@ -240,13 +240,13 @@ EmbeddedExtensionManager = {
       // Keep track of the embedded extension instance.
       this.embeddedExtensionsByAddonId.set(id, embeddedExtension);
     }
 
     return embeddedExtension;
   },
 };
 
-this.LegacyExtensionsUtils = {
+var LegacyExtensionsUtils = {
   getEmbeddedExtensionFor: (addon) => {
     return EmbeddedExtensionManager.getEmbeddedExtensionFor(addon);
   },
 };
--- a/toolkit/components/extensions/MessageChannel.jsm
+++ b/toolkit/components/extensions/MessageChannel.jsm
@@ -92,17 +92,17 @@
  *    MessageChannel.abortResponses({
  *      extensionID: this.extensionID,
  *      contextID: this.contextID,
  *    });
  *  },
  *
  */
 
-this.EXPORTED_SYMBOLS = ["MessageChannel"];
+var EXPORTED_SYMBOLS = ["MessageChannel"];
 
 /* globals MessageChannel */
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const {
--- a/toolkit/components/extensions/NativeManifests.jsm
+++ b/toolkit/components/extensions/NativeManifests.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["NativeManifests"];
+var EXPORTED_SYMBOLS = ["NativeManifests"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   AppConstants: "resource://gre/modules/AppConstants.jsm",
   OS: "resource://gre/modules/osfile.jsm",
   Schemas: "resource://gre/modules/Schemas.jsm",
   Services: "resource://gre/modules/Services.jsm",
@@ -25,17 +25,17 @@ const TYPES = {
   storage: DASHED ? "managed-storage" : "ManagedStorage",
   pkcs11: DASHED ? "pkcs11-modules" : "PKCS11Modules",
 };
 
 const NATIVE_MANIFEST_SCHEMA = "chrome://extensions/content/schemas/native_manifest.json";
 
 const REGPATH = "Software\\Mozilla";
 
-this.NativeManifests = {
+var NativeManifests = {
   _initializePromise: null,
   _lookup: null,
 
   init() {
     if (!this._initializePromise) {
       let platform = AppConstants.platform;
       if (platform == "win") {
         this._lookup = this._winLookup;
--- a/toolkit/components/extensions/NativeMessaging.jsm
+++ b/toolkit/components/extensions/NativeMessaging.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["NativeApp"];
+var EXPORTED_SYMBOLS = ["NativeApp"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const {EventEmitter} = ChromeUtils.import("resource://gre/modules/EventEmitter.jsm", {});
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   AppConstants: "resource://gre/modules/AppConstants.jsm",
   AsyncShutdown: "resource://gre/modules/AsyncShutdown.jsm",
@@ -40,17 +40,17 @@ const MAX_WRITE = 0xffffffff;
 
 // Preferences that can lower the message size limits above,
 // used for testing the limits.
 const PREF_MAX_READ = "webextensions.native-messaging.max-input-message-bytes";
 const PREF_MAX_WRITE = "webextensions.native-messaging.max-output-message-bytes";
 
 const global = this;
 
-this.NativeApp = class extends EventEmitter {
+var NativeApp = class extends EventEmitter {
   /**
    * @param {BaseContext} context The context that initiated the native app.
    * @param {string} application The identifier of the native app.
    */
   constructor(context, application) {
     super();
 
     this.context = context;
--- a/toolkit/components/extensions/ProxyScriptContext.jsm
+++ b/toolkit/components/extensions/ProxyScriptContext.jsm
@@ -1,16 +1,16 @@
 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set sts=2 sw=2 et tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ProxyScriptContext"];
+var EXPORTED_SYMBOLS = ["ProxyScriptContext"];
 
 /* exported ProxyScriptContext */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/ExtensionCommon.jsm");
 ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm");
 
--- a/toolkit/components/extensions/Schemas.jsm
+++ b/toolkit/components/extensions/Schemas.jsm
@@ -24,17 +24,17 @@ ChromeUtils.defineModuleGetter(this, "Ex
 ChromeUtils.defineModuleGetter(this, "NetUtil",
                                "resource://gre/modules/NetUtil.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "contentPolicyService",
                                    "@mozilla.org/addons/content-policy;1",
                                    "nsIAddonContentPolicy");
 
 XPCOMUtils.defineLazyGetter(this, "StartupCache", () => ExtensionParent.StartupCache);
 
-this.EXPORTED_SYMBOLS = ["SchemaRoot", "Schemas"];
+var EXPORTED_SYMBOLS = ["SchemaRoot", "Schemas"];
 
 const {DEBUG} = AppConstants;
 
 const isParentProcess = Services.appinfo.processType === Services.appinfo.PROCESS_TYPE_DEFAULT;
 
 function readJSON(url) {
   return new Promise((resolve, reject) => {
     NetUtil.asyncFetch({uri: url, loadUsingSystemPrincipal: true}, (inputStream, status) => {
--- a/toolkit/components/extensions/test/mochitest/webrequest_test.jsm
+++ b/toolkit/components/extensions/test/mochitest/webrequest_test.jsm
@@ -1,15 +1,15 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["webrequest_test"];
+var EXPORTED_SYMBOLS = ["webrequest_test"];
 
 Components.utils.importGlobalProperties(["fetch", "XMLHttpRequest"]);
 
-this.webrequest_test = {
+var webrequest_test = {
   testFetch(url) {
     return fetch(url);
   },
 
   testXHR(url) {
     return new Promise(resolve => {
       let xhr = new XMLHttpRequest();
       xhr.open("HEAD", url);
--- a/toolkit/components/jsdownloads/src/DownloadCore.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadCore.jsm
@@ -4,17 +4,17 @@
 
 /**
  * Main implementation of the Downloads API objects. Consumers should get
  * references to these objects through the "Downloads.jsm" module.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Download",
   "DownloadSource",
   "DownloadTarget",
   "DownloadError",
   "DownloadSaver",
   "DownloadCopySaver",
   "DownloadLegacySaver",
   "DownloadPDFSaver",
@@ -101,17 +101,17 @@ function deserializeUnknownProperties(aO
  */
 const kProgressUpdateIntervalMs = 400;
 
 /**
  * Represents a single download, with associated state and actions.  This object
  * is transient, though it can be included in a DownloadList so that it can be
  * managed by the user interface and persisted across sessions.
  */
-this.Download = function() {
+var Download = function() {
   this._deferSucceeded = PromiseUtils.defer();
 };
 
 this.Download.prototype = {
   /**
    * DownloadSource object associated with this download.
    */
   source: null,
@@ -1187,17 +1187,17 @@ Download.fromSerializable = function(aSe
     property != "saver");
 
   return download;
 };
 
 /**
  * Represents the source of a download, for example a document or an URI.
  */
-this.DownloadSource = function() {};
+var DownloadSource = function() {};
 
 this.DownloadSource.prototype = {
   /**
    * String containing the URI for the download source.
    */
   url: null,
 
   /**
@@ -1313,17 +1313,17 @@ this.DownloadSource.fromSerializable = f
 
   return source;
 };
 
 /**
  * Represents the target of a download, for example a file in the global
  * downloads directory, or a file in the system temporary directory.
  */
-this.DownloadTarget = function() {};
+var DownloadTarget = function() {};
 
 this.DownloadTarget.prototype = {
   /**
    * String containing the path of the target file.
    */
   path: null,
 
   /**
@@ -1452,17 +1452,17 @@ this.DownloadTarget.fromSerializable = f
  *                        download is a network failure or a local file failure,
  *                        based on a set of known values of the result code.
  *                        This is useful when the error is received by a
  *                        component that handles both aspects of the download.
  *          }
  *        The properties object may also contain any of the DownloadError's
  *        because properties, which will be set accordingly in the error object.
  */
-this.DownloadError = function(aProperties) {
+var DownloadError = function(aProperties) {
   const NS_ERROR_MODULE_BASE_OFFSET = 0x45;
   const NS_ERROR_MODULE_NETWORK = 6;
   const NS_ERROR_MODULE_FILES = 13;
 
   // Set the error name used by the Error object prototype first.
   this.name = "DownloadError";
   this.result = aProperties.result || Cr.NS_ERROR_FAILURE;
   if (aProperties.message) {
@@ -1627,17 +1627,17 @@ this.DownloadError.fromSerializable = fu
     property != "reputationCheckVerdict");
 
   return e;
 };
 
 /**
  * Template for an object that actually transfers the data for the download.
  */
-this.DownloadSaver = function() {};
+var DownloadSaver = function() {};
 
 this.DownloadSaver.prototype = {
   /**
    * Download object for raising notifications and reading properties.
    *
    * If the tryToKeepPartialData property of the download object is false, the
    * saver should never try to keep partially downloaded data if the download
    * fails.
@@ -1774,17 +1774,17 @@ this.DownloadSaver.fromSerializable = fu
       throw new Error("Unrecoginzed download saver type.");
   }
   return saver;
 };
 
 /**
  * Saver object that simply copies the entire source file to the target.
  */
-this.DownloadCopySaver = function() {};
+var DownloadCopySaver = function() {};
 
 this.DownloadCopySaver.prototype = {
   __proto__: DownloadSaver.prototype,
 
   /**
    * BackgroundFileSaver object currently handling the download.
    */
   _backgroundFileSaver: null,
@@ -2246,17 +2246,17 @@ this.DownloadCopySaver.fromSerializable 
   return saver;
 };
 
 /**
  * Saver object that integrates with the legacy nsITransfer interface.
  *
  * For more background on the process, see the DownloadLegacyTransfer object.
  */
-this.DownloadLegacySaver = function() {
+var DownloadLegacySaver = function() {
   this.deferExecuted = PromiseUtils.defer();
   this.deferCanceled = PromiseUtils.defer();
 };
 
 this.DownloadLegacySaver.prototype = {
   __proto__: DownloadSaver.prototype,
 
   /**
@@ -2602,17 +2602,17 @@ this.DownloadLegacySaver.fromSerializabl
  * object associated with the download.
  *
  * In order to prevent the download from saving a different document than the one
  * originally loaded in the window, any attempt to restart the download will fail.
  *
  * Since this DownloadSaver type requires a live document as a source, it cannot
  * be persisted across sessions, unless the download already succeeded.
  */
-this.DownloadPDFSaver = function() {
+var DownloadPDFSaver = function() {
 };
 
 this.DownloadPDFSaver.prototype = {
   __proto__: DownloadSaver.prototype,
 
   /**
    * An nsIWebBrowserPrint instance for printing this page.
    * This is null when saving has not started or has completed,
--- a/toolkit/components/jsdownloads/src/DownloadHistory.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadHistory.jsm
@@ -8,17 +8,17 @@
  *
  * This module works with objects that are compatible with Download, while using
  * the Places interfaces internally. Some of the Places objects may also be
  * exposed to allow the consumers to integrate with history view commands.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadHistory",
 ];
 
 ChromeUtils.import("resource://gre/modules/DownloadList.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Downloads",
@@ -42,17 +42,17 @@ const METADATA_STATE_CANCELED = 3;
 const METADATA_STATE_PAUSED = 4;
 const METADATA_STATE_BLOCKED_PARENTAL = 6;
 const METADATA_STATE_DIRTY = 8;
 
 /**
  * Provides methods to retrieve downloads from previous sessions and store
  * downloads for future sessions.
  */
-this.DownloadHistory = {
+var DownloadHistory = {
   /**
    * Retrieves the main DownloadHistoryList object which provides a unified view
    * on downloads from both previous browsing sessions and this session.
    *
    * @param type
    *        Determines which type of downloads from this session should be
    *        included in the list. This is Downloads.PUBLIC by default, but can
    *        also be Downloads.PRIVATE or Downloads.ALL.
@@ -403,17 +403,17 @@ DownloadSlot.prototype = {
  *
  * The list of downloads cannot be modified using the DownloadList methods.
  *
  * @param publicList
  *        Underlying DownloadList containing public downloads.
  * @param place
  *        Places query used to retrieve history downloads.
  */
-this.DownloadHistoryList = function(publicList, place) {
+var DownloadHistoryList = function(publicList, place) {
   DownloadList.call(this);
 
   // While "this._slots" contains all the data in order, the other properties
   // provide fast access for the most common operations.
   this._slots = [];
   this._slotsForUrl = new Map();
   this._slotForDownload = new WeakMap();
 
--- a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm
@@ -4,17 +4,17 @@
 
 /**
  * Provides functions to integrate with the host application, handling for
  * example the global prompts on shutdown.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadIntegration",
 ];
 
 ChromeUtils.import("resource://gre/modules/Integration.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AsyncShutdown",
                                "resource://gre/modules/AsyncShutdown.jsm");
@@ -124,17 +124,17 @@ const kVerdictMap = {
   [Ci.nsIApplicationReputationService.VERDICT_DANGEROUS_HOST]:
                 Downloads.Error.BLOCK_VERDICT_MALWARE,
 };
 
 /**
  * Provides functions to integrate with the host application, handling for
  * example the global prompts on shutdown.
  */
-this.DownloadIntegration = {
+var DownloadIntegration = {
   /**
    * Main DownloadStore object for loading and saving the list of persistent
    * downloads, or null if the download list was never requested and thus it
    * doesn't need to be persisted.
    */
   _store: null,
 
   /**
@@ -790,17 +790,17 @@ this.DownloadIntegration = {
   forceSave() {
     if (this._store) {
       return this._store.save();
     }
     return Promise.resolve();
   },
 };
 
-this.DownloadObserver = {
+var DownloadObserver = {
   /**
    * Flag to determine if the observers have been added previously.
    */
   observersAdded: false,
 
   /**
    * Timer used to delay restarting canceled downloads upon waking and returning
    * online.
@@ -994,17 +994,17 @@ this.DownloadObserver = {
  * reflected on the provided list of downloads.
  *
  * You do not need to keep a reference to this object in order to keep it alive,
  * because the history service already keeps a strong reference to it.
  *
  * @param aList
  *        DownloadList object linked to this observer.
  */
-this.DownloadHistoryObserver = function(aList) {
+var DownloadHistoryObserver = function(aList) {
   this._list = aList;
   PlacesUtils.history.addObserver(this);
 };
 
 this.DownloadHistoryObserver.prototype = {
   /**
    * DownloadList object linked to this observer.
    */
@@ -1040,17 +1040,17 @@ this.DownloadHistoryObserver.prototype =
  * You do not need to keep a reference to this object in order to keep it alive,
  * because the DownloadList object already keeps a strong reference to it.
  *
  * @param aList
  *        The DownloadList object on which the view should be registered.
  * @param aStore
  *        The DownloadStore object used for saving.
  */
-this.DownloadAutoSaveView = function(aList, aStore) {
+var DownloadAutoSaveView = function(aList, aStore) {
   this._list = aList;
   this._store = aStore;
   this._downloadsMap = new Map();
   this._writer = new DeferredTask(() => this._store.save(), kSaveDelayMs);
   AsyncShutdown.profileBeforeChange.addBlocker("DownloadAutoSaveView: writing data",
                                                () => this._writer.finalize());
 };
 
--- a/toolkit/components/jsdownloads/src/DownloadList.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadList.jsm
@@ -3,29 +3,29 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Provides collections of Download objects and aggregate views on them.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadList",
   "DownloadCombinedList",
   "DownloadSummary",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 /**
  * Represents a collection of Download objects that can be viewed and managed by
  * the user interface, and persisted across sessions.
  */
-this.DownloadList = function() {
+var DownloadList = function() {
   this._downloads = [];
   this._views = new Set();
 };
 
 this.DownloadList.prototype = {
   /**
    * Array of Download objects currently in the list.
    */
@@ -238,17 +238,17 @@ this.DownloadList.prototype = {
  * underlying lists, based on their "source.isPrivate" property.  Views on this
  * list will receive notifications for both public and private downloads.
  *
  * @param aPublicList
  *        Underlying DownloadList containing public downloads.
  * @param aPrivateList
  *        Underlying DownloadList containing private downloads.
  */
-this.DownloadCombinedList = function(aPublicList, aPrivateList) {
+var DownloadCombinedList = function(aPublicList, aPrivateList) {
   DownloadList.call(this);
   this._publicList = aPublicList;
   this._privateList = aPrivateList;
   aPublicList.addView(this).catch(Cu.reportError);
   aPrivateList.addView(this).catch(Cu.reportError);
 };
 
 this.DownloadCombinedList.prototype = {
@@ -329,17 +329,17 @@ this.DownloadCombinedList.prototype = {
     }
     this._notifyAllViews("onDownloadRemoved", aDownload);
   },
 };
 
 /**
  * Provides an aggregated view on the contents of a DownloadList.
  */
-this.DownloadSummary = function() {
+var DownloadSummary = function() {
   this._downloads = [];
   this._views = new Set();
 };
 
 this.DownloadSummary.prototype = {
   /**
    * Array of Download objects that are currently part of the summary.
    */
--- a/toolkit/components/jsdownloads/src/DownloadPaths.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadPaths.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Provides methods for giving names and paths to files being downloaded.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadPaths",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AppConstants",
                                "resource://gre/modules/AppConstants.jsm");
 
@@ -32,17 +32,17 @@ XPCOMUtils.defineLazyGetter(this, "gConv
     case "macosx":
       return /[\x00-\x1f\x7f-\x9f:]+/g;
     default:
       return /[\x00-\x1f\x7f-\x9f]+/g;
   }
   /* eslint-enable no-control-regex */
 });
 
-this.DownloadPaths = {
+var DownloadPaths = {
   /**
    * Sanitizes an arbitrary string for use as the local file name of a download.
    * The input is often a document title or a manually edited name. The output
    * can be an empty string if the input does not include any valid character.
    *
    * The length of the resulting string is not limited, because restrictions
    * apply to the full path name after the target folder has been added.
    *
--- a/toolkit/components/jsdownloads/src/DownloadStore.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadStore.jsm
@@ -23,17 +23,17 @@
  *       "target": "/home/user/Downloads/download-2.txt"
  *     }
  *   ]
  * }
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadStore",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Downloads",
                                "resource://gre/modules/Downloads.jsm");
 ChromeUtils.defineModuleGetter(this, "OS",
@@ -51,17 +51,17 @@ XPCOMUtils.defineLazyGetter(this, "gText
  * Handles serialization of Download objects and persistence into a file, so
  * that the state of downloads can be restored across sessions.
  *
  * @param aList
  *        DownloadList object to be populated or serialized.
  * @param aPath
  *        String containing the file path where data should be saved.
  */
-this.DownloadStore = function(aList, aPath) {
+var DownloadStore = function(aList, aPath) {
   this.list = aList;
   this.path = aPath;
 };
 
 this.DownloadStore.prototype = {
   /**
    * DownloadList object to be populated or serialized.
    */
--- a/toolkit/components/jsdownloads/src/DownloadUIHelper.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadUIHelper.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Provides functions to handle status and messages in the user interface.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadUIHelper",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 ChromeUtils.defineModuleGetter(this, "OS",
                                "resource://gre/modules/osfile.jsm");
@@ -30,17 +30,17 @@ const kStringsRequiringFormatting = {
   quitCancelDownloadsAlertMsgMacMultiple: true,
   offlineCancelDownloadsAlertMsgMultiple: true,
   leavePrivateBrowsingWindowsCancelDownloadsAlertMsgMultiple2: true
 };
 
 /**
  * Provides functions to handle status and messages in the user interface.
  */
-this.DownloadUIHelper = {
+var DownloadUIHelper = {
   /**
    * Returns an object that can be used to display prompts related to downloads.
    *
    * The prompts may be either anchored to a specified window, or anchored to
    * the most recently active window, for example if the prompt is displayed in
    * response to global notifications that are not associated with any window.
    *
    * @param aParent
@@ -83,17 +83,17 @@ XPCOMUtils.defineLazyGetter(DownloadUIHe
 
 /**
  * Allows displaying prompts related to downloads.
  *
  * @param aParent
  *        The nsIDOMWindow to which prompts should be attached, or null to
  *        attach prompts to the most recently active window.
  */
-this.DownloadPrompter = function(aParent) {
+var DownloadPrompter = function(aParent) {
   this._prompter = Services.ww.getNewPrompter(aParent);
 };
 
 this.DownloadPrompter.prototype = {
   /**
    * Constants with the different type of prompts.
    */
   ON_QUIT: "prompt-on-quit",
--- a/toolkit/components/jsdownloads/src/Downloads.jsm
+++ b/toolkit/components/jsdownloads/src/Downloads.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Main entry point to get references to all the back-end objects.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Downloads",
 ];
 
 ChromeUtils.import("resource://gre/modules/Integration.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/DownloadCore.jsm");
 
 ChromeUtils.defineModuleGetter(this, "DownloadCombinedList",
@@ -28,17 +28,17 @@ ChromeUtils.defineModuleGetter(this, "Do
 /* global DownloadIntegration */
 Integration.downloads.defineModuleGetter(this, "DownloadIntegration",
             "resource://gre/modules/DownloadIntegration.jsm");
 
 /**
  * This object is exposed directly to the consumers of this JavaScript module,
  * and provides the only entry point to get references to back-end objects.
  */
-this.Downloads = {
+var Downloads = {
   /**
    * Work on downloads that were not started from a private browsing window.
    */
   get PUBLIC() {
     return "{Downloads.PUBLIC}";
   },
   /**
    * Work on downloads that were started from a private browsing window.
--- a/toolkit/components/microformats/microformat-shiv.js
+++ b/toolkit/components/microformats/microformat-shiv.js
@@ -4515,9 +4515,9 @@ var Microformats; // jshint ignore:line
     return External;
 
 
 }));
 try {
     // mozilla jsm support
     Components.utils.importGlobalProperties(["URL"]);
 } catch (e) {}
-this.EXPORTED_SYMBOLS = ["Microformats"];
+var EXPORTED_SYMBOLS = ["Microformats"];
--- a/toolkit/components/narrate/NarrateControls.jsm
+++ b/toolkit/components/narrate/NarrateControls.jsm
@@ -5,17 +5,17 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/narrate/VoiceSelect.jsm");
 ChromeUtils.import("resource://gre/modules/narrate/Narrator.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AsyncPrefs.jsm");
 ChromeUtils.import("resource://gre/modules/TelemetryStopwatch.jsm");
 
-this.EXPORTED_SYMBOLS = ["NarrateControls"];
+var EXPORTED_SYMBOLS = ["NarrateControls"];
 
 var gStrings = Services.strings.createBundle("chrome://global/locale/narrate.properties");
 
 function NarrateControls(mm, win, languagePromise) {
   this._mm = mm;
   this._winRef = Cu.getWeakReference(win);
   this._languagePromise = languagePromise;
 
--- a/toolkit/components/narrate/Narrator.jsm
+++ b/toolkit/components/narrate/Narrator.jsm
@@ -4,17 +4,17 @@
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 
-this.EXPORTED_SYMBOLS = [ "Narrator" ];
+var EXPORTED_SYMBOLS = [ "Narrator" ];
 
 // Maximum time into paragraph when pressing "skip previous" will go
 // to previous paragraph and not the start of current one.
 const PREV_THRESHOLD = 2000;
 // All text-related style rules that we should copy over to the highlight node.
 const kTextStylesRules = ["font-family", "font-kerning", "font-size",
   "font-size-adjust", "font-stretch", "font-variant", "font-weight",
   "line-height", "letter-spacing", "text-orientation",
--- a/toolkit/components/narrate/VoiceSelect.jsm
+++ b/toolkit/components/narrate/VoiceSelect.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["VoiceSelect"];
+var EXPORTED_SYMBOLS = ["VoiceSelect"];
 
 function VoiceSelect(win, label) {
   this._winRef = Cu.getWeakReference(win);
 
   let element = win.document.createElement("div");
   element.classList.add("voiceselect");
   // eslint-disable-next-line no-unsanitized/property
   element.innerHTML =
--- a/toolkit/components/narrate/test/NarrateTestUtils.jsm
+++ b/toolkit/components/narrate/test/NarrateTestUtils.jsm
@@ -3,19 +3,19 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Preferences.jsm");
 ChromeUtils.import("resource://testing-common/ContentTaskUtils.jsm");
 
-this.EXPORTED_SYMBOLS = [ "NarrateTestUtils" ];
+var EXPORTED_SYMBOLS = [ "NarrateTestUtils" ];
 
-this.NarrateTestUtils = {
+var NarrateTestUtils = {
   TOGGLE: ".narrate-toggle",
   POPUP: ".narrate-dropdown .dropdown-popup",
   VOICE_SELECT: ".narrate-voices .select-toggle",
   VOICE_OPTIONS: ".narrate-voices .options",
   VOICE_SELECTED: ".narrate-voices .options .option.selected",
   VOICE_SELECT_LABEL: ".narrate-voices .select-toggle .current-voice",
   RATE: ".narrate-rate-input",
   START: ".narrate-dropdown:not(.speaking) .narrate-start-stop",
--- a/toolkit/components/osfile/modules/osfile_async_front.jsm
+++ b/toolkit/components/osfile/modules/osfile_async_front.jsm
@@ -14,17 +14,17 @@
  * with type |A| and some value |value| or reject with type |B| and some
  * reason |reason|
  * @resolves {A} value
  * @rejects {B} reason
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["OS"];
+var EXPORTED_SYMBOLS = ["OS"];
 
 var SharedAll = {};
 ChromeUtils.import("resource://gre/modules/osfile/osfile_shared_allthreads.jsm", SharedAll);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/Timer.jsm", this);
 
 
 // Boilerplate, to simplify the transition to require()
@@ -1393,17 +1393,17 @@ File.resetWorker = function() {
 File.POS_START = SysAll.POS_START;
 File.POS_CURRENT = SysAll.POS_CURRENT;
 File.POS_END = SysAll.POS_END;
 
 // Exports
 File.Error = OSError;
 File.DirectoryIterator = DirectoryIterator;
 
-this.OS = {};
+var OS = {};
 this.OS.File = File;
 this.OS.Constants = SharedAll.Constants;
 this.OS.Shared = {
   LOG: SharedAll.LOG,
   Type: SysAll.Type,
   get DEBUG() {
     return SharedAll.Config.DEBUG;
   },
--- a/toolkit/components/osfile/modules/osfile_native.jsm
+++ b/toolkit/components/osfile/modules/osfile_native.jsm
@@ -3,17 +3,17 @@
  * You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * Native (xpcom) implementation of key OS.File functions
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["read"];
+var EXPORTED_SYMBOLS = ["read"];
 
 var SharedAll = ChromeUtils.import("resource://gre/modules/osfile/osfile_shared_allthreads.jsm", {});
 
 var SysAll = {};
 if (SharedAll.Constants.Win) {
   ChromeUtils.import("resource://gre/modules/osfile/osfile_win_allthreads.jsm", SysAll);
 } else if (SharedAll.Constants.libc) {
   ChromeUtils.import("resource://gre/modules/osfile/osfile_unix_allthreads.jsm", SysAll);
@@ -30,17 +30,17 @@ XPCOMUtils.defineLazyServiceGetter(this,
   "@mozilla.org/toolkit/osfile/native-internals;1",
   "nsINativeOSFileInternalsService");
 
 /**
  * Native implementation of OS.File.read
  *
  * This implementation does not handle option |compression|.
  */
-this.read = function(path, options = {}) {
+var read = function(path, options = {}) {
   // Sanity check on types of options
   if ("encoding" in options && typeof options.encoding != "string") {
     return Promise.reject(new TypeError("Invalid type for option encoding"));
   }
   if ("compression" in options && typeof options.compression != "string") {
     return Promise.reject(new TypeError("Invalid type for option compression"));
   }
   if ("bytes" in options && typeof options.bytes != "number") {
@@ -66,17 +66,17 @@ this.read = function(path, options = {})
   });
 };
 
 /**
  * Native implementation of OS.File.writeAtomic.
  * This should not be called when |buffer| is a view with some non-zero byte offset.
  * Does not handle option |compression|.
  */
-this.writeAtomic = function(path, buffer, options = {}) {
+var writeAtomic = function(path, buffer, options = {}) {
   // Sanity check on types of options - we check only the encoding, since
   // the others are checked inside Internals.writeAtomic.
   if ("encoding" in options && typeof options.encoding !== "string") {
     return Promise.reject(new TypeError("Invalid type for option encoding"));
   }
 
   if (typeof buffer == "string") {
     // Normalize buffer to a C buffer by encoding it
--- a/toolkit/components/passwordmgr/InsecurePasswordUtils.jsm
+++ b/toolkit/components/passwordmgr/InsecurePasswordUtils.jsm
@@ -1,16 +1,16 @@
 /* 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/. */
 
 /* ownerGlobal doesn't exist in content privileged windows. */
 /* eslint-disable mozilla/use-ownerGlobal */
 
-this.EXPORTED_SYMBOLS = [ "InsecurePasswordUtils" ];
+var EXPORTED_SYMBOLS = [ "InsecurePasswordUtils" ];
 
 const STRINGS_URI = "chrome://global/locale/security/security.properties";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "gContentSecurityManager",
                                    "@mozilla.org/contentsecuritymanager;1",
@@ -24,17 +24,17 @@ ChromeUtils.defineModuleGetter(this, "Lo
 XPCOMUtils.defineLazyGetter(this, "log", () => {
   return LoginHelper.createLogger("InsecurePasswordUtils");
 });
 
 /*
  * A module that provides utility functions for form security.
  *
  */
-this.InsecurePasswordUtils = {
+var InsecurePasswordUtils = {
   _formRootsWarned: new WeakMap(),
 
   /**
    * Gets the ID of the inner window of this DOM window.
    *
    * @param nsIDOMWindow window
    * @return integer
    *         Inner ID for the given window.
--- a/toolkit/components/passwordmgr/LoginHelper.jsm
+++ b/toolkit/components/passwordmgr/LoginHelper.jsm
@@ -7,31 +7,31 @@
  *
  * This JavaScript module exists in order to share code between the different
  * XPCOM components that constitute the Login Manager, including implementations
  * of nsILoginManager and nsILoginManagerStorage.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "LoginHelper",
 ];
 
 // Globals
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 // LoginHelper
 
 /**
  * Contains functions shared by different Login Manager components.
  */
-this.LoginHelper = {
+var LoginHelper = {
   /**
    * Warning: these only update if a logger was created.
    */
   debug: Services.prefs.getBoolPref("signon.debug"),
   formlessCaptureEnabled: Services.prefs.getBoolPref("signon.formlessCapture.enabled"),
   schemeUpgrades: Services.prefs.getBoolPref("signon.schemeUpgrades"),
   insecureAutofill: Services.prefs.getBoolPref("signon.autofillForms.http"),
   showInsecureFieldWarning: Services.prefs.getBoolPref("security.insecure_field_warning.contextual.enabled"),
--- a/toolkit/components/passwordmgr/LoginImport.jsm
+++ b/toolkit/components/passwordmgr/LoginImport.jsm
@@ -6,17 +6,17 @@
 
 /**
  * Provides an object that has a method to import login-related data from the
  * previous SQLite storage format.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "LoginImport",
 ];
 
 // Globals
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "OS",
@@ -32,17 +32,17 @@ ChromeUtils.defineModuleGetter(this, "Ne
  * Provides an object that has a method to import login-related data from the
  * previous SQLite storage format.
  *
  * @param aStore
  *        LoginStore object where imported data will be added.
  * @param aPath
  *        String containing the file path of the SQLite login database.
  */
-this.LoginImport = function(aStore, aPath) {
+var LoginImport = function(aStore, aPath) {
   this.store = aStore;
   this.path = aPath;
 };
 
 this.LoginImport.prototype = {
   /**
    * LoginStore object where imported data will be added.
    */
--- a/toolkit/components/passwordmgr/LoginManagerContent.jsm
+++ b/toolkit/components/passwordmgr/LoginManagerContent.jsm
@@ -1,17 +1,17 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "LoginManagerContent",
-                          "LoginFormFactory",
-                          "UserAutoCompleteResult" ];
+var EXPORTED_SYMBOLS = [ "LoginManagerContent",
+                         "LoginFormFactory",
+                         "UserAutoCompleteResult" ];
 
 const PASSWORD_INPUT_ADDED_COALESCING_THRESHOLD_MS = 1;
 const AUTOCOMPLETE_AFTER_RIGHT_CLICK_THRESHOLD_MS = 400;
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
--- a/toolkit/components/passwordmgr/LoginManagerContextMenu.jsm
+++ b/toolkit/components/passwordmgr/LoginManagerContextMenu.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LoginManagerContextMenu"];
+var EXPORTED_SYMBOLS = ["LoginManagerContextMenu"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "LoginHelper",
                                "resource://gre/modules/LoginHelper.jsm");
 ChromeUtils.defineModuleGetter(this, "LoginManagerParent",
                                "resource://gre/modules/LoginManagerParent.jsm");
--- a/toolkit/components/passwordmgr/LoginManagerParent.jsm
+++ b/toolkit/components/passwordmgr/LoginManagerParent.jsm
@@ -15,17 +15,17 @@ ChromeUtils.defineModuleGetter(this, "De
 ChromeUtils.defineModuleGetter(this, "LoginHelper",
                                "resource://gre/modules/LoginHelper.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "log", () => {
   let logger = LoginHelper.createLogger("LoginManagerParent");
   return logger.log.bind(logger);
 });
 
-this.EXPORTED_SYMBOLS = [ "LoginManagerParent" ];
+var EXPORTED_SYMBOLS = [ "LoginManagerParent" ];
 
 var LoginManagerParent = {
   /**
    * Reference to the default LoginRecipesParent (instead of the initialization promise) for
    * synchronous access. This is a temporary hack and new consumers should yield on
    * recipeParentPromise instead.
    *
    * @type LoginRecipesParent
--- a/toolkit/components/passwordmgr/LoginRecipes.jsm
+++ b/toolkit/components/passwordmgr/LoginRecipes.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LoginRecipesContent", "LoginRecipesParent"];
+var EXPORTED_SYMBOLS = ["LoginRecipesContent", "LoginRecipesParent"];
 
 const REQUIRED_KEYS = ["hosts"];
 const OPTIONAL_KEYS = [
   "description",
   "notPasswordSelector",
   "notUsernameSelector",
   "passwordSelector",
   "pathRegex",
--- a/toolkit/components/passwordmgr/LoginStore.jsm
+++ b/toolkit/components/passwordmgr/LoginStore.jsm
@@ -37,17 +37,17 @@
  *   ],
  *   "nextId": 10,
  *   "version": 1
  * }
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "LoginStore",
 ];
 
 // Globals
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
--- a/toolkit/components/passwordmgr/OSCrypto.jsm
+++ b/toolkit/components/passwordmgr/OSCrypto.jsm
@@ -6,17 +6,17 @@
  * Common front for various implementations of OSCrypto
  */
 
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.EXPORTED_SYMBOLS = ["OSCrypto"];
+var EXPORTED_SYMBOLS = ["OSCrypto"];
 
 var OSCrypto = {};
 
 if (AppConstants.platform == "win") {
   Services.scriptloader.loadSubScript("resource://gre/modules/OSCrypto_win.js", this);
 } else {
   throw new Error("OSCrypto.jsm isn't supported on this platform");
 }
--- a/toolkit/components/passwordmgr/test/LoginTestUtils.jsm
+++ b/toolkit/components/passwordmgr/test/LoginTestUtils.jsm
@@ -2,31 +2,31 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /*
  * Shared functions generally available for testing login components.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "LoginTestUtils",
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.import("resource://testing-common/Assert.jsm");
 ChromeUtils.import("resource://testing-common/TestUtils.jsm");
 
 const LoginInfo =
       Components.Constructor("@mozilla.org/login-manager/loginInfo;1",
                              "nsILoginInfo", "init");
 
-this.LoginTestUtils = {
+var LoginTestUtils = {
   /**
    * Forces the storage module to save all data, and the Login Manager service
    * to replace the storage module with a newly initialized instance.
    */
   async reloadData() {
     Services.obs.notifyObservers(null, "passwordmgr-storage-replace");
     await TestUtils.topicObserved("passwordmgr-storage-replace-complete");
   },
--- a/toolkit/components/payments/test/PaymentTestUtils.jsm
+++ b/toolkit/components/payments/test/PaymentTestUtils.jsm
@@ -1,13 +1,13 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["PaymentTestUtils"];
+var EXPORTED_SYMBOLS = ["PaymentTestUtils"];
 
-this.PaymentTestUtils = {
+var PaymentTestUtils = {
   /**
    * Common content tasks functions to be used with ContentTask.spawn.
    */
   ContentTasks: {
     /* eslint-env mozilla/frame-script */
     /**
      * Add a completion handler to the existing `showPromise` to call .complete().
      * @returns {Object} representing the PaymentResponse
--- a/toolkit/components/perf/PerfMeasurement.jsm
+++ b/toolkit/components/perf/PerfMeasurement.jsm
@@ -1,14 +1,14 @@
 /* -*-  indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "PerfMeasurement" ];
+var EXPORTED_SYMBOLS = [ "PerfMeasurement" ];
 
 /*
  * This is the js module for jsperf. Import it like so:
  *   Components.utils.import("resource://gre/modules/PerfMeasurement.jsm");
  *
  * This will create a 'PerfMeasurement' class.  Instances of this class can
  * be used to benchmark browser operations.
  *
--- a/toolkit/components/perfmonitoring/PerformanceStats.jsm
+++ b/toolkit/components/perfmonitoring/PerformanceStats.jsm
@@ -1,16 +1,16 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PerformanceStats"];
+var EXPORTED_SYMBOLS = ["PerformanceStats"];
 
 /**
  * API for querying and examining performance data.
  *
  * This API exposes data from several probes implemented by the JavaScript VM.
  * See `PerformanceStats.getMonitor()` for information on how to monitor data
  * from one or more probes and `PerformanceData` for the information obtained
  * from the probes.
@@ -561,17 +561,17 @@ PerformanceMonitor.makeId = function() {
 
 // Once a `PerformanceMonitor` has been garbage-collected,
 // release the probes unless `dispose()` has already been called.
 Services.obs.addObserver(function(subject, topic, value) {
   PerformanceMonitor.dispose(value);
 }, FINALIZATION_TOPIC);
 
 // Public API
-this.PerformanceStats = {
+var PerformanceStats = {
   /**
    * Create a monitor for observing a set of performance probes.
    */
   getMonitor(probes) {
     return PerformanceMonitor.make(probes);
   }
 };
 
--- a/toolkit/components/perfmonitoring/PerformanceWatcher.jsm
+++ b/toolkit/components/perfmonitoring/PerformanceWatcher.jsm
@@ -35,17 +35,17 @@
  * window in the current process has exceeded the jank threshold.
  *
  * The PerformanceWatcher maintains low-level performance observers in each
  * process and forwards alerts to the main process. Internal observers collate
  * low-level main process alerts and children process alerts and notify clients
  * of this API.
  */
 
-this.EXPORTED_SYMBOLS = ["PerformanceWatcher"];
+var EXPORTED_SYMBOLS = ["PerformanceWatcher"];
 
 let { PerformanceStats, performanceStatsService } = ChromeUtils.import("resource://gre/modules/PerformanceStats.jsm", {});
 let { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm", {});
 
 // `true` if the code is executed in content, `false` otherwise
 let isContent = Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT;
 
 if (!isContent) {
@@ -281,17 +281,17 @@ BufferedObserver.prototype.observe = fun
       // and a new dispatcher.
       this._isDispatching = false;
 
       this._listener(buffer);
     });
   }
 };
 
-this.PerformanceWatcher = {
+var PerformanceWatcher = {
   /**
    * Add a listener informed whenever we receive a slow performance alert
    * in the application.
    *
    * @param {object} target An object with one of the following fields:
    *  - {number} windowId Either 0 to observe all windows or an outer window ID
    *      to observe a single tab.
    *  - {xul:browser} tab To observe a single tab.
--- a/toolkit/components/places/BookmarkHTMLUtils.jsm
+++ b/toolkit/components/places/BookmarkHTMLUtils.jsm
@@ -51,17 +51,17 @@
  * to 0, then we know a frame is complete and to pop back to the previous
  * frame.
  *
  * Note that a lot of things happen when tags are CLOSED because we need to
  * get the text from the content of the tag. For example, link and heading tags
  * both require the content (= title) before actually creating it.
  */
 
-this.EXPORTED_SYMBOLS = [ "BookmarkHTMLUtils" ];
+var EXPORTED_SYMBOLS = [ "BookmarkHTMLUtils" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
 ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm");
 
@@ -115,17 +115,17 @@ function escapeUrl(aText) {
   return (aText || "").replace(/"/g, "%22");
 }
 
 function notifyObservers(aTopic, aInitialImport) {
   Services.obs.notifyObservers(null, aTopic, aInitialImport ? "html-initial"
                                                             : "html");
 }
 
-this.BookmarkHTMLUtils = Object.freeze({
+var BookmarkHTMLUtils = Object.freeze({
   /**
    * Loads the current bookmarks hierarchy from a "bookmarks.html" file.
    *
    * @param aSpec
    *        String containing the "file:" URI for the existing "bookmarks.html"
    *        file to be loaded.
    * @param aInitialImport
    *        Whether this is the initial import executed on a new profile.
--- a/toolkit/components/places/BookmarkJSONUtils.jsm
+++ b/toolkit/components/places/BookmarkJSONUtils.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "BookmarkJSONUtils" ];
+var EXPORTED_SYMBOLS = [ "BookmarkJSONUtils" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "NetUtil",
   "resource://gre/modules/NetUtil.jsm");
@@ -30,17 +30,17 @@ function generateHash(aString) {
   let stringStream = Cc["@mozilla.org/io/string-input-stream;1"]
                        .createInstance(Ci.nsIStringInputStream);
   stringStream.data = aString;
   cryptoHash.updateFromStream(stringStream, -1);
   // base64 allows the '/' char, but we can't use it for filenames.
   return cryptoHash.finish(true).replace(/\//g, "-");
 }
 
-this.BookmarkJSONUtils = Object.freeze({
+var BookmarkJSONUtils = Object.freeze({
   /**
    * Import bookmarks from a url.
    *
    * @param aSpec
    *        url of the bookmark data.
    * @param aReplace
    *        Boolean if true, replace existing bookmarks, else merge.
    *
--- a/toolkit/components/places/Bookmarks.jsm
+++ b/toolkit/components/places/Bookmarks.jsm
@@ -52,17 +52,17 @@
  * Note that bookmark addition or order changes won't notify onItemMoved for
  * items that have their indexes changed.
  * Similarly, lastModified changes not done explicitly (like changing another
  * property) won't fire an onItemChanged notification for the lastModified
  * property.
  * @see nsINavBookmarkObserver
  */
 
-this.EXPORTED_SYMBOLS = [ "Bookmarks" ];
+var EXPORTED_SYMBOLS = [ "Bookmarks" ];
 
 Cu.importGlobalProperties(["URL"]);
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "NetUtil",
                                "resource://gre/modules/NetUtil.jsm");
--- a/toolkit/components/places/ExtensionSearchHandler.jsm
+++ b/toolkit/components/places/ExtensionSearchHandler.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "ExtensionSearchHandler" ];
+var EXPORTED_SYMBOLS = [ "ExtensionSearchHandler" ];
 
 // Used to keep track of all of the registered keywords, where each keyword is
 // mapped to a KeywordInfo instance.
 let gKeywordMap = new Map();
 
 // Used to keep track of the active input session.
 let gActiveInputSession = null;
 
--- a/toolkit/components/places/History.jsm
+++ b/toolkit/components/places/History.jsm
@@ -61,17 +61,17 @@
  *
  *
  * Each successful operation notifies through the nsINavHistoryObserver
  * interface. To listen to such notifications you must register using
  * nsINavHistoryService `addObserver` and `removeObserver` methods.
  * @see nsINavHistoryObserver
  */
 
-this.EXPORTED_SYMBOLS = [ "History" ];
+var EXPORTED_SYMBOLS = [ "History" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "AsyncShutdown",
                                "resource://gre/modules/AsyncShutdown.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "NetUtil",
                                "resource://gre/modules/NetUtil.jsm");
@@ -106,17 +106,17 @@ const REMOVE_PAGES_CHUNKLEN = 300;
 function notify(observers, notification, args = []) {
   for (let observer of observers) {
     try {
       observer[notification](...args);
     } catch (ex) {}
   }
 }
 
-this.History = Object.freeze({
+var History = Object.freeze({
   /**
    * Fetch the available information for one page.
    *
    * @param guidOrURI: (string) or (URL, nsIURI or href)
    *      Either the full URI of the page or the GUID of the page.
    * @param [optional] options (object)
    *      An optional object whose properties describe options:
    *        - `includeVisits` (boolean) set this to true if `visits` in the
--- a/toolkit/components/places/PlacesBackups.jsm
+++ b/toolkit/components/places/PlacesBackups.jsm
@@ -1,15 +1,15 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
  * vim: sw=2 ts=2 sts=2 expandtab filetype=javascript
  * 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/. */
 
-this.EXPORTED_SYMBOLS = ["PlacesBackups"];
+var EXPORTED_SYMBOLS = ["PlacesBackups"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
   BookmarkJSONUtils: "resource://gre/modules/BookmarkJSONUtils.jsm",
   OS: "resource://gre/modules/osfile.jsm",
@@ -87,17 +87,17 @@ async function getTopLevelFolderIds() {
     guids.push({
       id: row.getResultByName("id"),
       guid: row.getResultByName("guid")
     });
   }
   return guids;
 }
 
-this.PlacesBackups = {
+var PlacesBackups = {
   /**
    * Matches the backup filename:
    *  0: file name
    *  1: date in form Y-m-d
    *  2: bookmarks count
    *  3: contents hash
    *  4: file extension
    */
--- a/toolkit/components/places/PlacesDBUtils.jsm
+++ b/toolkit/components/places/PlacesDBUtils.jsm
@@ -8,19 +8,19 @@ const BYTES_PER_MEBIBYTE = 1048576;
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyModuleGetters(this, {
   Services: "resource://gre/modules/Services.jsm",
   OS: "resource://gre/modules/osfile.jsm",
   PlacesUtils: "resource://gre/modules/PlacesUtils.jsm",
 });
 
-this.EXPORTED_SYMBOLS = [ "PlacesDBUtils" ];
+var EXPORTED_SYMBOLS = [ "PlacesDBUtils" ];
 
-this.PlacesDBUtils = {
+var PlacesDBUtils = {
   _isShuttingDown: false,
   shutdown() {
     PlacesDBUtils._isShuttingDown = true;
   },
 
   _clearTaskQueue: false,
   clearPendingTasks() {
     PlacesDBUtils._clearTaskQueue = true;
--- a/toolkit/components/places/PlacesRemoteTabsAutocompleteProvider.jsm
+++ b/toolkit/components/places/PlacesRemoteTabsAutocompleteProvider.jsm
@@ -4,17 +4,17 @@
 
 /*
  * Provides functions to handle remote tabs (ie, tabs known by Sync) in
  * the awesomebar.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["PlacesRemoteTabsAutocompleteProvider"];
+var EXPORTED_SYMBOLS = ["PlacesRemoteTabsAutocompleteProvider"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "weaveXPCService", function() {
   try {
     return Cc["@mozilla.org/weave/service;1"]
              .getService(Ci.nsISupports)
@@ -110,17 +110,17 @@ function observe(subject, topic, data) {
 Services.obs.addObserver(observe, "weave:engine:sync:finish");
 Services.obs.addObserver(observe, "weave:service:start-over");
 
 // Observe the pref for showing remote icons and prime our bool that reflects its value.
 Services.prefs.addObserver(PREF_SHOW_REMOTE_ICONS, observe);
 observe(null, "nsPref:changed", PREF_SHOW_REMOTE_ICONS);
 
 // This public object is a static singleton.
-this.PlacesRemoteTabsAutocompleteProvider = {
+var PlacesRemoteTabsAutocompleteProvider = {
   // a promise that resolves with an array of matching remote tabs.
   getMatches(searchString) {
     // If Sync isn't configured we bail early.
     if (!weaveXPCService || !weaveXPCService.ready || !weaveXPCService.enabled) {
       return Promise.resolve([]);
     }
 
     let re = new RegExp(escapeRegExp(searchString), "i");
--- a/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm
+++ b/toolkit/components/places/PlacesSearchAutocompleteProvider.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * Provides functions to handle search engine URLs in the browser history.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [ "PlacesSearchAutocompleteProvider" ];
+var EXPORTED_SYMBOLS = [ "PlacesSearchAutocompleteProvider" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "SearchSuggestionController",
   "resource://gre/modules/SearchSuggestionController.jsm");
 
 const SEARCH_ENGINE_TOPIC = "browser-search-engine-modified";
@@ -192,17 +192,17 @@ SearchSuggestionControllerWrapper.protot
    */
   stop() {
     this._controller.stop();
   },
 };
 
 var gInitializationPromise = null;
 
-this.PlacesSearchAutocompleteProvider = Object.freeze({
+var PlacesSearchAutocompleteProvider = Object.freeze({
   /**
    * Starts initializing the component and returns a promise that is resolved or
    * rejected when initialization finished.  The same promise is returned if
    * this function is called multiple times.
    */
   ensureInitialized() {
     if (!gInitializationPromise) {
       gInitializationPromise = SearchAutocompleteProviderInternal.initialize();
--- a/toolkit/components/places/PlacesSyncUtils.jsm
+++ b/toolkit/components/places/PlacesSyncUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PlacesSyncUtils"];
+var EXPORTED_SYMBOLS = ["PlacesSyncUtils"];
 
 Cu.importGlobalProperties(["URL", "URLSearchParams"]);
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Log",
                                "resource://gre/modules/Log.jsm");
--- a/toolkit/components/places/PlacesTransactions.jsm
+++ b/toolkit/components/places/PlacesTransactions.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PlacesTransactions"];
+var EXPORTED_SYMBOLS = ["PlacesTransactions"];
 
 /**
  * Overview
  * --------
  * This modules serves as the transactions manager for Places (hereinafter PTM).
  * It implements all the elementary transactions for its UI commands: creating
  * items, editing their various properties, and so forth.
  *
--- a/toolkit/components/places/PlacesUtils.jsm
+++ b/toolkit/components/places/PlacesUtils.jsm
@@ -1,14 +1,14 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PlacesUtils"];
+var EXPORTED_SYMBOLS = ["PlacesUtils"];
 
 Cu.importGlobalProperties(["URL"]);
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   Services: "resource://gre/modules/Services.jsm",
@@ -285,17 +285,17 @@ const SYNC_CHANGE_RECORD_VALIDATORS = Ob
   modified: simpleValidateFunc(v => typeof v == "number" && v >= 0),
   counter: simpleValidateFunc(v => typeof v == "number" && v >= 0),
   status: simpleValidateFunc(v => typeof v == "number" &&
                                   Object.values(PlacesUtils.bookmarks.SYNC_STATUS).includes(v)),
   tombstone: simpleValidateFunc(v => v === true || v === false),
   synced: simpleValidateFunc(v => v === true || v === false),
 });
 
-this.PlacesUtils = {
+var PlacesUtils = {
   // Place entries that are containers, e.g. bookmark folders or queries.
   TYPE_X_MOZ_PLACE_CONTAINER: "text/x-moz-place-container",
   // Place entries that are bookmark separators.
   TYPE_X_MOZ_PLACE_SEPARATOR: "text/x-moz-place-separator",
   // Place entries that are not containers or separators
   TYPE_X_MOZ_PLACE: "text/x-moz-place",
   // Place entries in shortcut url format (url\ntitle)
   TYPE_X_MOZ_URL: "text/x-moz-url",
--- a/toolkit/components/places/SyncedBookmarksMirror.jsm
+++ b/toolkit/components/places/SyncedBookmarksMirror.jsm
@@ -44,17 +44,17 @@
  *
  * - Once upload succeeds, we update the mirror with the uploaded records, so
  *   that the mirror matches the server again. An interruption or error here
  *   will leave the uploaded items flagged as changed in Places, so we'll merge
  *   them again on the next sync. This is redundant work, but shouldn't cause
  *   issues.
  */
 
-this.EXPORTED_SYMBOLS = ["SyncedBookmarksMirror"];
+var EXPORTED_SYMBOLS = ["SyncedBookmarksMirror"];
 
 Cu.importGlobalProperties(["URL"]);
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   AsyncShutdown: "resource://gre/modules/AsyncShutdown.jsm",
--- a/toolkit/components/places/tests/PlacesTestUtils.jsm
+++ b/toolkit/components/places/tests/PlacesTestUtils.jsm
@@ -1,24 +1,24 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "PlacesTestUtils",
 ];
 
 Cu.importGlobalProperties(["URL"]);
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
                                "resource://gre/modules/PlacesUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "TestUtils",
                                "resource://testing-common/TestUtils.jsm");
 
-this.PlacesTestUtils = Object.freeze({
+var PlacesTestUtils = Object.freeze({
   /**
    * Asynchronously adds visits to a page.
    *
    * @param aPlaceInfo
    *        Can be an nsIURI, in such a case a single LINK visit will be added.
    *        Otherwise can be an object describing the visit to add, or an array
    *        of these objects:
    *          { uri: href, URL or nsIURI of the page,
--- a/toolkit/components/promiseworker/PromiseWorker.jsm
+++ b/toolkit/components/promiseworker/PromiseWorker.jsm
@@ -12,17 +12,17 @@
  * - provides some utilities for benchmarking various operations.
  *
  * Generally, you should use PromiseWorker.jsm along with its worker-side
  * counterpart PromiseWorker.js.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["BasePromiseWorker"];
+var EXPORTED_SYMBOLS = ["BasePromiseWorker"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "PromiseUtils",
   "resource://gre/modules/PromiseUtils.jsm");
 
 /**
  * An implementation of queues (FIFO).
@@ -98,17 +98,17 @@ const EXCEPTION_CONSTRUCTORS = {
  * Instances of this constructor may add exception handlers to
  * `this.ExceptionHandlers`, if they need to handle custom exceptions.
  *
  * @param {string} url The url containing the source code for this worker,
  * as in constructor ChromeWorker.
  *
  * @constructor
  */
-this.BasePromiseWorker = function(url) {
+var BasePromiseWorker = function(url) {
   if (typeof url != "string") {
     throw new TypeError("Expecting a string");
   }
   this._url = url;
 
   /**
    * A set of methods, with the following
    *
--- a/toolkit/components/prompts/src/CommonDialog.jsm
+++ b/toolkit/components/prompts/src/CommonDialog.jsm
@@ -1,24 +1,24 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["CommonDialog"];
+var EXPORTED_SYMBOLS = ["CommonDialog"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "EnableDelayHelper",
                                "resource://gre/modules/SharedPromptUtils.jsm");
 
 
-this.CommonDialog = function CommonDialog(args, ui) {
+function CommonDialog(args, ui) {
     this.args = args;
     this.ui   = ui;
-};
+}
 
 CommonDialog.prototype = {
     args: null,
     ui: null,
 
     hasInputField: true,
     numButtons: undefined,
     iconClass: undefined,
--- a/toolkit/components/prompts/src/SharedPromptUtils.jsm
+++ b/toolkit/components/prompts/src/SharedPromptUtils.jsm
@@ -1,13 +1,13 @@
-this.EXPORTED_SYMBOLS = [ "PromptUtils", "EnableDelayHelper" ];
+var EXPORTED_SYMBOLS = [ "PromptUtils", "EnableDelayHelper" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.PromptUtils = {
+var PromptUtils = {
     // Fire a dialog open/close event. Used by tabbrowser to focus the
     // tab which is triggering a prompt.
     // For remote dialogs, we pass in a different DOM window and a separate
     // target. If the caller doesn't pass in the target, then we'll simply use
     // the passed-in DOM window.
     // The detail may contain information about the principal on which the
     // prompt is triggered, as well as whether or not this is a tabprompt
     // (ie tabmodal alert/prompt/confirm and friends)
@@ -51,17 +51,17 @@ this.PromptUtils = {
  * the delay when the dialog regains focus.
  *
  * @param enableDialog   A custom function to be called when the dialog
  *                       is to be enabled.
  * @param diableDialog   A custom function to be called when the dialog
  *                       is to be disabled.
  * @param focusTarget    The window used to watch focus/blur events.
  */
-this.EnableDelayHelper = function({enableDialog, disableDialog, focusTarget}) {
+var EnableDelayHelper = function({enableDialog, disableDialog, focusTarget}) {
     this.enableDialog = makeSafe(enableDialog);
     this.disableDialog = makeSafe(disableDialog);
     this.focusTarget = focusTarget;
 
     this.disableDialog();
 
     this.focusTarget.addEventListener("blur", this);
     this.focusTarget.addEventListener("focus", this);
--- a/toolkit/components/reader/.eslintrc.js
+++ b/toolkit/components/reader/.eslintrc.js
@@ -1,11 +1,11 @@
 "use strict";
 
 module.exports = {
   "rules": {
     "indent-legacy": ["error", 2, { "SwitchCase": 1 }],
     "new-parens": "error",
     "no-inner-declarations": "error",
     "no-shadow": "error",
-    "no-unused-vars": ["error", {"vars": "all", "args": "none"}],
+    "no-unused-vars": ["error", {"vars": "all", "varsIgnorePattern": "^EXPORTED_SYMBOLS$", "args": "none"}],
   },
 }
--- a/toolkit/components/reader/AboutReader.jsm
+++ b/toolkit/components/reader/AboutReader.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "AboutReader" ];
+var EXPORTED_SYMBOLS = [ "AboutReader" ];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/ReaderMode.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AsyncPrefs", "resource://gre/modules/AsyncPrefs.jsm");
 ChromeUtils.defineModuleGetter(this, "NarrateControls", "resource://gre/modules/narrate/NarrateControls.jsm");
--- a/toolkit/components/reader/ReaderMode.jsm
+++ b/toolkit/components/reader/ReaderMode.jsm
@@ -1,15 +1,15 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ReaderMode"];
+var EXPORTED_SYMBOLS = ["ReaderMode"];
 
 // Constants for telemetry.
 const DOWNLOAD_SUCCESS = 0;
 const DOWNLOAD_ERROR_XHR = 1;
 const DOWNLOAD_ERROR_NO_DOC = 2;
 
 const PARSE_SUCCESS = 0;
 const PARSE_ERROR_TOO_MANY_ELEMENTS = 1;
@@ -45,17 +45,17 @@ XPCOMUtils.defineLazyGetter(this, "Reada
   let scope = {};
   scope.dump = this.dump;
   Services.scriptloader.loadSubScript("resource://gre/modules/reader/Readability.js", scope);
   return scope.Readability;
 });
 
 const gIsFirefoxDesktop = Services.appinfo.ID == "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}";
 
-this.ReaderMode = {
+var ReaderMode = {
   // Version of the cache schema.
   CACHE_VERSION: 1,
 
   DEBUG: 0,
 
   // Don't try to parse the page if it has too many elements (for memory and
   // performance reasons)
   get maxElemsToParse() {
--- a/toolkit/components/reader/ReaderWorker.jsm
+++ b/toolkit/components/reader/ReaderWorker.jsm
@@ -5,11 +5,11 @@
 "use strict";
 
 /**
  * Interface to a dedicated thread handling readability parsing.
  */
 
 ChromeUtils.import("resource://gre/modules/PromiseWorker.jsm", this);
 
-this.EXPORTED_SYMBOLS = ["ReaderWorker"];
+var EXPORTED_SYMBOLS = ["ReaderWorker"];
 
-this.ReaderWorker = new BasePromiseWorker("resource://gre/modules/reader/ReaderWorker.js");
+var ReaderWorker = new BasePromiseWorker("resource://gre/modules/reader/ReaderWorker.js");
--- a/toolkit/components/reflect/reflect.jsm
+++ b/toolkit/components/reflect/reflect.jsm
@@ -1,14 +1,14 @@
 /* -*-  indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "Reflect" ];
+var EXPORTED_SYMBOLS = [ "Reflect" ];
 
 /*
  * This is the js module for Reflect. Import it like so:
  *   Components.utils.import("resource://gre/modules/reflect.jsm");
  *
  * This will create a 'Reflect' object, which provides an interface to the
  * SpiderMonkey parser API.
  *
--- a/toolkit/components/resistfingerprinting/LanguagePrompt.jsm
+++ b/toolkit/components/resistfingerprinting/LanguagePrompt.jsm
@@ -1,15 +1,15 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LanguagePrompt"];
+var EXPORTED_SYMBOLS = ["LanguagePrompt"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const kPrefResistFingerprinting = "privacy.resistFingerprinting";
 const kPrefSpoofEnglish = "privacy.spoof_english";
 const kTopicHttpOnModifyRequest = "http-on-modify-request";
 
--- a/toolkit/components/satchel/AutoCompletePopup.jsm
+++ b/toolkit/components/satchel/AutoCompletePopup.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AutoCompletePopup"];
+var EXPORTED_SYMBOLS = ["AutoCompletePopup"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 // AutoCompleteResultView is an abstraction around a list of results
 // we got back up from browser-content.js. It implements enough of
 // nsIAutoCompleteController and nsIAutoCompleteInput to make the
 // richlistbox popup work.
--- a/toolkit/components/satchel/FormHistory.jsm
+++ b/toolkit/components/satchel/FormHistory.jsm
@@ -79,17 +79,17 @@
  * In all of the above methods, the callback argument should be an object with
  * handleResult(result), handleFailure(error) and handleCompletion(reason) functions.
  * For search and getAutoCompeteResults, result is an object containing the desired
  * properties. For count, result is the integer count. For, update, handleResult is
  * not called. For handleCompletion, reason is either 0 if successful or 1 if
  * an error occurred.
  */
 
-this.EXPORTED_SYMBOLS = ["FormHistory"];
+var EXPORTED_SYMBOLS = ["FormHistory"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "uuidService",
                                    "@mozilla.org/uuid-generator;1",
                                    "nsIUUIDGenerator");
@@ -326,17 +326,17 @@ function prepareInsertQuery(change, now)
   };
 }
 
 // There is a fieldname / value uniqueness constraint that's at this time
 // only enforced at this level. This Map maps fieldnames => values that
 // are in the process of being inserted into the database so that we know
 // not to try to insert the same ones on top. Attempts to do so will be
 // ignored.
-this.InProgressInserts = {
+var InProgressInserts = {
   _inProgress: new Map(),
 
   add(fieldname, value) {
     let fieldnameSet = this._inProgress.get(fieldname);
     if (!fieldnameSet) {
       this._inProgress.set(fieldname, new Set([value]));
       return true;
     }
@@ -600,17 +600,17 @@ function expireOldEntriesVacuum(aExpireT
 }
 
 
 /**
  * Database creation and access. Used by FormHistory and some of the
  * utility functions, but is not exposed to the outside world.
  * @class
  */
-this.DB = {
+var DB = {
   // Once we establish a database connection, we have to hold a reference
   // to it so that it won't get GC'd.
   _instance: null,
   // MAX_ATTEMPTS is how many times we'll try to establish a connection
   // or migrate a database before giving up.
   MAX_ATTEMPTS: 2,
 
   /** String representing where the FormHistory database is on the filesystem */
--- a/toolkit/components/satchel/nsFormAutoCompleteResult.jsm
+++ b/toolkit/components/satchel/nsFormAutoCompleteResult.jsm
@@ -1,34 +1,34 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["FormAutoCompleteResult"];
+var EXPORTED_SYMBOLS = ["FormAutoCompleteResult"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.FormAutoCompleteResult = function FormAutoCompleteResult(searchString,
-                                                              searchResult,
-                                                              defaultIndex,
-                                                              errorDescription,
-                                                              values,
-                                                              labels,
-                                                              comments,
-                                                              prevResult) {
+function FormAutoCompleteResult(searchString,
+                                searchResult,
+                                defaultIndex,
+                                errorDescription,
+                                values,
+                                labels,
+                                comments,
+                                prevResult) {
   this.searchString = searchString;
   this._searchResult = searchResult;
   this._defaultIndex = defaultIndex;
   this._errorDescription = errorDescription;
   this._values = values;
   this._labels = labels;
   this._comments = comments;
   this._formHistResult = prevResult;
   this.entries = prevResult ? prevResult.wrappedJSObject.entries : [];
-};
+}
 
 FormAutoCompleteResult.prototype = {
 
   // The user's query string
   searchString: "",
 
   // The result code of this result object, see |get searchResult| for possible values.
   _searchResult: 0,
--- a/toolkit/components/search/SearchStaticData.jsm
+++ b/toolkit/components/search/SearchStaticData.jsm
@@ -9,26 +9,26 @@
  * when a change is made.
  *
  * This separate module is also easily overridable, in case a hotfix is needed.
  * No high-level processing logic is applied here.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SearchStaticData",
 ];
 
 // To update this list of known alternate domains, just cut-and-paste from
 // https://www.google.com/supported_domains
 const gGoogleDomainsSource = ".google.com .google.ad .google.ae .google.com.af .google.com.ag .google.com.ai .google.al .google.am .google.co.ao .google.com.ar .google.as .google.at .google.com.au .google.az .google.ba .google.com.bd .google.be .google.bf .google.bg .google.com.bh .google.bi .google.bj .google.com.bn .google.com.bo .google.com.br .google.bs .google.bt .google.co.bw .google.by .google.com.bz .google.ca .google.cd .google.cf .google.cg .google.ch .google.ci .google.co.ck .google.cl .google.cm .google.cn .google.com.co .google.co.cr .google.com.cu .google.cv .google.com.cy .google.cz .google.de .google.dj .google.dk .google.dm .google.com.do .google.dz .google.com.ec .google.ee .google.com.eg .google.es .google.com.et .google.fi .google.com.fj .google.fm .google.fr .google.ga .google.ge .google.gg .google.com.gh .google.com.gi .google.gl .google.gm .google.gp .google.gr .google.com.gt .google.gy .google.com.hk .google.hn .google.hr .google.ht .google.hu .google.co.id .google.ie .google.co.il .google.im .google.co.in .google.iq .google.is .google.it .google.je .google.com.jm .google.jo .google.co.jp .google.co.ke .google.com.kh .google.ki .google.kg .google.co.kr .google.com.kw .google.kz .google.la .google.com.lb .google.li .google.lk .google.co.ls .google.lt .google.lu .google.lv .google.com.ly .google.co.ma .google.md .google.me .google.mg .google.mk .google.ml .google.com.mm .google.mn .google.ms .google.com.mt .google.mu .google.mv .google.mw .google.com.mx .google.com.my .google.co.mz .google.com.na .google.com.nf .google.com.ng .google.com.ni .google.ne .google.nl .google.no .google.com.np .google.nr .google.nu .google.co.nz .google.com.om .google.com.pa .google.com.pe .google.com.pg .google.com.ph .google.com.pk .google.pl .google.pn .google.com.pr .google.ps .google.pt .google.com.py .google.com.qa .google.ro .google.ru .google.rw .google.com.sa .google.com.sb .google.sc .google.se .google.com.sg .google.sh .google.si .google.sk .google.com.sl .google.sn .google.so .google.sm .google.sr .google.st .google.com.sv .google.td .google.tg .google.co.th .google.com.tj .google.tk .google.tl .google.tm .google.tn .google.to .google.com.tr .google.tt .google.com.tw .google.co.tz .google.com.ua .google.co.ug .google.co.uk .google.com.uy .google.co.uz .google.com.vc .google.co.ve .google.vg .google.co.vi .google.com.vn .google.vu .google.ws .google.rs .google.co.za .google.co.zm .google.co.zw .google.cat";
 const gGoogleDomains = gGoogleDomainsSource.split(" ").map(d => "www" + d);
 
-this.SearchStaticData = {
+var SearchStaticData = {
   /**
    * Returns a list of alternate domains for a given search engine domain.
    *
    * @param aDomain
    *        Lowercase host name to look up. For example, if this argument is
    *        "www.google.com" or "www.google.co.uk", the function returns the
    *        full list of supported Google domains.
    *
--- a/toolkit/components/search/SearchSuggestionController.jsm
+++ b/toolkit/components/search/SearchSuggestionController.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SearchSuggestionController"];
+var EXPORTED_SYMBOLS = ["SearchSuggestionController"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "NS_ASSERT", "resource://gre/modules/debug.js");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
@@ -37,19 +37,19 @@ Services.prefs.addObserver(BROWSER_SUGGE
  * One instance of SearchSuggestionController should be used per field since form history results are cached.
  */
 
 /**
  * @param {function} [callback] - Callback for search suggestion results. You can use the promise
  *                                returned by the search method instead if you prefer.
  * @constructor
  */
-this.SearchSuggestionController = function SearchSuggestionController(callback = null) {
+function SearchSuggestionController(callback = null) {
   this._callback = callback;
-};
+}
 
 this.SearchSuggestionController.prototype = {
   /**
    * The maximum number of local form history results to return. This limit is
    * only enforced if remote results are also returned.
    */
   maxLocalResults: 5,
 
--- a/toolkit/components/telemetry/GCTelemetry.jsm
+++ b/toolkit/components/telemetry/GCTelemetry.jsm
@@ -18,17 +18,17 @@
  *
  * GCs from both the main process and all content processes are
  * recorded. The data is cleared for each new subsession.
  */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 
-this.EXPORTED_SYMBOLS = ["GCTelemetry"];
+var EXPORTED_SYMBOLS = ["GCTelemetry"];
 
 // Names of processes where we record GCs.
 const PROCESS_NAMES = ["main", "content"];
 
 // Should be the time we started up in milliseconds since the epoch.
 const BASE_TIME = Date.now() - Services.telemetry.msSinceProcessStart();
 
 // Records selected GCs. There is one instance per process type.
--- a/toolkit/components/telemetry/TelemetryArchive.jsm
+++ b/toolkit/components/telemetry/TelemetryArchive.jsm
@@ -1,31 +1,31 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryArchive"
 ];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/Preferences.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 ChromeUtils.import("resource://gre/modules/TelemetryUtils.jsm", this);
 
 const LOGGER_NAME = "Toolkit.Telemetry";
 const LOGGER_PREFIX = "TelemetryArchive::";
 
 ChromeUtils.defineModuleGetter(this, "TelemetryStorage",
                                "resource://gre/modules/TelemetryStorage.jsm");
 
-this.TelemetryArchive = {
+var TelemetryArchive = {
   /**
    * Get a list of the archived pings, sorted by the creation date.
    * Note that scanning the archived pings on disk is delayed on startup,
    * use promizeInitialized() to access this after scanning.
    *
    * @return {Promise<sequence<Object>>}
    *                    A list of the archived ping info in the form:
    *                    { id: <string>,
--- a/toolkit/components/telemetry/TelemetryController.jsm
+++ b/toolkit/components/telemetry/TelemetryController.jsm
@@ -103,19 +103,19 @@ function configureLogging() {
  * This is a policy object used to override behavior for testing.
  */
 var Policy = {
   now: () => new Date(),
   generatePingId: () => Utils.generateUUID(),
   getCachedClientID: () => ClientID.getCachedClientID(),
 };
 
-this.EXPORTED_SYMBOLS = ["TelemetryController"];
+var EXPORTED_SYMBOLS = ["TelemetryController"];
 
-this.TelemetryController = Object.freeze({
+var TelemetryController = Object.freeze({
   /**
    * Used only for testing purposes.
    */
   testAssemblePing(aType, aPayload, aOptions) {
     return Impl.assemblePing(aType, aPayload, aOptions);
   },
 
   /**
--- a/toolkit/components/telemetry/TelemetryEnvironment.jsm
+++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryEnvironment",
 ];
 
 const myScope = this;
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
@@ -59,17 +59,17 @@ var gActiveExperimentStartupBuffer = new
 var gGlobalEnvironment;
 function getGlobal() {
   if (!gGlobalEnvironment) {
     gGlobalEnvironment = new EnvironmentCache();
   }
   return gGlobalEnvironment;
 }
 
-this.TelemetryEnvironment = {
+var TelemetryEnvironment = {
   get currentEnvironment() {
     return getGlobal().currentEnvironment;
   },
 
   onInitialized() {
     return getGlobal().onInitialized();
   },
 
--- a/toolkit/components/telemetry/TelemetryHealthPing.jsm
+++ b/toolkit/components/telemetry/TelemetryHealthPing.jsm
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /*
  * This module collects data on send failures and other critical issues with Telemetry submissions.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryHealthPing",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "TelemetryController", "resource://gre/modules/TelemetryController.jsm");
 ChromeUtils.defineModuleGetter(this, "setTimeout", "resource://gre/modules/Timer.jsm");
 ChromeUtils.defineModuleGetter(this, "clearTimeout", "resource://gre/modules/Timer.jsm");
@@ -37,17 +37,17 @@ const MAX_SEND_DISCARDED_PINGS = 10;
 const LOGGER_NAME = "Toolkit.Telemetry";
 const LOGGER_PREFIX = "TelemetryHealthPing::";
 
 var Policy = {
   setSchedulerTickTimeout: (callback, delayMs) => setTimeout(callback, delayMs),
   clearSchedulerTickTimeout: (id) => clearTimeout(id)
 };
 
-this.TelemetryHealthPing = {
+var TelemetryHealthPing = {
   Reason: Object.freeze({
     IMMEDIATE: "immediate", // Ping was sent immediately after recording with no delay.
     DELAYED: "delayed",     // Recorded data was sent after a delay.
     SHUT_DOWN: "shutdown",  // Recorded data was sent on shutdown.
   }),
 
   FailureType: Object.freeze({
     DISCARDED_FOR_SIZE: "pingDiscardedForSize",
--- a/toolkit/components/telemetry/TelemetryLog.jsm
+++ b/toolkit/components/telemetry/TelemetryLog.jsm
@@ -1,21 +1,21 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["TelemetryLog"];
+var EXPORTED_SYMBOLS = ["TelemetryLog"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const LOG_ENTRY_MAX_COUNT = 1000;
 
 var gLogEntries = [];
 
-this.TelemetryLog = Object.freeze({
+var TelemetryLog = Object.freeze({
   log(id, data) {
     if (gLogEntries.length >= LOG_ENTRY_MAX_COUNT) {
       return;
     }
     id = String(id);
     var ts;
     try {
       ts = Math.floor(Services.telemetry.msSinceProcessStart());
--- a/toolkit/components/telemetry/TelemetryModules.jsm
+++ b/toolkit/components/telemetry/TelemetryModules.jsm
@@ -15,32 +15,32 @@ ChromeUtils.defineModuleGetter(this, "Te
 ChromeUtils.defineModuleGetter(this, "AppConstants",
   "resource://gre/modules/AppConstants.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "gUpdateTimerManager",
   "@mozilla.org/updates/timer-manager;1", "nsIUpdateTimerManager");
 XPCOMUtils.defineLazyServiceGetter(this, "Telemetry",
   "@mozilla.org/base/telemetry;1", "nsITelemetry");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryModules",
 ];
 
 const LOGGER_NAME = "Toolkit.Telemetry";
 const LOGGER_PREFIX = "TelemetryModules::";
 
 // The default is 1 week.
 const MODULES_PING_INTERVAL_SECONDS = 7 * 24 * 60 * 60;
 const MODULES_PING_INTERVAL_PREFERENCE = "toolkit.telemetry.modulesPing.interval";
 
 const MAX_MODULES_NUM = 512;
 const MAX_NAME_LENGTH = 64;
 const TRUNCATION_DELIMITER = "\u2026";
 
-this.TelemetryModules = Object.freeze({
+var TelemetryModules = Object.freeze({
   _log: Log.repository.getLoggerWithMessagePrefix(LOGGER_NAME, LOGGER_PREFIX),
 
   start() {
     // The list of loaded modules is obtainable only when the profiler is enabled.
     // If it isn't, we don't want to send the ping at all.
     if (!AppConstants.MOZ_GECKO_PROFILER) {
       return;
     }
--- a/toolkit/components/telemetry/TelemetryReportingPolicy.jsm
+++ b/toolkit/components/telemetry/TelemetryReportingPolicy.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryReportingPolicy"
 ];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm", this);
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/Timer.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://services-common/observers.js", this);
@@ -87,17 +87,17 @@ NotifyPolicyRequest.prototype = Object.f
    * @param error
    *        (Error) Explains what went wrong.
    */
   onUserNotifyFailed(error) {
     this._log.error("onUserNotifyFailed - " + error);
   },
 });
 
-this.TelemetryReportingPolicy = {
+var TelemetryReportingPolicy = {
   // The current policy version number. If the version number stored in the prefs
   // is smaller than this, data upload will be disabled until the user is re-notified
   // about the policy changes.
   DEFAULT_DATAREPORTING_POLICY_VERSION: 1,
 
   /**
    * Setup the policy.
    */
--- a/toolkit/components/telemetry/TelemetrySend.jsm
+++ b/toolkit/components/telemetry/TelemetrySend.jsm
@@ -6,17 +6,17 @@
  * This module is responsible for uploading pings to the server and persisting
  * pings that can't be send now.
  * Those pending pings are persisted on disk and sent at the next opportunity,
  * newest first.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetrySend",
 ];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/ClientID.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm", this);
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
@@ -167,17 +167,17 @@ function gzipCompressString(string) {
                      .createInstance(Ci.nsIStringInputStream);
   stringStream.data = string;
   converter.onStartRequest(null, null);
   converter.onDataAvailable(null, null, stringStream, 0, string.length);
   converter.onStopRequest(null, null, null);
   return observer.buffer;
 }
 
-this.TelemetrySend = {
+var TelemetrySend = {
 
   /**
    * Age in ms of a pending ping to be considered overdue.
    */
   get OVERDUE_PING_FILE_AGE() {
     return OVERDUE_PING_FILE_AGE;
   },
 
--- a/toolkit/components/telemetry/TelemetrySession.jsm
+++ b/toolkit/components/telemetry/TelemetrySession.jsm
@@ -526,19 +526,19 @@ var TelemetryScheduler = {
         this._lastDailyPingTime = now.getTime();
       }
     }
 
     this._rescheduleTimeout();
   },
 };
 
-this.EXPORTED_SYMBOLS = ["TelemetrySession"];
+var EXPORTED_SYMBOLS = ["TelemetrySession"];
 
-this.TelemetrySession = Object.freeze({
+var TelemetrySession = Object.freeze({
   /**
    * Send a ping to a test server. Used only for testing.
    */
   testPing() {
     return Impl.testPing();
   },
   /**
    * Returns the current telemetry payload.
--- a/toolkit/components/telemetry/TelemetryStopwatch.jsm
+++ b/toolkit/components/telemetry/TelemetryStopwatch.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["TelemetryStopwatch"];
+var EXPORTED_SYMBOLS = ["TelemetryStopwatch"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "Log",
   "resource://gre/modules/Log.jsm");
 
 // Weak map does not allow using null objects as keys. These objects are used
 // as 'null' placeholders.
@@ -105,17 +105,17 @@ let Timers = {
     // nice solution for tracking the number of objects in a WeakMap.
     // WeakMap is not enumerable, so we can't deterministically say when it's
     // empty. We accept that trade-off here, given that entries for short-lived
     // objects will go away when they are no longer referenced
     return true;
   }
 };
 
-this.TelemetryStopwatch = {
+var TelemetryStopwatch = {
   /**
    * Starts a timer associated with a telemetry histogram. The timer can be
    * directly associated with a histogram, or with a pair of a histogram and
    * an object.
    *
    * @param {String} aHistogram - a string which must be a valid histogram name.
    *
    * @param {Object} aObj - Optional parameter. If specified, the timer is
@@ -332,17 +332,17 @@ this.TelemetryStopwatch = {
   /**
    * Set the testing mode. Used by tests.
    */
   setTestModeEnabled(testing) {
     TelemetryStopwatchImpl.suppressErrors(true);
   },
 };
 
-this.TelemetryStopwatchImpl = {
+var TelemetryStopwatchImpl = {
   // Suppress errors. Used when testing.
   _suppressErrors: false,
 
   suppressErrors(suppress) {
     this._suppressErrors = suppress;
   },
 
   start(histogram, object, key) {
--- a/toolkit/components/telemetry/TelemetryStorage.jsm
+++ b/toolkit/components/telemetry/TelemetryStorage.jsm
@@ -1,16 +1,16 @@
 /* -*- js-indent-level: 2; indent-tabs-mode: nil -*- */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["TelemetryStorage"];
+var EXPORTED_SYMBOLS = ["TelemetryStorage"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm", this);
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 ChromeUtils.import("resource://gre/modules/TelemetryStopwatch.jsm", this);
 ChromeUtils.import("resource://gre/modules/TelemetryUtils.jsm", this);
@@ -121,17 +121,17 @@ function waitForAll(it) {
  * Permanently intern the given string. This is mainly used for the ping.type
  * strings that can be excessively duplicated in the _archivedPings map. Do not
  * pass large or temporary strings to this function.
  */
 function internString(str) {
   return Symbol.keyFor(Symbol.for(str));
 }
 
-this.TelemetryStorage = {
+var TelemetryStorage = {
   get pingDirectoryPath() {
     return OS.Path.join(OS.Constants.Path.profileDir, "saved-telemetry-pings");
   },
 
   /**
    * The maximum size a ping can have, in bytes.
    */
   get MAXIMUM_PING_SIZE() {
--- a/toolkit/components/telemetry/TelemetryTimestamps.jsm
+++ b/toolkit/components/telemetry/TelemetryTimestamps.jsm
@@ -1,26 +1,26 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["TelemetryTimestamps"];
+var EXPORTED_SYMBOLS = ["TelemetryTimestamps"];
 
 /**
  * This module's purpose is to collect timestamps for important
  * application-specific events.
  *
  * The TelemetryController component attaches the timestamps stored by this module to
  * the telemetry submission, substracting the process lifetime so that the times
  * are relative to process startup. The overall goal is to produce a basic
  * timeline of the startup process.
  */
 var timeStamps = {};
 
-this.TelemetryTimestamps = {
+var TelemetryTimestamps = {
   /**
    * Adds a timestamp to the list. The addition of TimeStamps that already have
    * a value stored is ignored.
    *
    * @param name must be a unique, generally "camelCase" descriptor of what the
    *             timestamp represents. e.g.: "delayedStartupStarted"
    * @param value is a timeStamp in milliseconds since the epoch. If omitted,
    *              defaults to Date.now().
--- a/toolkit/components/telemetry/TelemetryUtils.jsm
+++ b/toolkit/components/telemetry/TelemetryUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryUtils"
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 
 const MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000;
 
 const PREF_TELEMETRY_ENABLED = "toolkit.telemetry.enabled";
@@ -17,17 +17,17 @@ const PREF_TELEMETRY_ENABLED = "toolkit.
 const IS_CONTENT_PROCESS = (function() {
   // We cannot use Services.appinfo here because in telemetry xpcshell tests,
   // appinfo is initially unavailable, and becomes available only later on.
   // eslint-disable-next-line mozilla/use-services
   let runtime = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
   return runtime.processType == Ci.nsIXULRuntime.PROCESS_TYPE_CONTENT;
 })();
 
-this.TelemetryUtils = {
+var TelemetryUtils = {
   Preferences: Object.freeze({
     // General Preferences
     ArchiveEnabled: "toolkit.telemetry.archive.enabled",
     CachedClientId: "toolkit.telemetry.cachedClientID",
     FirstRun: "toolkit.telemetry.reportingpolicy.firstRun",
     FirstShutdownPingEnabled: "toolkit.telemetry.firstShutdownPing.enabled",
     HealthPingEnabled: "toolkit.telemetry.healthping.enabled",
     HybridContentEnabled: "toolkit.telemetry.hybridContent.enabled",
--- a/toolkit/components/telemetry/UITelemetry.jsm
+++ b/toolkit/components/telemetry/UITelemetry.jsm
@@ -1,27 +1,27 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "UITelemetry",
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/TelemetryUtils.jsm", this);
 
 /**
  * UITelemetry is a helper JSM used to record UI specific telemetry events.
  *
  * It implements nsIUITelemetryObserver, defined in nsIAndroidBridge.idl.
  */
-this.UITelemetry = {
+var UITelemetry = {
   _enabled: undefined,
   _activeSessions: {},
   _measurements: [],
 
   // Lazily decide whether telemetry is enabled.
   get enabled() {
     if (this._enabled !== undefined) {
       return this._enabled;
--- a/toolkit/components/telemetry/UpdatePing.jsm
+++ b/toolkit/components/telemetry/UpdatePing.jsm
@@ -12,24 +12,24 @@ ChromeUtils.import("resource://gre/modul
 
 ChromeUtils.defineModuleGetter(this, "TelemetryController",
                                "resource://gre/modules/TelemetryController.jsm");
 
 const LOGGER_NAME = "Toolkit.Telemetry";
 const PING_TYPE = "update";
 const UPDATE_DOWNLOADED_TOPIC = "update-downloaded";
 
-this.EXPORTED_SYMBOLS = ["UpdatePing"];
+var EXPORTED_SYMBOLS = ["UpdatePing"];
 
 /**
  * This module is responsible for listening to all the relevant update
  * signals, gathering the needed information and assembling the "update"
  * ping.
  */
-this.UpdatePing = {
+var UpdatePing = {
   earlyInit() {
     this._log = Log.repository.getLoggerWithMessagePrefix(LOGGER_NAME, "UpdatePing::");
     this._enabled = Services.prefs.getBoolPref(TelemetryUtils.Preferences.UpdatePing, false);
 
     this._log.trace("init - enabled: " + this._enabled);
 
     if (!this._enabled) {
       return;
--- a/toolkit/components/telemetry/hybrid-content/HybridContentTelemetry.jsm
+++ b/toolkit/components/telemetry/hybrid-content/HybridContentTelemetry.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["HybridContentTelemetry"];
+var EXPORTED_SYMBOLS = ["HybridContentTelemetry"];
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/TelemetryUtils.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 let HybridContentTelemetry = {
   _logger: null,
--- a/toolkit/components/telemetry/tests/unit/TelemetryArchiveTesting.jsm
+++ b/toolkit/components/telemetry/tests/unit/TelemetryArchiveTesting.jsm
@@ -1,14 +1,14 @@
 ChromeUtils.import("resource://gre/modules/TelemetryArchive.jsm");
 ChromeUtils.import("resource://testing-common/Assert.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/TelemetryController.jsm");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TelemetryArchiveTesting",
 ];
 
 function checkForProperties(ping, expected) {
   for (let [props, val] of expected) {
     let test = ping;
     for (let prop of props) {
       test = test[prop];
--- a/toolkit/components/thumbnails/PageThumbUtils.jsm
+++ b/toolkit/components/thumbnails/PageThumbUtils.jsm
@@ -2,26 +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/. */
 
 /*
  * Common thumbnailing routines used by various consumers, including
  * PageThumbs and backgroundPageThumbsContent.
  */
 
-this.EXPORTED_SYMBOLS = ["PageThumbUtils"];
+var EXPORTED_SYMBOLS = ["PageThumbUtils"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 ChromeUtils.defineModuleGetter(this, "BrowserUtils",
   "resource://gre/modules/BrowserUtils.jsm");
 
-this.PageThumbUtils = {
+var PageThumbUtils = {
   // The default background color for page thumbnails.
   THUMBNAIL_BG_COLOR: "#fff",
   // The namespace for thumbnail canvas elements.
   HTML_NAMESPACE: "http://www.w3.org/1999/xhtml",
 
   /**
    * Creates a new canvas element in the context of aWindow, or if aWindow
    * is undefined, in the context of hiddenDOMWindow.
--- a/toolkit/components/thumbnails/PageThumbs.jsm
+++ b/toolkit/components/thumbnails/PageThumbs.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PageThumbs", "PageThumbsStorage"];
+var EXPORTED_SYMBOLS = ["PageThumbs", "PageThumbsStorage"];
 
 const PREF_STORAGE_VERSION = "browser.pagethumbnails.storage_version";
 const LATEST_STORAGE_VERSION = 3;
 
 const EXPIRATION_MIN_CHUNK_SIZE = 50;
 const EXPIRATION_INTERVAL_SECS = 3600;
 
 var gRemoteThumbId = 0;
@@ -75,17 +75,17 @@ const TaskUtils = {
 
 
 
 
 /**
  * Singleton providing functionality for capturing web page thumbnails and for
  * accessing them if already cached.
  */
-this.PageThumbs = {
+var PageThumbs = {
   _initialized: false,
 
   /**
    * The calculated width and height of the thumbnails.
    */
   _thumbnailWidth: 0,
   _thumbnailHeight: 0,
 
@@ -489,17 +489,17 @@ this.PageThumbs = {
     try {
       return !Services.prefs.getBoolPref("browser.pagethumbnails.capturing_disabled");
     } catch (e) {
       return true;
     }
   },
 };
 
-this.PageThumbsStorage = {
+var PageThumbsStorage = {
 
   ensurePath: function Storage_ensurePath() {
     // Create the directory (ignore any error if the directory
     // already exists). As all writes are done from the PageThumbsWorker
     // thread, which serializes its operations, this ensures that
     // future operations can proceed without having to check whether
     // the directory exists.
     return PageThumbsWorker.post("makeDir",
--- a/toolkit/components/url-classifier/SafeBrowsing.jsm
+++ b/toolkit/components/url-classifier/SafeBrowsing.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["SafeBrowsing"];
+var EXPORTED_SYMBOLS = ["SafeBrowsing"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const PREF_DEBUG_ENABLED = "browser.safebrowsing.debug";
 let loggingEnabled = false;
 
 // Log only if browser.safebrowsing.debug is true
 function log(...stuff) {
@@ -45,17 +45,17 @@ const tablePreferences = [
   "urlclassifier.flashAllowExceptTable",
   "urlclassifier.flashTable",
   "urlclassifier.flashExceptTable",
   "urlclassifier.flashSubDocTable",
   "urlclassifier.flashSubDocExceptTable",
   "urlclassifier.flashInfobarTable"
 ];
 
-this.SafeBrowsing = {
+var SafeBrowsing = {
 
   init() {
     if (this.initialized) {
       log("Already initialized");
       return;
     }
 
     Services.prefs.addObserver("browser.safebrowsing", this);
--- a/toolkit/components/url-classifier/tests/UrlClassifierTestUtils.jsm
+++ b/toolkit/components/url-classifier/tests/UrlClassifierTestUtils.jsm
@@ -1,22 +1,22 @@
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["UrlClassifierTestUtils"];
+var EXPORTED_SYMBOLS = ["UrlClassifierTestUtils"];
 
 const TRACKING_TABLE_NAME = "mochitest-track-simple";
 const TRACKING_TABLE_PREF = "urlclassifier.trackingTable";
 const WHITELIST_TABLE_NAME = "mochitest-trackwhite-simple";
 const WHITELIST_TABLE_PREF = "urlclassifier.trackingWhitelistTable";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 let timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
 
-this.UrlClassifierTestUtils = {
+var UrlClassifierTestUtils = {
 
   addTestTrackers() {
     // Add some URLs to the tracking databases
     let trackingURL1 = "tracking.example.com/";
     let trackingURL2 = "itisatracker.org/";
     let trackingURL3 = "trackertest.org/";
     let whitelistedURL = "itisatrap.org/?resource=itisatracker.org";
 
--- a/toolkit/components/viewsource/ViewSourceBrowser.jsm
+++ b/toolkit/components/viewsource/ViewSourceBrowser.jsm
@@ -10,35 +10,35 @@ ChromeUtils.defineModuleGetter(this, "Se
   "resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "Deprecated",
   "resource://gre/modules/Deprecated.jsm");
 
 const BUNDLE_URL = "chrome://global/locale/viewSource.properties";
 
 const FRAME_SCRIPT = "chrome://global/content/viewSource-content.js";
 
-this.EXPORTED_SYMBOLS = ["ViewSourceBrowser"];
+var EXPORTED_SYMBOLS = ["ViewSourceBrowser"];
 
 // Keep a set of browsers we've seen before, so we can load our frame script as
 // needed into any new ones.
 var gKnownBrowsers = new WeakSet();
 
 /**
  * ViewSourceBrowser manages the view source <browser> from the chrome side.
  * It's companion frame script, viewSource-content.js, needs to be loaded as a
  * frame script into the browser being managed.
  *
  * For a view source tab (or some other non-window case), an instance of this is
  * created by viewSourceUtils.js to wrap the <browser>.  The frame script will
  * be loaded by this module at construction time.
  */
-this.ViewSourceBrowser = function ViewSourceBrowser(aBrowser) {
+function ViewSourceBrowser(aBrowser) {
   this._browser = aBrowser;
   this.init();
-};
+}
 
 ViewSourceBrowser.prototype = {
   /**
    * The <browser> that will be displaying the view source content.
    */
   get browser() {
     return this._browser;
   },
--- a/toolkit/crashreporter/CrashReports.jsm
+++ b/toolkit/crashreporter/CrashReports.jsm
@@ -1,19 +1,19 @@
 /* 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/. */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "CrashReports"
 ];
 
-this.CrashReports = {
+var CrashReports = {
   pendingDir: null,
   reportsDir: null,
   submittedDir: null,
   getReports: function CrashReports_getReports() {
     let reports = [];
 
     try {
       // Ignore any non http/https urls
--- a/toolkit/crashreporter/CrashSubmit.jsm
+++ b/toolkit/crashreporter/CrashSubmit.jsm
@@ -6,17 +6,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/KeyValueParser.jsm");
 Cu.importGlobalProperties(["File", "XMLHttpRequest"]);
 
 ChromeUtils.defineModuleGetter(this, "OS",
                                "resource://gre/modules/osfile.jsm");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "CrashSubmit"
 ];
 
 const STATE_START = Ci.nsIWebProgressListener.STATE_START;
 const STATE_STOP = Ci.nsIWebProgressListener.STATE_STOP;
 
 const SUCCESS = "success";
 const FAILED  = "failed";
@@ -382,17 +382,17 @@ Submitter.prototype = {
     }
 
     return this.submitStatusPromise;
   }
 };
 
 // ===================================
 // External API goes here
-this.CrashSubmit = {
+var CrashSubmit = {
   /**
    * Submit the crash report named id.dmp from the "pending" directory.
    *
    * @param id
    *        Filename (minus .dmp extension) of the minidump to submit.
    * @param params
    *        An object containing any of the following optional parameters:
    *        - recordSubmission
--- a/toolkit/crashreporter/KeyValueParser.jsm
+++ b/toolkit/crashreporter/KeyValueParser.jsm
@@ -3,24 +3,24 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "OS",
                                "resource://gre/modules/osfile.jsm");
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "parseKeyValuePairsFromLines",
   "parseKeyValuePairs",
   "parseKeyValuePairsFromFile",
   "parseKeyValuePairsFromFileAsync"
 ];
 
-this.parseKeyValuePairsFromLines = function(lines) {
+var parseKeyValuePairsFromLines = function(lines) {
   let data = {};
   for (let line of lines) {
     if (line == "")
       continue;
 
     // can't just .split() because the value might contain = characters
     let eq = line.indexOf("=");
     if (eq != -1) {
@@ -28,35 +28,35 @@ this.parseKeyValuePairsFromLines = funct
                           line.substring(eq + 1)];
       if (key && value)
         data[key] = value.replace(/\\n/g, "\n").replace(/\\\\/g, "\\");
     }
   }
   return data;
 };
 
-this.parseKeyValuePairs = function parseKeyValuePairs(text) {
+function parseKeyValuePairs(text) {
   let lines = text.split("\n");
   return parseKeyValuePairsFromLines(lines);
-};
+}
 
 // some test setup still uses this sync version
-this.parseKeyValuePairsFromFile = function parseKeyValuePairsFromFile(file) {
+function parseKeyValuePairsFromFile(file) {
   let fstream = Cc["@mozilla.org/network/file-input-stream;1"].
                 createInstance(Ci.nsIFileInputStream);
   fstream.init(file, -1, 0, 0);
   let is = Cc["@mozilla.org/intl/converter-input-stream;1"].
            createInstance(Ci.nsIConverterInputStream);
   is.init(fstream, "UTF-8", 1024, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
   let str = {};
   let contents = "";
   while (is.readString(4096, str) != 0) {
     contents += str.value;
   }
   is.close();
   fstream.close();
   return parseKeyValuePairs(contents);
-};
+}
 
-this.parseKeyValuePairsFromFileAsync = async function parseKeyValuePairsFromFileAsync(file) {
+async function parseKeyValuePairsFromFileAsync(file) {
   let contents = await OS.File.read(file, { encoding: "utf-8" });
   return parseKeyValuePairs(contents);
-};
+}
--- a/toolkit/crashreporter/test/CrashTestUtils.jsm
+++ b/toolkit/crashreporter/test/CrashTestUtils.jsm
@@ -1,14 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
-this.EXPORTED_SYMBOLS = ["CrashTestUtils"];
+var EXPORTED_SYMBOLS = ["CrashTestUtils"];
 
-this.CrashTestUtils = {
+var CrashTestUtils = {
   // These will be defined using ctypes APIs below.
   crash: null,
   dumpHasStream: null,
   dumpHasInstructionPointerMemory: null,
   dumpWin64CFITestSymbols: null,
 
   // Constants for crash()
   // Keep these in sync with nsTestCrasher.cpp!
--- a/toolkit/forgetaboutsite/ForgetAboutSite.jsm
+++ b/toolkit/forgetaboutsite/ForgetAboutSite.jsm
@@ -7,17 +7,17 @@
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
                                "resource://gre/modules/PlacesUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Downloads",
                                "resource://gre/modules/Downloads.jsm");
 
-this.EXPORTED_SYMBOLS = ["ForgetAboutSite"];
+var EXPORTED_SYMBOLS = ["ForgetAboutSite"];
 
 /**
  * Returns true if the string passed in is part of the root domain of the
  * current string.  For example, if this is "www.mozilla.org", and we pass in
  * "mozilla.org", this will return true.  It would return false the other way
  * around.
  */
 function hasRootDomain(str, aDomain) {
@@ -33,17 +33,17 @@ function hasRootDomain(str, aDomain) {
   // Otherwise, we have aDomain as our root domain iff the index of aDomain is
   // aDomain.length subtracted from our length and (since we do not have an
   // exact match) the character before the index is a dot or slash.
   let prevChar = str[index - 1];
   return (index == (str.length - aDomain.length)) &&
          (prevChar == "." || prevChar == "/");
 }
 
-this.ForgetAboutSite = {
+var ForgetAboutSite = {
   async removeDataFromDomain(aDomain) {
     PlacesUtils.history.removePagesFromHost(aDomain, true);
 
     let promises = [];
     // Cache
     promises.push((async function() {
       // NOTE: there is no way to clear just that domain, so we clear out
       //       everything)
--- a/toolkit/modules/AppMenuNotifications.jsm
+++ b/toolkit/modules/AppMenuNotifications.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AppMenuNotifications"];
+var EXPORTED_SYMBOLS = ["AppMenuNotifications"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 function AppMenuNotification(id, mainAction, secondaryAction, options = {}) {
   this.id = id;
   this.mainAction = mainAction;
   this.secondaryAction = secondaryAction;
   this.options = options;
--- a/toolkit/modules/AsyncPrefs.jsm
+++ b/toolkit/modules/AsyncPrefs.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["AsyncPrefs"];
+var EXPORTED_SYMBOLS = ["AsyncPrefs"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const kInChildProcess = Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT;
 
 const kAllowedPrefs = new Set([
   // NB: please leave the testing prefs at the top, and sort the rest alphabetically if you add
   // anything.
--- a/toolkit/modules/Battery.jsm
+++ b/toolkit/modules/Battery.jsm
@@ -5,54 +5,54 @@
 
 "use strict";
 
 /** This module wraps around navigator.getBattery (https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getBattery).
   * and provides a framework for spoofing battery values in test code.
   * To spoof the battery values, set `Debugging.fake = true` after exporting this with a BackstagePass,
   * after which you can spoof a property yb setting the relevant property of the BatteryManager object.
   */
-this.EXPORTED_SYMBOLS = ["GetBattery", "Battery"];
+var EXPORTED_SYMBOLS = ["GetBattery", "Battery"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 // Load Services, for the BatteryManager API
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 
 // Values for the fake battery. See the documentation of Navigator.battery for the meaning of each field.
 var gFakeBattery = {
   charging: false,
   chargingTime: 0,
   dischargingTime: Infinity,
   level: 1,
 };
 
 // BackendPass-exported object for toggling spoofing
-this.Debugging = {
+var Debugging = {
   /**
    * If `false`, use the DOM Battery implementation.
    * Set it to `true` if you need to fake battery values
    * for testing or debugging purposes.
    */
   fake: false
 };
 
-this.GetBattery = function() {
+var GetBattery = function() {
   return new Services.appShell.hiddenDOMWindow.Promise(function(resolve, reject) {
     // Return fake values if spoofing is enabled, otherwise fetch the real values from the BatteryManager API
     if (Debugging.fake) {
       resolve(gFakeBattery);
       return;
     }
     Services.appShell.hiddenDOMWindow.navigator.getBattery().then(resolve, reject);
   });
 };
 
-this.Battery = {};
+var Battery = {};
 
 for (let k of ["charging", "chargingTime", "dischargingTime", "level"]) {
   let prop = k;
   Object.defineProperty(this.Battery, prop, {
     get() {
       // Return fake value if spoofing is enabled, otherwise fetch the real value from the BatteryManager API
       if (Debugging.fake) {
         return gFakeBattery[prop];
--- a/toolkit/modules/BinarySearch.jsm
+++ b/toolkit/modules/BinarySearch.jsm
@@ -1,19 +1,19 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "BinarySearch",
 ];
 
-this.BinarySearch = Object.freeze({
+var BinarySearch = Object.freeze({
 
   /**
    * Returns the index of the given target in the given array or -1 if the
    * target is not found.
    *
    * See search() for a description of this function's parameters.
    *
    * @return The index of `target` in `array` or -1 if `target` is not found.
--- a/toolkit/modules/BrowserUtils.jsm
+++ b/toolkit/modules/BrowserUtils.jsm
@@ -1,16 +1,16 @@
 /* -*- mode: js; indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "BrowserUtils" ];
+var EXPORTED_SYMBOLS = [ "BrowserUtils" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
   "resource://gre/modules/PlacesUtils.jsm");
 
 Cu.importGlobalProperties(["URL"]);
 
@@ -51,17 +51,17 @@ ReflowObserver.prototype = {
 };
 
 const FLUSH_TYPES = {
   "style": Ci.nsIDOMWindowUtils.FLUSH_STYLE,
   "layout": Ci.nsIDOMWindowUtils.FLUSH_LAYOUT,
   "display": Ci.nsIDOMWindowUtils.FLUSH_DISPLAY,
 };
 
-this.BrowserUtils = {
+var BrowserUtils = {
 
   /**
    * Prints arguments separated by a space and appends a new line.
    */
   dumpLn(...args) {
     for (let a of args)
       dump(a + " ");
     dump("\n");
--- a/toolkit/modules/CanonicalJSON.jsm
+++ b/toolkit/modules/CanonicalJSON.jsm
@@ -1,19 +1,19 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["CanonicalJSON"];
+var EXPORTED_SYMBOLS = ["CanonicalJSON"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "jsesc",
                                "resource://gre/modules/third_party/jsesc/jsesc.js");
 
-this.CanonicalJSON = {
+var CanonicalJSON = {
   /**
    * Return the canonical JSON form of the passed source, sorting all the object
    * keys recursively. Note that this method will cause an infinite loop if
    * cycles exist in the source (bug 1265357).
    *
    * @param source
    *        The elements to be serialized.
    *
--- a/toolkit/modules/CertUtils.jsm
+++ b/toolkit/modules/CertUtils.jsm
@@ -1,13 +1,13 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* 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/. */
-this.EXPORTED_SYMBOLS = [ "BadCertHandler", "checkCert", "readCertPrefs", "validateCert" ];
+var EXPORTED_SYMBOLS = [ "BadCertHandler", "checkCert", "readCertPrefs", "validateCert" ];
 
 const Ce = Components.Exception;
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 /**
  * Reads a set of expected certificate attributes from preferences. The returned
  * array can be passed to validateCert or checkCert to validate that a
@@ -21,18 +21,17 @@ ChromeUtils.import("resource://gre/modul
  * certificate. Having multiple numeric branches means that multiple
  * certificates would be accepted by validateCert.
  *
  * @param  aPrefBranch
  *         The prefix for all preferences, should end with a ".".
  * @return An array of JS objects with names / values corresponding to the
  *         expected certificate's attribute names / values.
  */
-this.readCertPrefs =
-  function readCertPrefs(aPrefBranch) {
+function readCertPrefs(aPrefBranch) {
   if (Services.prefs.getBranch(aPrefBranch).getChildList("").length == 0)
     return null;
 
   let certs = [];
   let counter = 1;
   while (true) {
     let prefBranchCert = Services.prefs.getBranch(aPrefBranch + counter + ".");
     let prefCertAttrs = prefBranchCert.getChildList("");
@@ -43,17 +42,17 @@ this.readCertPrefs =
     for (let prefCertAttr of prefCertAttrs)
       certAttrs[prefCertAttr] = prefBranchCert.getCharPref(prefCertAttr);
 
     certs.push(certAttrs);
     counter++;
   }
 
   return certs;
-};
+}
 
 /**
  * Verifies that an nsIX509Cert matches the expected certificate attribute
  * values.
  *
  * @param  aCertificate
  *         The nsIX509Cert to compare to the expected attributes.
  * @param  aCerts
@@ -61,18 +60,17 @@ this.readCertPrefs =
  *         expected certificate's attribute names / values. If this is null or
  *         an empty array then no checks are performed.
  * @throws NS_ERROR_ILLEGAL_VALUE if a certificate attribute name from the
  *         aCerts param does not exist or the value for a certificate attribute
  *         from the aCerts param is different than the expected value or
  *         aCertificate wasn't specified and aCerts is not null or an empty
  *         array.
  */
-this.validateCert =
-  function validateCert(aCertificate, aCerts) {
+function validateCert(aCertificate, aCerts) {
   // If there are no certificate requirements then just exit
   if (!aCerts || aCerts.length == 0)
     return;
 
   if (!aCertificate) {
     const missingCertErr = "A required certificate was not present.";
     Cu.reportError(missingCertErr);
     throw new Ce(missingCertErr, Cr.NS_ERROR_ILLEGAL_VALUE);
@@ -104,17 +102,17 @@ this.validateCert =
 
   if (error) {
     errors.forEach(Cu.reportError.bind(Cu));
     const certCheckErr = "Certificate checks failed. See previous errors " +
                          "for details.";
     Cu.reportError(certCheckErr);
     throw new Ce(certCheckErr, Cr.NS_ERROR_ILLEGAL_VALUE);
   }
-};
+}
 
 /**
  * Checks if the connection must be HTTPS and if so, only allows built-in
  * certificates and validates application specified certificate attribute
  * values.
  * See bug 340198 and bug 544442.
  *
  * @param  aChannel
@@ -129,18 +127,17 @@ this.validateCert =
  *         originalURI must be https.
  * @throws NS_ERROR_UNEXPECTED if a certificate is expected and the URI scheme
  *         is not https.
  *         NS_ERROR_ILLEGAL_VALUE if a certificate attribute name from the
  *         aCerts param does not exist or the value for a certificate attribute
  *         from the aCerts  param is different than the expected value.
  *         NS_ERROR_ABORT if the certificate issuer is not built-in.
  */
-this.checkCert =
-  function checkCert(aChannel, aAllowNonBuiltInCerts, aCerts) {
+function checkCert(aChannel, aAllowNonBuiltInCerts, aCerts) {
   if (!aChannel.originalURI.schemeIs("https")) {
     // Require https if there are certificate values to verify
     if (aCerts) {
       throw new Ce("SSL is required and URI scheme is not https.",
                    Cr.NS_ERROR_UNEXPECTED);
     }
     return;
   }
@@ -159,31 +156,30 @@ this.checkCert =
     issuerCert = issuerCert.issuer;
 
   const certNotBuiltInErr = "Certificate issuer is not built-in.";
   if (!issuerCert)
     throw new Ce(certNotBuiltInErr, Cr.NS_ERROR_ABORT);
 
   if (!issuerCert.isBuiltInRoot)
     throw new Ce(certNotBuiltInErr, Cr.NS_ERROR_ABORT);
-};
+}
 
 /**
  * This class implements nsIBadCertListener.  Its job is to prevent "bad cert"
  * security dialogs from being shown to the user.  It is better to simply fail
  * if the certificate is bad. See bug 304286.
  *
  * @param  aAllowNonBuiltInCerts (optional)
  *         When true certificates that aren't builtin are allowed. When false
  *         or not specified the certificate must be a builtin certificate.
  */
-this.BadCertHandler =
-  function BadCertHandler(aAllowNonBuiltInCerts) {
+function BadCertHandler(aAllowNonBuiltInCerts) {
   this.allowNonBuiltInCerts = aAllowNonBuiltInCerts;
-};
+}
 BadCertHandler.prototype = {
 
   // nsIChannelEventSink
   asyncOnChannelRedirect(oldChannel, newChannel, flags, callback) {
     if (this.allowNonBuiltInCerts) {
       callback.onRedirectVerifyCallback(Components.results.NS_OK);
       return;
     }
--- a/toolkit/modules/CharsetMenu.jsm
+++ b/toolkit/modules/CharsetMenu.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "CharsetMenu" ];
+var EXPORTED_SYMBOLS = [ "CharsetMenu" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyGetter(this, "gBundle", function() {
   const kUrl = "chrome://global/locale/charsetMenu.properties";
   return Services.strings.createBundle(kUrl);
 });
 
--- a/toolkit/modules/ClientID.jsm
+++ b/toolkit/modules/ClientID.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ClientID"];
+var EXPORTED_SYMBOLS = ["ClientID"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 
 const LOGGER_NAME = "Toolkit.Telemetry";
 const LOGGER_PREFIX = "ClientID::";
 
@@ -35,17 +35,17 @@ const PREF_CACHED_CLIENTID = "toolkit.te
  * @return {Boolean} True when the client ID has valid format, or False
  * otherwise.
  */
 function isValidClientID(id) {
   const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
   return UUID_REGEX.test(id);
 }
 
-this.ClientID = Object.freeze({
+var ClientID = Object.freeze({
   /**
    * This returns a promise resolving to the the stable client ID we use for
    * data reporting (FHR & Telemetry).
    *
    * WARNING: This functionality is duplicated for Android (see GeckoProfile.getClientId
    * for more). There are Java tests (TestGeckoProfile) to ensure the functionality is
    * consistent and Gecko tests to come (bug 1249156). However, THIS IS NOT FOOLPROOF.
    * Be careful when changing this code and, in particular, the underlying file format.
--- a/toolkit/modules/Color.jsm
+++ b/toolkit/modules/Color.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Color"];
+var EXPORTED_SYMBOLS = ["Color"];
 
 /**
  * Color class, which describes a color.
  * In the future, this object may be extended to allow for conversions between
  * different color formats and notations, support transparency.
  *
  * @param {Number} r Red color component
  * @param {Number} g Green color component
--- a/toolkit/modules/Console.jsm
+++ b/toolkit/modules/Console.jsm
@@ -15,17 +15,17 @@
  * - The Firebug console API is implemented in many places with differences in
  *   the implementations, so there isn't a single reference to adhere to
  * - The Firebug console is a rich display compared with dump(), so there will
  *   be many things that we can't replicate
  * - The primary use of this API is debugging and error logging so the perfect
  *   implementation isn't always required (or even well defined)
  */
 
-this.EXPORTED_SYMBOLS = [ "console", "ConsoleAPI" ];
+var EXPORTED_SYMBOLS = [ "console", "ConsoleAPI" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 
 var gTimerRegistry = new Map();
 
@@ -720,10 +720,9 @@ ConsoleAPI.prototype = {
     return this._maxLogLevel || "all";
   },
 
   set maxLogLevel(aValue) {
     this._maxLogLevel = this._maxExplicitLogLevel = aValue;
   },
 };
 
-this.console = new ConsoleAPI();
-this.ConsoleAPI = ConsoleAPI;
+var console = new ConsoleAPI();
--- a/toolkit/modules/DateTimePickerHelper.jsm
+++ b/toolkit/modules/DateTimePickerHelper.jsm
@@ -6,30 +6,30 @@
 
 const DEBUG = false;
 function debug(aStr) {
   if (DEBUG) {
     dump("-*- DateTimePickerHelper: " + aStr + "\n");
   }
 }
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DateTimePickerHelper"
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 /*
  * DateTimePickerHelper receives message from content side (input box) and
  * is reposible for opening, closing and updating the picker. Similary,
  * DateTimePickerHelper listens for picker's events and notifies the content
  * side (input box) about them.
  */
-this.DateTimePickerHelper = {
+var DateTimePickerHelper = {
   picker: null,
   weakBrowser: null,
 
   MESSAGES: [
     "FormDateTime:OpenPicker",
     "FormDateTime:ClosePicker",
     "FormDateTime:UpdatePicker"
   ],
--- a/toolkit/modules/DeferredTask.jsm
+++ b/toolkit/modules/DeferredTask.jsm
@@ -1,17 +1,17 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ts=2 et sw=2 tw=80 filetype=javascript: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DeferredTask",
 ];
 
 /**
  * Sets up a function or an asynchronous task whose execution can be triggered
  * after a defined delay.  Multiple attempts to run the task before the delay
  * has passed are coalesced.  The task cannot be re-entered while running, but
  * can be executed again after a previous run finished.
@@ -107,17 +107,17 @@ const Timer = Components.Constructor("@m
  *        inactivity is guaranteed to pass between multiple executions of the
  *        task, except on finalization, when the task may restart immediately
  *        after the previous execution finished.
  * @param aIdleTimeoutMs
  *        The maximum time to wait for an idle slot on the main thread after
  *        aDelayMs have elapsed. If omitted, waits indefinitely for an idle
  *        callback.
  */
-this.DeferredTask = function(aTaskFn, aDelayMs, aIdleTimeoutMs) {
+var DeferredTask = function(aTaskFn, aDelayMs, aIdleTimeoutMs) {
   this._taskFn = aTaskFn;
   this._delayMs = aDelayMs;
   this._timeoutMs = aIdleTimeoutMs;
 };
 
 this.DeferredTask.prototype = {
   /**
    * Function or generator function to execute.
--- a/toolkit/modules/Deprecated.jsm
+++ b/toolkit/modules/Deprecated.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "Deprecated" ];
+var EXPORTED_SYMBOLS = [ "Deprecated" ];
 
 const PREF_DEPRECATION_WARNINGS = "devtools.errorconsole.deprecation_warnings";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 // A flag that indicates whether deprecation warnings should be logged.
 var logWarnings = Services.prefs.getBoolPref(PREF_DEPRECATION_WARNINGS);
 
@@ -36,17 +36,17 @@ function stringifyCallstack(aStack) {
   while (frame) {
     msg += frame.filename + " " + frame.lineNumber +
       " " + frame.name + "\n";
     frame = frame.caller;
   }
   return msg;
 }
 
-this.Deprecated = {
+var Deprecated = {
   /**
    * Log a deprecation warning.
    *
    * @param string aText
    *        Deprecation warning text.
    * @param string aUrl
    *        A URL pointing to documentation describing deprecation
    *        and the way to address it.
--- a/toolkit/modules/E10SUtils.jsm
+++ b/toolkit/modules/E10SUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["E10SUtils"];
+var EXPORTED_SYMBOLS = ["E10SUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyPreferenceGetter(this, "useSeparateFileUriProcess",
                                       "browser.tabs.remote.separateFileUriProcess", false);
 XPCOMUtils.defineLazyPreferenceGetter(this, "allowLinkedWebInFileUriProcess",
                                       "browser.tabs.remote.allowLinkedWebInFileUriProcess", false);
@@ -73,17 +73,17 @@ function validatedWebRemoteType(aPreferr
     }
 
     return FILE_REMOTE_TYPE;
   }
 
   return WEB_REMOTE_TYPE;
 }
 
-this.E10SUtils = {
+var E10SUtils = {
   DEFAULT_REMOTE_TYPE,
   NOT_REMOTE,
   WEB_REMOTE_TYPE,
   FILE_REMOTE_TYPE,
   EXTENSION_REMOTE_TYPE,
   LARGE_ALLOCATION_REMOTE_TYPE,
 
   canLoadURIInProcess(aURL, aProcess) {
--- a/toolkit/modules/EventEmitter.jsm
+++ b/toolkit/modules/EventEmitter.jsm
@@ -5,17 +5,17 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "console",
                                "resource://gre/modules/Console.jsm");
 
-this.EXPORTED_SYMBOLS = ["EventEmitter"];
+var EXPORTED_SYMBOLS = ["EventEmitter"];
 
 let EventEmitter = this.EventEmitter = function() {};
 
 let loggingEnabled = Services.prefs.getBoolPref("toolkit.dump.emit");
 Services.prefs.addObserver("toolkit.dump.emit", {
   observe: () => {
     loggingEnabled = Services.prefs.getBoolPref("toolkit.dump.emit");
   }
--- a/toolkit/modules/FileUtils.jsm
+++ b/toolkit/modules/FileUtils.jsm
@@ -1,22 +1,22 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "FileUtils" ];
+var EXPORTED_SYMBOLS = [ "FileUtils" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "gDirService",
                                    "@mozilla.org/file/directory_service;1",
                                    "nsIProperties");
 
-this.FileUtils = {
+var FileUtils = {
   MODE_RDONLY: 0x01,
   MODE_WRONLY: 0x02,
   MODE_RDWR: 0x04,
   MODE_CREATE: 0x08,
   MODE_APPEND: 0x10,
   MODE_TRUNCATE: 0x20,
 
   PERMS_FILE: 0o644,
--- a/toolkit/modules/Finder.jsm
+++ b/toolkit/modules/Finder.jsm
@@ -1,14 +1,14 @@
 // vim: set ts=2 sw=2 sts=2 tw=80:
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["Finder", "GetClipboardSearchString"];
+var EXPORTED_SYMBOLS = ["Finder", "GetClipboardSearchString"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Geometry.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "BrowserUtils",
   "resource://gre/modules/BrowserUtils.jsm");
 
@@ -622,10 +622,8 @@ function GetClipboardSearchString(aLoadC
       data = data.value.QueryInterface(Ci.nsISupportsString);
       searchString = data.toString();
     }
   } catch (ex) {}
 
   return searchString;
 }
 
-this.Finder = Finder;
-this.GetClipboardSearchString = GetClipboardSearchString;
--- a/toolkit/modules/FinderHighlighter.jsm
+++ b/toolkit/modules/FinderHighlighter.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["FinderHighlighter"];
+var EXPORTED_SYMBOLS = ["FinderHighlighter"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Color", "resource://gre/modules/Color.jsm");
 ChromeUtils.defineModuleGetter(this, "Rect", "resource://gre/modules/Geometry.jsm");
 XPCOMUtils.defineLazyGetter(this, "kDebug", () => {
   const kDebugPref = "findbar.modalHighlight.debug";
--- a/toolkit/modules/FinderIterator.jsm
+++ b/toolkit/modules/FinderIterator.jsm
@@ -1,32 +1,32 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["FinderIterator"];
+var EXPORTED_SYMBOLS = ["FinderIterator"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "NLP", "resource://gre/modules/NLP.jsm");
 ChromeUtils.defineModuleGetter(this, "Rect", "resource://gre/modules/Geometry.jsm");
 
 const kDebug = false;
 const kIterationSizeMax = 100;
 const kTimeoutPref = "findbar.iteratorTimeout";
 
 /**
  * FinderIterator singleton. See the documentation for the `start()` method to
  * learn more.
  */
-this.FinderIterator = {
+var FinderIterator = {
   _currentParams: null,
   _listeners: new Map(),
   _catchingUp: new Set(),
   _previousParams: null,
   _previousRanges: [],
   _spawnId: 0,
   _timeout: Services.prefs.getIntPref(kTimeoutPref),
   _timer: null,
--- a/toolkit/modules/FormLikeFactory.jsm
+++ b/toolkit/modules/FormLikeFactory.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["FormLikeFactory"];
+var EXPORTED_SYMBOLS = ["FormLikeFactory"];
 
 /**
  * A factory to generate FormLike objects that represent a set of related fields
  * which aren't necessarily marked up with a <form> element. FormLike's emulate
  * the properties of an HTMLFormElement which are relevant to form tasks.
  */
 let FormLikeFactory = {
   _propsFromForm: [
--- a/toolkit/modules/GMPInstallManager.jsm
+++ b/toolkit/modules/GMPInstallManager.jsm
@@ -1,16 +1,14 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [];
-
 const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu, manager: Cm} =
   Components;
 // 1 day default
 const DEFAULT_SECONDS_BETWEEN_CHECKS = 60 * 60 * 24;
 
 var GMPInstallFailureReason = {
   GMP_INVALID: 1,
   GMP_HIDDEN: 2,
@@ -22,18 +20,18 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/GMPUtils.jsm");
 ChromeUtils.import("resource://gre/modules/addons/ProductAddonChecker.jsm");
 
-this.EXPORTED_SYMBOLS = ["GMPInstallManager", "GMPExtractor", "GMPDownloader",
-                         "GMPAddon"];
+var EXPORTED_SYMBOLS = ["GMPInstallManager", "GMPExtractor", "GMPDownloader",
+                        "GMPAddon"];
 
 // Shared code for suppressing bad cert dialogs
 XPCOMUtils.defineLazyGetter(this, "gCertUtils", function() {
   let temp = { };
   ChromeUtils.import("resource://gre/modules/CertUtils.jsm", temp);
   return temp;
 });
 
--- a/toolkit/modules/GMPUtils.jsm
+++ b/toolkit/modules/GMPUtils.jsm
@@ -2,21 +2,21 @@
  * 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 {classes: Cc, interfaces: Ci, results: Cr, utils: Cu, manager: Cm} =
   Components;
 
-this.EXPORTED_SYMBOLS = [ "GMP_PLUGIN_IDS",
-                          "GMPPrefs",
-                          "GMPUtils",
-                          "OPEN_H264_ID",
-                          "WIDEVINE_ID" ];
+var EXPORTED_SYMBOLS = [ "GMP_PLUGIN_IDS",
+                         "GMPPrefs",
+                         "GMPUtils",
+                         "OPEN_H264_ID",
+                         "WIDEVINE_ID" ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 // GMP IDs
 const OPEN_H264_ID  = "gmp-gmpopenh264";
 const WIDEVINE_ID   = "gmp-widevinecdm";
 const GMP_PLUGIN_IDS = [ OPEN_H264_ID, WIDEVINE_ID ];
@@ -26,17 +26,17 @@ var GMPPluginUnsupportedReason = {
   WINDOWS_VERSION: 2,
 };
 
 var GMPPluginHiddenReason = {
   UNSUPPORTED: 1,
   EME_DISABLED: 2,
 };
 
-this.GMPUtils = {
+var GMPUtils = {
   /**
    * Checks whether or not a given plugin is hidden. Hidden plugins are neither
    * downloaded nor displayed in the addons manager.
    * @param   aPlugin
    *          The plugin to check.
    */
   isPluginHidden(aPlugin) {
     if (this._is32bitModeMacOS()) {
@@ -108,17 +108,17 @@ this.GMPUtils = {
   _isPluginForceSupported(aPlugin) {
     return GMPPrefs.getBool(GMPPrefs.KEY_PLUGIN_FORCE_SUPPORTED, false, aPlugin.id);
   },
 };
 
 /**
  * Manages preferences for GMP addons
  */
-this.GMPPrefs = {
+var GMPPrefs = {
   KEY_EME_ENABLED:              "media.eme.enabled",
   KEY_PLUGIN_ENABLED:           "media.{0}.enabled",
   KEY_PLUGIN_LAST_UPDATE:       "media.{0}.lastUpdate",
   KEY_PLUGIN_VERSION:           "media.{0}.version",
   KEY_PLUGIN_AUTOUPDATE:        "media.{0}.autoupdate",
   KEY_PLUGIN_VISIBLE:           "media.{0}.visible",
   KEY_PLUGIN_ABI:               "media.{0}.abi",
   KEY_PLUGIN_FORCE_SUPPORTED:   "media.{0}.forceSupported",
--- a/toolkit/modules/Geometry.jsm
+++ b/toolkit/modules/Geometry.jsm
@@ -1,22 +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/. */
 
-this.EXPORTED_SYMBOLS = ["Point", "Rect"];
+var EXPORTED_SYMBOLS = ["Point", "Rect"];
 
 /**
  * Simple Point class.
  *
  * Any method that takes an x and y may also take a point.
  */
-this.Point = function Point(x, y) {
+function Point(x, y) {
   this.set(x, y);
-};
+}
 
 Point.prototype = {
   clone: function clone() {
     return new Point(this.x, this.y);
   },
 
   set: function set(x, y) {
     this.x = x;
@@ -78,22 +78,22 @@ Point.prototype = {
 /**
  * Rect is a simple data structure for representation of a rectangle supporting
  * many basic geometric operations.
  *
  * NOTE: Since its operations are closed, rectangles may be empty and will report
  * non-positive widths and heights in that case.
  */
 
-this.Rect = function Rect(x, y, w, h) {
+function Rect(x, y, w, h) {
   this.left = x;
   this.top = y;
   this.right = x + w;
   this.bottom = y + h;
-};
+}
 
 Rect.fromRect = function fromRect(r) {
   return new Rect(r.left, r.top, r.right - r.left, r.bottom - r.top);
 };
 
 Rect.prototype = {
   get x() { return this.left; },
   get y() { return this.top; },
--- a/toolkit/modules/HiddenFrame.jsm
+++ b/toolkit/modules/HiddenFrame.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["HiddenFrame"];
+var EXPORTED_SYMBOLS = ["HiddenFrame"];
 
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const XUL_PAGE = "chrome://global/content/win.xul";
 
 const gAllHiddenFrames = new WeakSet();
--- a/toolkit/modules/InlineSpellChecker.jsm
+++ b/toolkit/modules/InlineSpellChecker.jsm
@@ -1,24 +1,24 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "InlineSpellChecker",
-                          "SpellCheckHelper" ];
+var EXPORTED_SYMBOLS = [ "InlineSpellChecker",
+                         "SpellCheckHelper" ];
 var gLanguageBundle;
 var gRegionBundle;
 const MAX_UNDO_STACK_DEPTH = 1;
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.InlineSpellChecker = function InlineSpellChecker(aEditor) {
+function InlineSpellChecker(aEditor) {
   this.init(aEditor);
   this.mAddedWordStack = []; // We init this here to preserve it between init/uninit calls
-};
+}
 
 InlineSpellChecker.prototype = {
   // Call this function to initialize for a given editor
   init(aEditor) {
     this.uninit();
     this.mEditor = aEditor;
     try {
       this.mInlineSpellChecker = this.mEditor.getInlineSpellChecker(true);
--- a/toolkit/modules/InlineSpellCheckerContent.jsm
+++ b/toolkit/modules/InlineSpellCheckerContent.jsm
@@ -3,17 +3,17 @@
  * 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";
 
 var { InlineSpellChecker, SpellCheckHelper } =
   ChromeUtils.import("resource://gre/modules/InlineSpellChecker.jsm", {});
 
-this.EXPORTED_SYMBOLS = [ "InlineSpellCheckerContent" ];
+var EXPORTED_SYMBOLS = [ "InlineSpellCheckerContent" ];
 
 var InlineSpellCheckerContent = {
   _spellChecker: null,
   _manager: null,
 
   initContextMenu(event, editFlags, messageManager) {
     this._manager = messageManager;
 
--- a/toolkit/modules/Integration.jsm
+++ b/toolkit/modules/Integration.jsm
@@ -101,17 +101,17 @@
  * generate a console error message, and will throw an exception where possible.
  * For example, you cannot register observers directly on the combined object.
  * This helps preventing mistakes due to the fact that the combined object
  * reference changes when new integration overrides are registered.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Integration",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 /**
  * Maps integration point names to IntegrationPoint objects.
  */
@@ -119,31 +119,31 @@ const gIntegrationPoints = new Map();
 
 /**
  * This Proxy object creates IntegrationPoint objects using their name as key.
  * The objects will be the same for the duration of the process. For example:
  *
  *   Integration.downloads.register(...);
  *   Integration["addon-provided-integration"].register(...);
  */
-this.Integration = new Proxy({}, {
+var Integration = new Proxy({}, {
   get(target, name) {
     let integrationPoint = gIntegrationPoints.get(name);
     if (!integrationPoint) {
       integrationPoint = new IntegrationPoint();
       gIntegrationPoints.set(name, integrationPoint);
     }
     return integrationPoint;
   },
 });
 
 /**
  * Individual integration point for which overrides can be registered.
  */
-this.IntegrationPoint = function() {
+var IntegrationPoint = function() {
   this._overrideFns = new Set();
   this._combined = {
     QueryInterface() {
       let ex = new Components.Exception(
                    "Integration objects should not be used with XPCOM because" +
                    " they change when new overrides are registered.",
                    Cr.NS_ERROR_NO_INTERFACE);
       Cu.reportError(ex);
--- a/toolkit/modules/JSONFile.jsm
+++ b/toolkit/modules/JSONFile.jsm
@@ -23,17 +23,17 @@
  * An asynchronous shutdown observer makes sure that data is always saved before
  * the browser is closed. The data cannot be modified during shutdown.
  *
  * The file is stored in JSON format, without indentation, using UTF-8 encoding.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "JSONFile",
 ];
 
 // Globals
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AsyncShutdown",
--- a/toolkit/modules/LightweightThemeConsumer.jsm
+++ b/toolkit/modules/LightweightThemeConsumer.jsm
@@ -1,37 +1,36 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["LightweightThemeConsumer"];
+var EXPORTED_SYMBOLS = ["LightweightThemeConsumer"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 // Get the theme variables from the app resource directory.
 // This allows per-app variables.
 ChromeUtils.import("resource:///modules/ThemeVariableMap.jsm");
 
 ChromeUtils.defineModuleGetter(this, "LightweightThemeImageOptimizer",
   "resource://gre/modules/addons/LightweightThemeImageOptimizer.jsm");
 
-this.LightweightThemeConsumer =
- function LightweightThemeConsumer(aDocument) {
+function LightweightThemeConsumer(aDocument) {
   this._doc = aDocument;
   this._win = aDocument.defaultView;
 
   Services.obs.addObserver(this, "lightweight-theme-styling-update");
 
   var temp = {};
   ChromeUtils.import("resource://gre/modules/LightweightThemeManager.jsm", temp);
   this._update(temp.LightweightThemeManager.currentThemeForDisplay);
   this._win.addEventListener("unload", this, { once: true });
-};
+}
 
 LightweightThemeConsumer.prototype = {
   _lastData: null,
   // Whether the active lightweight theme should be shown on the window.
   _enabled: true,
   // Whether a lightweight theme is enabled.
   _active: false,
 
--- a/toolkit/modules/Log.jsm
+++ b/toolkit/modules/Log.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Log"];
+var EXPORTED_SYMBOLS = ["Log"];
 
 const ONE_BYTE = 1;
 const ONE_KILOBYTE = 1024 * ONE_BYTE;
 const ONE_MEGABYTE = 1024 * ONE_KILOBYTE;
 
 const STREAM_SEGMENT_SIZE = 4096;
 const PR_UINT32_MAX = 0xffffffff;
 
@@ -26,17 +26,17 @@ const INTERNAL_FIELDS = new Set(["_level
 /*
  * Dump a message everywhere we can if we have a failure.
  */
 function dumpError(text) {
   dump(text + "\n");
   Cu.reportError(text);
 }
 
-this.Log = {
+var Log = {
   Level: {
     Fatal:  70,
     Error:  60,
     Warn:   50,
     Info:   40,
     Config: 30,
     Debug:  20,
     Trace:  10,
--- a/toolkit/modules/Memory.jsm
+++ b/toolkit/modules/Memory.jsm
@@ -1,21 +1,21 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Memory"];
+var EXPORTED_SYMBOLS = ["Memory"];
 
 // How long we should wait for the Promise to resolve.
 const TIMEOUT_INTERVAL = 2000;
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.Memory = {
+var Memory = {
   /**
    * This function returns a Promise that resolves with an Object that
    * describes basic memory usage for each content process and the parent
    * process.
    * @returns Promise
    * @resolves JS Object
    * An Object in the following format:
    * {
--- a/toolkit/modules/NLP.jsm
+++ b/toolkit/modules/NLP.jsm
@@ -1,24 +1,24 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["NLP"];
+var EXPORTED_SYMBOLS = ["NLP"];
 
 /**
  * NLP, which stands for Natural Language Processing, is a module that provides
  * an entry point to various methods to interface with human language.
  *
  * At least, that's the goal. Eventually. Right now, the find toolbar only really
  * needs the Levenshtein distance algorithm.
  */
-this.NLP = {
+var NLP = {
   /**
    * Calculate the Levenshtein distance between two words.
    * The implementation of this method was heavily inspired by
    * http://locutus.io/php/strings/levenshtein/index.html
    * License: MIT.
    *
    * @param  {String} word1   Word to compare against
    * @param  {String} word2   Word that may be different
--- a/toolkit/modules/NewTabUtils.jsm
+++ b/toolkit/modules/NewTabUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["NewTabUtils"];
+var EXPORTED_SYMBOLS = ["NewTabUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.importGlobalProperties(["btoa"]);
 
 ChromeUtils.defineModuleGetter(this, "PlacesUtils",
   "resource://gre/modules/PlacesUtils.jsm");
 
@@ -2096,17 +2096,17 @@ var ExpirationFilter = {
       aCallback(urls);
     });
   }
 };
 
 /**
  * Singleton that provides the public API of this JSM.
  */
-this.NewTabUtils = {
+var NewTabUtils = {
   _initialized: false,
 
   /**
    * Extract a "site" from a url in a way that multiple urls of a "site" returns
    * the same "site."
    * @param aUrl Url spec string
    * @return The "site" string or null
    */
--- a/toolkit/modules/ObjectUtils.jsm
+++ b/toolkit/modules/ObjectUtils.jsm
@@ -3,27 +3,27 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // Portions of this file are originally from narwhal.js (http://narwhaljs.org)
 // Copyright (c) 2009 Thomas Robinson <280north.com>
 // MIT license: http://opensource.org/licenses/MIT
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "ObjectUtils"
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 // Used only to cause test failures.
 
 var pSlice = Array.prototype.slice;
 
-this.ObjectUtils = {
+var ObjectUtils = {
   /**
    * This tests objects & values for deep equality.
    *
    * We check using the most exact approximation of equality between two objects
    * to keep the chance of false positives to a minimum.
    * `JSON.stringify` is not designed to be used for this purpose; objects may
    * have ambiguous `toJSON()` implementations that would influence the test.
    *
--- a/toolkit/modules/PageMenu.jsm
+++ b/toolkit/modules/PageMenu.jsm
@@ -1,16 +1,16 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PageMenuParent", "PageMenuChild"];
+var EXPORTED_SYMBOLS = ["PageMenuParent", "PageMenuChild"];
 
-this.PageMenu = function PageMenu() {
-};
+function PageMenu() {
+}
 
 PageMenu.prototype = {
   PAGEMENU_ATTR: "pagemenu",
   GENERATEDITEMID_ATTR: "generateditemid",
 
   _popup: null,
 
   // Only one of builder or browser will end up getting set.
@@ -235,18 +235,18 @@ PageMenu.prototype = {
         }
         element.removeChild(child);
       }
     }
   }
 };
 
 // This object is expected to be used from a parent process.
-this.PageMenuParent = function PageMenuParent() {
-};
+function PageMenuParent() {
+}
 
 PageMenuParent.prototype = {
   __proto__: PageMenu.prototype,
 
   /*
    * Given a target node and popup, add the context menu to the popup. This is
    * intended to be called when a single process is used. This is equivalent to
    * calling PageMenuChild.build and PageMenuParent.addToPopup in sequence.
@@ -271,18 +271,18 @@ PageMenuParent.prototype = {
    * Returns true if custom menu items were present.
    */
   addToPopup(aMenu, aBrowser, aPopup) {
     return this.buildAndAttachMenuWithObject(aMenu, aBrowser, aPopup);
   }
 };
 
 // This object is expected to be used from a child process.
-this.PageMenuChild = function PageMenuChild() {
-};
+function PageMenuChild() {
+}
 
 PageMenuChild.prototype = {
   __proto__: PageMenu.prototype,
 
   /*
    * Given a target node, return a JSON object for the custom menu commands. The
    * object will consist of a hierarchical structure of menus, menuitems or
    * separators. Supported properties of each are:
--- a/toolkit/modules/PageMetadata.jsm
+++ b/toolkit/modules/PageMetadata.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PageMetadata"];
+var EXPORTED_SYMBOLS = ["PageMetadata"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/microformat-shiv.js");
 
 XPCOMUtils.defineLazyServiceGetter(this, "UnescapeService",
                                    "@mozilla.org/feed-unescapehtml;1",
                                    "nsIScriptableUnescapeHTML");
@@ -22,17 +22,17 @@ XPCOMUtils.defineLazyServiceGetter(this,
  */
 const DISCOVER_IMAGES_MAX  = 5;
 
 
 /**
  * Extract metadata and microformats from a HTML document.
  * @type {Object}
  */
-this.PageMetadata = {
+var PageMetadata = {
   /**
    * Get all metadata from an HTML document. This includes:
    * - URL
    * - title
    * - Metadata specified in <meta> tags, including OpenGraph data
    * - Links specified in <link> tags (short, canonical, preview images, alternative)
    * - Content that can be found in the page content that we consider useful metadata
    * - Microformats
--- a/toolkit/modules/PermissionsUtils.jsm
+++ b/toolkit/modules/PermissionsUtils.jsm
@@ -1,13 +1,13 @@
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["PermissionsUtils"];
+var EXPORTED_SYMBOLS = ["PermissionsUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/BrowserUtils.jsm");
 
 
 var gImportedPrefBranches = new Set();
 
 function importPrefBranch(aPrefBranch, aPermission, aAction) {
@@ -47,17 +47,17 @@ function importPrefBranch(aPrefBranch, a
       }
     }
 
     Services.prefs.setCharPref(pref, "");
   }
 }
 
 
-this.PermissionsUtils = {
+var PermissionsUtils = {
   /**
    * Import permissions from perferences to the Permissions Manager. After being
    * imported, all processed permissions will be set to an empty string.
    * Perferences are only processed once during the application's
    * lifetime - it's safe to call this multiple times without worrying about
    * doing unnecessary work, as the preferences branch will only be processed
    * the first time.
    *
--- a/toolkit/modules/PopupNotifications.jsm
+++ b/toolkit/modules/PopupNotifications.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PopupNotifications"];
+var EXPORTED_SYMBOLS = ["PopupNotifications"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 ChromeUtils.import("resource://gre/modules/PromiseUtils.jsm");
 
 const NOTIFICATION_EVENT_DISMISSED = "dismissed";
 const NOTIFICATION_EVENT_REMOVED = "removed";
 const NOTIFICATION_EVENT_SHOWING = "showing";
@@ -204,17 +204,17 @@ Notification.prototype = {
  *        An optional object with the following optional properties:
  *        {
  *          shouldSuppress:
  *            If this function returns true, then all notifications are
  *            suppressed for this window. This state is checked on construction
  *            and when the "anchorVisibilityChange" method is called.
  *        }
  */
-this.PopupNotifications = function PopupNotifications(tabbrowser, panel,
+function PopupNotifications(tabbrowser, panel,
                                                       iconBox, options = {}) {
   if (!(tabbrowser instanceof Ci.nsIDOMXULElement))
     throw "Invalid tabbrowser";
   if (iconBox && !(iconBox instanceof Ci.nsIDOMXULElement))
     throw "Invalid iconBox";
   if (!(panel instanceof Ci.nsIDOMXULElement))
     throw "Invalid panel";
 
@@ -272,17 +272,17 @@ this.PopupNotifications = function Popup
   }, true);
   this.window.addEventListener("MozDOMFullscreen:Exited", () => {
     this.panel.setAttribute("followanchor", !locationBarHidden);
   }, true);
 
   this.window.addEventListener("activate", this, true);
   if (this.tabbrowser.tabContainer)
     this.tabbrowser.tabContainer.addEventListener("TabSelect", this, true);
-};
+}
 
 PopupNotifications.prototype = {
 
   window: null,
   panel: null,
   tabbrowser: null,
 
   _iconBox: null,
--- a/toolkit/modules/Preferences.jsm
+++ b/toolkit/modules/Preferences.jsm
@@ -1,37 +1,36 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["Preferences"];
+var EXPORTED_SYMBOLS = ["Preferences"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 // The minimum and maximum integers that can be set as preferences.
 // The range of valid values is narrower than the range of valid JS values
 // because the native preferences code treats integers as NSPR PRInt32s,
 // which are 32-bit signed integers on all platforms.
 const MAX_INT = 0x7FFFFFFF; // Math.pow(2, 31) - 1
 const MIN_INT = -0x80000000;
 
-this.Preferences =
-  function Preferences(args) {
-    this._cachedPrefBranch = null;
-    if (isObject(args)) {
-      if (args.branch)
-        this._branchStr = args.branch;
-      if (args.defaultBranch)
-        this._defaultBranch = args.defaultBranch;
-      if (args.privacyContext)
-        this._privacyContext = args.privacyContext;
-    } else if (args)
-      this._branchStr = args;
-  };
+function Preferences(args) {
+  this._cachedPrefBranch = null;
+  if (isObject(args)) {
+    if (args.branch)
+      this._branchStr = args.branch;
+    if (args.defaultBranch)
+      this._defaultBranch = args.defaultBranch;
+    if (args.privacyContext)
+      this._privacyContext = args.privacyContext;
+  } else if (args)
+    this._branchStr = args;
+}
 
 /**
  * Get the value of a pref, if any; otherwise return the default value.
  *
  * @param   prefName  {String|Array}
  *          the pref to get, or an array of prefs to get
  *
  * @param   defaultValue
--- a/toolkit/modules/PrivateBrowsingUtils.jsm
+++ b/toolkit/modules/PrivateBrowsingUtils.jsm
@@ -1,23 +1,23 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["PrivateBrowsingUtils"];
+var EXPORTED_SYMBOLS = ["PrivateBrowsingUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const kAutoStartPref = "browser.privatebrowsing.autostart";
 
 // This will be set to true when the PB mode is autostarted from the command
 // line for the current session.
 var gTemporaryAutoStartMode = false;
 
-this.PrivateBrowsingUtils = {
+var PrivateBrowsingUtils = {
   // Rather than passing content windows to this function, please use
   // isBrowserPrivate since it works with e10s.
   isWindowPrivate: function pbu_isWindowPrivate(aWindow) {
     if (!aWindow.isChromeWindow) {
       dump("WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. " +
            "Use isContentWindowPrivate instead (but only for frame scripts).\n"
            + new Error().stack);
     }
--- a/toolkit/modules/ProfileAge.jsm
+++ b/toolkit/modules/ProfileAge.jsm
@@ -1,26 +1,26 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ProfileAge"];
+var EXPORTED_SYMBOLS = ["ProfileAge"];
 
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://services-common/utils.js");
 
 /**
  * Profile access to times.json (eg, creation/reset time).
  * This is separate from the provider to simplify testing and enable extraction
  * to a shared location in the future.
  */
-this.ProfileAge = function(profile, log) {
+var ProfileAge = function(profile, log) {
   this.profilePath = profile || OS.Constants.Path.profileDir;
   if (!this.profilePath) {
     throw new Error("No profile directory.");
   }
   if (!log) {
     log = Log.repository.getLogger("Toolkit.ProfileAge");
   }
   this._log = log;
--- a/toolkit/modules/PromiseMessage.jsm
+++ b/toolkit/modules/PromiseMessage.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PromiseMessage"];
+var EXPORTED_SYMBOLS = ["PromiseMessage"];
 
 var msgId = 0;
 
 var PromiseMessage = {
   send(messageManager, name, data = {}) {
     const id = `${name}_${msgId++}`;
 
     // Make a copy of data so that the caller doesn't see us setting 'id':
--- a/toolkit/modules/PromiseUtils.jsm
+++ b/toolkit/modules/PromiseUtils.jsm
@@ -1,20 +1,20 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PromiseUtils"];
+var EXPORTED_SYMBOLS = ["PromiseUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
-this.PromiseUtils = {
+var PromiseUtils = {
   /*
    * Creates a new pending Promise and provide methods to resolve and reject this Promise.
    *
    * @return {Deferred} an object consisting of a pending Promise "promise"
    * and methods "resolve" and "reject" to change its state.
    */
   defer() {
     return new Deferred();
--- a/toolkit/modules/PropertyListUtils.jsm
+++ b/toolkit/modules/PropertyListUtils.jsm
@@ -50,27 +50,27 @@
  *    theoretical NSSet objects the same way NSArray is represented.
  *    While this would most certainly work, it is not the right way to handle
  *    it.  A more correct representation for a set is a js generator, which would
  *    read the set lazily and has no indices semantics.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["PropertyListUtils"];
+var EXPORTED_SYMBOLS = ["PropertyListUtils"];
 
 Cu.importGlobalProperties(["File", "FileReader"]);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "ctypes",
                                "resource://gre/modules/ctypes.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 
-this.PropertyListUtils = Object.freeze({
+var PropertyListUtils = Object.freeze({
   /**
    * Asynchronously reads a file as a property list.
    *
    * @param aFile (nsIDOMBlob/nsIFile)
    *        the file to be read as a property list.
    * @param aCallback
    *        If the property list is read successfully, aPropertyListRoot is set
    *        to the root object of the property list.
--- a/toolkit/modules/RemoteFinder.jsm
+++ b/toolkit/modules/RemoteFinder.jsm
@@ -1,15 +1,15 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 // vim: set ts=2 sw=2 sts=2 et tw=80: */
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["RemoteFinder", "RemoteFinderListener"];
+var EXPORTED_SYMBOLS = ["RemoteFinder", "RemoteFinderListener"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Geometry.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "GetClipboardSearchString",
   () => ChromeUtils.import("resource://gre/modules/Finder.jsm", {}).GetClipboardSearchString
 );
 XPCOMUtils.defineLazyGetter(this, "Rect",
--- a/toolkit/modules/RemotePageManager.jsm
+++ b/toolkit/modules/RemotePageManager.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["RemotePages", "RemotePageManager", "PageListener"];
+var EXPORTED_SYMBOLS = ["RemotePages", "RemotePageManager", "PageListener"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 function MessageListener() {
   this.listeners = new Map();
 }
 
@@ -54,17 +54,17 @@ MessageListener.prototype = {
 
 
 /**
  * Creates a RemotePages object which listens for new remote pages of some
  * particular URLs. A "RemotePage:Init" message will be dispatched to this
  * object for every page loaded. Message listeners added to this object receive
  * messages from all loaded pages from the requested urls.
  */
-this.RemotePages = function(urls) {
+var RemotePages = function(urls) {
   this.urls = Array.isArray(urls) ? urls : [urls];
   this.messagePorts = new Set();
   this.listener = new MessageListener();
   this.destroyed = false;
 
   this.portCreated = this.portCreated.bind(this);
   this.portMessageReceived = this.portMessageReceived.bind(this);
 
@@ -528,17 +528,17 @@ var RemotePageManagerInternal = {
     callback(port.publicPort);
   }
 };
 
 if (Services.appinfo.processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT)
   RemotePageManagerInternal.init();
 
 // The public API for the above object
-this.RemotePageManager = {
+var RemotePageManager = {
   addRemotePageListener: RemotePageManagerInternal.addRemotePageListener.bind(RemotePageManagerInternal),
   removeRemotePageListener: RemotePageManagerInternal.removeRemotePageListener.bind(RemotePageManagerInternal),
 };
 
 // Listen for pages in any process we're loaded in
 var registeredURLs = new Set(Services.cpmm.initialProcessData["RemotePageManager:urls"]);
 
 var observer = (window) => {
--- a/toolkit/modules/RemoteSecurityUI.jsm
+++ b/toolkit/modules/RemoteSecurityUI.jsm
@@ -1,14 +1,14 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["RemoteSecurityUI"];
+var EXPORTED_SYMBOLS = ["RemoteSecurityUI"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 function RemoteSecurityUI() {
     this._SSLStatus = null;
     this._state = 0;
 }
 
--- a/toolkit/modules/RemoteWebProgress.jsm
+++ b/toolkit/modules/RemoteWebProgress.jsm
@@ -1,14 +1,14 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 // 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/.
 
-this.EXPORTED_SYMBOLS = ["RemoteWebProgressManager"];
+var EXPORTED_SYMBOLS = ["RemoteWebProgressManager"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 function RemoteWebProgressRequest(spec, originalSpec, matchedList, requestCPOW) {
   this.wrappedJSObject = this;
 
   this._uri = Services.io.newURI(spec);
--- a/toolkit/modules/ResetProfile.jsm
+++ b/toolkit/modules/ResetProfile.jsm
@@ -1,23 +1,23 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ResetProfile"];
+var EXPORTED_SYMBOLS = ["ResetProfile"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 const MOZ_APP_NAME = AppConstants.MOZ_APP_NAME;
 const MOZ_BUILD_APP = AppConstants.MOZ_BUILD_APP;
 
-this.ResetProfile = {
+var ResetProfile = {
   /**
    * Check if reset is supported for the currently running profile.
    *
    * @return boolean whether reset is supported.
    */
   resetSupported() {
     // Reset is only supported if the self-migrator used for reset exists.
     let migrator = "@mozilla.org/profile/migrator;1?app=" + MOZ_BUILD_APP +
--- a/toolkit/modules/ResponsivenessMonitor.jsm
+++ b/toolkit/modules/ResponsivenessMonitor.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ResponsivenessMonitor"];
+var EXPORTED_SYMBOLS = ["ResponsivenessMonitor"];
 
 function ResponsivenessMonitor(intervalMS = 100) {
   this._intervalMS = intervalMS;
   this._prevTimestamp = Date.now();
   this._accumulatedDelay = 0;
   this._timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
   this._timer.initWithCallback(this, this._intervalMS, Ci.nsITimer.TYPE_REPEATING_SLACK);
 }
--- a/toolkit/modules/SelectContentHelper.jsm
+++ b/toolkit/modules/SelectContentHelper.jsm
@@ -23,21 +23,21 @@ const SUPPORTED_PROPERTIES = [
 ];
 
 // A process global state for whether or not content thinks
 // that a <select> dropdown is open or not. This is managed
 // entirely within this module, and is read-only accessible
 // via SelectContentHelper.open.
 var gOpen = false;
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SelectContentHelper"
 ];
 
-this.SelectContentHelper = function(aElement, aOptions, aGlobal) {
+var SelectContentHelper = function(aElement, aOptions, aGlobal) {
   this.element = aElement;
   this.initialSelection = aElement[aElement.selectedIndex] || null;
   this.global = aGlobal;
   this.closedWithClickOn = false;
   this.isOpenedViaTouch = aOptions.isOpenedViaTouch;
   this._selectBackgroundColor = null;
   this._selectColor = null;
   this._uaBackgroundColor = null;
--- a/toolkit/modules/SelectParentHelper.jsm
+++ b/toolkit/modules/SelectParentHelper.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "SelectParentHelper"
 ];
 
 const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm", {});
 const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm", {});
 
 // Maximum number of rows to display in the select dropdown.
 const MAX_ROWS = 20;
@@ -21,17 +21,17 @@ const SEARCH_MINIMUM_ELEMENTS = 40;
 var currentBrowser = null;
 var currentMenulist = null;
 var selectRect = null;
 
 var currentZoom = 1;
 var closedWithEnter = false;
 var customStylingEnabled = Services.prefs.getBoolPref("dom.forms.select.customstyling");
 
-this.SelectParentHelper = {
+var SelectParentHelper = {
   /**
    * `populate` takes the `menulist` element and a list of `items` and generates
    * a popup list of options.
    *
    * If `customStylingEnabled` is set to `true`, the function will alse
    * style the select and its popup trying to prevent the text
    * and background to end up in the same color.
    *
--- a/toolkit/modules/ServiceRequest.jsm
+++ b/toolkit/modules/ServiceRequest.jsm
@@ -7,17 +7,17 @@
 /**
   * This module consolidates various code and data update requests, so flags
   * can be set, Telemetry collected, etc. in a central place.
   */
 
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
-this.EXPORTED_SYMBOLS = [ "ServiceRequest" ];
+var EXPORTED_SYMBOLS = [ "ServiceRequest" ];
 
 const logger = Log.repository.getLogger("ServiceRequest");
 logger.level = Log.Level.Debug;
 logger.addAppender(new Log.ConsoleAppender(new Log.BasicFormatter()));
 
 /**
   * ServiceRequest is intended to be a drop-in replacement for current users
   * of XMLHttpRequest.
--- a/toolkit/modules/Services.jsm
+++ b/toolkit/modules/Services.jsm
@@ -1,20 +1,20 @@
 /* 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/. */
 
 /* eslint mozilla/use-services:off */
 
-this.EXPORTED_SYMBOLS = ["Services"];
+var EXPORTED_SYMBOLS = ["Services"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
-this.Services = {};
+var Services = {};
 
 /**
  * WARNING: If you add a getter that isn't in the initTable, please update the
  * eslint rule in /tools/lint/eslint/eslint-plugin-mozilla/lib/rules/use-services.js
  */
 
 XPCOMUtils.defineLazyGetter(Services, "prefs", function() {
   return Cc["@mozilla.org/preferences-service;1"]
--- a/toolkit/modules/ShortcutUtils.jsm
+++ b/toolkit/modules/ShortcutUtils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ShortcutUtils"];
+var EXPORTED_SYMBOLS = ["ShortcutUtils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "PlatformKeys", function() {
   return Services.strings.createBundle(
     "chrome://global-platform/locale/platformKeys.properties");
 });
@@ -106,9 +106,8 @@ var ShortcutUtils = {
   findShortcut(aElemCommand) {
     let document = aElemCommand.ownerDocument;
     return document.querySelector("key[command=\"" + aElemCommand.getAttribute("id") + "\"]");
   }
 };
 
 Object.freeze(ShortcutUtils);
 
-this.ShortcutUtils = ShortcutUtils;
--- a/toolkit/modules/Sqlite.jsm
+++ b/toolkit/modules/Sqlite.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Sqlite",
 ];
 
 // The time to wait before considering a transaction stuck and rejecting it.
 const TRANSACTIONS_QUEUE_TIMEOUT_MS = 240000; // 4 minutes
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
@@ -1450,17 +1450,17 @@ OpenedConnection.prototype = Object.free
    * Statement execution will throw an NS_ERROR_ABORT failure.
    * Can only be used on read-only connections.
    */
   interrupt() {
     this._connectionData.interrupt();
   },
 });
 
-this.Sqlite = {
+var Sqlite = {
   openConnection,
   cloneStorageConnection,
   wrapStorageConnection,
   /**
    * Shutdown barrier client. May be used by clients to perform last-minute
    * cleanup prior to the shutdown of this module.
    *
    * See the documentation of AsyncShutdown.Barrier.prototype.client.
--- a/toolkit/modules/Task.jsm
+++ b/toolkit/modules/Task.jsm
@@ -3,17 +3,17 @@
 /* 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";
 
 /* eslint-disable mozilla/no-task */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Task"
 ];
 
 /**
  * This module implements a subset of "Task.js" <http://taskjs.org/>.
  *
  * Paraphrasing from the Task.js site, tasks make sequential, asynchronous
  * operations simple, using the power of JavaScript's "yield" operator.
@@ -131,17 +131,17 @@ function isGenerator(aValue) {
   return Object.prototype.toString.call(aValue) == "[object Generator]";
 }
 
 // Task
 
 /**
  * This object provides the public module functions.
  */
-this.Task = {
+var Task = {
   /**
    * Creates and starts a new task.
    *
    * @param aTask
    *        - If you specify a generator function, it is called with no
    *          arguments to retrieve the associated iterator.  The generator
    *          function is a task, that is can yield promise objects to wait
    *          upon.
--- a/toolkit/modules/Timer.jsm
+++ b/toolkit/modules/Timer.jsm
@@ -3,18 +3,18 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 /**
  * JS module implementation of setTimeout and clearTimeout.
  */
 
-this.EXPORTED_SYMBOLS = ["setTimeout", "setTimeoutWithTarget", "clearTimeout",
-                         "setInterval", "setIntervalWithTarget", "clearInterval"];
+var EXPORTED_SYMBOLS = ["setTimeout", "setTimeoutWithTarget", "clearTimeout",
+                        "setInterval", "setIntervalWithTarget", "clearInterval"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 // This gives us >=2^30 unique timer IDs, enough for 1 per ms for 12.4 days.
 var gNextId = 1; // setTimeout and setInterval must return a positive integer
 
 var gTimerTable = new Map(); // int -> nsITimer
 
@@ -49,40 +49,40 @@ function _setTimeoutOrIsInterval(aCallba
 
   timer.initWithCallback(callback, aMilliseconds,
     aIsInterval ? timer.TYPE_REPEATING_SLACK : timer.TYPE_ONE_SHOT);
 
   gTimerTable.set(id, timer);
   return id;
 }
 
-this.setTimeout = function setTimeout(aCallback, aMilliseconds, ...aArgs) {
+function setTimeout(aCallback, aMilliseconds, ...aArgs) {
   return _setTimeoutOrIsInterval(
     aCallback, aMilliseconds, false, null, aArgs);
-};
+}
 
-this.setTimeoutWithTarget = function setTimeoutWithTarget(aCallback,
+function setTimeoutWithTarget(aCallback,
                                                           aMilliseconds,
                                                           aTarget,
                                                           ...aArgs) {
   return _setTimeoutOrIsInterval(
     aCallback, aMilliseconds, false, aTarget, aArgs);
-};
+}
 
-this.setInterval = function setInterval(aCallback, aMilliseconds, ...aArgs) {
+function setInterval(aCallback, aMilliseconds, ...aArgs) {
   return _setTimeoutOrIsInterval(
     aCallback, aMilliseconds, true, null, aArgs);
-};
+}
 
-this.setIntervalWithTarget = function setIntervalWithTarget(aCallback,
+function setIntervalWithTarget(aCallback,
                                                             aMilliseconds,
                                                             aTarget,
                                                             ...aArgs) {
   return _setTimeoutOrIsInterval(
     aCallback, aMilliseconds, true, aTarget, aArgs);
-};
+}
 
-this.clearInterval = this.clearTimeout = function clearTimeout(aId) {
+var clearInterval = this.clearTimeout = function clearTimeout(aId) {
   if (gTimerTable.has(aId)) {
     gTimerTable.get(aId).cancel();
     gTimerTable.delete(aId);
   }
 };
--- a/toolkit/modules/Troubleshoot.jsm
+++ b/toolkit/modules/Troubleshoot.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "Troubleshoot",
 ];
 
 ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 var Experiments;
@@ -123,17 +123,17 @@ function getPrefList(filter) {
     Services.prefs.getChildList(branch).forEach(function(name) {
       if (filter(name) && !PREFS_BLACKLIST.some(re => re.test(name)))
         prefs[name] = getPref(name);
     });
     return prefs;
   }, {});
 }
 
-this.Troubleshoot = {
+var Troubleshoot = {
 
   /**
    * Captures a snapshot of data that may help troubleshooters troubleshoot
    * trouble.
    *
    * @param done A function that will be asynchronously called when the
    *             snapshot completes.  It will be passed the snapshot object.
    */
--- a/toolkit/modules/UpdateUtils.jsm
+++ b/toolkit/modules/UpdateUtils.jsm
@@ -1,30 +1,30 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = ["UpdateUtils"];
+var EXPORTED_SYMBOLS = ["UpdateUtils"];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/ctypes.jsm");
 Cu.importGlobalProperties(["fetch"]); /* globals fetch */
 
 ChromeUtils.defineModuleGetter(this, "WindowsRegistry",
                                "resource://gre/modules/WindowsRegistry.jsm");
 
 const FILE_UPDATE_LOCALE                  = "update.locale";
 const PREF_APP_DISTRIBUTION               = "distribution.id";
 const PREF_APP_DISTRIBUTION_VERSION       = "distribution.version";
 const PREF_APP_UPDATE_CUSTOM              = "app.update.custom";
 
 
-this.UpdateUtils = {
+var UpdateUtils = {
   _locale: undefined,
 
   /**
    * Read the update channel from defaults only.  We do this to ensure that
    * the channel is tightly coupled with the application and does not apply
    * to other instances of the application that may use the same profile.
    *
    * @param [optional] aIncludePartners
--- a/toolkit/modules/WebChannel.jsm
+++ b/toolkit/modules/WebChannel.jsm
@@ -2,17 +2,17 @@
  * 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/. */
 
 /**
  * WebChannel is an abstraction that uses the Message Manager and Custom Events
  * to create a two-way communication channel between chrome and content code.
  */
 
-this.EXPORTED_SYMBOLS = ["WebChannel", "WebChannelBroker"];
+var EXPORTED_SYMBOLS = ["WebChannel", "WebChannelBroker"];
 
 const ERRNO_MISSING_PRINCIPAL          = 1;
 const ERRNO_NO_SUCH_CHANNEL            = 2;
 const ERRNO_UNKNOWN_ERROR              = 999;
 const ERROR_UNKNOWN                    = "UNKNOWN_ERROR";
 
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
@@ -156,17 +156,17 @@ var WebChannelBroker = Object.create({
  * @param originOrPermission {nsIURI/string}
  *        If an nsIURI, incoming events will be accepted from any origin matching
  *        that URI's origin.
  *        If a string, it names a permission, and incoming events will be accepted
  *        from any https:// origin that has been granted that permission by the
  *        permission manager.
  * @constructor
  */
-this.WebChannel = function(id, originOrPermission) {
+var WebChannel = function(id, originOrPermission) {
   if (!id || !originOrPermission) {
     throw new Error("WebChannel id and originOrPermission are required.");
   }
 
   this.id = id;
   // originOrPermission can be either an nsIURI or a string representing a
   // permission name.
   if (typeof originOrPermission == "string") {
--- a/toolkit/modules/WindowDraggingUtils.jsm
+++ b/toolkit/modules/WindowDraggingUtils.jsm
@@ -1,27 +1,27 @@
 /* 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/. */
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 const HAVE_CSS_WINDOW_DRAG_SUPPORT = ["win", "macosx"].includes(AppConstants.platform);
 
-this.EXPORTED_SYMBOLS = [ "WindowDraggingElement" ];
+var EXPORTED_SYMBOLS = [ "WindowDraggingElement" ];
 
-this.WindowDraggingElement = function WindowDraggingElement(elem) {
+function WindowDraggingElement(elem) {
   this._elem = elem;
   this._window = elem.ownerGlobal;
   if (HAVE_CSS_WINDOW_DRAG_SUPPORT && !this.isPanel()) {
     return;
   }
 
   this._elem.addEventListener("mousedown", this);
-};
+}
 
 WindowDraggingElement.prototype = {
   mouseDownCheck(e) { return true; },
   dragTags: ["box", "hbox", "vbox", "spacer", "label", "statusbarpanel", "stack",
              "toolbaritem", "toolbarseparator", "toolbarspring", "toolbarspacer",
              "radiogroup", "deck", "scrollbox", "arrowscrollbox", "tabs"],
   shouldDrag(aEvent) {
     if (aEvent.button != 0 ||
--- a/toolkit/modules/WindowsRegistry.jsm
+++ b/toolkit/modules/WindowsRegistry.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["WindowsRegistry"];
+var EXPORTED_SYMBOLS = ["WindowsRegistry"];
 
 var WindowsRegistry = {
   /**
    * Safely reads a value from the registry.
    *
    * @param aRoot
    *        The root registry to use.
    * @param aPath
--- a/toolkit/modules/ZipUtils.jsm
+++ b/toolkit/modules/ZipUtils.jsm
@@ -1,13 +1,13 @@
 /* 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/. */
 
-this.EXPORTED_SYMBOLS = [ "ZipUtils" ];
+var EXPORTED_SYMBOLS = [ "ZipUtils" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "FileUtils",
                                "resource://gre/modules/FileUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "OS",
                                "resource://gre/modules/osfile.jsm");
@@ -77,17 +77,17 @@ function saveStreamAsync(aPath, aStream,
     }
 
     input.asyncWait(readData, 0, 0, Services.tm.currentThread);
 
   });
 }
 
 
-this.ZipUtils = {
+var ZipUtils = {
 
   /**
    * Asynchronously extracts files from a ZIP file into a directory.
    * Returns a promise that will be resolved when the extraction is complete.
    *
    * @param  aZipFile
    *         The source ZIP file that contains the add-on.
    * @param  aDir
--- a/toolkit/modules/addons/MatchURLFilters.jsm
+++ b/toolkit/modules/addons/MatchURLFilters.jsm
@@ -6,17 +6,17 @@
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 
 /* exported MatchURLFilters */
 
-this.EXPORTED_SYMBOLS = ["MatchURLFilters"];
+var EXPORTED_SYMBOLS = ["MatchURLFilters"];
 
 // Match WebNavigation URL Filters.
 class MatchURLFilters {
   constructor(filters) {
     if (!Array.isArray(filters)) {
       throw new TypeError("filters should be an array");
     }
 
--- a/toolkit/modules/css-selector.js
+++ b/toolkit/modules/css-selector.js
@@ -1,17 +1,17 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
 /* vim: set ts=2 et sw=2 tw=80: */
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["findCssSelector"];
+var EXPORTED_SYMBOLS = ["findCssSelector"];
 
 /**
  * Traverse getBindingParent until arriving upon the bound element
  * responsible for the generation of the specified node.
  * See https://developer.mozilla.org/en-US/docs/XBL/XBL_1.0_Reference/DOM_Interfaces#getBindingParent.
  *
  * @param {DOMNode} node
  * @return {DOMNode}
--- a/toolkit/modules/debug.js
+++ b/toolkit/modules/debug.js
@@ -3,17 +3,17 @@
 
 /* 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/. */
 
 // This file contains functions that are useful for debugging purposes from
 // within JavaScript code.
 
-this.EXPORTED_SYMBOLS = ["NS_ASSERT"];
+var EXPORTED_SYMBOLS = ["NS_ASSERT"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Services",
                                "resource://gre/modules/Services.jsm");
 
 var gTraceOnAssert = false;
 
 /**
@@ -28,17 +28,17 @@ var gTraceOnAssert = false;
  * XUL_ASSERT_PROMPT set to 0 (if unset, this defaults to 1).
  *
  * @param condition represents the condition that we're asserting to be
  *                  true when we call this function--should be
  *                  something that can be evaluated as a boolean.
  * @param message   a string to be displayed upon failure of the assertion
  */
 
-this.NS_ASSERT = function NS_ASSERT(condition, message) {
+function NS_ASSERT(condition, message) {
   if (condition)
     return;
 
   var releaseBuild = true;
   var defB = Services.prefs.getDefaultBranch(null);
   try {
     switch (defB.getCharPref("app.update.channel")) {
       case "nightly":
@@ -74,9 +74,9 @@ this.NS_ASSERT = function NS_ASSERT(cond
           stackText += ",";
       }
       stackText += ")\n";
       caller = caller.arguments.callee.caller;
     }
   }
 
   dump(assertionText + stackText);
-};
+}
--- a/toolkit/modules/secondscreen/RokuApp.jsm
+++ b/toolkit/modules/secondscreen/RokuApp.jsm
@@ -1,16 +1,16 @@
 // -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["RokuApp"];
+var EXPORTED_SYMBOLS = ["RokuApp"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
 function log(msg) {
   // Services.console.logStringMessage(msg);
--- a/toolkit/modules/secondscreen/SimpleServiceDiscovery.jsm
+++ b/toolkit/modules/secondscreen/SimpleServiceDiscovery.jsm
@@ -1,16 +1,16 @@
 // -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SimpleServiceDiscovery"];
+var EXPORTED_SYMBOLS = ["SimpleServiceDiscovery"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 
 var log = Cu.reportError;
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
--- a/toolkit/modules/sessionstore/FormData.jsm
+++ b/toolkit/modules/sessionstore/FormData.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["FormData"];
+var EXPORTED_SYMBOLS = ["FormData"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 /**
  * Returns whether the given URL very likely has input
  * fields that contain serialized session store data.
  */
 function isRestorationPage(url) {
   return url == "about:sessionrestore" || url == "about:welcomeback";
@@ -88,17 +88,17 @@ function shouldIgnoreNode(node) {
   }
   return false;
 }
 
 /**
  * The public API exported by this module that allows to collect
  * and restore form data for a document and its subframes.
  */
-this.FormData = Object.freeze({
+var FormData = Object.freeze({
   collect(frame) {
     return FormDataInternal.collect(frame);
   },
 
   restore(frame, data) {
     return FormDataInternal.restore(frame, data);
   },
 
--- a/toolkit/modules/sessionstore/PrivacyLevel.jsm
+++ b/toolkit/modules/sessionstore/PrivacyLevel.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["PrivacyLevel"];
+var EXPORTED_SYMBOLS = ["PrivacyLevel"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const PREF = "browser.sessionstore.privacy_level";
 
 // The following constants represent the different possible privacy levels that
 // can be set by the user and that we need to consider when collecting text
 // data, and cookies.
--- a/toolkit/modules/sessionstore/ScrollPosition.jsm
+++ b/toolkit/modules/sessionstore/ScrollPosition.jsm
@@ -1,23 +1,23 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ScrollPosition"];
+var EXPORTED_SYMBOLS = ["ScrollPosition"];
 
 /**
  * It provides methods to collect scroll positions from single frames and to
  * restore scroll positions for frame trees.
  *
  * This is a child process module.
  */
-this.ScrollPosition = Object.freeze({
+var ScrollPosition = Object.freeze({
   collect(frame) {
     return ScrollPositionInternal.collect(frame);
   },
 
   restore(frame, value) {
     ScrollPositionInternal.restore(frame, value);
   },
 
--- a/toolkit/modules/sessionstore/SessionHistory.jsm
+++ b/toolkit/modules/sessionstore/SessionHistory.jsm
@@ -1,32 +1,32 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["SessionHistory"];
+var EXPORTED_SYMBOLS = ["SessionHistory"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Utils",
   "resource://gre/modules/sessionstore/Utils.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "uuidGenerator",
   "@mozilla.org/uuid-generator;1", "nsIUUIDGenerator");
 
 function debug(msg) {
   Services.console.logStringMessage("SessionHistory: " + msg);
 }
 
 /**
  * The external API exported by this module.
  */
-this.SessionHistory = Object.freeze({
+var SessionHistory = Object.freeze({
   isEmpty(docShell) {
     return SessionHistoryInternal.isEmpty(docShell);
   },
 
   collect(docShell, aFromIdx = -1) {
     return SessionHistoryInternal.collect(docShell, aFromIdx);
   },
 
--- a/toolkit/modules/sessionstore/Utils.jsm
+++ b/toolkit/modules/sessionstore/Utils.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["Utils"];
+var EXPORTED_SYMBOLS = ["Utils"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 ChromeUtils.defineModuleGetter(this, "NetUtil",
                                "resource://gre/modules/NetUtil.jsm");
 XPCOMUtils.defineLazyServiceGetter(this, "serializationHelper",
                                    "@mozilla.org/network/serialization-helper;1",
@@ -17,17 +17,17 @@ XPCOMUtils.defineLazyServiceGetter(this,
 XPCOMUtils.defineLazyGetter(this, "SERIALIZED_SYSTEMPRINCIPAL", function() {
   return Utils.serializePrincipal(Services.scriptSecurityManager.getSystemPrincipal());
 });
 
 function debug(msg) {
   Services.console.logStringMessage("Utils: " + msg);
 }
 
-this.Utils = Object.freeze({
+var Utils = Object.freeze({
   get SERIALIZED_SYSTEMPRINCIPAL() { return SERIALIZED_SYSTEMPRINCIPAL; },
 
   makeURI(url) {
     return Services.io.newURI(url);
   },
 
   makeInputStream(data) {
     if (typeof data == "string") {
--- a/toolkit/modules/tests/modules/MockDocument.jsm
+++ b/toolkit/modules/tests/modules/MockDocument.jsm
@@ -1,15 +1,15 @@
 /**
  * Provides infrastructure for tests that would require mock document.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = ["MockDocument"];
+var EXPORTED_SYMBOLS = ["MockDocument"];
 
 Cu.importGlobalProperties(["URL"]);
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 const { NetUtil } = ChromeUtils.import("resource://gre/modules/NetUtil.jsm", {});
 
 const MockDocument = {
   /**
--- a/toolkit/modules/tests/modules/PromiseTestUtils.jsm
+++ b/toolkit/modules/tests/modules/PromiseTestUtils.jsm
@@ -3,27 +3,27 @@
 
 /*
  * Detects and reports unhandled rejections during test runs. Test harnesses
  * will fail tests in this case, unless the test whitelists itself.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "PromiseTestUtils",
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 ChromeUtils.import("resource://testing-common/Assert.jsm", this);
 
 // Keep "JSMPromise" separate so "Promise" still refers to DOM Promises.
 let JSMPromise = ChromeUtils.import("resource://gre/modules/Promise.jsm", {}).Promise;
 
-this.PromiseTestUtils = {
+var PromiseTestUtils = {
   /**
    * Array of objects containing the details of the Promise rejections that are
    * currently left uncaught. This includes DOM Promise and Promise.jsm. When
    * rejections in DOM Promises are consumed, they are removed from this list.
    *
    * The objects contain at least the following properties:
    * {
    *   message: The error message associated with the rejection, if any.
--- a/toolkit/modules/tests/xpcshell/TestIntegration.jsm
+++ b/toolkit/modules/tests/xpcshell/TestIntegration.jsm
@@ -2,21 +2,21 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /*
  * Internal module used to test the generation of Integration.jsm getters.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "TestIntegration",
 ];
 
-this.TestIntegration = {
+var TestIntegration = {
   value: "value",
 
   get valueFromThis() {
     return this.value;
   },
 
   get property() {
     return this._property;
--- a/toolkit/modules/third_party/jsesc/jsesc.js
+++ b/toolkit/modules/third_party/jsesc/jsesc.js
@@ -18,17 +18,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOU
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
 
-this.EXPORTED_SYMBOLS = ["jsesc"];
+var EXPORTED_SYMBOLS = ["jsesc"];
 /*! https://mths.be/jsesc v1.0.0 by @mathias */
 ;(function(root) {
 
 	// Detect free variables `exports`
 	var freeExports = typeof exports == 'object' && exports;
 
 	// Detect free variable `module`
 	var freeModule = typeof module == 'object' && module &&
--- a/toolkit/mozapps/downloads/DownloadLastDir.jsm
+++ b/toolkit/mozapps/downloads/DownloadLastDir.jsm
@@ -23,17 +23,17 @@
  * content preferences database. This can be disabled by setting the pref
  * browser.download.lastDir.savePerSite to false.
  */
 
 const LAST_DIR_PREF = "browser.download.lastDir";
 const SAVE_PER_SITE_PREF = LAST_DIR_PREF + ".savePerSite";
 const nsIFile = Components.interfaces.nsIFile;
 
-this.EXPORTED_SYMBOLS = [ "DownloadLastDir" ];
+var EXPORTED_SYMBOLS = [ "DownloadLastDir" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
 
 let nonPrivateLoadContext = Components.classes["@mozilla.org/loadcontext;1"].
                               createInstance(Components.interfaces.nsILoadContext);
 let privateLoadContext = Components.classes["@mozilla.org/privateloadcontext;1"].
@@ -84,27 +84,27 @@ function isContentPrefEnabled() {
     return Services.prefs.getBoolPref(SAVE_PER_SITE_PREF);
   } catch (e) {
     return true;
   }
 }
 
 var gDownloadLastDirFile = readLastDirPref();
 
-this.DownloadLastDir = function DownloadLastDir(aWindow) {
+function DownloadLastDir(aWindow) {
   let loadContext = aWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                            .getInterface(Components.interfaces.nsIWebNavigation)
                            .QueryInterface(Components.interfaces.nsILoadContext);
   // Need this in case the real thing has gone away by the time we need it.
   // We only care about the private browsing state. All the rest of the
   // load context isn't of interest to the content pref service.
   this.fakeContext = loadContext.usePrivateBrowsing ?
                        privateLoadContext :
                        nonPrivateLoadContext;
-};
+}
 
 DownloadLastDir.prototype = {
   isPrivate: function DownloadLastDir_isPrivate() {
     return this.fakeContext.usePrivateBrowsing;
   },
   // compat shims
   get file() { return this._getLastFile(); },
   set file(val) { this.setFile(null, val); },
--- a/toolkit/mozapps/downloads/DownloadUtils.jsm
+++ b/toolkit/mozapps/downloads/DownloadUtils.jsm
@@ -1,16 +1,16 @@
 /* vim: sw=2 ts=2 sts=2 expandtab filetype=javascript
  * 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";
 
-this.EXPORTED_SYMBOLS = [ "DownloadUtils" ];
+var EXPORTED_SYMBOLS = [ "DownloadUtils" ];
 
 /**
  * This module provides the DownloadUtils object which contains useful methods
  * for downloads such as displaying file sizes, transfer times, and download
  * locations.
  *
  * List of methods:
  *
@@ -90,17 +90,17 @@ Object.defineProperty(this, "gBundle", {
   },
 });
 
 // Keep track of at most this many second/lastSec pairs so that multiple calls
 // to getTimeLeft produce the same time left
 const kCachedLastMaxSize = 10;
 var gCachedLast = [];
 
-this.DownloadUtils = {
+var DownloadUtils = {
   /**
    * Generate a full status string for a download given its current progress,
    * total size, speed, last time remaining
    *
    * @param aCurrBytes
    *        Number of bytes transferred so far
    * @param [optional] aMaxBytes
    *        Total number of bytes or -1 for unknown
--- a/toolkit/mozapps/extensions/AddonManager.jsm
+++ b/toolkit/mozapps/extensions/AddonManager.jsm
@@ -87,17 +87,17 @@ XPCOMUtils.defineLazyPreferenceGetter(th
 // since it needs to be able to track things like new frameLoader globals that
 // are created before other framework code has been initialized.
 Services.ppmm.loadProcessScript(
   "data:,Components.classes['@mozilla.org/webextensions/extension-process-script;1'].getService()",
   true);
 
 const INTEGER = /^[1-9]\d*$/;
 
-this.EXPORTED_SYMBOLS = [ "AddonManager", "AddonManagerPrivate" ];
+var EXPORTED_SYMBOLS = [ "AddonManager", "AddonManagerPrivate" ];
 
 const CATEGORY_PROVIDER_MODULE = "addon-provider-module";
 
 // A list of providers to load by default
 const DEFAULT_PROVIDERS = [
   "resource://gre/modules/addons/XPIProvider.jsm",
   "resource://gre/modules/LightweightThemeManager.jsm"
 ];
@@ -2957,17 +2957,17 @@ var AddonManagerInternal = {
 };
 
 /**
  * Should not be used outside of core Mozilla code. This is a private API for
  * the startup and platform integration code to use. Refer to the methods on
  * AddonManagerInternal for documentation however note that these methods are
  * subject to change at any time.
  */
-this.AddonManagerPrivate = {
+var AddonManagerPrivate = {
   startup() {
     AddonManagerInternal.startup();
   },
 
   addonIsActive(addonId) {
     return AddonManagerInternal._getProviderByName("XPIProvider")
                                .addonIsActive(addonId);
   },
@@ -3162,17 +3162,17 @@ this.AddonManagerPrivate = {
   },
 };
 
 /**
  * This is the public API that UI and developers should be calling. All methods
  * just forward to AddonManagerInternal.
  * @class
  */
-this.AddonManager = {
+var AddonManager = {
   // Constants for the AddonInstall.state property
   // These will show up as AddonManager.STATE_* (eg, STATE_AVAILABLE)
   _states: new Map([
     // The install is available for download.
     ["STATE_AVAILABLE",  0],
     // The install is being downloaded.
     ["STATE_DOWNLOADING",  1],
     // The install is checking for compatibility information.
--- a/toolkit/mozapps/extensions/ChromeManifestParser.jsm
+++ b/toolkit/mozapps/extensions/ChromeManifestParser.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["ChromeManifestParser"];
+var EXPORTED_SYMBOLS = ["ChromeManifestParser"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
 
 const MSG_JAR_FLUSH = "AddonJarFlush";
 
 
 /**
@@ -23,17 +23,17 @@ function flushJarCache(aJarFile) {
   Cc["@mozilla.org/globalmessagemanager;1"].getService(Ci.nsIMessageBroadcaster)
     .broadcastAsyncMessage(MSG_JAR_FLUSH, aJarFile.path);
 }
 
 
 /**
  * Parses chrome manifest files.
  */
-this.ChromeManifestParser = {
+var ChromeManifestParser = {
 
   /**
    * Reads and parses a chrome manifest file located at a specified URI, and all
    * secondary manifests it references.
    *
    * @param  aURI
    *         A nsIURI pointing to a chrome manifest.
    *         Typically a file: or jar: URI.
--- a/toolkit/mozapps/extensions/LightweightThemeManager.jsm
+++ b/toolkit/mozapps/extensions/LightweightThemeManager.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LightweightThemeManager"];
+var EXPORTED_SYMBOLS = ["LightweightThemeManager"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
 /* globals AddonManagerPrivate*/
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const ID_SUFFIX              = "@personas.mozilla.org";
 const PREF_LWTHEME_TO_SELECT = "extensions.lwThemeToSelect";
@@ -84,17 +84,17 @@ var _fallbackThemeData = null;
     } catch (e) { }
 
     if (Array.isArray(themes) && themes[0]) {
       _prefs.setCharPref("selectedThemeID", themes[0].id);
     }
   }
 })();
 
-this.LightweightThemeManager = {
+var LightweightThemeManager = {
   get name() {
     return "LightweightThemeManager";
   },
 
   set fallbackThemeData(data) {
     if (data && Object.getOwnPropertyNames(data).length) {
       _fallbackThemeData = Object.assign({}, data);
       if (PERSIST_ENABLED) {
--- a/toolkit/mozapps/extensions/internal/AddonRepository.jsm
+++ b/toolkit/mozapps/extensions/internal/AddonRepository.jsm
@@ -13,17 +13,17 @@ XPCOMUtils.defineLazyModuleGetters(this,
   DeferredTask: "resource://gre/modules/DeferredTask.jsm",
   Services: "resource://gre/modules/Services.jsm",
   ServiceRequest: "resource://gre/modules/ServiceRequest.jsm",
   NetUtil: "resource://gre/modules/NetUtil.jsm",
   OS: "resource://gre/modules/osfile.jsm",
   Preferences: "resource://gre/modules/Preferences.jsm",
 });
 
-this.EXPORTED_SYMBOLS = [ "AddonRepository" ];
+var EXPORTED_SYMBOLS = [ "AddonRepository" ];
 
 const PREF_GETADDONS_CACHE_ENABLED       = "extensions.getAddons.cache.enabled";
 const PREF_GETADDONS_CACHE_TYPES         = "extensions.getAddons.cache.types";
 const PREF_GETADDONS_CACHE_ID_ENABLED    = "extensions.%ID%.getAddons.cache.enabled";
 const PREF_GETADDONS_BROWSEADDONS        = "extensions.getAddons.browseAddons";
 const PREF_GETADDONS_BYIDS               = "extensions.getAddons.get.url";
 const PREF_GETADDONS_BYIDS_PERFORMANCE   = "extensions.getAddons.getWithPerformance.url";
 const PREF_GETADDONS_BROWSESEARCHRESULTS = "extensions.getAddons.search.browseURL";
@@ -451,17 +451,17 @@ AddonSearchResult.prototype = {
  * list of the corresponding add-ons. The second returns a list of add-ons that
  * come highly recommended. This list should change frequently. The third is to
  * search for specific search terms entered by the user. Searches are
  * asynchronous and results should be passed to the provided callback object
  * when complete. The results passed to the callback should only include add-ons
  * that are compatible with the current application and are not already
  * installed.
  */
-this.AddonRepository = {
+var AddonRepository = {
   /**
    * Whether caching is currently enabled
    */
   get cacheEnabled() {
     let preference = PREF_GETADDONS_CACHE_ENABLED;
     return Services.prefs.getBoolPref(preference, false);
   },
 
--- a/toolkit/mozapps/extensions/internal/AddonSettings.jsm
+++ b/toolkit/mozapps/extensions/internal/AddonSettings.jsm
@@ -1,23 +1,23 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [ "AddonSettings" ];
+var EXPORTED_SYMBOLS = [ "AddonSettings" ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 
 const PREF_SIGNATURES_REQUIRED = "xpinstall.signatures.required";
 const PREF_ALLOW_LEGACY = "extensions.legacy.enabled";
 
-this.AddonSettings = {};
+var AddonSettings = {};
 
 // Make a non-changable property that can't be manipulated from other
 // code in the app.
 function makeConstant(name, value) {
   Object.defineProperty(AddonSettings, name, {
     configurable: false,
     enumerable: false,
     writable: false,
--- a/toolkit/mozapps/extensions/internal/AddonUpdateChecker.jsm
+++ b/toolkit/mozapps/extensions/internal/AddonUpdateChecker.jsm
@@ -4,17 +4,17 @@
 
 /**
  * The AddonUpdateChecker is responsible for retrieving the update information
  * from an add-on's remote update manifest.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [ "AddonUpdateChecker" ];
+var EXPORTED_SYMBOLS = [ "AddonUpdateChecker" ];
 
 const TIMEOUT               = 60 * 1000;
 const PREFIX_NS_RDF         = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
 const PREFIX_NS_EM          = "http://www.mozilla.org/2004/em-rdf#";
 const PREFIX_ITEM           = "urn:mozilla:item:";
 const PREFIX_EXTENSION      = "urn:mozilla:extension:";
 const PREFIX_THEME          = "urn:mozilla:theme:";
 const TOOLKIT_ID            = "toolkit@mozilla.org";
@@ -771,17 +771,17 @@ function matchesVersions(aUpdate, aAppVe
     if (app.id == TOOLKIT_ID) {
       result = (Services.vc.compare(aPlatformVersion, app.minVersion) >= 0) &&
                (aIgnoreMaxVersion || (Services.vc.compare(aPlatformVersion, app.maxVersion) <= 0));
     }
   }
   return result;
 }
 
-this.AddonUpdateChecker = {
+var AddonUpdateChecker = {
   /**
    * Retrieves the best matching compatibility update for the application from
    * a list of available update objects.
    *
    * @param  aUpdates
    *         An array of update objects
    * @param  aVersion
    *         The version of the add-on to get new compatibility information for
--- a/toolkit/mozapps/extensions/internal/GMPProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/GMPProvider.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [];
+var EXPORTED_SYMBOLS = [];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
 /* globals AddonManagerPrivate*/
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/osfile.jsm");
 /* globals OS*/
 ChromeUtils.import("resource://gre/modules/Log.jsm");
--- a/toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm
+++ b/toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm
@@ -1,28 +1,28 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["LightweightThemeImageOptimizer"];
+var EXPORTED_SYMBOLS = ["LightweightThemeImageOptimizer"];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "Services",
   "resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "FileUtils",
   "resource://gre/modules/FileUtils.jsm");
 
 const ORIGIN_TOP_RIGHT = 1;
 const ORIGIN_BOTTOM_LEFT = 2;
 
-this.LightweightThemeImageOptimizer = {
+var LightweightThemeImageOptimizer = {
   optimize(aThemeData, aScreen) {
     let data = Object.assign({}, aThemeData);
     if (!data.headerURL) {
       return data;
     }
 
     data.headerURL = ImageCropper.getCroppedImageURL(
       data.headerURL, aScreen, ORIGIN_TOP_RIGHT);
--- a/toolkit/mozapps/extensions/internal/PluginProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/PluginProvider.jsm
@@ -1,17 +1,17 @@
 /* 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";
 
 /* exported logger */
 
-this.EXPORTED_SYMBOLS = [];
+var EXPORTED_SYMBOLS = [];
 
 ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
 /* globals AddonManagerPrivate*/
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const URI_EXTENSION_STRINGS  = "chrome://mozapps/locale/extensions/extensions.properties";
 const LIST_UPDATED_TOPIC     = "plugins-list-updated";
 const FLASH_MIME_TYPE        = "application/x-shockwave-flash";
--- a/toolkit/mozapps/extensions/internal/ProductAddonChecker.jsm
+++ b/toolkit/mozapps/extensions/internal/ProductAddonChecker.jsm
@@ -9,17 +9,17 @@
 const LOCAL_EME_SOURCES = [{
   "id": "gmp-gmpopenh264",
   "src": "chrome://global/content/gmp-sources/openh264.json"
 }, {
   "id": "gmp-widevinecdm",
   "src": "chrome://global/content/gmp-sources/widevinecdm.json"
 }];
 
-this.EXPORTED_SYMBOLS = [ "ProductAddonChecker" ];
+var EXPORTED_SYMBOLS = [ "ProductAddonChecker" ];
 
 Cu.importGlobalProperties(["XMLHttpRequest"]);
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Log.jsm");
 ChromeUtils.import("resource://gre/modules/CertUtils.jsm");
 /* globals checkCert, BadCertHandler*/
--- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
@@ -1,15 +1,15 @@
  /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "DownloadAddonInstall",
   "LocalAddonInstall",
   "StagedAddonInstall",
   "UpdateChecker",
   "loadManifestFromFile",
   "verifyBundleSignedState",
 ];
 
@@ -951,17 +951,17 @@ var loadManifestFromZipFile = async func
     // return.
     let manifest = await loadManifestFromZipReader(zipReader, aInstallLocation);
     return manifest;
   } finally {
     zipReader.close();
   }
 };
 
-this.loadManifestFromFile = function(aFile, aInstallLocation) {
+var loadManifestFromFile = function(aFile, aInstallLocation) {
   if (aFile.isFile())
     return loadManifestFromZipFile(aFile, aInstallLocation);
   return loadManifestFromDir(aFile, aInstallLocation);
 };
 
 /**
  * Creates a jar: URI for a file inside a ZIP file.
  *
@@ -1165,17 +1165,17 @@ function verifyDirSignedState(aDir, aAdd
  * AMO-issued certificate
  *
  * @param  aBundle
  *         the nsIFile for the bundle to check, either a directory or zip file
  * @param  aAddon
  *         the add-on object to verify
  * @return a Promise that resolves to an AddonManager.SIGNEDSTATE_* constant.
  */
-this.verifyBundleSignedState = function(aBundle, aAddon) {
+var verifyBundleSignedState = function(aBundle, aAddon) {
   let promise = aBundle.isFile() ? verifyZipSignedState(aBundle, aAddon)
       : verifyDirSignedState(aBundle, aAddon);
   return promise.then(({signedState}) => signedState);
 };
 
 /**
  * Replaces %...% strings in an addon url (update and updateInfo) with
  * appropriate values.
@@ -1984,17 +1984,17 @@ class AddonInstall {
     }
     // Release the staging directory lock, but since the staging dir is populated
     // it will not be removed until resumed or installed by restart.
     // See also cleanStagingDir()
     this.installLocation.releaseStagingDir();
   }
 }
 
-this.LocalAddonInstall = class extends AddonInstall {
+var LocalAddonInstall = class extends AddonInstall {
   /**
    * Initialises this install to be an install from a local file.
    *
    * @returns Promise
    *          A Promise that resolves when the object is ready to use.
    */
   async init() {
     this.file = this.sourceURI.QueryInterface(Ci.nsIFileURL).file;
@@ -2094,17 +2094,17 @@ this.LocalAddonInstall = class extends A
       AddonManagerPrivate.callInstallListeners("onDownloadFailed",
                                                this.listeners, this.wrapper);
       return;
     }
     super.install();
   }
 };
 
-this.DownloadAddonInstall = class extends AddonInstall {
+var DownloadAddonInstall = class extends AddonInstall {
   /**
    * Instantiates a DownloadAddonInstall
    *
    * @param  installLocation
    *         The InstallLocation the add-on will be installed into
    * @param  url
    *         The nsIURL to get the add-on from
    * @param  options
@@ -2506,17 +2506,17 @@ this.DownloadAddonInstall = class extend
 
 /**
  * This class exists just for the specific case of staged add-ons that
  * fail to install at startup.  When that happens, the add-on remains
  * staged but we want to keep track of it like other installs so that we
  * can clean it up if the same add-on is installed again (see the comment
  * about "pending installs for the same add-on" in AddonInstall.startInstall)
  */
-this.StagedAddonInstall = class extends AddonInstall {
+var StagedAddonInstall = class extends AddonInstall {
   constructor(installLocation, dir, manifest) {
     super(installLocation, dir);
 
     this.name = manifest.name;
     this.type = manifest.type;
     this.version = manifest.version;
     this.icons = manifest.icons;
     this.releaseNotesURI = manifest.releaseNotesURI ?
@@ -2654,17 +2654,17 @@ AddonInstallWrapper.prototype = {
  * @param  aReason
  *         The reason for the update check
  * @param  aAppVersion
  *         An optional application version to check for updates for
  * @param  aPlatformVersion
  *         An optional platform version to check for updates for
  * @throws if the aListener or aReason arguments are not valid
  */
-this.UpdateChecker = function(aAddon, aListener, aReason, aAppVersion, aPlatformVersion) {
+var UpdateChecker = function(aAddon, aListener, aReason, aAppVersion, aPlatformVersion) {
   if (!aListener || !aReason)
     throw Cr.NS_ERROR_INVALID_ARG;
 
   ChromeUtils.import("resource://gre/modules/addons/AddonUpdateChecker.jsm");
 
   this.addon = aAddon;
   aAddon._updateCheck = this;
   XPIProvider.doing(this);
--- a/toolkit/mozapps/extensions/internal/XPIProvider.jsm
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.jsm
@@ -1,15 +1,15 @@
  /* 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";
 
-this.EXPORTED_SYMBOLS = ["XPIProvider", "XPIInternal"];
+var EXPORTED_SYMBOLS = ["XPIProvider", "XPIInternal"];
 
 /* globals WebExtensionPolicy */
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://gre/modules/AddonManager.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
@@ -1437,17 +1437,17 @@ class XPIStateLocation extends Map {
   migrateAddon(id, state, bootstrapped) {
     this.set(id, XPIState.migrate(this, id, state, bootstrapped));
   }
 }
 
 /**
  * Keeps track of the state of XPI add-ons on the file system.
  */
-this.XPIStates = {
+var XPIStates = {
   // Map(location name -> Map(add-on ID -> XPIState))
   db: null,
 
   _jsonFile: null,
 
   /**
    * @property {Map<string, XPIState>} sideLoadedAddons
    *        A map of new add-ons detected during install location
@@ -1777,17 +1777,17 @@ this.XPIStates = {
     logger.debug(`Disabling XPIState for ${aId}`);
     let state = this.findAddon(aId);
     if (state) {
       state.enabled = false;
     }
   },
 };
 
-this.XPIProvider = {
+var XPIProvider = {
   get name() {
     return "XPIProvider";
   },
 
   BOOTSTRAP_REASONS: Object.freeze(BOOTSTRAP_REASONS),
 
   // An array of known install locations
   installLocations: null,
@@ -6968,17 +6968,17 @@ class WinRegInstallLocation extends Dire
   /**
    * @see DirectoryInstallLocation
    */
   isLinkedAddon(aId) {
     return true;
   }
 }
 
-this.XPIInternal = {
+var XPIInternal = {
   AddonInternal,
   BOOTSTRAP_REASONS,
   KEY_APP_SYSTEM_ADDONS,
   KEY_APP_SYSTEM_DEFAULTS,
   KEY_APP_TEMPORARY,
   TEMPORARY_ADDON_SUFFIX,
   TOOLKIT_ID,
   XPIStates,
--- a/toolkit/mozapps/extensions/test/AddonManagerTesting.jsm
+++ b/toolkit/mozapps/extensions/test/AddonManagerTesting.jsm
@@ -2,26 +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/. */
 
 // This file is a test-only JSM containing utility methods for
 // interacting with the add-ons manager.
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "AddonManagerTesting",
 ];
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AddonManager",
                                "resource://gre/modules/AddonManager.jsm");
 
-this.AddonManagerTesting = {
+var AddonManagerTesting = {
   /**
    * Get the add-on that is specified by its ID.
    *
    * @return {Promise<Object>} A promise that resolves returning the found addon or null
    *         if it is not found.
    */
   getAddonById(id) {
     return new Promise(resolve => AddonManager.getAddonByID(id, addon => resolve(addon)));
--- a/toolkit/mozapps/extensions/test/addons/test_bootstrap1_1/version.jsm
+++ b/toolkit/mozapps/extensions/test/addons/test_bootstrap1_1/version.jsm
@@ -1,3 +1,3 @@
-this.EXPORTED_SYMBOLS = ["VERSION"];
+var EXPORTED_SYMBOLS = ["VERSION"];
 
-this.VERSION = 1;
+var VERSION = 1;
--- a/toolkit/mozapps/extensions/test/addons/test_bootstrap1_2/version.jsm
+++ b/toolkit/mozapps/extensions/test/addons/test_bootstrap1_2/version.jsm
@@ -1,3 +1,3 @@
-this.EXPORTED_SYMBOLS = ["VERSION"];
+var EXPORTED_SYMBOLS = ["VERSION"];
 
-this.VERSION = 2;
+var VERSION = 2;
--- a/toolkit/mozapps/extensions/test/addons/test_bootstrap1_3/version.jsm
+++ b/toolkit/mozapps/extensions/test/addons/test_bootstrap1_3/version.jsm
@@ -1,3 +1,3 @@
-this.EXPORTED_SYMBOLS = ["VERSION"];
+var EXPORTED_SYMBOLS = ["VERSION"];
 
-this.VERSION = 3;
+var VERSION = 3;
--- a/toolkit/mozapps/extensions/test/xpcshell/data/BootstrapMonitor.jsm
+++ b/toolkit/mozapps/extensions/test/xpcshell/data/BootstrapMonitor.jsm
@@ -1,11 +1,11 @@
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
-this.EXPORTED_SYMBOLS = [ "monitor" ];
+var EXPORTED_SYMBOLS = [ "monitor" ];
 
 function notify(event, originalMethod, data, reason) {
   let info = {
     event,
     data: Object.assign({}, data, {
       installPath: data.installPath.path,
       resourceURI: data.resourceURI.spec,
     }),
@@ -18,13 +18,13 @@ function notify(event, originalMethod, d
 
   // If the bootstrap scope already declares a method call it
   if (originalMethod)
     originalMethod(data, reason);
 }
 
 // Allows a simple one-line bootstrap script:
 // Components.utils.import("resource://xpcshelldata/bootstrapmonitor.jsm").monitor(this);
-this.monitor = function(scope, methods = ["install", "startup", "shutdown", "uninstall"]) {
+var monitor = function(scope, methods = ["install", "startup", "shutdown", "uninstall"]) {
   for (let event of methods) {
     scope[event] = notify.bind(null, event, scope[event]);
   }
 };
--- a/toolkit/mozapps/update/UpdateListener.jsm
+++ b/toolkit/mozapps/update/UpdateListener.jsm
@@ -1,15 +1,15 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = ["UpdateListener"];
+var EXPORTED_SYMBOLS = ["UpdateListener"];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/Timer.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "AppMenuNotifications",
                                "resource://gre/modules/AppMenuNotifications.jsm");
 
--- a/toolkit/mozapps/update/UpdateTelemetry.jsm
+++ b/toolkit/mozapps/update/UpdateTelemetry.jsm
@@ -1,21 +1,21 @@
 /* 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";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "AUSTLMY"
 ];
 
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 
-this.AUSTLMY = {
+var AUSTLMY = {
   // Telemetry for the application update background update check occurs when
   // the background update timer fires after the update interval which is
   // determined by the app.update.interval preference and its telemetry
   // histogram IDs have the suffix '_NOTIFY'.
   // Telemetry for the externally initiated background update check occurs when
   // a call is made to |checkForBackgroundUpdates| which is typically initiated
   // by an application when it has determined that the application should have
   // received an update. This has separate telemetry so it is possible to
--- a/uriloader/exthandler/tests/HandlerServiceTestUtils.jsm
+++ b/uriloader/exthandler/tests/HandlerServiceTestUtils.jsm
@@ -2,33 +2,33 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /*
  * Shared functions for tests related to invoking external handler applications.
  */
 
 "use strict";
 
-this.EXPORTED_SYMBOLS = [
+var EXPORTED_SYMBOLS = [
   "HandlerServiceTestUtils",
 ];
 
 ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 ChromeUtils.import("resource://testing-common/Assert.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(this, "gExternalProtocolService",
                                    "@mozilla.org/uriloader/external-protocol-service;1",
                                    "nsIExternalProtocolService");
 XPCOMUtils.defineLazyServiceGetter(this, "gMIMEService",
                                    "@mozilla.org/mime;1",
                                    "nsIMIMEService");
 
-this.HandlerServiceTestUtils = {
+var HandlerServiceTestUtils = {
   /**
    * This has to be initialized to the nsIHandlerService instance under testing.
    *
    * When support for migration from the RDF to the JSON back-end is removed,
    * this can be replaced by a lazy getter for the default implementation.
    */
   handlerService: null,