Bug 1562642 - Part 3 - Add missing MPL2 headers in browser & toolkit r=Gijs
authorSylvestre Ledru <sledru@mozilla.com>
Wed, 10 Jul 2019 12:03:37 +0000
changeset 482148 1ca2b17dd7f3714dbac98f81938b152fe7df74d9
parent 482147 309109c505e5c9e11b08a2bc48bcf19f751ba982
child 482149 9ee3ac685091e5a73633600a1c04e07bdeaddf6a
push id36271
push useraiakab@mozilla.com
push dateWed, 10 Jul 2019 21:50:49 +0000
treeherdermozilla-central@e704e3565db9 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersGijs
bugs1562642
milestone70.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 1562642 - Part 3 - Add missing MPL2 headers in browser & toolkit r=Gijs Differential Revision: https://phabricator.services.mozilla.com/D37217
browser/base/content/aboutNetError.js
browser/base/content/aboutRobots.js
browser/base/content/blockedSite.js
browser/branding/aurora/firefox.VisualElementsManifest.xml
browser/branding/nightly/firefox.VisualElementsManifest.xml
browser/branding/official/firefox.VisualElementsManifest.xml
browser/branding/unofficial/firefox.VisualElementsManifest.xml
browser/components/downloads/content/downloadsCommands.inc.xul
browser/components/downloads/content/downloadsContextMenu.inc.xul
browser/components/downloads/content/downloadsRichListBox.inc.xul
browser/components/downloads/content/downloadsStrings.inc.xul
browser/components/extensions/ExtensionPopups.jsm
browser/components/extensions/child/ext-browser-content-only.js
browser/components/extensions/child/ext-browser.js
browser/components/extensions/child/ext-devtools-inspectedWindow.js
browser/components/extensions/child/ext-devtools-network.js
browser/components/extensions/child/ext-devtools-panels.js
browser/components/extensions/child/ext-devtools.js
browser/components/extensions/child/ext-menus-child.js
browser/components/extensions/child/ext-menus.js
browser/components/extensions/child/ext-omnibox.js
browser/components/extensions/child/ext-tabs.js
browser/components/extensions/parent/ext-bookmarks.js
browser/components/extensions/parent/ext-browser.js
browser/components/extensions/parent/ext-browserAction.js
browser/components/extensions/parent/ext-browsingData.js
browser/components/extensions/parent/ext-commands.js
browser/components/extensions/parent/ext-devtools-inspectedWindow.js
browser/components/extensions/parent/ext-devtools-network.js
browser/components/extensions/parent/ext-devtools-panels.js
browser/components/extensions/parent/ext-devtools.js
browser/components/extensions/parent/ext-find.js
browser/components/extensions/parent/ext-history.js
browser/components/extensions/parent/ext-menus.js
browser/components/extensions/parent/ext-normandyAddonStudy.js
browser/components/extensions/parent/ext-omnibox.js
browser/components/extensions/parent/ext-pageAction.js
browser/components/extensions/parent/ext-pkcs11.js
browser/components/extensions/parent/ext-sessions.js
browser/components/extensions/parent/ext-sidebarAction.js
browser/components/extensions/parent/ext-tabs.js
browser/components/extensions/parent/ext-urlbar.js
browser/components/extensions/parent/ext-windows.js
browser/components/newtab/bin/render-activity-stream-html.js
browser/components/newtab/bin/vendor.js
browser/components/newtab/common/Dedupe.jsm
browser/components/newtab/common/PerfService.jsm
browser/components/newtab/content-src/activity-stream.jsx
browser/components/newtab/content-src/asrouter/asrouter-content.jsx
browser/components/newtab/content-src/asrouter/components/Button/Button.jsx
browser/components/newtab/content-src/asrouter/components/ConditionalWrapper/ConditionalWrapper.jsx
browser/components/newtab/content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx
browser/components/newtab/content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx
browser/components/newtab/content-src/asrouter/components/RichText/RichText.jsx
browser/components/newtab/content-src/asrouter/components/SnippetBase/SnippetBase.jsx
browser/components/newtab/content-src/asrouter/rich-text-strings.js
browser/components/newtab/content-src/asrouter/template-utils.js
browser/components/newtab/content-src/asrouter/templates/EOYSnippet/EOYSnippet.jsx
browser/components/newtab/content-src/asrouter/templates/FXASignupSnippet/FXASignupSnippet.jsx
browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx
browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx
browser/components/newtab/content-src/asrouter/templates/ReturnToAMO/ReturnToAMO.jsx
browser/components/newtab/content-src/asrouter/templates/SendToDeviceSnippet/SendToDeviceSnippet.jsx
browser/components/newtab/content-src/asrouter/templates/SendToDeviceSnippet/isEmailOrPhoneNumber.js
browser/components/newtab/content-src/asrouter/templates/SimpleBelowSearchSnippet/SimpleBelowSearchSnippet.jsx
browser/components/newtab/content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx
browser/components/newtab/content-src/asrouter/templates/StartupOverlay/StartupOverlay.jsx
browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx
browser/components/newtab/content-src/asrouter/templates/Trailhead/Trailhead.jsx
browser/components/newtab/content-src/asrouter/templates/template-manifest.jsx
browser/components/newtab/content-src/components/A11yLinkButton/A11yLinkButton.jsx
browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx
browser/components/newtab/content-src/components/ASRouterAdmin/SimpleHashRouter.jsx
browser/components/newtab/content-src/components/Base/Base.jsx
browser/components/newtab/content-src/components/Card/Card.jsx
browser/components/newtab/content-src/components/Card/types.js
browser/components/newtab/content-src/components/CollapsibleSection/CollapsibleSection.jsx
browser/components/newtab/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx
browser/components/newtab/content-src/components/ConfirmDialog/ConfirmDialog.jsx
browser/components/newtab/content-src/components/ContextMenu/ContextMenu.jsx
browser/components/newtab/content-src/components/DiscoveryStreamBase/DiscoveryStreamBase.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/CardGrid/CardGrid.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSCard/DSCard.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSEmptyState/DSEmptyState.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSImage/DSImage.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSLinkMenu/DSLinkMenu.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSMessage/DSMessage.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/Hero/Hero.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/Highlights/Highlights.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/HorizontalRule/HorizontalRule.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/List/List.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/Navigation/Navigation.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/SafeAnchor/SafeAnchor.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/SectionTitle/SectionTitle.jsx
browser/components/newtab/content-src/components/DiscoveryStreamComponents/TopSites/TopSites.jsx
browser/components/newtab/content-src/components/DiscoveryStreamImpressionStats/ImpressionStats.jsx
browser/components/newtab/content-src/components/ErrorBoundary/ErrorBoundary.jsx
browser/components/newtab/content-src/components/FluentOrText/FluentOrText.jsx
browser/components/newtab/content-src/components/LinkMenu/LinkMenu.jsx
browser/components/newtab/content-src/components/MoreRecommendations/MoreRecommendations.jsx
browser/components/newtab/content-src/components/PocketLoggedInCta/PocketLoggedInCta.jsx
browser/components/newtab/content-src/components/Search/Search.jsx
browser/components/newtab/content-src/components/SectionMenu/SectionMenu.jsx
browser/components/newtab/content-src/components/Sections/Sections.jsx
browser/components/newtab/content-src/components/TopSites/SearchShortcutsForm.jsx
browser/components/newtab/content-src/components/TopSites/TopSite.jsx
browser/components/newtab/content-src/components/TopSites/TopSiteForm.jsx
browser/components/newtab/content-src/components/TopSites/TopSiteFormInput.jsx
browser/components/newtab/content-src/components/TopSites/TopSites.jsx
browser/components/newtab/content-src/components/TopSites/TopSitesConstants.js
browser/components/newtab/content-src/components/Topics/Topics.jsx
browser/components/newtab/content-src/lib/constants.js
browser/components/newtab/content-src/lib/detect-user-session-start.js
browser/components/newtab/content-src/lib/init-store.js
browser/components/newtab/content-src/lib/link-menu-options.js
browser/components/newtab/content-src/lib/screenshot-utils.js
browser/components/newtab/content-src/lib/section-menu-options.js
browser/components/newtab/content-src/lib/selectLayoutRender.js
browser/components/newtab/data/content/activity-stream.bundle.js
browser/components/newtab/karma.mc.config.js
browser/components/newtab/lib/ASRouterFeed.jsm
browser/components/newtab/lib/ASRouterTargeting.jsm
browser/components/newtab/lib/ActivityStreamStorage.jsm
browser/components/newtab/lib/DownloadsManager.jsm
browser/components/newtab/lib/ShortURL.jsm
browser/components/newtab/loaders/inject-loader.js
browser/components/newtab/prerendered/activity-stream-debug.html
browser/components/newtab/prerendered/activity-stream-noscripts.html
browser/components/newtab/prerendered/activity-stream.html
browser/components/newtab/webpack.aboutlibrary.config.js
browser/components/newtab/webpack.system-addon.config.js
browser/components/payments/server.py
browser/components/places/content/bookmarksHistoryTooltip.inc.xul
browser/components/places/content/editBookmarkPanel.inc.xul
browser/components/places/content/placesCommands.inc.xul
browser/components/places/content/placesContextMenu.inc.xul
browser/components/preferences/in-content/search.inc.xul
browser/extensions/formautofill/background.js
browser/extensions/screenshots/assertIsBlankDocument.js
browser/extensions/screenshots/assertIsTrusted.js
browser/extensions/screenshots/background/analytics.js
browser/extensions/screenshots/background/auth.js
browser/extensions/screenshots/background/communication.js
browser/extensions/screenshots/background/deviceInfo.js
browser/extensions/screenshots/background/main.js
browser/extensions/screenshots/background/selectorLoader.js
browser/extensions/screenshots/background/senderror.js
browser/extensions/screenshots/background/startBackground.js
browser/extensions/screenshots/background/takeshot.js
browser/extensions/screenshots/blank.html
browser/extensions/screenshots/blobConverters.js
browser/extensions/screenshots/build/buildSettings.js
browser/extensions/screenshots/build/inlineSelectionCss.js
browser/extensions/screenshots/build/onboardingCss.js
browser/extensions/screenshots/build/onboardingHtml.js
browser/extensions/screenshots/build/selection.js
browser/extensions/screenshots/build/shot.js
browser/extensions/screenshots/build/thumbnailGenerator.js
browser/extensions/screenshots/catcher.js
browser/extensions/screenshots/clipboard.js
browser/extensions/screenshots/domainFromUrl.js
browser/extensions/screenshots/experiments/screenshots/api.js
browser/extensions/screenshots/log.js
browser/extensions/screenshots/makeUuid.js
browser/extensions/screenshots/onboarding/slides.html
browser/extensions/screenshots/onboarding/slides.js
browser/extensions/screenshots/randomString.js
browser/extensions/screenshots/selector/callBackground.js
browser/extensions/screenshots/selector/documentMetadata.js
browser/extensions/screenshots/selector/shooter.js
browser/extensions/screenshots/selector/ui.js
browser/extensions/screenshots/selector/uicontrol.js
browser/extensions/screenshots/selector/util.js
browser/extensions/screenshots/sitehelper.js
browser/extensions/webcompat/aboutCompat.html
browser/extensions/webcompat/injections.js
browser/extensions/webcompat/injections/js/bug0000000-dummy-js-injection.js
browser/extensions/webcompat/injections/js/bug1452707-window.controllers-shim-ib.absa.co.za.js
browser/extensions/webcompat/injections/js/bug1457335-histography.io-ua-change.js
browser/extensions/webcompat/injections/js/bug1472075-bankofamerica.com-ua-change.js
browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js
browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js
browser/extensions/webcompat/ua_overrides.js
browser/modules/SiteDataManager.jsm
browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed.html
browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed_active.html
browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed_passive.html
browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/password.html
browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/tracking.html
browser/tools/mozscreenshots/mozscreenshots/extension/lib/permissionPrompts.html
toolkit/components/extensions/ProfilerGetSymbols-worker.js
toolkit/components/extensions/ProfilerGetSymbols.jsm
toolkit/components/extensions/WebNavigationContent.js
toolkit/components/extensions/child/ext-backgroundPage.js
toolkit/components/extensions/child/ext-contentScripts.js
toolkit/components/extensions/child/ext-extension.js
toolkit/components/extensions/child/ext-identity.js
toolkit/components/extensions/child/ext-runtime.js
toolkit/components/extensions/child/ext-storage.js
toolkit/components/extensions/child/ext-test.js
toolkit/components/extensions/child/ext-toolkit.js
toolkit/components/extensions/child/ext-userScripts-content.js
toolkit/components/extensions/child/ext-userScripts.js
toolkit/components/extensions/child/ext-webRequest.js
toolkit/components/extensions/dummy.xul
toolkit/components/extensions/parent/ext-alarms.js
toolkit/components/extensions/parent/ext-backgroundPage.js
toolkit/components/extensions/parent/ext-browserSettings.js
toolkit/components/extensions/parent/ext-clipboard.js
toolkit/components/extensions/parent/ext-contentScripts.js
toolkit/components/extensions/parent/ext-contextualIdentities.js
toolkit/components/extensions/parent/ext-cookies.js
toolkit/components/extensions/parent/ext-dns.js
toolkit/components/extensions/parent/ext-downloads.js
toolkit/components/extensions/parent/ext-extension.js
toolkit/components/extensions/parent/ext-geckoProfiler.js
toolkit/components/extensions/parent/ext-i18n.js
toolkit/components/extensions/parent/ext-identity.js
toolkit/components/extensions/parent/ext-idle.js
toolkit/components/extensions/parent/ext-management.js
toolkit/components/extensions/parent/ext-notifications.js
toolkit/components/extensions/parent/ext-permissions.js
toolkit/components/extensions/parent/ext-privacy.js
toolkit/components/extensions/parent/ext-protocolHandlers.js
toolkit/components/extensions/parent/ext-runtime.js
toolkit/components/extensions/parent/ext-storage.js
toolkit/components/extensions/parent/ext-telemetry.js
toolkit/components/extensions/parent/ext-theme.js
toolkit/components/extensions/parent/ext-toolkit.js
toolkit/components/extensions/parent/ext-topSites.js
toolkit/components/extensions/parent/ext-userScripts.js
toolkit/components/extensions/parent/ext-webNavigation.js
toolkit/components/extensions/parent/ext-webRequest.js
toolkit/components/extensions/profiler_get_symbols.js
toolkit/components/featuregates/gen_feature_definitions.py
toolkit/components/gfx/content/gfxFrameScript.js
toolkit/components/gfx/content/sanityparent.html
toolkit/components/gfx/content/sanitytest.html
toolkit/components/normandy/actions/schemas/export_json.js
toolkit/components/normandy/actions/schemas/index.js
toolkit/components/normandy/lib/ActionsManager.jsm
toolkit/components/osfile/modules/ospath_win.jsm
toolkit/components/prompts/src/SharedPromptUtils.jsm
toolkit/components/reader/content/aboutReader.html
toolkit/components/telemetry/build_scripts/mozparsers/__init__.py
toolkit/components/thumbnails/PageThumbsStorageService.jsm
toolkit/content/aboutRights.js
toolkit/content/datepicker.xhtml
toolkit/content/editMenuKeys.inc.xul
toolkit/content/timepicker.xhtml
toolkit/crashreporter/rust/lib.rs
toolkit/library/gen_buildid.py
toolkit/library/rust/shared/build.rs
toolkit/modules/win.xul
toolkit/mozapps/extensions/content/aboutaddons.html
toolkit/mozapps/extensions/content/abuse-report-frame.html
toolkit/mozapps/extensions/content/abuse-report-frame.js
toolkit/mozapps/update/updater/gen_cert_header.py
--- a/browser/base/content/aboutNetError.js
+++ b/browser/base/content/aboutNetError.js
@@ -1,8 +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/. */
+
 /* eslint-env mozilla/frame-script */
 
 const formatter = new Intl.DateTimeFormat("default");
 
 // The following parameters are parsed from the error URL:
 //   e - the error code
 //   s - custom CSS class to allow alternate styling/favicons
 //   d - error description
--- a/browser/base/content/aboutRobots.js
+++ b/browser/base/content/aboutRobots.js
@@ -1,8 +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/. */
+
 var buttonClicked = false;
 var button = document.getElementById("errorTryAgain");
 button.onclick = function() {
   if (buttonClicked) {
     button.style.visibility = "hidden";
   } else {
     var newLabel = button.getAttribute("label2");
     button.textContent = newLabel;
--- a/browser/base/content/blockedSite.js
+++ b/browser/base/content/blockedSite.js
@@ -1,8 +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/. */
+
 // Error url MUST be formatted like this:
 //   about:blocked?e=error_code&u=url(&o=1)?
 //     (o=1 when user overrides are allowed)
 
 // Note that this file uses document.documentURI to get
 // the URL (with the format from above). This is because
 // document.location.href gets the current URI off the docshell,
 // which is the URL displayed in the location bar, i.e.
--- a/browser/branding/aurora/firefox.VisualElementsManifest.xml
+++ b/browser/branding/aurora/firefox.VisualElementsManifest.xml
@@ -1,8 +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/. -->
+
 <Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
   <VisualElements
       ShowNameOnSquare150x150Logo='on'
       Square150x150Logo='browser\VisualElements\VisualElements_150.png'
       Square70x70Logo='browser\VisualElements\VisualElements_70.png'
       ForegroundText='light'
       BackgroundColor='#14171a'/>
 </Application>
--- a/browser/branding/nightly/firefox.VisualElementsManifest.xml
+++ b/browser/branding/nightly/firefox.VisualElementsManifest.xml
@@ -1,8 +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/. -->
+
 <Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
   <VisualElements
       ShowNameOnSquare150x150Logo='on'
       Square150x150Logo='browser\VisualElements\VisualElements_150.png'
       Square70x70Logo='browser\VisualElements\VisualElements_70.png'
       ForegroundText='light'
       BackgroundColor='#000f40'/>
 </Application>
--- a/browser/branding/official/firefox.VisualElementsManifest.xml
+++ b/browser/branding/official/firefox.VisualElementsManifest.xml
@@ -1,8 +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/. -->
+
 <Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
   <VisualElements
       ShowNameOnSquare150x150Logo='on'
       Square150x150Logo='browser\VisualElements\VisualElements_150.png'
       Square70x70Logo='browser\VisualElements\VisualElements_70.png'
       ForegroundText='light'
       BackgroundColor='#000f40'/>
 </Application>
--- a/browser/branding/unofficial/firefox.VisualElementsManifest.xml
+++ b/browser/branding/unofficial/firefox.VisualElementsManifest.xml
@@ -1,8 +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/. -->
+
 <Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
   <VisualElements
       ShowNameOnSquare150x150Logo='on'
       Square150x150Logo='browser\VisualElements\VisualElements_150.png'
       Square70x70Logo='browser\VisualElements\VisualElements_70.png'
       ForegroundText='light'
       BackgroundColor='#14171a'/>
 </Application>
--- a/browser/components/downloads/content/downloadsCommands.inc.xul
+++ b/browser/components/downloads/content/downloadsCommands.inc.xul
@@ -1,8 +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/.
+
 <commandset id="downloadCommands"
             commandupdater="true"
             events="focus,select,contextmenu"
             oncommandupdate="goUpdateDownloadCommands();">
   <command id="downloadsCmd_pauseResume"
            oncommand="goDoCommand('downloadsCmd_pauseResume')"/>
   <command id="downloadsCmd_cancel"
            oncommand="goDoCommand('downloadsCmd_cancel')"/>
--- a/browser/components/downloads/content/downloadsContextMenu.inc.xul
+++ b/browser/components/downloads/content/downloadsContextMenu.inc.xul
@@ -1,8 +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/.
+
 <menupopup id="downloadsContextMenu" class="download-state">
   <menuitem command="downloadsCmd_pauseResume"
             class="downloadPauseMenuItem"
             label="&cmd.pause.label;"
             accesskey="&cmd.pause.accesskey;"/>
   <menuitem command="downloadsCmd_pauseResume"
             class="downloadResumeMenuItem"
             label="&cmd.resume.label;"
--- a/browser/components/downloads/content/downloadsRichListBox.inc.xul
+++ b/browser/components/downloads/content/downloadsRichListBox.inc.xul
@@ -1,8 +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/.
+
 <richlistbox flex="1"
              seltype="multiple"
              id="downloadsRichListBox" context="downloadsContextMenu"
              onscroll="return this._placesView.onScroll();"
              onkeypress="return this._placesView.onKeyPress(event);"
              ondblclick="return this._placesView.onDoubleClick(event);"
              oncontextmenu="return this._placesView.onContextMenu(event);"
              ondragstart="this._placesView.onDragStart(event);"
--- a/browser/components/downloads/content/downloadsStrings.inc.xul
+++ b/browser/components/downloads/content/downloadsStrings.inc.xul
@@ -1,8 +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/.
+
 # Don't add new strings here, use properties files instead. This file won't be
 # necessary anymore once localization is converted to Fluent (bug 1452637).
 
 <stringbundleset id="downloadsStrings"
   string-download-cancel="&cmd.cancel.label;"
   string-download-cancel-description="&cancelDownload.label;"
   string-download-open-file-description="&openFile.label;"
   string-download-open-or-remove-file="&cmd.chooseOpen.label;"
--- a/browser/components/extensions/ExtensionPopups.jsm
+++ b/browser/components/extensions/ExtensionPopups.jsm
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 /* exported PanelPopup, ViewPopup */
 
 var EXPORTED_SYMBOLS = ["BasePopup", "PanelPopup", "ViewPopup"];
 
 const { XPCOMUtils } = ChromeUtils.import(
   "resource://gre/modules/XPCOMUtils.jsm"
--- a/browser/components/extensions/child/ext-browser-content-only.js
+++ b/browser/components/extensions/child/ext-browser-content-only.js
@@ -1,8 +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/. */
+
 "use strict";
 
 extensions.registerModules({
   menusChild: {
     url: "chrome://browser/content/child/ext-menus-child.js",
     scopes: ["content_child"],
     paths: [["menus"]],
   },
--- a/browser/components/extensions/child/ext-browser.js
+++ b/browser/components/extensions/child/ext-browser.js
@@ -1,8 +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/. */
+
 "use strict";
 
 extensions.registerModules({
   devtools: {
     url: "chrome://browser/content/child/ext-devtools.js",
     scopes: ["devtools_child"],
     paths: [["devtools"]],
   },
--- a/browser/components/extensions/child/ext-devtools-inspectedWindow.js
+++ b/browser/components/extensions/child/ext-devtools-inspectedWindow.js
@@ -1,10 +1,14 @@
 /* -*- 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.devtools_inspectedWindow = class extends ExtensionAPI {
   getAPI(context) {
     // `devtoolsToolboxInfo` is received from the child process when the root devtools view
     // has been created, and every sub-frame of that top level devtools frame will
     // receive the same information when the context has been created from the
     // `ExtensionChild.createExtensionContext` method.
--- a/browser/components/extensions/child/ext-devtools-network.js
+++ b/browser/components/extensions/child/ext-devtools-network.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 /**
  * Responsible for fetching HTTP response content from the backend.
  *
  * @param {DevtoolsExtensionContext}
  *   A devtools extension context running in a child process.
  * @param {object} options
--- a/browser/components/extensions/child/ext-devtools-panels.js
+++ b/browser/components/extensions/child/ext-devtools-panels.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { XPCOMUtils } = ChromeUtils.import(
   "resource://gre/modules/XPCOMUtils.jsm"
 );
 
 XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]);
 
--- a/browser/components/extensions/child/ext-devtools.js
+++ b/browser/components/extensions/child/ext-devtools.js
@@ -1,10 +1,14 @@
 /* -*- 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.devtools = class extends ExtensionAPI {
   getAPI(context) {
     return {
       devtools: {},
     };
   }
--- a/browser/components/extensions/child/ext-menus-child.js
+++ b/browser/components/extensions/child/ext-menus-child.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "ContextMenuChild",
   "resource:///actors/ContextMenuChild.jsm"
 );
 
--- a/browser/components/extensions/child/ext-menus.js
+++ b/browser/components/extensions/child/ext-menus.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "Services",
   "resource://gre/modules/Services.jsm"
 );
 
--- a/browser/components/extensions/child/ext-omnibox.js
+++ b/browser/components/extensions/child/ext-omnibox.js
@@ -1,10 +1,14 @@
 /* -*- 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.omnibox = class extends ExtensionAPI {
   getAPI(context) {
     return {
       omnibox: {
         onInputChanged: new EventManager({
           context,
--- a/browser/components/extensions/child/ext-tabs.js
+++ b/browser/components/extensions/child/ext-tabs.js
@@ -1,10 +1,14 @@
 /* -*- 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.tabs = class extends ExtensionAPI {
   getAPI(context) {
     return {
       tabs: {
         connect: function(tabId, connectInfo) {
           let name = "";
--- a/browser/components/extensions/parent/ext-bookmarks.js
+++ b/browser/components/extensions/parent/ext-bookmarks.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { PlacesUtils } = ChromeUtils.import(
   "resource://gre/modules/PlacesUtils.jsm"
 );
 
 var { ExtensionError } = ExtensionUtils;
 
--- a/browser/components/extensions/parent/ext-browser.js
+++ b/browser/components/extensions/parent/ext-browser.js
@@ -1,10 +1,14 @@
 /* -*- 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 file provides some useful code for the |tabs| and |windows|
 // modules. All of the code is installed on |global|, which is a scope
 // shared among the different ext-*.js scripts.
 
 ChromeUtils.defineModuleGetter(
   this,
--- a/browser/components/extensions/parent/ext-browserAction.js
+++ b/browser/components/extensions/parent/ext-browserAction.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "CustomizableUI",
   "resource:///modules/CustomizableUI.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/browser/components/extensions/parent/ext-browsingData.js
+++ b/browser/components/extensions/parent/ext-browsingData.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { PlacesUtils } = ChromeUtils.import(
   "resource://gre/modules/PlacesUtils.jsm"
 );
 
 ChromeUtils.defineModuleGetter(
   this,
--- a/browser/components/extensions/parent/ext-commands.js
+++ b/browser/components/extensions/parent/ext-commands.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "ExtensionShortcuts",
   "resource://gre/modules/ExtensionShortcuts.jsm"
 );
 
--- a/browser/components/extensions/parent/ext-devtools-inspectedWindow.js
+++ b/browser/components/extensions/parent/ext-devtools-inspectedWindow.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { SpreadArgs } = ExtensionCommon;
 
 this.devtools_inspectedWindow = class extends ExtensionAPI {
   getAPI(context) {
     // Lazily retrieved inspectedWindow actor front per child context.
     let waitForInspectedWindowFront;
--- a/browser/components/extensions/parent/ext-devtools-network.js
+++ b/browser/components/extensions/parent/ext-devtools-network.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { SpreadArgs } = ExtensionCommon;
 
 var { ExtensionError } = ExtensionUtils;
 
 this.devtools_network = class extends ExtensionAPI {
   getAPI(context) {
--- a/browser/components/extensions/parent/ext-devtools-panels.js
+++ b/browser/components/extensions/parent/ext-devtools-panels.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { ExtensionParent } = ChromeUtils.import(
   "resource://gre/modules/ExtensionParent.jsm"
 );
 
 var { IconDetails, watchExtensionProxyContextLoad } = ExtensionParent;
 
--- a/browser/components/extensions/parent/ext-devtools.js
+++ b/browser/components/extensions/parent/ext-devtools.js
@@ -1,10 +1,14 @@
 /* -*- 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 module provides helpers used by the other specialized `ext-devtools-*.js` modules
  * and the implementation of the `devtools_page`.
  */
 
 ChromeUtils.defineModuleGetter(
--- a/browser/components/extensions/parent/ext-find.js
+++ b/browser/components/extensions/parent/ext-find.js
@@ -1,10 +1,14 @@
 /* -*- 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/. */
+
 /* global tabTracker */
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "PrivateBrowsingUtils",
   "resource://gre/modules/PrivateBrowsingUtils.jsm"
 );
--- a/browser/components/extensions/parent/ext-history.js
+++ b/browser/components/extensions/parent/ext-history.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { PlacesUtils } = ChromeUtils.import(
   "resource://gre/modules/PlacesUtils.jsm"
 );
 
 ChromeUtils.defineModuleGetter(
   this,
--- a/browser/components/extensions/parent/ext-menus.js
+++ b/browser/components/extensions/parent/ext-menus.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.defineModuleGetter(
   this,
   "PrivateBrowsingUtils",
   "resource://gre/modules/PrivateBrowsingUtils.jsm"
 );
--- a/browser/components/extensions/parent/ext-normandyAddonStudy.js
+++ b/browser/components/extensions/parent/ext-normandyAddonStudy.js
@@ -1,8 +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/. */
+
 "use strict";
 
 const { AddonStudies } = ChromeUtils.import(
   "resource://normandy/lib/AddonStudies.jsm"
 );
 const { ClientID } = ChromeUtils.import("resource://gre/modules/ClientID.jsm");
 
 ChromeUtils.defineModuleGetter(
--- a/browser/components/extensions/parent/ext-omnibox.js
+++ b/browser/components/extensions/parent/ext-omnibox.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "ExtensionSearchHandler",
   "resource://gre/modules/ExtensionSearchHandler.jsm"
 );
 
--- a/browser/components/extensions/parent/ext-pageAction.js
+++ b/browser/components/extensions/parent/ext-pageAction.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "ExtensionTelemetry",
   "resource://gre/modules/ExtensionTelemetry.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/browser/components/extensions/parent/ext-pkcs11.js
+++ b/browser/components/extensions/parent/ext-pkcs11.js
@@ -1,8 +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/. */
+
 "use strict";
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   ctypes: "resource://gre/modules/ctypes.jsm",
   NativeManifests: "resource://gre/modules/NativeManifests.jsm",
   OS: "resource://gre/modules/osfile.jsm",
 });
 
--- a/browser/components/extensions/parent/ext-sessions.js
+++ b/browser/components/extensions/parent/ext-sessions.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { ExtensionError, promiseObserved } = ExtensionUtils;
 
 ChromeUtils.defineModuleGetter(
   this,
   "AddonManagerPrivate",
   "resource://gre/modules/AddonManager.jsm"
--- a/browser/components/extensions/parent/ext-sidebarAction.js
+++ b/browser/components/extensions/parent/ext-sidebarAction.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { ExtensionParent } = ChromeUtils.import(
   "resource://gre/modules/ExtensionParent.jsm"
 );
 
 var { ExtensionError } = ExtensionUtils;
 
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "BrowserUtils",
   "resource://gre/modules/BrowserUtils.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/browser/components/extensions/parent/ext-urlbar.js
+++ b/browser/components/extensions/parent/ext-urlbar.js
@@ -1,8 +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/. */
+
 "use strict";
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   UrlbarPrefs: "resource:///modules/UrlbarPrefs.jsm",
   UrlbarProviderExtension: "resource:///modules/UrlbarProviderExtension.jsm",
 });
 
 var { ExtensionPreferencesManager } = ChromeUtils.import(
--- a/browser/components/extensions/parent/ext-windows.js
+++ b/browser/components/extensions/parent/ext-windows.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "HomePage",
   "resource:///modules/HomePage.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/browser/components/newtab/bin/render-activity-stream-html.js
+++ b/browser/components/newtab/bin/render-activity-stream-html.js
@@ -1,8 +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/. */
+
 /* eslint-disable no-console */
 const fs = require("fs");
 const { mkdir } = require("shelljs");
 const path = require("path");
 
 // Note: DEFAULT_OPTIONS.baseUrl should match BASE_URL in aboutNewTabService.js
 //       in mozilla-central.
 const DEFAULT_OPTIONS = {
--- a/browser/components/newtab/bin/vendor.js
+++ b/browser/components/newtab/bin/vendor.js
@@ -1,9 +1,12 @@
 #!/usr/bin/env node
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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-disable no-console */
 
 const { cp, set } = require("shelljs");
 const path = require("path");
 
 const filesToVendor = {
   // XXX currently these two licenses are identical.  Perhaps we should check
--- a/browser/components/newtab/common/Dedupe.jsm
+++ b/browser/components/newtab/common/Dedupe.jsm
@@ -1,8 +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.Dedupe = class Dedupe {
   constructor(createKey) {
     this.createKey = createKey || this.defaultCreateKey;
   }
 
   defaultCreateKey(item) {
     return item;
   }
--- a/browser/components/newtab/common/PerfService.jsm
+++ b/browser/components/newtab/common/PerfService.jsm
@@ -1,8 +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/. */
+
 "use strict";
 
 if (typeof ChromeUtils !== "undefined") {
   // Use a var here instead of let outside to avoid creating a locally scoped
   // variable that hides the global, which we modify for testing.
   // eslint-disable-next-line no-var, vars-on-top
   var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 }
--- a/browser/components/newtab/content-src/activity-stream.jsx
+++ b/browser/components/newtab/content-src/activity-stream.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { Base } from "content-src/components/Base/Base";
 import { DetectUserSessionStart } from "content-src/lib/detect-user-session-start";
 import { initStore } from "content-src/lib/init-store";
 import { Provider } from "react-redux";
 import React from "react";
 import ReactDOM from "react-dom";
 import { reducers } from "common/Reducers.jsm";
--- a/browser/components/newtab/content-src/asrouter/asrouter-content.jsx
+++ b/browser/components/newtab/content-src/asrouter/asrouter-content.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac } from "common/Actions.jsm";
 import { OUTGOING_MESSAGE_NAME as AS_GENERAL_OUTGOING_MESSAGE_NAME } from "content-src/lib/init-store";
 import { generateBundles } from "./rich-text-strings";
 import { ImpressionsWrapper } from "./components/ImpressionsWrapper/ImpressionsWrapper";
 import { LocalizationProvider } from "fluent-react";
 import { NEWTAB_DARK_THEME } from "content-src/lib/constants";
 import { OnboardingMessage } from "./templates/OnboardingMessage/OnboardingMessage";
 import React from "react";
--- a/browser/components/newtab/content-src/asrouter/components/Button/Button.jsx
+++ b/browser/components/newtab/content-src/asrouter/components/Button/Button.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 const ALLOWED_STYLE_TAGS = ["color", "backgroundColor"];
 
 export const Button = props => {
   const style = {};
 
   // Add allowed style tags from props, e.g. props.color becomes style={color: props.color}
--- a/browser/components/newtab/content-src/asrouter/components/ConditionalWrapper/ConditionalWrapper.jsx
+++ b/browser/components/newtab/content-src/asrouter/components/ConditionalWrapper/ConditionalWrapper.jsx
@@ -1,3 +1,7 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 // lifted from https://gist.github.com/kitze/23d82bb9eb0baabfd03a6a720b1d637f
 export const ConditionalWrapper = ({ condition, wrap, children }) =>
   condition ? wrap(children) : children;
--- a/browser/components/newtab/content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx
+++ b/browser/components/newtab/content-src/asrouter/components/ImpressionsWrapper/ImpressionsWrapper.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export const VISIBLE = "visible";
 export const VISIBILITY_CHANGE_EVENT = "visibilitychange";
 
 /**
  * Component wrapper used to send telemetry pings on every impression.
  */
--- a/browser/components/newtab/content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx
+++ b/browser/components/newtab/content-src/asrouter/components/ModalOverlay/ModalOverlay.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export class ModalOverlayWrapper extends React.PureComponent {
   constructor(props) {
     super(props);
     this.onKeyDown = this.onKeyDown.bind(this);
   }
 
--- a/browser/components/newtab/content-src/asrouter/components/RichText/RichText.jsx
+++ b/browser/components/newtab/content-src/asrouter/components/RichText/RichText.jsx
@@ -1,8 +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/. */
+
 import { Localized } from "fluent-react";
 import React from "react";
 import { RICH_TEXT_KEYS } from "../../rich-text-strings";
 import { safeURI } from "../../template-utils";
 
 // Elements allowed in snippet content
 const ALLOWED_TAGS = {
   b: <b />,
--- a/browser/components/newtab/content-src/asrouter/components/SnippetBase/SnippetBase.jsx
+++ b/browser/components/newtab/content-src/asrouter/components/SnippetBase/SnippetBase.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import schema from "../../templates/SimpleSnippet/SimpleSnippet.schema.json";
 
 export class SnippetBase extends React.PureComponent {
   constructor(props) {
     super(props);
     this.onBlockClicked = this.onBlockClicked.bind(this);
     this.onDismissClicked = this.onDismissClicked.bind(this);
--- a/browser/components/newtab/content-src/asrouter/rich-text-strings.js
+++ b/browser/components/newtab/content-src/asrouter/rich-text-strings.js
@@ -1,8 +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/. */
+
 import { FluentBundle } from "fluent";
 
 /**
  * Properties that allow rich text MUST be added to this list.
  *   key: the localization_id that should be used
  *   value: a property or array of properties on the message.content object
  */
 const RICH_TEXT_CONFIG = {
--- a/browser/components/newtab/content-src/asrouter/template-utils.js
+++ b/browser/components/newtab/content-src/asrouter/template-utils.js
@@ -1,8 +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/. */
+
 export function safeURI(url) {
   if (!url) {
     return "";
   }
   const { protocol } = new URL(url);
   const isAllowed = [
     "http:",
     "https:",
--- a/browser/components/newtab/content-src/asrouter/templates/EOYSnippet/EOYSnippet.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/EOYSnippet/EOYSnippet.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import schema from "./EOYSnippet.schema.json";
 import { SimpleSnippet } from "../SimpleSnippet/SimpleSnippet";
 
 class EOYSnippetBase extends React.PureComponent {
   constructor(props) {
     super(props);
     this.handleSubmit = this.handleSubmit.bind(this);
--- a/browser/components/newtab/content-src/asrouter/templates/FXASignupSnippet/FXASignupSnippet.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/FXASignupSnippet/FXASignupSnippet.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import schema from "./FXASignupSnippet.schema.json";
 import { SubmitFormSnippet } from "../SubmitFormSnippet/SubmitFormSnippet.jsx";
 
 export const FXASignupSnippet = props => {
   const userAgent = window.navigator.userAgent.match(/Firefox\/([0-9]+)\./);
   const firefox_version = userAgent ? parseInt(userAgent[1], 10) : 0;
   const extendedContent = {
--- a/browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/NewsletterSnippet/NewsletterSnippet.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import schema from "./NewsletterSnippet.schema.json";
 import { SubmitFormSnippet } from "../SubmitFormSnippet/SubmitFormSnippet.jsx";
 
 export const NewsletterSnippet = props => {
   const extendedContent = {
     scene1_button_label: schema.properties.scene1_button_label.default,
     scene2_email_placeholder_text:
--- a/browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/OnboardingMessage/OnboardingMessage.jsx
@@ -1,8 +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/. */
+
 import { ModalOverlay } from "../../components/ModalOverlay/ModalOverlay";
 import React from "react";
 
 const FLUENT_FILES = [
   "branding/brand.ftl",
   "browser/branding/sync-brand.ftl",
   "browser/newtab/onboarding.ftl",
 ];
--- a/browser/components/newtab/content-src/asrouter/templates/ReturnToAMO/ReturnToAMO.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/ReturnToAMO/ReturnToAMO.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import { RichText } from "../../components/RichText/RichText";
 
 // Alt text if available; in the future this should come from the server. See bug 1551711
 const ICON_ALT_TEXT = "";
 
 export class ReturnToAMO extends React.PureComponent {
   constructor(props) {
--- a/browser/components/newtab/content-src/asrouter/templates/SendToDeviceSnippet/SendToDeviceSnippet.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/SendToDeviceSnippet/SendToDeviceSnippet.jsx
@@ -1,8 +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/. */
+
 import { isEmailOrPhoneNumber } from "./isEmailOrPhoneNumber";
 import React from "react";
 import schema from "./SendToDeviceSnippet.schema.json";
 import { SubmitFormSnippet } from "../SubmitFormSnippet/SubmitFormSnippet.jsx";
 
 function validateInput(value, content) {
   const type = isEmailOrPhoneNumber(value, content);
   return type ? "" : "Must be an email or a phone number.";
--- a/browser/components/newtab/content-src/asrouter/templates/SendToDeviceSnippet/isEmailOrPhoneNumber.js
+++ b/browser/components/newtab/content-src/asrouter/templates/SendToDeviceSnippet/isEmailOrPhoneNumber.js
@@ -1,8 +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/. */
+
 /**
  * Checks if a given string is an email or phone number or neither
  * @param {string} val The user input
  * @param {ASRMessageContent} content .content property on ASR message
  * @returns {"email"|"phone"|""} The type of the input
  */
 export function isEmailOrPhoneNumber(val, content) {
   const { locale } = content;
--- a/browser/components/newtab/content-src/asrouter/templates/SimpleBelowSearchSnippet/SimpleBelowSearchSnippet.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/SimpleBelowSearchSnippet/SimpleBelowSearchSnippet.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import { RichText } from "../../components/RichText/RichText";
 import { safeURI } from "../../template-utils";
 import { SnippetBase } from "../../components/SnippetBase/SnippetBase";
 
 const DEFAULT_ICON_PATH = "chrome://branding/content/icon64.png";
 // Alt text placeholder in case the prop from the server isn't available
 const ICON_ALT_TEXT = "";
--- a/browser/components/newtab/content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/SimpleSnippet/SimpleSnippet.jsx
@@ -1,8 +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/. */
+
 import { Button } from "../../components/Button/Button";
 import { ConditionalWrapper } from "../../components/ConditionalWrapper/ConditionalWrapper";
 import React from "react";
 import { RichText } from "../../components/RichText/RichText";
 import { safeURI } from "../../template-utils";
 import { SnippetBase } from "../../components/SnippetBase/SnippetBase";
 
 const DEFAULT_ICON_PATH = "chrome://branding/content/icon64.png";
--- a/browser/components/newtab/content-src/asrouter/templates/StartupOverlay/StartupOverlay.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/StartupOverlay/StartupOverlay.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { connect } from "react-redux";
 import React from "react";
 
 const FLUENT_FILES = [
   "branding/brand.ftl",
   "browser/branding/sync-brand.ftl",
   "browser/newtab/onboarding.ftl",
--- a/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/SubmitFormSnippet/SubmitFormSnippet.jsx
@@ -1,8 +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/. */
+
 import { Button } from "../../components/Button/Button";
 import React from "react";
 import { RichText } from "../../components/RichText/RichText";
 import { safeURI } from "../../template-utils";
 import { SimpleSnippet } from "../SimpleSnippet/SimpleSnippet";
 import { SnippetBase } from "../../components/SnippetBase/SnippetBase";
 
 // Alt text placeholder in case the prop from the server isn't available
--- a/browser/components/newtab/content-src/asrouter/templates/Trailhead/Trailhead.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/Trailhead/Trailhead.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { ModalOverlayWrapper } from "../../components/ModalOverlay/ModalOverlay";
 import { OnboardingCard } from "../OnboardingMessage/OnboardingMessage";
 import React from "react";
 
 const FLUENT_FILES = [
   "branding/brand.ftl",
   "browser/branding/brandings.ftl",
--- a/browser/components/newtab/content-src/asrouter/templates/template-manifest.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/template-manifest.jsx
@@ -1,8 +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/. */
+
 import { EOYSnippet } from "./EOYSnippet/EOYSnippet";
 import { FXASignupSnippet } from "./FXASignupSnippet/FXASignupSnippet";
 import { NewsletterSnippet } from "./NewsletterSnippet/NewsletterSnippet";
 import { SendToDeviceSnippet } from "./SendToDeviceSnippet/SendToDeviceSnippet";
 import { SimpleBelowSearchSnippet } from "./SimpleBelowSearchSnippet/SimpleBelowSearchSnippet";
 import { SimpleSnippet } from "./SimpleSnippet/SimpleSnippet";
 
 // Key names matching schema name of templates
--- a/browser/components/newtab/content-src/components/A11yLinkButton/A11yLinkButton.jsx
+++ b/browser/components/newtab/content-src/components/A11yLinkButton/A11yLinkButton.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export function A11yLinkButton(props) {
   // function for merging classes, if necessary
   let className = "a11y-link-button";
   if (props.className) {
     className += ` ${props.className}`;
   }
--- a/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx
+++ b/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { ASRouterUtils } from "../../asrouter/asrouter-content";
 import { connect } from "react-redux";
 import { ModalOverlay } from "../../asrouter/components/ModalOverlay/ModalOverlay";
 import React from "react";
 import { SimpleHashRouter } from "./SimpleHashRouter";
 
 const Row = props => (
--- a/browser/components/newtab/content-src/components/ASRouterAdmin/SimpleHashRouter.jsx
+++ b/browser/components/newtab/content-src/components/ASRouterAdmin/SimpleHashRouter.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export class SimpleHashRouter extends React.PureComponent {
   constructor(props) {
     super(props);
     this.onHashChange = this.onHashChange.bind(this);
     this.state = { hash: global.location.hash };
   }
--- a/browser/components/newtab/content-src/components/Base/Base.jsx
+++ b/browser/components/newtab/content-src/components/Base/Base.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { ASRouterAdmin } from "content-src/components/ASRouterAdmin/ASRouterAdmin";
 import { ASRouterUISurface } from "../../asrouter/asrouter-content";
 import { ConfirmDialog } from "content-src/components/ConfirmDialog/ConfirmDialog";
 import { connect } from "react-redux";
 import { DiscoveryStreamBase } from "content-src/components/DiscoveryStreamBase/DiscoveryStreamBase";
 import { ErrorBoundary } from "content-src/components/ErrorBoundary/ErrorBoundary";
 import React from "react";
--- a/browser/components/newtab/content-src/components/Card/Card.jsx
+++ b/browser/components/newtab/content-src/components/Card/Card.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { cardContextTypes } from "./types";
 import { connect } from "react-redux";
 import { LinkMenu } from "content-src/components/LinkMenu/LinkMenu";
 import React from "react";
 import { ScreenshotUtils } from "content-src/lib/screenshot-utils";
 
 // Keep track of pending image loads to only request once
--- a/browser/components/newtab/content-src/components/Card/types.js
+++ b/browser/components/newtab/content-src/components/Card/types.js
@@ -1,8 +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/. */
+
 export const cardContextTypes = {
   history: {
     fluentID: "newtab-label-visited",
     icon: "history-item",
   },
   bookmark: {
     fluentID: "newtab-label-bookmarked",
     icon: "bookmark-added",
--- a/browser/components/newtab/content-src/components/CollapsibleSection/CollapsibleSection.jsx
+++ b/browser/components/newtab/content-src/components/CollapsibleSection/CollapsibleSection.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac } from "common/Actions.jsm";
 import { ErrorBoundary } from "content-src/components/ErrorBoundary/ErrorBoundary";
 import { FluentOrText } from "content-src/components/FluentOrText/FluentOrText";
 import React from "react";
 import { SectionMenu } from "content-src/components/SectionMenu/SectionMenu";
 import { SectionMenuOptions } from "content-src/lib/section-menu-options";
 
 const VISIBLE = "visible";
--- a/browser/components/newtab/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx
+++ b/browser/components/newtab/content-src/components/ComponentPerfTimer/ComponentPerfTimer.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { perfService as perfSvc } from "common/PerfService.jsm";
 import React from "react";
 
 // Currently record only a fixed set of sections. This will prevent data
 // from custom sections from showing up or from topstories.
 const RECORDED_SECTIONS = ["highlights", "topsites"];
 
--- a/browser/components/newtab/content-src/components/ConfirmDialog/ConfirmDialog.jsx
+++ b/browser/components/newtab/content-src/components/ConfirmDialog/ConfirmDialog.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes } from "common/Actions.jsm";
 import { connect } from "react-redux";
 import React from "react";
 
 /**
  * ConfirmDialog component.
  * One primary action button, one cancel button.
  *
--- a/browser/components/newtab/content-src/components/ContextMenu/ContextMenu.jsx
+++ b/browser/components/newtab/content-src/components/ContextMenu/ContextMenu.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export class ContextMenu extends React.PureComponent {
   constructor(props) {
     super(props);
     this.hideContext = this.hideContext.bind(this);
     this.onShow = this.onShow.bind(this);
     this.onClick = this.onClick.bind(this);
--- a/browser/components/newtab/content-src/components/DiscoveryStreamBase/DiscoveryStreamBase.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamBase/DiscoveryStreamBase.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac } from "common/Actions.jsm";
 import { CardGrid } from "content-src/components/DiscoveryStreamComponents/CardGrid/CardGrid";
 import { CollapsibleSection } from "content-src/components/CollapsibleSection/CollapsibleSection";
 import { connect } from "react-redux";
 import { DSMessage } from "content-src/components/DiscoveryStreamComponents/DSMessage/DSMessage";
 import { Hero } from "content-src/components/DiscoveryStreamComponents/Hero/Hero";
 import { Highlights } from "content-src/components/DiscoveryStreamComponents/Highlights/Highlights";
 import { HorizontalRule } from "content-src/components/DiscoveryStreamComponents/HorizontalRule/HorizontalRule";
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/CardGrid/CardGrid.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/CardGrid/CardGrid.jsx
@@ -1,8 +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/. */
+
 import { DSCard, PlaceholderDSCard } from "../DSCard/DSCard.jsx";
 import { DSEmptyState } from "../DSEmptyState/DSEmptyState.jsx";
 import React from "react";
 
 export class CardGrid extends React.PureComponent {
   renderCards() {
     const recs = this.props.data.recommendations.slice(0, this.props.items);
     const cards = [];
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSCard/DSCard.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSCard/DSCard.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac } from "common/Actions.jsm";
 import { DSImage } from "../DSImage/DSImage.jsx";
 import { DSLinkMenu } from "../DSLinkMenu/DSLinkMenu";
 import { ImpressionStats } from "../../DiscoveryStreamImpressionStats/ImpressionStats";
 import React from "react";
 import { SafeAnchor } from "../SafeAnchor/SafeAnchor";
 
 export class DSCard extends React.PureComponent {
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSEmptyState/DSEmptyState.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSEmptyState/DSEmptyState.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import React from "react";
 
 export class DSEmptyState extends React.PureComponent {
   constructor(props) {
     super(props);
     this.onReset = this.onReset.bind(this);
     this.state = {};
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSImage/DSImage.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSImage/DSImage.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import ReactDOM from "react-dom";
 
 export class DSImage extends React.PureComponent {
   constructor(props) {
     super(props);
 
     this.onOptimizedImageError = this.onOptimizedImageError.bind(this);
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSLinkMenu/DSLinkMenu.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSLinkMenu/DSLinkMenu.jsx
@@ -1,8 +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/. */
+
 import { LinkMenu } from "content-src/components/LinkMenu/LinkMenu";
 import React from "react";
 
 export class DSLinkMenu extends React.PureComponent {
   constructor(props) {
     super(props);
     this.state = {
       activeCard: null,
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSMessage/DSMessage.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/DSMessage/DSMessage.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import { SafeAnchor } from "../SafeAnchor/SafeAnchor";
 
 export class DSMessage extends React.PureComponent {
   render() {
     return (
       <div className="ds-message">
         <header className="title">
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/Hero/Hero.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/Hero/Hero.jsx
@@ -1,8 +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/. */
+
 import { DSCard, PlaceholderDSCard } from "../DSCard/DSCard.jsx";
 import { actionCreators as ac } from "common/Actions.jsm";
 import { DSEmptyState } from "../DSEmptyState/DSEmptyState.jsx";
 import { DSImage } from "../DSImage/DSImage.jsx";
 import { DSLinkMenu } from "../DSLinkMenu/DSLinkMenu";
 import { ImpressionStats } from "../../DiscoveryStreamImpressionStats/ImpressionStats";
 import { List } from "../List/List.jsx";
 import React from "react";
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/Highlights/Highlights.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/Highlights/Highlights.jsx
@@ -1,8 +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/. */
+
 import { connect } from "react-redux";
 import React from "react";
 import { SectionIntl } from "content-src/components/Sections/Sections";
 
 export class _Highlights extends React.PureComponent {
   render() {
     const section = this.props.Sections.find(s => s.id === "highlights");
     if (!section || !section.enabled) {
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/HorizontalRule/HorizontalRule.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/HorizontalRule/HorizontalRule.jsx
@@ -1,7 +1,11 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
 import React from "react";
 
 export class HorizontalRule extends React.PureComponent {
   render() {
     return <hr className="ds-hr" />;
   }
 }
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/List/List.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/List/List.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac } from "common/Actions.jsm";
 import { connect } from "react-redux";
 import { DSEmptyState } from "../DSEmptyState/DSEmptyState.jsx";
 import { DSImage } from "../DSImage/DSImage.jsx";
 import { DSLinkMenu } from "../DSLinkMenu/DSLinkMenu";
 import { ImpressionStats } from "../../DiscoveryStreamImpressionStats/ImpressionStats";
 import React from "react";
 import { SafeAnchor } from "../SafeAnchor/SafeAnchor";
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/Navigation/Navigation.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/Navigation/Navigation.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 import { SafeAnchor } from "../SafeAnchor/SafeAnchor";
 
 export class Topic extends React.PureComponent {
   render() {
     const { url, name } = this.props;
     return (
       <li>
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/SafeAnchor/SafeAnchor.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/SafeAnchor/SafeAnchor.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import React from "react";
 
 export class SafeAnchor extends React.PureComponent {
   constructor(props) {
     super(props);
     this.onClick = this.onClick.bind(this);
   }
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/SectionTitle/SectionTitle.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/SectionTitle/SectionTitle.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export class SectionTitle extends React.PureComponent {
   render() {
     const {
       header: { title, subtitle },
     } = this.props;
     return (
--- a/browser/components/newtab/content-src/components/DiscoveryStreamComponents/TopSites/TopSites.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamComponents/TopSites/TopSites.jsx
@@ -1,8 +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/. */
+
 import { connect } from "react-redux";
 import { TopSites as OldTopSites } from "content-src/components/TopSites/TopSites";
 import React from "react";
 
 export class _TopSites extends React.PureComponent {
   render() {
     const header = this.props.header || {};
     return (
--- a/browser/components/newtab/content-src/components/DiscoveryStreamImpressionStats/ImpressionStats.jsx
+++ b/browser/components/newtab/content-src/components/DiscoveryStreamImpressionStats/ImpressionStats.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import React from "react";
 
 const VISIBLE = "visible";
 const VISIBILITY_CHANGE_EVENT = "visibilitychange";
 
 // Per analytical requirement, we set the minimal intersection ratio to
 // 0.5, and an impression is identified when the wrapped item has at least
--- a/browser/components/newtab/content-src/components/ErrorBoundary/ErrorBoundary.jsx
+++ b/browser/components/newtab/content-src/components/ErrorBoundary/ErrorBoundary.jsx
@@ -1,8 +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/. */
+
 import { A11yLinkButton } from "content-src/components/A11yLinkButton/A11yLinkButton";
 import React from "react";
 
 export class ErrorBoundaryFallback extends React.PureComponent {
   constructor(props) {
     super(props);
     this.windowObj = this.props.windowObj || window;
     this.onClick = this.onClick.bind(this);
--- a/browser/components/newtab/content-src/components/FluentOrText/FluentOrText.jsx
+++ b/browser/components/newtab/content-src/components/FluentOrText/FluentOrText.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 /**
  * Set text on a child element/component depending on if the message is already
  * translated plain text or a fluent id with optional args.
  */
 export class FluentOrText extends React.PureComponent {
   render() {
--- a/browser/components/newtab/content-src/components/LinkMenu/LinkMenu.jsx
+++ b/browser/components/newtab/content-src/components/LinkMenu/LinkMenu.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac } from "common/Actions.jsm";
 import { connect } from "react-redux";
 import { ContextMenu } from "content-src/components/ContextMenu/ContextMenu";
 import { LinkMenuOptions } from "content-src/lib/link-menu-options";
 import React from "react";
 
 const DEFAULT_SITE_MENU_OPTIONS = [
   "CheckPinTopSite",
--- a/browser/components/newtab/content-src/components/MoreRecommendations/MoreRecommendations.jsx
+++ b/browser/components/newtab/content-src/components/MoreRecommendations/MoreRecommendations.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export class MoreRecommendations extends React.PureComponent {
   render() {
     const { read_more_endpoint } = this.props;
     if (read_more_endpoint) {
       return (
         <a
--- a/browser/components/newtab/content-src/components/PocketLoggedInCta/PocketLoggedInCta.jsx
+++ b/browser/components/newtab/content-src/components/PocketLoggedInCta/PocketLoggedInCta.jsx
@@ -1,8 +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/. */
+
 import { connect } from "react-redux";
 import React from "react";
 
 export class _PocketLoggedInCta extends React.PureComponent {
   render() {
     const { pocketCta } = this.props.Pocket;
     return (
       <span className="pocket-logged-in-cta">
--- a/browser/components/newtab/content-src/components/Search/Search.jsx
+++ b/browser/components/newtab/content-src/components/Search/Search.jsx
@@ -1,8 +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/. */
+
 /* globals ContentSearchUIController */
 "use strict";
 
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { connect } from "react-redux";
 import { IS_NEWTAB } from "content-src/lib/constants";
 import React from "react";
 
--- a/browser/components/newtab/content-src/components/SectionMenu/SectionMenu.jsx
+++ b/browser/components/newtab/content-src/components/SectionMenu/SectionMenu.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac } from "common/Actions.jsm";
 import { ContextMenu } from "content-src/components/ContextMenu/ContextMenu";
 import React from "react";
 import { SectionMenuOptions } from "content-src/lib/section-menu-options";
 
 const DEFAULT_SECTION_MENU_OPTIONS = [
   "MoveUp",
   "MoveDown",
--- a/browser/components/newtab/content-src/components/Sections/Sections.jsx
+++ b/browser/components/newtab/content-src/components/Sections/Sections.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { Card, PlaceholderCard } from "content-src/components/Card/Card";
 import { CollapsibleSection } from "content-src/components/CollapsibleSection/CollapsibleSection";
 import { ComponentPerfTimer } from "content-src/components/ComponentPerfTimer/ComponentPerfTimer";
 import { FluentOrText } from "content-src/components/FluentOrText/FluentOrText";
 import { connect } from "react-redux";
 import { MoreRecommendations } from "content-src/components/MoreRecommendations/MoreRecommendations";
 import { PocketLoggedInCta } from "content-src/components/PocketLoggedInCta/PocketLoggedInCta";
--- a/browser/components/newtab/content-src/components/TopSites/SearchShortcutsForm.jsx
+++ b/browser/components/newtab/content-src/components/TopSites/SearchShortcutsForm.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import React from "react";
 import { TOP_SITES_SOURCE } from "./TopSitesConstants";
 
 export class SelectableSearchShortcut extends React.PureComponent {
   render() {
     const { shortcut, selected } = this.props;
     const imageStyle = { backgroundImage: `url("${shortcut.tippyTopIcon}")` };
--- a/browser/components/newtab/content-src/components/TopSites/TopSite.jsx
+++ b/browser/components/newtab/content-src/components/TopSites/TopSite.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import {
   MIN_CORNER_FAVICON_SIZE,
   MIN_RICH_FAVICON_SIZE,
   TOP_SITES_CONTEXT_MENU_OPTIONS,
   TOP_SITES_SEARCH_SHORTCUTS_CONTEXT_MENU_OPTIONS,
   TOP_SITES_SOURCE,
 } from "./TopSitesConstants";
--- a/browser/components/newtab/content-src/components/TopSites/TopSiteForm.jsx
+++ b/browser/components/newtab/content-src/components/TopSites/TopSiteForm.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { A11yLinkButton } from "content-src/components/A11yLinkButton/A11yLinkButton";
 import React from "react";
 import { TOP_SITES_SOURCE } from "./TopSitesConstants";
 import { TopSiteFormInput } from "./TopSiteFormInput";
 import { TopSiteLink } from "./TopSite";
 
 export class TopSiteForm extends React.PureComponent {
--- a/browser/components/newtab/content-src/components/TopSites/TopSiteFormInput.jsx
+++ b/browser/components/newtab/content-src/components/TopSites/TopSiteFormInput.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export class TopSiteFormInput extends React.PureComponent {
   constructor(props) {
     super(props);
     this.state = { validationError: this.props.validationError };
     this.onChange = this.onChange.bind(this);
     this.onMount = this.onMount.bind(this);
--- a/browser/components/newtab/content-src/components/TopSites/TopSites.jsx
+++ b/browser/components/newtab/content-src/components/TopSites/TopSites.jsx
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import {
   MIN_CORNER_FAVICON_SIZE,
   MIN_RICH_FAVICON_SIZE,
   TOP_SITES_SOURCE,
 } from "./TopSitesConstants";
 import { CollapsibleSection } from "content-src/components/CollapsibleSection/CollapsibleSection";
 import { ComponentPerfTimer } from "content-src/components/ComponentPerfTimer/ComponentPerfTimer";
--- a/browser/components/newtab/content-src/components/TopSites/TopSitesConstants.js
+++ b/browser/components/newtab/content-src/components/TopSites/TopSitesConstants.js
@@ -1,8 +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/. */
+
 export const TOP_SITES_SOURCE = "TOP_SITES";
 export const TOP_SITES_CONTEXT_MENU_OPTIONS = [
   "CheckPinTopSite",
   "EditTopSite",
   "Separator",
   "OpenInNewWindow",
   "OpenInPrivateWindow",
   "Separator",
--- a/browser/components/newtab/content-src/components/Topics/Topics.jsx
+++ b/browser/components/newtab/content-src/components/Topics/Topics.jsx
@@ -1,8 +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/. */
+
 import React from "react";
 
 export class Topic extends React.PureComponent {
   render() {
     const { url, name } = this.props;
     return (
       <li>
         <a key={name} href={url}>
--- a/browser/components/newtab/content-src/lib/constants.js
+++ b/browser/components/newtab/content-src/lib/constants.js
@@ -1,8 +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/. */
+
 export const IS_NEWTAB =
   global.document && global.document.documentURI === "about:newtab";
 export const NEWTAB_DARK_THEME = {
   ntp_background: {
     r: 42,
     g: 42,
     b: 46,
     a: 1,
--- a/browser/components/newtab/content-src/lib/detect-user-session-start.js
+++ b/browser/components/newtab/content-src/lib/detect-user-session-start.js
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 import { perfService as perfSvc } from "common/PerfService.jsm";
 
 const VISIBLE = "visible";
 const VISIBILITY_CHANGE_EVENT = "visibilitychange";
 
 export class DetectUserSessionStart {
   constructor(store, options = {}) {
--- a/browser/components/newtab/content-src/lib/init-store.js
+++ b/browser/components/newtab/content-src/lib/init-store.js
@@ -1,8 +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/. */
+
 /* eslint-env mozilla/frame-script */
 
 import {
   actionCreators as ac,
   actionTypes as at,
   actionUtils as au,
 } from "common/Actions.jsm";
 import { applyMiddleware, combineReducers, createStore } from "redux";
--- a/browser/components/newtab/content-src/lib/link-menu-options.js
+++ b/browser/components/newtab/content-src/lib/link-menu-options.js
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 
 const _OpenInPrivateWindow = site => ({
   id: "newtab-menu-open-new-private-window",
   icon: "new-window-private",
   action: ac.OnlyToMain({
     type: at.OPEN_PRIVATE_WINDOW,
     data: { url: site.url, referrer: site.referrer },
--- a/browser/components/newtab/content-src/lib/screenshot-utils.js
+++ b/browser/components/newtab/content-src/lib/screenshot-utils.js
@@ -1,8 +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/. */
+
 /**
  * List of helper functions for screenshot-based images.
  *
  * There are two kinds of images:
  * 1. Remote Image: This is the image from the main process and it refers to
  *    the image in the React props. This can either be an object with the `data`
  *    and `path` properties, if it is a blob, or a string, if it is a normal image.
  * 2. Local Image: This is the image object in the content process and it refers
--- a/browser/components/newtab/content-src/lib/section-menu-options.js
+++ b/browser/components/newtab/content-src/lib/section-menu-options.js
@@ -1,8 +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/. */
+
 import { actionCreators as ac, actionTypes as at } from "common/Actions.jsm";
 
 /**
  * List of functions that return items that can be included as menu options in a
  * SectionMenu. All functions take the section as the only parameter.
  */
 export const SectionMenuOptions = {
   Separator: () => ({ type: "separator" }),
--- a/browser/components/newtab/content-src/lib/selectLayoutRender.js
+++ b/browser/components/newtab/content-src/lib/selectLayoutRender.js
@@ -1,8 +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/. */
+
 export const selectLayoutRender = (state, prefs, rickRollCache) => {
   const { layout, feeds, spocs } = state;
   let spocIndex = 0;
   let bufferRollCache = [];
   // Records the chosen and unchosen spocs by the probability selection.
   let chosenSpocs = new Set();
   let unchosenSpocs = new Set();
 
--- a/browser/components/newtab/data/content/activity-stream.bundle.js
+++ b/browser/components/newtab/data/content/activity-stream.bundle.js
@@ -1,8 +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/. */
+
 /******/ (function(modules) { // webpackBootstrap
 /******/ 	// The module cache
 /******/ 	var installedModules = {};
 /******/
 /******/ 	// The require function
 /******/ 	function __webpack_require__(moduleId) {
 /******/
 /******/ 		// Check if module is in cache
--- a/browser/components/newtab/karma.mc.config.js
+++ b/browser/components/newtab/karma.mc.config.js
@@ -1,8 +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/. */
+
 const path = require("path");
 
 const PATHS = {
   // Where is the entry point for the unit tests?
   testEntryFile: path.resolve(__dirname, "test/unit/unit-entry.js"),
 
   // A glob-style pattern matching all unit tests
   testFilesPattern: "test/unit/**/*.js",
--- a/browser/components/newtab/lib/ASRouterFeed.jsm
+++ b/browser/components/newtab/lib/ASRouterFeed.jsm
@@ -1,8 +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/. */
+
 const { actionTypes: at } = ChromeUtils.import(
   "resource://activity-stream/common/Actions.jsm"
 );
 const { ASRouter } = ChromeUtils.import(
   "resource://activity-stream/lib/ASRouter.jsm"
 );
 
 /**
--- a/browser/components/newtab/lib/ASRouterTargeting.jsm
+++ b/browser/components/newtab/lib/ASRouterTargeting.jsm
@@ -1,8 +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/. */
+
 const { FilterExpressions } = ChromeUtils.import(
   "resource://gre/modules/components-utils/FilterExpressions.jsm"
 );
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(
   this,
   "ASRouterPreferences",
--- a/browser/components/newtab/lib/ActivityStreamStorage.jsm
+++ b/browser/components/newtab/lib/ActivityStreamStorage.jsm
@@ -1,8 +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/. */
+
 ChromeUtils.defineModuleGetter(
   this,
   "IndexedDB",
   "resource://gre/modules/IndexedDB.jsm"
 );
 
 this.ActivityStreamStorage = class ActivityStreamStorage {
   /**
--- a/browser/components/newtab/lib/DownloadsManager.jsm
+++ b/browser/components/newtab/lib/DownloadsManager.jsm
@@ -1,8 +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/. */
+
 const { XPCOMUtils } = ChromeUtils.import(
   "resource://gre/modules/XPCOMUtils.jsm"
 );
 XPCOMUtils.defineLazyGlobalGetters(this, ["URL"]);
 
 const { actionTypes: at } = ChromeUtils.import(
   "resource://activity-stream/common/Actions.jsm"
 );
--- a/browser/components/newtab/lib/ShortURL.jsm
+++ b/browser/components/newtab/lib/ShortURL.jsm
@@ -1,8 +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/. */
+
 const { XPCOMUtils } = ChromeUtils.import(
   "resource://gre/modules/XPCOMUtils.jsm"
 );
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 XPCOMUtils.defineLazyServiceGetter(
   this,
   "IDNService",
--- a/browser/components/newtab/loaders/inject-loader.js
+++ b/browser/components/newtab/loaders/inject-loader.js
@@ -1,8 +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/. */
+
 // Note: this is based on https://github.com/plasticine/inject-loader,
 // patched to make istanbul work properly
 
 const loaderUtils = require("loader-utils");
 const QUOTE_REGEX_STRING = "['|\"]{1}";
 
 const hasOnlyExcludeFlags = query =>
   Object.keys(query).filter(key => query[key] === true).length === 0;
--- a/browser/components/newtab/prerendered/activity-stream-debug.html
+++ b/browser/components/newtab/prerendered/activity-stream-debug.html
@@ -1,8 +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/. -->
+
 <!doctype html>
 <html>
   <head>
     <meta charset="utf-8">
     <meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
     <title data-l10n-id="newtab-page-title"></title>
     <link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
     <link rel="localization" href="browser/branding/brandings.ftl" />
--- a/browser/components/newtab/prerendered/activity-stream-noscripts.html
+++ b/browser/components/newtab/prerendered/activity-stream-noscripts.html
@@ -1,8 +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/. -->
+
 <!doctype html>
 <html>
   <head>
     <meta charset="utf-8">
     <meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
     <title data-l10n-id="newtab-page-title"></title>
     <link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
     <link rel="localization" href="browser/branding/brandings.ftl" />
--- a/browser/components/newtab/prerendered/activity-stream.html
+++ b/browser/components/newtab/prerendered/activity-stream.html
@@ -1,8 +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/. -->
+
 <!doctype html>
 <html>
   <head>
     <meta charset="utf-8">
     <meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
     <title data-l10n-id="newtab-page-title"></title>
     <link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
     <link rel="localization" href="browser/branding/brandings.ftl" />
--- a/browser/components/newtab/webpack.aboutlibrary.config.js
+++ b/browser/components/newtab/webpack.aboutlibrary.config.js
@@ -1,8 +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/. */
+
 const path = require("path");
 const config = require("./webpack.system-addon.config.js");
 const absolute = relPath => path.join(__dirname, relPath);
 module.exports = Object.assign({}, config(), {
   entry: absolute("content-src/aboutlibrary/aboutlibrary.jsx"),
   output: {
     path: absolute("aboutlibrary/content"),
     filename: "aboutlibrary.bundle.js",
--- a/browser/components/newtab/webpack.system-addon.config.js
+++ b/browser/components/newtab/webpack.system-addon.config.js
@@ -1,8 +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/. */
+
 const path = require("path");
 const webpack = require("webpack");
 
 const absolute = relPath => path.join(__dirname, relPath);
 
 const resourcePathRegEx = /^resource:\/\/activity-stream\//;
 
 module.exports = (env = {}) => ({
--- a/browser/components/payments/server.py
+++ b/browser/components/payments/server.py
@@ -1,8 +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/.
+
 from __future__ import absolute_import
 import BaseHTTPServer
 from SimpleHTTPServer import SimpleHTTPRequestHandler
 
 
 class RequestHandler(SimpleHTTPRequestHandler, object):
     def translate_path(self, path):
         # Map autofill paths to their own directory
--- a/browser/components/places/content/bookmarksHistoryTooltip.inc.xul
+++ b/browser/components/places/content/bookmarksHistoryTooltip.inc.xul
@@ -1,8 +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/.
+
 <!-- Bookmarks and history tooltip -->
 <tooltip id="bhTooltip" noautohide="true"
          onpopupshowing="return window.top.BookmarksEventHandler.fillInBHTooltip(document, event)">
   <vbox id="bhTooltipTextBox" flex="1">
     <description id="bhtTitleText" class="tooltip-label" />
     <description id="bhtUrlText" crop="center" class="tooltip-label uri-element" />
   </vbox>
 </tooltip>
--- a/browser/components/places/content/editBookmarkPanel.inc.xul
+++ b/browser/components/places/content/editBookmarkPanel.inc.xul
@@ -1,8 +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/.
+
 <vbox id="editBookmarkPanelContent" flex="1">
   <hbox id="editBMPanel_selectionCount" pack="center">
     <label id="editBMPanel_itemsCountText"/>
   </hbox>
 
   <vbox id="editBookmarkPanelRows">
     <vbox id="editBMPanel_nameRow"
           collapsed="true">
--- a/browser/components/places/content/placesCommands.inc.xul
+++ b/browser/components/places/content/placesCommands.inc.xul
@@ -1,8 +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/.
+
 <commandset id="placesCommands"
             commandupdater="true"
             events="focus,sort,places"
             oncommandupdate="PlacesUIUtils.updateCommands(window);">
   <command id="Browser:ShowAllBookmarks"
            oncommand="PlacesCommandHook.showPlacesOrganizer('UnfiledBookmarks');"/>
   <command id="Browser:ShowAllHistory"
            oncommand="PlacesCommandHook.showPlacesOrganizer('History');"/>
--- a/browser/components/places/content/placesContextMenu.inc.xul
+++ b/browser/components/places/content/placesContextMenu.inc.xul
@@ -1,8 +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/.
+
 <menupopup id="placesContext"
            onpopupshowing="this._view = PlacesUIUtils.getViewForNode(document.popupNode);
                            if (!PlacesUIUtils.openInTabClosesMenu) {
                              document.getElementById('placesContext_open:newtab')
                              .setAttribute('closemenu', 'single');
                            }
                            return this._view.buildContextMenu(this);"
            onpopuphiding="this._view.destroyContextMenu();">
--- a/browser/components/preferences/in-content/search.inc.xul
+++ b/browser/components/preferences/in-content/search.inc.xul
@@ -1,8 +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/. -->
+
     <script src="chrome://browser/content/preferences/in-content/search.js"/>
     <html:template id="template-paneSearch">
     <hbox id="searchCategory"
           class="subcategory"
           hidden="true"
           data-category="paneSearch">
       <html:h1 data-l10n-id="pane-search-title"/>
     </hbox>
--- a/browser/extensions/formautofill/background.js
+++ b/browser/extensions/formautofill/background.js
@@ -1,8 +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/. */
+
 /* eslint-env webextensions */
 
 "use strict";
 
 browser.runtime.onUpdateAvailable.addListener(details => {
   // By listening to but ignoring this event, any updates will
   // be delayed until the next browser restart.
   // Note that if we ever wanted to change this, we should make
--- a/browser/extensions/screenshots/assertIsBlankDocument.js
+++ b/browser/extensions/screenshots/assertIsBlankDocument.js
@@ -1,8 +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/. */
+
 /** For use inside an iframe onload function, throws an Error if iframe src is not blank.html
 
     Should be applied *inside* catcher.watchFunction
 */
 this.assertIsBlankDocument = function assertIsBlankDocument(doc) {
   if (doc.documentURI !== browser.extension.getURL("blank.html")) {
     const exc = new Error("iframe URL does not match expected blank.html");
     exc.foundURL = doc.documentURI;
--- a/browser/extensions/screenshots/assertIsTrusted.js
+++ b/browser/extensions/screenshots/assertIsTrusted.js
@@ -1,8 +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/. */
+
 /** For use with addEventListener, assures that any events have event.isTrusted set to true
       https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted
     Should be applied *inside* catcher.watchFunction
 */
 this.assertIsTrusted = function assertIsTrusted(handlerFunction) {
   return function(event) {
     if (!event) {
       const exc = new Error("assertIsTrusted did not get an event");
--- a/browser/extensions/screenshots/background/analytics.js
+++ b/browser/extensions/screenshots/background/analytics.js
@@ -1,8 +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/. */
+
 /* globals main, auth, browser, catcher, deviceInfo, communication, log */
 
 "use strict";
 
 this.analytics = (function() {
   const exports = {};
 
   const GA_PORTION = 0.1; // 10% of users will send to the server/GA
--- a/browser/extensions/screenshots/background/auth.js
+++ b/browser/extensions/screenshots/background/auth.js
@@ -1,8 +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/. */
+
 /* globals log */
 /* globals main, makeUuid, deviceInfo, analytics, catcher, buildSettings, communication */
 
 "use strict";
 
 this.auth = (function() {
   const exports = {};
 
--- a/browser/extensions/screenshots/background/communication.js
+++ b/browser/extensions/screenshots/background/communication.js
@@ -1,8 +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/. */
+
 /* globals catcher, log */
 
 "use strict";
 
 this.communication = (function() {
   const exports = {};
 
   const registeredFunctions = {};
--- a/browser/extensions/screenshots/background/deviceInfo.js
+++ b/browser/extensions/screenshots/background/deviceInfo.js
@@ -1,8 +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/. */
+
 /* globals catcher */
 
 "use strict";
 
 this.deviceInfo = (function() {
   const manifest = browser.runtime.getManifest();
 
   let platformInfo = {};
--- a/browser/extensions/screenshots/background/main.js
+++ b/browser/extensions/screenshots/background/main.js
@@ -1,8 +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/. */
+
 /* globals selectorLoader, analytics, communication, catcher, log, makeUuid, auth, senderror, startBackground, blobConverters buildSettings */
 
 "use strict";
 
 this.main = (function() {
   const exports = {};
 
   const pasteSymbol = (window.navigator.platform.match(/Mac/i)) ? "\u2318" : "Ctrl";
--- a/browser/extensions/screenshots/background/selectorLoader.js
+++ b/browser/extensions/screenshots/background/selectorLoader.js
@@ -1,8 +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/. */
+
 /* globals catcher, communication, log, main */
 
 "use strict";
 
 // eslint-disable-next-line no-var
 var global = this;
 
 this.selectorLoader = (function() {
--- a/browser/extensions/screenshots/background/senderror.js
+++ b/browser/extensions/screenshots/background/senderror.js
@@ -1,8 +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/. */
+
 /* globals startBackground, analytics, communication, makeUuid, Raven, catcher, auth, log */
 
 "use strict";
 
 this.senderror = (function() {
   const exports = {};
 
   const manifest = browser.runtime.getManifest();
--- a/browser/extensions/screenshots/background/startBackground.js
+++ b/browser/extensions/screenshots/background/startBackground.js
@@ -1,8 +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/. */
+
 /* globals browser, main, communication, manifest */
 /* This file handles:
      clicks on the WebExtension page action
      browser.contextMenus.onClicked
      browser.runtime.onMessage
    and loads the rest of the background page in response to those events, forwarding
    the events to main.onClicked, main.onClickedContextMenu, or communication.onMessage
 */
--- a/browser/extensions/screenshots/background/takeshot.js
+++ b/browser/extensions/screenshots/background/takeshot.js
@@ -1,8 +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/. */
+
 /* globals communication, shot, main, auth, catcher, analytics, buildSettings, blobConverters, thumbnailGenerator */
 
 "use strict";
 
 this.takeshot = (function() {
   const exports = {};
   const Shot = shot.AbstractShot;
   const { sendEvent, incrementCount } = analytics;
--- a/browser/extensions/screenshots/blank.html
+++ b/browser/extensions/screenshots/blank.html
@@ -1,1 +1,5 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
 <html></html>
--- a/browser/extensions/screenshots/blobConverters.js
+++ b/browser/extensions/screenshots/blobConverters.js
@@ -1,8 +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.blobConverters = (function() {
   const exports = {};
 
   exports.dataUrlToBlob = function(url) {
     const binary = atob(url.split(",", 2)[1]);
     let contentType = exports.getTypeFromDataUrl(url);
     if (contentType !== "image/png" && contentType !== "image/jpeg") {
       contentType = "image/png";
--- a/browser/extensions/screenshots/build/buildSettings.js
+++ b/browser/extensions/screenshots/build/buildSettings.js
@@ -1,8 +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/. */
+
 window.buildSettings = {
   defaultSentryDsn: "https://904ccdd4866247c092ae8fc1a4764a63:940d44bdc71d4daea133c19080ccd38d@sentry.prod.mozaws.net/224",
   logLevel: "" || "warn",
   captureText: ("" === "true"),
   uploadBinary: ("" === "true"),
   pngToJpegCutoff: parseInt("" || 2500000, 10),
   maxImageHeight: parseInt("" || 10000, 10),
   maxImageWidth: parseInt("" || 10000, 10)
--- a/browser/extensions/screenshots/build/inlineSelectionCss.js
+++ b/browser/extensions/screenshots/build/inlineSelectionCss.js
@@ -1,8 +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/. */
+
 /* Created from build/server/static/css/inline-selection.css */
 window.inlineSelectionCss = `
 .button, .highlight-button-cancel, .highlight-button-download, .highlight-button-copy {
   display: flex;
   align-items: center;
   justify-content: center;
   border: 0;
   border-radius: 3px;
--- a/browser/extensions/screenshots/build/onboardingCss.js
+++ b/browser/extensions/screenshots/build/onboardingCss.js
@@ -1,8 +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/. */
+
 /* Created from build/server/static/css/onboarding.css */
 window.onboardingCss = `
 .loader {
   background: rgba(12, 12, 13, 0.2);
   border-radius: 2px;
   height: 4px;
   overflow: hidden;
   position: relative;
--- a/browser/extensions/screenshots/build/onboardingHtml.js
+++ b/browser/extensions/screenshots/build/onboardingHtml.js
@@ -1,8 +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/. */
+
 /* Created from webextension/onboarding/slides.html */
 window.onboardingHtml = `
 <!DOCTYPE html>
 <html>
   <head>
     <!-- onboarding.scss is automatically inserted here: -->
     <style></style>
     <!-- Here and in onboarding.scss use MOZ_EXTENSION/path to refer to local files -->
--- a/browser/extensions/screenshots/build/selection.js
+++ b/browser/extensions/screenshots/build/selection.js
@@ -1,8 +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.selection = (function () {let exports={}; class Selection {
   constructor(x1, y1, x2, y2) {
     this.x1 = x1;
     this.y1 = y1;
     this.x2 = x2;
     this.y2 = y2;
   }
 
--- a/browser/extensions/screenshots/build/shot.js
+++ b/browser/extensions/screenshots/build/shot.js
@@ -1,8 +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.shot = (function () {let exports={}; // Note: in this library we can't use any "system" dependencies because this can be used from multiple
 // environments
 
 const isNode = typeof process !== "undefined" && Object.prototype.toString.call(process) === "[object process]";
 const URL = (isNode && require("url").URL) || window.URL;
 
 /** Throws an error if the condition isn't true.  Any extra arguments after the condition
     are used as console.error() arguments. */
--- a/browser/extensions/screenshots/build/thumbnailGenerator.js
+++ b/browser/extensions/screenshots/build/thumbnailGenerator.js
@@ -1,8 +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.thumbnailGenerator = (function () {let exports={}; // This is used in webextension/background/takeshot.js,
 // server/src/pages/shot/controller.js, and
 // server/scr/pages/shotindex/view.js. It is used in a browser
 // environment.
 
 // Resize down 1/2 at a time produces better image quality.
 // Not quite as good as using a third-party filter (which will be
 // slower), but good enough.
--- a/browser/extensions/screenshots/catcher.js
+++ b/browser/extensions/screenshots/catcher.js
@@ -1,8 +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/. */
+
 "use strict";
 
 // eslint-disable-next-line no-var
 var global = this;
 
 this.catcher = (function() {
   const exports = {};
 
--- a/browser/extensions/screenshots/clipboard.js
+++ b/browser/extensions/screenshots/clipboard.js
@@ -1,8 +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/. */
+
 /* globals catcher, assertIsBlankDocument */
 
 "use strict";
 
 this.clipboard = (function() {
   const exports = {};
 
   exports.copy = function(text) {
--- a/browser/extensions/screenshots/domainFromUrl.js
+++ b/browser/extensions/screenshots/domainFromUrl.js
@@ -1,8 +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/. */
+
 /** Returns the domain of a URL, but safely and in ASCII; URLs without domains
     (such as about:blank) return the scheme, Unicode domains get stripped down
     to ASCII */
 
 "use strict";
 
 this.domainFromUrl = (function() {
 
--- a/browser/extensions/screenshots/experiments/screenshots/api.js
+++ b/browser/extensions/screenshots/experiments/screenshots/api.js
@@ -1,8 +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/. */
+
 /* globals browser, AppConstants, CustomizableUI, ExtensionCommon, Services, ExtensionAPI */
 
 "use strict";
 
 ChromeUtils.defineModuleGetter(this, "AppConstants",
                                "resource://gre/modules/AppConstants.jsm");
 ChromeUtils.defineModuleGetter(this, "CustomizableUI",
                                "resource:///modules/CustomizableUI.jsm");
--- a/browser/extensions/screenshots/log.js
+++ b/browser/extensions/screenshots/log.js
@@ -1,8 +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/. */
+
 /* globals buildSettings */
 /* eslint-disable no-console */
 
 "use strict";
 
 this.log = (function() {
   const exports = {};
 
--- a/browser/extensions/screenshots/makeUuid.js
+++ b/browser/extensions/screenshots/makeUuid.js
@@ -1,8 +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/. */
+
 "use strict";
 
 this.makeUuid = (function() {
 
   // generates a v4 UUID
   return function makeUuid() { // eslint-disable-line no-unused-vars
     // get sixteen unsigned 8 bit random values
     const randomValues = window
--- a/browser/extensions/screenshots/onboarding/slides.html
+++ b/browser/extensions/screenshots/onboarding/slides.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE html>
 <html>
   <head>
     <!-- onboarding.scss is automatically inserted here: -->
     <style></style>
     <!-- Here and in onboarding.scss use MOZ_EXTENSION/path to refer to local files -->
   </head>
   <body>
--- a/browser/extensions/screenshots/onboarding/slides.js
+++ b/browser/extensions/screenshots/onboarding/slides.js
@@ -1,8 +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/. */
+
 /* globals log, catcher, onboardingHtml, onboardingCss, util, shooter, callBackground, assertIsTrusted, assertIsBlankDocument */
 
 "use strict";
 
 this.slides = (function() {
   const exports = {};
 
   const { watchFunction } = catcher;
--- a/browser/extensions/screenshots/randomString.js
+++ b/browser/extensions/screenshots/randomString.js
@@ -1,8 +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/. */
+
 /* exported randomString */
 
 "use strict";
 
 this.randomString = function randomString(length, chars) {
   const randomStringChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
   chars = chars || randomStringChars;
   let result = "";
--- a/browser/extensions/screenshots/selector/callBackground.js
+++ b/browser/extensions/screenshots/selector/callBackground.js
@@ -1,8 +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/. */
+
 /* globals log */
 
 "use strict";
 
 this.callBackground = function callBackground(funcName, ...args) {
   return browser.runtime.sendMessage({funcName, args}).then((result) => {
     if (result && result.type === "success") {
       return result.value;
--- a/browser/extensions/screenshots/selector/documentMetadata.js
+++ b/browser/extensions/screenshots/selector/documentMetadata.js
@@ -1,8 +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/. */
+
 "use strict";
 
 this.documentMetadata = (function() {
 
   function findSiteName() {
     let el = document.querySelector("meta[property~='og:site_name'][content]");
     if (el) {
       return el.getAttribute("content");
--- a/browser/extensions/screenshots/selector/shooter.js
+++ b/browser/extensions/screenshots/selector/shooter.js
@@ -1,8 +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/. */
+
 /* globals global, documentMetadata, util, uicontrol, ui, catcher */
 /* globals buildSettings, domainFromUrl, randomString, shot, blobConverters */
 
 "use strict";
 
 this.shooter = (function() { // eslint-disable-line no-unused-vars
   const exports = {};
   const { AbstractShot } = shot;
--- a/browser/extensions/screenshots/selector/ui.js
+++ b/browser/extensions/screenshots/selector/ui.js
@@ -1,8 +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/. */
+
 /* globals log, util, catcher, inlineSelectionCss, callBackground, assertIsTrusted, assertIsBlankDocument, buildSettings blobConverters */
 
 "use strict";
 
 this.ui = (function() { // eslint-disable-line no-unused-vars
   const exports = {};
   const SAVE_BUTTON_HEIGHT = 50;
 
--- a/browser/extensions/screenshots/selector/uicontrol.js
+++ b/browser/extensions/screenshots/selector/uicontrol.js
@@ -1,8 +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/. */
+
 /* globals log, catcher, util, ui, slides */
 /* globals shooter, callBackground, selectorLoader, assertIsTrusted, buildSettings, selection */
 
 "use strict";
 
 this.uicontrol = (function() {
   const exports = {};
 
--- a/browser/extensions/screenshots/selector/util.js
+++ b/browser/extensions/screenshots/selector/util.js
@@ -1,8 +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/. */
+
 "use strict";
 
 this.util = (function() { // eslint-disable-line no-unused-vars
   const exports = {};
 
   /** Removes a node from its document, if it's a node and the node is attached to a parent */
   exports.removeNode = function(el) {
     if (el && el.parentNode) {
--- a/browser/extensions/screenshots/sitehelper.js
+++ b/browser/extensions/screenshots/sitehelper.js
@@ -1,8 +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/. */
+
 /* globals catcher, callBackground, content */
 /** This is a content script added to all screenshots.firefox.com pages, and allows the site to
     communicate with the add-on */
 
 "use strict";
 
 this.sitehelper = (function() {
 
--- a/browser/extensions/webcompat/aboutCompat.html
+++ b/browser/extensions/webcompat/aboutCompat.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE HTML>
 <html>
 <head>
   <base/>
   <!-- If you change this script tag you must update the hash in the extension's
          `content_security_policy` 'sha256-HbSjs39Y0thRGfO3RHrNzLPKyC/tq6FdIuP3jEBAcJQ=' -->
   <script>document.head.firstElementChild.href = browser.runtime.getURL("");</script>
   <meta charset="utf-8" />
--- a/browser/extensions/webcompat/injections.js
+++ b/browser/extensions/webcompat/injections.js
@@ -1,8 +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/. */
+
 /**
  * For detailed information on our policies, and a documention on this format
  * and its possibilites, please check the Mozilla-Wiki at
  *
  * https://wiki.mozilla.org/Compatibility/Go_Faster_Addon/Override_Policies_and_Workflows#User_Agent_overrides
  */
 
 "use strict";
--- a/browser/extensions/webcompat/injections/js/bug0000000-dummy-js-injection.js
+++ b/browser/extensions/webcompat/injections/js/bug0000000-dummy-js-injection.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /* globals exportFunction */
 
 Object.defineProperty(window.wrappedJSObject, "isTestFeatureSupported", {
   get: exportFunction(function() {
     return true;
   }, window),
--- a/browser/extensions/webcompat/injections/js/bug1452707-window.controllers-shim-ib.absa.co.za.js
+++ b/browser/extensions/webcompat/injections/js/bug1452707-window.controllers-shim-ib.absa.co.za.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /**
  * Bug 1452707 - Build site patch for ib.absa.co.za
  * WebCompat issue #16401 - https://webcompat.com/issues/16401
  *
  * The online banking at ib.absa.co.za detect if window.controllers is a
  * non-falsy value to detect if the current browser is Firefox or something
--- a/browser/extensions/webcompat/injections/js/bug1457335-histography.io-ua-change.js
+++ b/browser/extensions/webcompat/injections/js/bug1457335-histography.io-ua-change.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /**
  * Bug 1457335 - histography.io - Override UA & navigator.vendor
  * WebCompat issue #1804 - https://webcompat.com/issues/1804
  *
  * This site is using a strict matching of navigator.userAgent and
  * navigator.vendor to allow access for Safari or Chrome. Here, we set the
--- a/browser/extensions/webcompat/injections/js/bug1472075-bankofamerica.com-ua-change.js
+++ b/browser/extensions/webcompat/injections/js/bug1472075-bankofamerica.com-ua-change.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /**
  * Bug 1472075 - Build UA override for Bank of America for OSX & Linux
  * WebCompat issue #2787 - https://webcompat.com/issues/2787
  *
  * BoA is showing a red warning to Linux and macOS users, while accepting
  * Windows users without warning. From our side, there is no difference here
--- a/browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js
+++ b/browser/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /**
  * Bug 1472081 - election.gov.np - Override window.sidebar with something falsey
  * WebCompat issue #11622 - https://webcompat.com/issues/11622
  *
  * This site is blocking onmousedown and onclick if window.sidebar is something
  * that evaluates to true, rendering the form fields unusable. This patch
--- a/browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js
+++ b/browser/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /**
  * portalminasnet.com - Override window.sidebar with something falsey
  * WebCompat issue #18143 - https://webcompat.com/issues/18143
  *
  * This site is blocking onmousedown and onclick if window.sidebar is something
  * that evaluates to true, rendering the login unusable. This patch overrides
--- a/browser/extensions/webcompat/ua_overrides.js
+++ b/browser/extensions/webcompat/ua_overrides.js
@@ -1,8 +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/. */
+
 /**
  * For detailed information on our policies, and a documention on this format
  * and its possibilites, please check the Mozilla-Wiki at
  *
  * https://wiki.mozilla.org/Compatibility/Go_Faster_Addon/Override_Policies_and_Workflows#User_Agent_overrides
  */
 
 "use strict";
--- a/browser/modules/SiteDataManager.jsm
+++ b/browser/modules/SiteDataManager.jsm
@@ -1,8 +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/. */
+
 "use strict";
 
 const { XPCOMUtils } = ChromeUtils.import(
   "resource://gre/modules/XPCOMUtils.jsm"
 );
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 var EXPORTED_SYMBOLS = ["SiteDataManager"];
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed.html
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE HTML>
 <html>
   <head>
     <meta charset="utf8">
     <title>Mixed Content test</title>
   </head>
   <body>
     <iframe style="visibility:hidden" src="http://example.com"></iframe>
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed_active.html
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed_active.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE HTML>
 <html>
   <head>
     <meta charset="utf8">
     <title>Mixed Active Content test</title>
   </head>
   <body>
     <iframe style="visibility:hidden" src="http://example.com"></iframe>
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed_passive.html
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/mixed_passive.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE HTML>
 <html>
   <head>
     <meta charset="utf8">
     <title>Mixed Passive Content test</title>
   </head>
   <body>
     <img style="visibility:hidden" src="http://example.com/tests/image/test/mochitest/blue.png"></img>
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/password.html
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/password.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE HTML>
 <html>
   <head>
     <meta charset="utf8">
     <title>HTTP Password test</title>
   </head>
   <body>
     <form>
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/tracking.html
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/lib/controlCenter/tracking.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE HTML>
 <html>
   <head>
     <meta charset="utf8">
     <title>Tracking test</title>
   </head>
   <body>
     <iframe style="visibility:hidden" src="http://tracking.example.com/"></iframe>
--- a/browser/tools/mozscreenshots/mozscreenshots/extension/lib/permissionPrompts.html
+++ b/browser/tools/mozscreenshots/mozscreenshots/extension/lib/permissionPrompts.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE html>
 <html>
 <head>
   <meta charset="utf-8">
   <title>Permission Prompts</title>
 </head>
 <body>
   <button id="geo" onclick="navigator.geolocation.getCurrentPosition(() => {})">Geolocation</button>
--- a/toolkit/components/extensions/ProfilerGetSymbols-worker.js
+++ b/toolkit/components/extensions/ProfilerGetSymbols-worker.js
@@ -1,10 +1,14 @@
 /* -*- 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/. */
+
 /* eslint-env mozilla/chrome-worker */
 
 "use strict";
 
 importScripts(
   "resource://gre/modules/osfile.jsm",
   "resource://gre/modules/profiler_get_symbols.js"
 );
--- a/toolkit/components/extensions/ProfilerGetSymbols.jsm
+++ b/toolkit/components/extensions/ProfilerGetSymbols.jsm
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 const EXPORTED_SYMBOLS = ["ProfilerGetSymbols"];
 
 ChromeUtils.defineModuleGetter(
   this,
   "setTimeout",
   "resource://gre/modules/Timer.jsm"
--- a/toolkit/components/extensions/WebNavigationContent.js
+++ b/toolkit/components/extensions/WebNavigationContent.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /* eslint-env mozilla/frame-script */
 
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(
   this,
--- a/toolkit/components/extensions/child/ext-backgroundPage.js
+++ b/toolkit/components/extensions/child/ext-backgroundPage.js
@@ -1,8 +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/. */
+
 "use strict";
 
 this.backgroundPage = class extends ExtensionAPI {
   getAPI(context) {
     function getBackgroundPage() {
       for (let view of context.extension.views) {
         if (
           view.viewType == "background" &&
--- a/toolkit/components/extensions/child/ext-contentScripts.js
+++ b/toolkit/components/extensions/child/ext-contentScripts.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { ExtensionError } = ExtensionUtils;
 
 /**
  * Represents (in the child extension process) a content script registered
  * programmatically (instead of being included in the addon manifest).
  *
--- a/toolkit/components/extensions/child/ext-extension.js
+++ b/toolkit/components/extensions/child/ext-extension.js
@@ -1,8 +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/. */
+
 "use strict";
 
 this.extension = class extends ExtensionAPI {
   getAPI(context) {
     let api = {
       getURL(url) {
         return context.extension.baseURI.resolve(url);
       },
--- a/toolkit/components/extensions/child/ext-identity.js
+++ b/toolkit/components/extensions/child/ext-identity.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { Constructor: CC } = Components;
 
 ChromeUtils.defineModuleGetter(
   this,
   "CommonUtils",
   "resource://services-common/utils.js"
--- a/toolkit/components/extensions/child/ext-runtime.js
+++ b/toolkit/components/extensions/child/ext-runtime.js
@@ -1,8 +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/. */
+
 "use strict";
 
 this.runtime = class extends ExtensionAPI {
   getAPI(context) {
     let { extension } = context;
 
     return {
       runtime: {
--- a/toolkit/components/extensions/child/ext-storage.js
+++ b/toolkit/components/extensions/child/ext-storage.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "ExtensionStorage",
   "resource://gre/modules/ExtensionStorage.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/child/ext-test.js
+++ b/toolkit/components/extensions/child/ext-test.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /**
  * Checks whether the given error matches the given expectations.
  *
  * @param {*} error
  *        The error to check.
  * @param {string|RegExp|function|null} expectedError
--- a/toolkit/components/extensions/child/ext-toolkit.js
+++ b/toolkit/components/extensions/child/ext-toolkit.js
@@ -1,8 +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/. */
+
 "use strict";
 
 var { ExtensionCommon } = ChromeUtils.import(
   "resource://gre/modules/ExtensionCommon.jsm"
 );
 
 // eslint-disable-next-line no-unused-vars
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/child/ext-userScripts-content.js
+++ b/toolkit/components/extensions/child/ext-userScripts-content.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var USERSCRIPT_PREFNAME = "extensions.webextensions.userScripts.enabled";
 var USERSCRIPT_DISABLED_ERRORMSG = `userScripts APIs are currently experimental and must be enabled with the ${USERSCRIPT_PREFNAME} preference.`;
 
 ChromeUtils.defineModuleGetter(
   this,
   "Schemas",
--- a/toolkit/components/extensions/child/ext-userScripts.js
+++ b/toolkit/components/extensions/child/ext-userScripts.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var USERSCRIPT_PREFNAME = "extensions.webextensions.userScripts.enabled";
 var USERSCRIPT_DISABLED_ERRORMSG = `userScripts APIs are currently experimental and must be enabled with the ${USERSCRIPT_PREFNAME} preference.`;
 
 XPCOMUtils.defineLazyPreferenceGetter(
   this,
   "userScriptsEnabled",
--- a/toolkit/components/extensions/child/ext-webRequest.js
+++ b/toolkit/components/extensions/child/ext-webRequest.js
@@ -1,10 +1,14 @@
 /* -*- 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.webRequest = class extends ExtensionAPI {
   getAPI(context) {
     let filters = new WeakSet();
 
     context.callOnClose({
       close() {
--- a/toolkit/components/extensions/dummy.xul
+++ b/toolkit/components/extensions/dummy.xul
@@ -1,2 +1,6 @@
 <?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
 <window id="documentElement"/>
--- a/toolkit/components/extensions/parent/ext-alarms.js
+++ b/toolkit/components/extensions/parent/ext-alarms.js
@@ -1,8 +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/. */
+
 "use strict";
 
 // The ext-* files are imported into the same scopes.
 /* import-globals-from ext-toolkit.js */
 
 // Manages an alarm created by the extension (alarms API).
 function Alarm(api, name, alarmInfo) {
   this.api = api;
--- a/toolkit/components/extensions/parent/ext-backgroundPage.js
+++ b/toolkit/components/extensions/parent/ext-backgroundPage.js
@@ -1,8 +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/. */
+
 "use strict";
 
 var { ExtensionParent } = ChromeUtils.import(
   "resource://gre/modules/ExtensionParent.jsm"
 );
 var { HiddenExtensionPage, promiseExtensionViewLoaded } = ExtensionParent;
 
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/parent/ext-browserSettings.js
+++ b/toolkit/components/extensions/parent/ext-browserSettings.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "AppConstants",
   "resource://gre/modules/AppConstants.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/parent/ext-clipboard.js
+++ b/toolkit/components/extensions/parent/ext-clipboard.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 XPCOMUtils.defineLazyServiceGetter(
   this,
   "imgTools",
   "@mozilla.org/image/tools;1",
   "imgITools"
 );
--- a/toolkit/components/extensions/parent/ext-contentScripts.js
+++ b/toolkit/components/extensions/parent/ext-contentScripts.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 /* exported registerContentScript, unregisterContentScript */
 /* global registerContentScript, unregisterContentScript */
 
 var { ExtensionUtils } = ChromeUtils.import(
   "resource://gre/modules/ExtensionUtils.jsm"
 );
--- a/toolkit/components/extensions/parent/ext-contextualIdentities.js
+++ b/toolkit/components/extensions/parent/ext-contextualIdentities.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "ContextualIdentityService",
   "resource://gre/modules/ContextualIdentityService.jsm"
 );
 XPCOMUtils.defineLazyPreferenceGetter(
--- a/toolkit/components/extensions/parent/ext-cookies.js
+++ b/toolkit/components/extensions/parent/ext-cookies.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "Services",
   "resource://gre/modules/Services.jsm"
 );
 
--- a/toolkit/components/extensions/parent/ext-dns.js
+++ b/toolkit/components/extensions/parent/ext-dns.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 const dnssFlags = {
   allow_name_collisions: Ci.nsIDNSService.RESOLVE_ALLOW_NAME_COLLISION,
   bypass_cache: Ci.nsIDNSService.RESOLVE_BYPASS_CACHE,
   canonical_name: Ci.nsIDNSService.RESOLVE_CANONICAL_NAME,
   disable_ipv4: Ci.nsIDNSService.RESOLVE_DISABLE_IPV4,
   disable_ipv6: Ci.nsIDNSService.RESOLVE_DISABLE_IPV6,
--- a/toolkit/components/extensions/parent/ext-downloads.js
+++ b/toolkit/components/extensions/parent/ext-downloads.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "AppConstants",
   "resource://gre/modules/AppConstants.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/parent/ext-extension.js
+++ b/toolkit/components/extensions/parent/ext-extension.js
@@ -1,8 +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/. */
+
 "use strict";
 
 this.extension = class extends ExtensionAPI {
   getAPI(context) {
     return {
       extension: {
         get lastError() {
           return context.lastError;
--- a/toolkit/components/extensions/parent/ext-geckoProfiler.js
+++ b/toolkit/components/extensions/parent/ext-geckoProfiler.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 ChromeUtils.defineModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm");
 ChromeUtils.defineModuleGetter(
   this,
   "ProfilerGetSymbols",
--- a/toolkit/components/extensions/parent/ext-i18n.js
+++ b/toolkit/components/extensions/parent/ext-i18n.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "LanguageDetector",
   "resource:///modules/translation/LanguageDetector.jsm"
 );
 
--- a/toolkit/components/extensions/parent/ext-identity.js
+++ b/toolkit/components/extensions/parent/ext-identity.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "Services",
   "resource://gre/modules/Services.jsm"
 );
 
--- a/toolkit/components/extensions/parent/ext-idle.js
+++ b/toolkit/components/extensions/parent/ext-idle.js
@@ -1,8 +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/. */
+
 "use strict";
 
 XPCOMUtils.defineLazyServiceGetter(
   this,
   "idleService",
   "@mozilla.org/widget/idleservice;1",
   "nsIIdleService"
 );
--- a/toolkit/components/extensions/parent/ext-management.js
+++ b/toolkit/components/extensions/parent/ext-management.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 XPCOMUtils.defineLazyGetter(this, "strBundle", function() {
   return Services.strings.createBundle(
     "chrome://global/locale/extensions.properties"
   );
 });
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/parent/ext-notifications.js
+++ b/toolkit/components/extensions/parent/ext-notifications.js
@@ -1,8 +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/. */
+
 "use strict";
 
 const ToolkitModules = {};
 
 ChromeUtils.defineModuleGetter(
   ToolkitModules,
   "EventEmitter",
   "resource://gre/modules/EventEmitter.jsm"
--- a/toolkit/components/extensions/parent/ext-permissions.js
+++ b/toolkit/components/extensions/parent/ext-permissions.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "ExtensionPermissions",
   "resource://gre/modules/ExtensionPermissions.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/parent/ext-privacy.js
+++ b/toolkit/components/extensions/parent/ext-privacy.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 ChromeUtils.defineModuleGetter(
   this,
   "Preferences",
   "resource://gre/modules/Preferences.jsm"
 );
 
--- a/toolkit/components/extensions/parent/ext-protocolHandlers.js
+++ b/toolkit/components/extensions/parent/ext-protocolHandlers.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 XPCOMUtils.defineLazyServiceGetter(
   this,
   "handlerService",
   "@mozilla.org/uriloader/handler-service;1",
   "nsIHandlerService"
 );
--- a/toolkit/components/extensions/parent/ext-runtime.js
+++ b/toolkit/components/extensions/parent/ext-runtime.js
@@ -1,8 +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/. */
+
 "use strict";
 
 var { ExtensionParent } = ChromeUtils.import(
   "resource://gre/modules/ExtensionParent.jsm"
 );
 
 ChromeUtils.defineModuleGetter(
   this,
--- a/toolkit/components/extensions/parent/ext-storage.js
+++ b/toolkit/components/extensions/parent/ext-storage.js
@@ -1,8 +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/. */
+
 "use strict";
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   AddonManagerPrivate: "resource://gre/modules/AddonManager.jsm",
   ExtensionStorage: "resource://gre/modules/ExtensionStorage.jsm",
   ExtensionStorageIDB: "resource://gre/modules/ExtensionStorageIDB.jsm",
   extensionStorageSync: "resource://gre/modules/ExtensionStorageSync.jsm",
   NativeManifests: "resource://gre/modules/NativeManifests.jsm",
--- a/toolkit/components/extensions/parent/ext-telemetry.js
+++ b/toolkit/components/extensions/parent/ext-telemetry.js
@@ -1,8 +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/. */
+
 "use strict";
 
 ChromeUtils.defineModuleGetter(
   this,
   "TelemetryController",
   "resource://gre/modules/TelemetryController.jsm"
 );
 ChromeUtils.defineModuleGetter(
--- a/toolkit/components/extensions/parent/ext-theme.js
+++ b/toolkit/components/extensions/parent/ext-theme.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /* global windowTracker, EventManager, EventEmitter */
 
 /* eslint-disable complexity */
 
 var { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
--- a/toolkit/components/extensions/parent/ext-toolkit.js
+++ b/toolkit/components/extensions/parent/ext-toolkit.js
@@ -1,8 +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/. */
+
 "use strict";
 
 // These are defined on "global" which is used for the same scopes as the other
 // ext-*.js files.
 /* exported getCookieStoreIdForTab, getCookieStoreIdForContainer,
             getContainerForCookieStoreId,
             isValidCookieStoreId, isContainerCookieStoreId,
             EventManager, URL */
--- a/toolkit/components/extensions/parent/ext-topSites.js
+++ b/toolkit/components/extensions/parent/ext-topSites.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   NewTabUtils: "resource://gre/modules/NewTabUtils.jsm",
   shortURL: "resource://activity-stream/lib/ShortURL.jsm",
   getSearchProvider: "resource://activity-stream/lib/SearchShortcuts.jsm",
 });
 
--- a/toolkit/components/extensions/parent/ext-userScripts.js
+++ b/toolkit/components/extensions/parent/ext-userScripts.js
@@ -1,10 +1,14 @@
 /* -*- 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";
 
 var { ExtensionUtils } = ChromeUtils.import(
   "resource://gre/modules/ExtensionUtils.jsm"
 );
 
 var { ExtensionError } = ExtensionUtils;
 
--- a/toolkit/components/extensions/parent/ext-webNavigation.js
+++ b/toolkit/components/extensions/parent/ext-webNavigation.js
@@ -1,8 +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/. */
+
 "use strict";
 
 // This file expects tabTracker to be defined in the global scope (e.g.
 // by ext-utils.js).
 /* global tabTracker */
 
 ChromeUtils.defineModuleGetter(
   this,
--- a/toolkit/components/extensions/parent/ext-webRequest.js
+++ b/toolkit/components/extensions/parent/ext-webRequest.js
@@ -1,8 +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/. */
+
 "use strict";
 
 // This file expects tabTracker to be defined in the global scope (e.g.
 // by ext-utils.js).
 /* global tabTracker */
 
 ChromeUtils.defineModuleGetter(
   this,
--- a/toolkit/components/extensions/profiler_get_symbols.js
+++ b/toolkit/components/extensions/profiler_get_symbols.js
@@ -1,8 +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 FILE IS AUTOGENERATED by wasm-bindgen.
 //
 // Generated from:
 // https://github.com/mstange/profiler-get-symbols/commit/0a0aadc68d6196823a5f102feacb2f04424cd681
 // by following the instructions in that repository's Readme.md
 //
 
--- a/toolkit/components/featuregates/gen_feature_definitions.py
+++ b/toolkit/components/featuregates/gen_feature_definitions.py
@@ -1,9 +1,13 @@
 #!/usr/bin/env python
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this file,
+# You can obtain one at http://mozilla.org/MPL/2.0/.
+
 import json
 import pytoml
 import re
 import sys
 
 import six
 import voluptuous
 import voluptuous.humanize
--- a/toolkit/components/gfx/content/gfxFrameScript.js
+++ b/toolkit/components/gfx/content/gfxFrameScript.js
@@ -1,8 +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/. */
+
 /* eslint-env mozilla/frame-script */
 
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 const gfxFrameScript = {
   domUtils: null,
 
   init() {
--- a/toolkit/components/gfx/content/sanityparent.html
+++ b/toolkit/components/gfx/content/sanityparent.html
@@ -1,7 +1,11 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
 <html>
   <head>
   </head>
   <body>
 
   </body>
 </html>
--- a/toolkit/components/gfx/content/sanitytest.html
+++ b/toolkit/components/gfx/content/sanitytest.html
@@ -1,6 +1,10 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
 <html>
     <body>
         <div style="width:32px; height:64px; background-color:red;"></div>
         <video src="videotest.mp4"></video>
     </body>
 </html>
--- a/toolkit/components/normandy/actions/schemas/export_json.js
+++ b/toolkit/components/normandy/actions/schemas/export_json.js
@@ -1,9 +1,13 @@
 #!/usr/bin/env node
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.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-env node */
 
 /**
  * This script exports the schemas from this package in JSON format, for use by
  * other tools. It is run as a part of the publishing process to NPM.
  */
 
 const fs = require("fs");
--- a/toolkit/components/normandy/actions/schemas/index.js
+++ b/toolkit/components/normandy/actions/schemas/index.js
@@ -1,8 +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/. */
+
 var EXPORTED_SYMBOLS = ["ActionSchemas"];
 
 const ActionSchemas = {
   "console-log": {
     $schema: "http://json-schema.org/draft-04/schema#",
     title: "Log a message to the console",
     type: "object",
     required: ["message"],
--- a/toolkit/components/normandy/lib/ActionsManager.jsm
+++ b/toolkit/components/normandy/lib/ActionsManager.jsm
@@ -1,8 +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/. */
+
 const { XPCOMUtils } = ChromeUtils.import(
   "resource://gre/modules/XPCOMUtils.jsm"
 );
 const { LogManager } = ChromeUtils.import(
   "resource://normandy/lib/LogManager.jsm"
 );
 
 XPCOMUtils.defineLazyModuleGetters(this, {
--- a/toolkit/components/osfile/modules/ospath_win.jsm
+++ b/toolkit/components/osfile/modules/ospath_win.jsm
@@ -1,8 +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/. */
+
 /**
  * Handling native paths.
  *
  * This module contains a number of functions destined to simplify
  * working with native paths through a cross-platform API. Functions
  * of this module will only work with the following assumptions:
  *
  * - paths are valid;
--- a/toolkit/components/prompts/src/SharedPromptUtils.jsm
+++ b/toolkit/components/prompts/src/SharedPromptUtils.jsm
@@ -1,8 +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/. */
+
 var EXPORTED_SYMBOLS = ["PromptUtils", "EnableDelayHelper"];
 
 const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 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
--- a/toolkit/components/reader/content/aboutReader.html
+++ b/toolkit/components/reader/content/aboutReader.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE html>
 <html>
 
 <head>
   <meta http-equiv="Content-Security-Policy" content="default-src chrome:; img-src data: *; media-src *" />
   <meta content="text/html; charset=UTF-8" http-equiv="content-type" />
   <meta name="viewport" content="width=device-width; user-scalable=0" />
   <link rel="stylesheet" href="chrome://global/skin/aboutReader.css" type="text/css"/>
--- a/toolkit/components/telemetry/build_scripts/mozparsers/__init__.py
+++ b/toolkit/components/telemetry/build_scripts/mozparsers/__init__.py
@@ -0,0 +1,3 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.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/toolkit/components/thumbnails/PageThumbsStorageService.jsm
+++ b/toolkit/components/thumbnails/PageThumbsStorageService.jsm
@@ -1,8 +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/. */
+
 const THUMBNAIL_DIRECTORY = "thumbnails";
 
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm", this);
 ChromeUtils.import("resource://gre/modules/osfile.jsm", this);
 
 XPCOMUtils.defineLazyGetter(this, "gCryptoHash", function() {
   return Cc["@mozilla.org/security/hash;1"].createInstance(Ci.nsICryptoHash);
 });
--- a/toolkit/content/aboutRights.js
+++ b/toolkit/content/aboutRights.js
@@ -1,8 +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/. */
+
 var servicesDiv = document.getElementById("webservices-container");
 servicesDiv.style.display = "none";
 
 function showServices() {
   servicesDiv.style.display = "";
 }
 
 // Fluent replaces the children of the element being overlayed which prevents us
--- a/toolkit/content/datepicker.xhtml
+++ b/toolkit/content/datepicker.xhtml
@@ -1,9 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
 <!DOCTYPE html [
   <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
   %htmlDTD;
 ]>
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <head>
   <title>Date Picker</title>
   <link rel="stylesheet" href="chrome://global/skin/datetimeinputpickers.css"/>
--- a/toolkit/content/editMenuKeys.inc.xul
+++ b/toolkit/content/editMenuKeys.inc.xul
@@ -1,8 +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/.
+
   <!-- These key nodes are here only for show. The real bindings come from
        XBL, in platformHTMLBindings.xml. See bugs 57078 and 71779. -->
 
   <keyset id="editMenuKeys">
     <key id="key_undo" key="&undoCmd.key;" modifiers="accel" command="cmd_undo"/>
 #ifdef XP_UNIX
     <key id="key_redo" key="&undoCmd.key;" modifiers="accel,shift" command="cmd_redo"/>
 #else
--- a/toolkit/content/timepicker.xhtml
+++ b/toolkit/content/timepicker.xhtml
@@ -1,9 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
 <!DOCTYPE html [
   <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
   %htmlDTD;
 ]>
 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <head>
   <title>Time Picker</title>
   <link rel="stylesheet" href="chrome://global/skin/datetimeinputpickers.css"/>
--- a/toolkit/crashreporter/rust/lib.rs
+++ b/toolkit/crashreporter/rust/lib.rs
@@ -1,8 +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/. */
+
 extern crate rustc_demangle;
 
 use rustc_demangle::demangle;
 use std::ffi::{CStr, CString};
 use std::ptr;
 
 /// Demangle `name` as a Rust symbol.
 ///
--- a/toolkit/library/gen_buildid.py
+++ b/toolkit/library/gen_buildid.py
@@ -1,8 +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/.
+
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distibuted with this
 # file, You can obtain one at http://mozilla.og/MPL/2.0/.
 
 
 from mozbuild.preprocessor import Preprocessor
--- a/toolkit/library/rust/shared/build.rs
+++ b/toolkit/library/rust/shared/build.rs
@@ -1,8 +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/. */
+
 extern crate rustc_version;
 
 use rustc_version::{version, Version};
 
 fn main() {
     let ver = version().unwrap();
     let mut bootstrap = false;
     let max_oom_hook_version = Version::parse("1.37.0-alpha").unwrap();
--- a/toolkit/modules/win.xul
+++ b/toolkit/modules/win.xul
@@ -1,2 +1,6 @@
 <?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+   - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
 <window id='win'/>
--- a/toolkit/mozapps/extensions/content/aboutaddons.html
+++ b/toolkit/mozapps/extensions/content/aboutaddons.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE html>
 <html>
   <head>
     <link rel="stylesheet" href="chrome://global/content/tabprompts.css">
     <link rel="stylesheet" href="chrome://global/skin/tabprompts.css">
 
     <link rel="stylesheet" href="chrome://global/skin/in-content/common.css">
     <link rel="stylesheet" href="chrome://mozapps/content/extensions/aboutaddons.css">
--- a/toolkit/mozapps/extensions/content/abuse-report-frame.html
+++ b/toolkit/mozapps/extensions/content/abuse-report-frame.html
@@ -1,8 +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/. -->
+
 <!DOCTYPE html>
 <html>
   <head>
     <link rel="stylesheet" href="chrome://global/skin/in-content/common.css">
     <link rel="stylesheet" href="chrome://mozapps/content/extensions/aboutaddons.css">
     <link rel="stylesheet" href="chrome://mozapps/content/extensions/abuse-report-panel.css">
 
     <link rel="localization" href="branding/brand.ftl">
--- a/toolkit/mozapps/extensions/content/abuse-report-frame.js
+++ b/toolkit/mozapps/extensions/content/abuse-report-frame.js
@@ -1,8 +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/. */
+
 "use strict";
 
 /* globals MozXULElement, Services, useHtmlViews, getHtmlBrowser, htmlBrowserLoaded */
 
 {
   const ABUSE_REPORT_ENABLED = Services.prefs.getBoolPref(
     "extensions.abuseReport.enabled",
     false
--- a/toolkit/mozapps/update/updater/gen_cert_header.py
+++ b/toolkit/mozapps/update/updater/gen_cert_header.py
@@ -1,8 +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/.
+
 from __future__ import print_function
 
 import binascii
 
 def file_byte_generator(filename, block_size = 512):
   with open(filename, "rb") as f:
     while True:
       block = f.read(block_size)