Bug 1684173 - Add newline character at end of files when missing r=sylvestre,geckoview-reviewers,agi
authorKartik Gautam <ikartikgautam@outlook.com>
Thu, 07 Jan 2021 08:53:08 +0000
changeset 562216 9fb5f70151e6e32519eaa2b607815dc697a9ffe4
parent 562215 ef73153346d890ee181e8f6ccb062853de00a4da
child 562217 d3c9145520adf19b24587c65950189e19a1b1d13
push id38084
push usernbeleuzu@mozilla.com
push dateThu, 07 Jan 2021 16:36:34 +0000
treeherdermozilla-central@81e34ce5a390 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssylvestre, geckoview-reviewers, agi
bugs1684173
milestone86.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 1684173 - Add newline character at end of files when missing r=sylvestre,geckoview-reviewers,agi Differential Revision: https://phabricator.services.mozilla.com/D100484
accessible/ipc/extension/android/DocAccessiblePlatformExtChild.h
accessible/ipc/extension/android/DocAccessiblePlatformExtParent.h
accessible/ipc/extension/other/DocAccessiblePlatformExtChild.h
accessible/ipc/extension/other/DocAccessiblePlatformExtParent.h
browser/base/content/aboutTabCrashed.css
browser/base/content/test/contextMenu/browser_contextmenu_loadblobinnewtab.html
browser/base/content/test/fullscreen/open_and_focus_helper.html
browser/base/content/test/pageinfo/iframes.html
browser/base/content/test/static/bug1262648_string_with_newlines.dtd
browser/base/content/test/tabdialogs/subdialog.xhtml
browser/base/content/test/tabs/file_anchor_elements.html
browser/components/originattributes/test/browser/file_thirdPartyChild.link.css
browser/components/urlbar/content/interventions.ftl
build/clang-plugin/tests/TestLoadLibraryUsage.cpp
build/clang-plugin/tests/TestNoPrincipalGetUri.cpp
config/external/rlbox_lucet_sandbox/rlbox_lucet_thread_locals.cpp
devtools/client/aboutdebugging/src/components/connect/ConnectSection.css
devtools/client/aboutdebugging/test/browser/test-tab-favicons.html
devtools/client/framework/browser-toolbox/test/doc_browser_toolbox_fission_contentframe_inspector_page.html
devtools/client/inspector/computed/test/doc_sourcemaps.css
devtools/client/inspector/shared/test/doc_content_stylesheet.xhtml
devtools/client/jsonview/css/search-box.css
devtools/client/locales/en-US/dom.properties
devtools/client/netmonitor/src/assets/styles/StatusCode.css
devtools/client/netmonitor/test/html_csp-test-page.html
devtools/client/netmonitor/test/html_slow-requests-test-page.html
devtools/client/responsive/test/browser/doc_toolbox_rule_view.css
devtools/client/responsive/test/browser/doc_toolbox_rule_view.html
devtools/client/shared/components/tabs/Tabs.css
devtools/client/styleeditor/test/doc_xulpage.xhtml
devtools/client/styleeditor/test/many-media-rules-sourcemaps/index.html
devtools/client/styleeditor/test/many-media-rules-sourcemaps/sourcemap/sourcemap-css/sourcemaps.css
devtools/client/styleeditor/test/sourcemap-css/media-rules.css
devtools/client/styleeditor/test/test_private.css
devtools/client/webconsole/test/browser/test-block-action-style.css
devtools/client/webconsole/test/browser/test-cspro.html
devtools/client/webconsole/test/browser/test-worker-promise-error.html
devtools/server/tests/browser/application-manifest-no-manifest.html
devtools/shared/locales/en-US/shared.properties
devtools/shared/resources/tests/network_document.html
dom/bindings/BindingIPCUtils.h
dom/canvas/CanvasGradient.cpp
dom/canvas/CanvasPattern.cpp
dom/canvas/MurmurHash3.h
dom/encoding/test/file_in_lk_TLD.html
dom/encoding/test/file_utf16_be_bom.xhtml
dom/encoding/test/file_utf16_le_bom.css
dom/encoding/test/file_utf16_le_bom.xhtml
dom/encoding/test/file_utf16_le_nobom.xhtml
dom/events/InputEventOptions.h
dom/gamepad/GamepadHandle.cpp
dom/gamepad/GamepadHandle.h
dom/html/nsRadioVisitor.cpp
dom/ipc/MMPrinter.h
dom/ipc/tests/file_dummy.html
dom/l10n/tests/mochitest/document_l10n/test_docl10n.xhtml
dom/media/autoplay/test/mochitest/file_autoplay_policy_play_before_loadedmetadata.html
dom/media/autoplay/test/mochitest/file_autoplay_policy_unmute_pauses.html
dom/media/gmp/CDMStorageIdProvider.cpp
dom/media/gmp/GMPStorage.h
dom/media/gmp/widevine-adapter/WidevineFileIO.h
dom/media/webrtc/sdp/HybridSdpParser.h
dom/media/webrtc/tests/mochitests/test_dataChannel_stats.html
dom/media/webrtc/tests/mochitests/test_peerConnection_rtcp_rsize.html
dom/media/webrtc/tests/mochitests/test_peerConnection_sender_and_receiver_stats.html
dom/media/webvtt/test/mochitest/test_bug1242594.html
dom/media/webvtt/test/mochitest/test_bug957847.html
dom/payments/test/test_currency_amount_validation.html
dom/payments/test/test_payerDetails.html
dom/permission/tests/file_empty.html
dom/presentation/PresentationCallbacks.cpp
dom/res/hiddenWindow.html
dom/serviceworkers/test/sw_clients/refresher_cached_compressed.html
dom/serviceworkers/test/sw_clients/refresher_compressed.html
dom/tests/browser/beforeunload_test_page.html
dom/vr/test/mochitest/test_vrController_displayId.html
dom/vr/test/mochitest/test_vrDisplay_canvas2d.html
dom/vr/test/mochitest/test_vrDisplay_exitPresent.html
dom/vr/test/mochitest/test_vrDisplay_getFrameData.html
dom/vr/test/mochitest/test_vrDisplay_onvrdisplayconnect.html
dom/vr/test/mochitest/test_vrDisplay_onvrdisplaydeactivate_crosscontent.html
dom/vr/test/mochitest/test_vrDisplay_requestPresent.html
dom/vr/test/reftest/change_size.html
dom/vr/test/reftest/draw_rect.html
dom/xhr/tests/file_XHR_system_redirect.html
editor/composer/crashtests/351236-1.html
extensions/spellcheck/hunspell/glue/mozHunspellFileMgrGlue.h
extensions/spellcheck/hunspell/glue/mozHunspellFileMgrHost.h
gfx/layers/TextureSync.h
gfx/layers/apz/src/ExpectedGeckoMetrics.cpp
gfx/layers/ipc/ShadowLayerUtilsX11.cpp
gfx/tests/gtest/PolygonTestUtils.cpp
gfx/tests/gtest/TestMatrix.cpp
gfx/tests/reftest/1474722-ref.html
gfx/tests/reftest/1474722.html
gfx/tests/reftest/1616444-same-color-different-paths.html
gfx/vr/FxROutputHandler.cpp
gfx/vr/FxROutputHandler.h
gfx/vr/FxRWindowManager.cpp
gfx/vr/FxRWindowManager.h
gfx/vr/VRShMem.h
gfx/vr/VRThread.h
gfx/vr/ipc/VRGPUChild.h
gfx/vr/ipc/VRGPUParent.cpp
gfx/vr/ipc/VRProcessChild.h
gfx/vr/service/OpenVRControllerMapper.cpp
gfx/vr/service/OpenVRControllerMapper.h
gfx/vr/service/OpenVRCosmosMapper.cpp
gfx/vr/service/OpenVRCosmosMapper.h
gfx/vr/service/OpenVRDefaultMapper.cpp
gfx/vr/service/OpenVRDefaultMapper.h
gfx/vr/service/OpenVRKnucklesMapper.cpp
gfx/vr/service/OpenVRKnucklesMapper.h
gfx/vr/service/OpenVRViveMapper.cpp
gfx/vr/service/OpenVRViveMapper.h
gfx/vr/service/OpenVRWMRMapper.cpp
gfx/vr/service/OpenVRWMRMapper.h
gfx/vr/vrhost/vrhostex.h
intl/JapaneseDetector.h
ipc/glue/LibrarySandboxPreload.cpp
ipc/glue/LibrarySandboxPreload.h
layout/base/RelativeTo.h
layout/base/nsRefreshObservers.cpp
mfbt/tests/TestArray.cpp
mfbt/tests/TestAtomicBitfields.cpp
mfbt/tests/TestRandomNum.cpp
mobile/android/components/geckoview/GeckoViewExternalAppService.h
netwerk/base/IPv6Utils.h
netwerk/protocol/ftp/nsFTPChannel.cpp
remote/test/browser/input/doc_dispatchKeyEvent_race.html
testing/marionette/harness/marionette_harness/www/html5/boolean_attributes.html
testing/marionette/harness/marionette_harness/www/html5/test_html_inputs.html
testing/marionette/harness/marionette_harness/www/slow_resource.html
testing/marionette/harness/marionette_harness/www/windowHandles.html
testing/web-platform/mozilla/tests/wasm/spec/js/harness/testharness.css
toolkit/components/certviewer/content/components/about-certificate-section.css
toolkit/components/extensions/test/mochitest/test_ext_webnavigation_incognito.html
toolkit/components/printing/tests/simplifyNonArticleSample.html
toolkit/components/processtools/ProcessToolsService.h
toolkit/components/remote/RemoteUtils.h
toolkit/components/remotebrowserutils/tests/browser/file_postmsg_parent.html
toolkit/components/resistfingerprinting/RelativeTimeline.h
toolkit/components/telemetry/core/UserInteractionInfo.h
toolkit/components/url-classifier/tests/mochitest/evil.css
toolkit/locales/en-US/chrome/global/aboutStudies.properties
toolkit/modules/tests/browser/file_getSelectionDetails_inputs.html
toolkit/system/windowsDHCPClient/DHCPUtils.h
toolkit/themes/linux/global/in-content/info-pages.css
toolkit/themes/osx/global/in-content/info-pages.css
toolkit/themes/windows/global/in-content/info-pages.css
toolkit/xre/updaterfileutils_osx.h
tools/clang-tidy/test/bugprone-incorrect-roundings.cpp
tools/clang-tidy/test/bugprone-integer-division.cpp
tools/clang-tidy/test/bugprone-macro-parentheses.cpp
tools/clang-tidy/test/bugprone-misplaced-widening-cast.cpp
tools/clang-tidy/test/bugprone-multiple-statement-macro.cpp
tools/clang-tidy/test/bugprone-sizeof-expression.cpp
tools/clang-tidy/test/bugprone-suspicious-string-compare.cpp
tools/clang-tidy/test/bugprone-too-small-loop-variable.cpp
tools/clang-tidy/test/bugprone-use-after-move.cpp
tools/clang-tidy/test/clang-analyzer-core.DivideZero.cpp
tools/clang-tidy/test/clang-analyzer-core.NonNullParamChecker.cpp
tools/clang-tidy/test/clang-analyzer-core.NullDereference.cpp
tools/clang-tidy/test/clang-analyzer-core.UndefinedBinaryOperatorResult.cpp
tools/clang-tidy/test/clang-analyzer-core.uninitialized.Assign.cpp
tools/clang-tidy/test/clang-analyzer-core.uninitialized.Branch.cpp
tools/clang-tidy/test/cppcoreguidelines-narrowing-conversions.cpp
tools/clang-tidy/test/misc-non-copyable-objects.cpp
tools/clang-tidy/test/misc-redundant-expression.cpp
tools/clang-tidy/test/modernize-deprecated-ios-base-aliases.cpp
tools/clang-tidy/test/modernize-use-auto.cpp
tools/clang-tidy/test/modernize-use-bool-literals.cpp
tools/clang-tidy/test/modernize-use-override.cpp
tools/clang-tidy/test/performance-faster-string-find.cpp
tools/clang-tidy/test/performance-for-range-copy.cpp
tools/clang-tidy/test/performance-inefficient-string-concatenation.cpp
tools/clang-tidy/test/performance-inefficient-vector-operation.cpp
tools/clang-tidy/test/performance-move-const-arg.cpp
tools/clang-tidy/test/performance-type-promotion-in-math-fn.cpp
tools/clang-tidy/test/performance-unnecessary-copy-initialization.cpp
tools/clang-tidy/test/performance-unnecessary-value-param.cpp
tools/clang-tidy/test/readability-const-return-type.cpp
tools/clang-tidy/test/readability-container-size-empty.cpp
tools/clang-tidy/test/readability-delete-null-pointer.cpp
tools/clang-tidy/test/readability-else-after-return.cpp
tools/clang-tidy/test/readability-inconsistent-declaration-parameter-name.cpp
tools/clang-tidy/test/readability-isolate-declaration.cpp
tools/clang-tidy/test/readability-magic-numbers.cpp
tools/clang-tidy/test/readability-non-const-parameter.cpp
tools/clang-tidy/test/readability-qualified-auto.cpp
tools/clang-tidy/test/readability-redundant-control-flow.cpp
tools/clang-tidy/test/readability-redundant-preprocessor.cpp
tools/clang-tidy/test/readability-redundant-string-cstr.cpp
tools/clang-tidy/test/readability-redundant-string-init.cpp
tools/clang-tidy/test/readability-simplify-boolean-expr.cpp
tools/clang-tidy/test/readability-uniqueptr-delete-release.cpp
tools/infer/test/gradle/wrapper/gradle-wrapper.properties
tools/profiler/core/VTuneProfiler.cpp
widget/IconLoader.cpp
widget/windows/RemoteBackbuffer.h
widget/windows/SystemStatusBar.h
widget/windows/WinContentSystemParameters.cpp
widget/windows/WinContentSystemParameters.h
widget/windows/WindowsEMF.h
widget/windows/nsUXThemeData.cpp
widget/windows/touchinjection_sdk80.h
xpcom/base/LogCommandLineHandler.cpp
xpcom/base/ShutdownPhase.h
xpcom/string/nsTSubstringTuple.cpp
--- a/accessible/ipc/extension/android/DocAccessiblePlatformExtChild.h
+++ b/accessible/ipc/extension/android/DocAccessiblePlatformExtChild.h
@@ -36,9 +36,9 @@ class DocAccessiblePlatformExtChild : pu
   mozilla::ipc::IPCResult RecvExploreByTouch(uint64_t aID, float aX, float aY);
 
  private:
   AccessibleWrap* IdToAccessibleWrap(const uint64_t& aID) const;
 };
 }  // namespace a11y
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/accessible/ipc/extension/android/DocAccessiblePlatformExtParent.h
+++ b/accessible/ipc/extension/android/DocAccessiblePlatformExtParent.h
@@ -14,9 +14,9 @@ class DocAccessiblePlatformExtParent : p
  public:
   mozilla::ipc::IPCResult RecvSetPivotBoundaries(
       PDocAccessibleParent* aFirstDoc, uint64_t aFirst,
       PDocAccessibleParent* aLastDoc, uint64_t aLast);
 };
 }  // namespace a11y
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/accessible/ipc/extension/other/DocAccessiblePlatformExtChild.h
+++ b/accessible/ipc/extension/other/DocAccessiblePlatformExtChild.h
@@ -12,9 +12,9 @@ namespace mozilla {
 namespace a11y {
 
 class DocAccessibleChild;
 
 class DocAccessiblePlatformExtChild : public PDocAccessiblePlatformExtChild {};
 }  // namespace a11y
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/accessible/ipc/extension/other/DocAccessiblePlatformExtParent.h
+++ b/accessible/ipc/extension/other/DocAccessiblePlatformExtParent.h
@@ -10,9 +10,9 @@
 
 namespace mozilla {
 namespace a11y {
 class DocAccessiblePlatformExtParent : public PDocAccessiblePlatformExtParent {
 };
 }  // namespace a11y
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/browser/base/content/aboutTabCrashed.css
+++ b/browser/base/content/aboutTabCrashed.css
@@ -3,9 +3,9 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 html:not(.crashDumpSubmitted) #reportSent,
 html:not(.crashDumpAvailable) #reportBox,
 .container[multiple="true"] > .offers > #offerHelpMessageSingle,
 .container[multiple="false"] > .offers > #offerHelpMessageMultiple,
 .container[multiple="false"] > .button-container > #restoreAll {
   display: none;
-}
\ No newline at end of file
+}
--- a/browser/base/content/test/contextMenu/browser_contextmenu_loadblobinnewtab.html
+++ b/browser/base/content/test/contextMenu/browser_contextmenu_loadblobinnewtab.html
@@ -48,9 +48,9 @@
 
       document.getElementById('blob-url-referrer-link').href = ref_url;
     };
 
   </script>
 
 </body>
 
-</html>
\ No newline at end of file
+</html>
--- a/browser/base/content/test/fullscreen/open_and_focus_helper.html
+++ b/browser/base/content/test/fullscreen/open_and_focus_helper.html
@@ -36,9 +36,9 @@
       } else if(event.data === "focus") {
         window.popup.focus();
         if (canReply) event.ports[0].postMessage('focused');
       }
     }
     window.addEventListener('message', window.onMessage);
   </script>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/browser/base/content/test/pageinfo/iframes.html
+++ b/browser/base/content/test/pageinfo/iframes.html
@@ -1,8 +1,8 @@
 <html>
   <head>
     <title>Test for media tab with iframe</title>
   </head>
   <body style='background-image:url(about:logo?a);'>
     <iframe width="420" height="345" src="moz.png"></iframe>
   </body>
-</html>");
\ No newline at end of file
+</html>");
--- a/browser/base/content/test/static/bug1262648_string_with_newlines.dtd
+++ b/browser/base/content/test/static/bug1262648_string_with_newlines.dtd
@@ -1,3 +1,3 @@
 <!ENTITY foo.bar    "This string
 contains
-newlines!">
\ No newline at end of file
+newlines!">
--- a/browser/base/content/test/tabdialogs/subdialog.xhtml
+++ b/browser/base/content/test/tabdialogs/subdialog.xhtml
@@ -25,9 +25,9 @@
     <html:option>Bar</html:option>
   </html:select>
 
   <separator class="thin"/>
 
   <button oncommand="window.close();" label="Close" />
 
 </dialog>
-</window>
\ No newline at end of file
+</window>
--- a/browser/base/content/test/tabs/file_anchor_elements.html
+++ b/browser/base/content/test/tabs/file_anchor_elements.html
@@ -4,9 +4,9 @@
   <title>Testing whether paste event is fired at middle click on anchor elements</title>
 </head>
 <body>
   <p>Here is an <a id="a_with_href" href="http://example.com/#a_with_href">anchor element</a></p>
   <p contenteditable>Here is an <a id="editable_a_with_href" href="http://example.com/#editable_a_with_href">editable anchor element</a></p>
   <p contenteditable>Here is <span contenteditable="false"><a id="non-editable_a_with_href" href="http://example.com/#non-editable_a_with_href">non-editable anchor element</a></span>
   <p>Here is an <a id="a_with_name" name="a_with_name">anchor element without href</a></p>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/browser/components/originattributes/test/browser/file_thirdPartyChild.link.css
+++ b/browser/components/originattributes/test/browser/file_thirdPartyChild.link.css
@@ -1,1 +1,1 @@
-/* Dummy CSS file, used by browser_cache.js. */
\ No newline at end of file
+/* Dummy CSS file, used by browser_cache.js. */
--- a/browser/components/urlbar/content/interventions.ftl
+++ b/browser/components/urlbar/content/interventions.ftl
@@ -32,9 +32,9 @@ intervention-update-restart = The latest
 intervention-update-restart-confirm = Restart to Update
 
 ## Shown when Firefox cannot update itself. The button will open the download
 ## page on the Firefox website.
 
 intervention-update-web = Get the latest { -brand-short-name } browser.
 intervention-update-web-confirm = Download Now
 
-##
\ No newline at end of file
+##
--- a/build/clang-plugin/tests/TestLoadLibraryUsage.cpp
+++ b/build/clang-plugin/tests/TestLoadLibraryUsage.cpp
@@ -12,9 +12,9 @@ void Func() {
 #ifndef UNICODE
   // LoadLibrary is a defnine for LoadLibraryA
   auto h7 = LoadLibrary(nullptr); // expected-error {{Usage of ASCII file functions (such as LoadLibraryA) is forbidden.}}
   auto h8 = LoadLibrary("C:\\Some\\Path");
   // LoadLibraryEx is a define for LoadLibraryExA
   auto h9 = LoadLibraryEx(nullptr, nullptr, 0); // expected-error {{Usage of ASCII file functions (such as LoadLibraryExA) is forbidden.}}
   auto h10 = LoadLibraryEx("C:\\Some\\Path", nullptr, 0);
 #endif
-}
\ No newline at end of file
+}
--- a/build/clang-plugin/tests/TestNoPrincipalGetUri.cpp
+++ b/build/clang-plugin/tests/TestNoPrincipalGetUri.cpp
@@ -23,9 +23,9 @@ void f() {
   b->GetURI(0); //  expected-error {{Principal->GetURI is deprecated and will be removed soon. Please consider using the new helper functions of nsIPrincipal}}
 
   SomeURI *c = new SomeURI();
   c->GetURI(0);
 
   SomePrincipal *d = new SomePrincipal();
   d->GetURI(0);
 
-}
\ No newline at end of file
+}
--- a/config/external/rlbox_lucet_sandbox/rlbox_lucet_thread_locals.cpp
+++ b/config/external/rlbox_lucet_sandbox/rlbox_lucet_thread_locals.cpp
@@ -12,9 +12,9 @@
 
 #  include "mozilla/rlbox/rlbox.hpp"
 
 // The MingW compiler does not correctly handle static thread_local inline
 // members. We instead TLS storage via functions. This can be removed if the
 // MingW bug is fixed.
 RLBOX_LUCET_SANDBOX_STATIC_VARIABLES();
 
-#endif
\ No newline at end of file
+#endif
--- a/devtools/client/aboutdebugging/src/components/connect/ConnectSection.css
+++ b/devtools/client/aboutdebugging/src/components/connect/ConnectSection.css
@@ -39,9 +39,9 @@
   line-height: 1.5;
   padding-inline-start: calc(var(--base-unit) * 5
     + var(--header-col-gap) + var(--icon-size));
   padding-inline-end: calc(var(--base-unit) * 5);
 }
 
 .connect-section__extra {
   border-block-start: 1px solid var(--card-separator-color);
-}
\ No newline at end of file
+}
--- a/devtools/client/aboutdebugging/test/browser/test-tab-favicons.html
+++ b/devtools/client/aboutdebugging/test/browser/test-tab-favicons.html
@@ -1,8 +1,8 @@
 <!DOCTYPE HTML>
 <html>
   <head>
     <title>Favicon tab</title>
     <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAATklEQVRYhe3SIQ4AIBADwf7/04elBAtrVlSduGnSTDJ7cuT1PQJwwO+Hl7sAGAA07gjAAfgIBeAAoHFHAA7ARygABwCNOwJwAD5CATRgAYXh+kypw86nAAAAAElFTkSuQmCC">
   <head>
   <body>Some page with a favicon</body>
-</html>
\ No newline at end of file
+</html>
--- a/devtools/client/framework/browser-toolbox/test/doc_browser_toolbox_fission_contentframe_inspector_page.html
+++ b/devtools/client/framework/browser-toolbox/test/doc_browser_toolbox_fission_contentframe_inspector_page.html
@@ -8,9 +8,9 @@
     <title>Frame for browser_browser_toolbox_fission_contentframe_inspector.js</title>
   </head>
 
   <body>
     <!-- Here we use example.org, while the embedder is loaded with example.com (.org vs .com)
     This ensures this frame will be a remote frame when fission is enabled. -->
     <iframe src="http://example.org/browser/devtools/client/framework/browser-toolbox/test/doc_browser_toolbox_fission_contentframe_inspector_frame.html"></iframe>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/devtools/client/inspector/computed/test/doc_sourcemaps.css
+++ b/devtools/client/inspector/computed/test/doc_sourcemaps.css
@@ -1,7 +1,7 @@
 div {
   color: #ff0066; }
 
 span {
   background-color: #EEE; }
 
-/*# sourceMappingURL=doc_sourcemaps.css.map */
\ No newline at end of file
+/*# sourceMappingURL=doc_sourcemaps.css.map */
--- a/devtools/client/inspector/shared/test/doc_content_stylesheet.xhtml
+++ b/devtools/client/inspector/shared/test/doc_content_stylesheet.xhtml
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <?xml-stylesheet href="chrome://global/skin/xul.css" type="text/css"?>
 <?xml-stylesheet href="./doc_content_stylesheet_xul.css"
                  type="text/css"?>
 <!DOCTYPE window>
 <window id="testwindow" xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <label id="target" value="Simple XUL document" />
-</window>
\ No newline at end of file
+</window>
--- a/devtools/client/jsonview/css/search-box.css
+++ b/devtools/client/jsonview/css/search-box.css
@@ -8,9 +8,9 @@
 .devtools-filterinput {
   margin-inline-start: auto; /* Align to the right */
 }
 
 /* JSONView doesn't load dark-theme.css */
 .theme-dark .devtools-filterinput {
   background-color: rgba(24, 29, 32, 1);
   color: rgba(184, 200, 217, 1);
-}
\ No newline at end of file
+}
--- a/devtools/client/locales/en-US/dom.properties
+++ b/devtools/client/locales/en-US/dom.properties
@@ -11,9 +11,9 @@
 # documentation on web development on the web.
 
 # LOCALIZATION NOTE (dom.filterDOMPanel): A placeholder text used for
 # DOM panel search box.
 dom.filterDOMPanel=Filter DOM Panel
 
 # LOCALIZATION NOTE (dom.refresh): A label for Refresh button in
 # DOM panel toolbar
-dom.refresh=Refresh
\ No newline at end of file
+dom.refresh=Refresh
--- a/devtools/client/netmonitor/src/assets/styles/StatusCode.css
+++ b/devtools/client/netmonitor/src/assets/styles/StatusCode.css
@@ -92,9 +92,9 @@
 
 /* Non-standard status codes are styled like 5XX */
 .headers-overview .summary .status[data-code^="0"],
 .headers-overview .summary .status[data-code^="6"],
 .headers-overview .summary .status[data-code^="7"],
 .headers-overview .summary .status[data-code^="8"],
 .headers-overview .summary .status[data-code^="9"] {
   color: var(--status-code-color-5xx);
-}
\ No newline at end of file
+}
--- a/devtools/client/netmonitor/test/html_csp-test-page.html
+++ b/devtools/client/netmonitor/test/html_csp-test-page.html
@@ -9,9 +9,9 @@
     <title>Tests breaking CSP with script</title>
   </head>
   <body>
 
     The script in this page will CSP:
 
     <script src="js_websocket-worker-test.js"></script>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/devtools/client/netmonitor/test/html_slow-requests-test-page.html
+++ b/devtools/client/netmonitor/test/html_slow-requests-test-page.html
@@ -7,9 +7,9 @@
          <meta charset="utf-8"/>
          <title>Slow Network Requests Test Page</title>
        </head>
        <body>
          <h1>Slow Network Requests Test Page</h1>
          <script type="text/javascript"
            src="http://example.com/browser/devtools/client/netmonitor/test/sjs_slow-script-server.sjs"></script>
        </body>
-     </html>
\ No newline at end of file
+     </html>
--- a/devtools/client/responsive/test/browser/doc_toolbox_rule_view.css
+++ b/devtools/client/responsive/test/browser/doc_toolbox_rule_view.css
@@ -2,9 +2,9 @@ div {
   width: 500px;
   height: 10px;
   background: purple;
 }
 @media screen and (max-width: 200px) {
   div {
     width: 100px;
   }
-};
\ No newline at end of file
+};
--- a/devtools/client/responsive/test/browser/doc_toolbox_rule_view.html
+++ b/devtools/client/responsive/test/browser/doc_toolbox_rule_view.html
@@ -1,4 +1,4 @@
 <html>
   <link rel="stylesheet" charset="UTF-8" type="text/css" media="screen" href="doc_toolbox_rule_view.css"/>
   <div></div>
-</html>
\ No newline at end of file
+</html>
--- a/devtools/client/shared/components/tabs/Tabs.css
+++ b/devtools/client/shared/components/tabs/Tabs.css
@@ -107,9 +107,9 @@ div[hidetabs=true] .tabs .tabs-navigatio
   flex: 1;
   overflow: hidden;
 }
 
 .tabs .tab-panel {
   height: 100%;
   overflow-x: hidden;
   overflow-y: auto;
-}
\ No newline at end of file
+}
--- a/devtools/client/styleeditor/test/doc_xulpage.xhtml
+++ b/devtools/client/styleeditor/test/doc_xulpage.xhtml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
 <?xml-stylesheet href="simple.css" type="text/css"?>
 <!DOCTYPE window>
 <window xmlns:html="http://www.w3.org/1999/xhtml"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <label value="Simple XUL document" />
-</window>
\ No newline at end of file
+</window>
--- a/devtools/client/styleeditor/test/many-media-rules-sourcemaps/index.html
+++ b/devtools/client/styleeditor/test/many-media-rules-sourcemaps/index.html
@@ -3,9 +3,9 @@
 <head>
   <title></title>
   <link rel="stylesheet" type="text/css" href="sourcemap/sourcemap-css/sourcemaps.css"/>
 </head>
 
 <body>
 
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/devtools/client/styleeditor/test/many-media-rules-sourcemaps/sourcemap/sourcemap-css/sourcemaps.css
+++ b/devtools/client/styleeditor/test/many-media-rules-sourcemaps/sourcemap/sourcemap-css/sourcemaps.css
@@ -193,9 +193,9 @@
 @media (min-width: 500px) {
   div {
     color: red; } }
 
 @media (min-width: 500px) {
   div {
     color: red; } }
 
-/*# sourceMappingURL=sourcemaps.css.map */
\ No newline at end of file
+/*# sourceMappingURL=sourcemaps.css.map */
--- a/devtools/client/styleeditor/test/sourcemap-css/media-rules.css
+++ b/devtools/client/styleeditor/test/sourcemap-css/media-rules.css
@@ -1,8 +1,8 @@
 @media screen and (max-width: 320px) {
   div {
     width: 100px; } }
 @media screen and (min-width: 1200px) {
   div {
     width: 400px; } }
 
-/*# sourceMappingURL=media-rules.css.map */
\ No newline at end of file
+/*# sourceMappingURL=media-rules.css.map */
--- a/devtools/client/styleeditor/test/test_private.css
+++ b/devtools/client/styleeditor/test/test_private.css
@@ -1,3 +1,3 @@
 body {
     background-color: red;
-}
\ No newline at end of file
+}
--- a/devtools/client/webconsole/test/browser/test-block-action-style.css
+++ b/devtools/client/webconsole/test/browser/test-block-action-style.css
@@ -1,3 +1,3 @@
 h1 {
     color: red;
-}
\ No newline at end of file
+}
--- a/devtools/client/webconsole/test/browser/test-cspro.html
+++ b/devtools/client/webconsole/test/browser/test-cspro.html
@@ -12,9 +12,9 @@ messages.</title>
 
 
 <!-- this script file allowed by the CSP header (but not by the report-only header) -->
 <script src="http://some.example.com/cspro.js"></script>
 
 <!-- this image allowed only be the CSP report-only header. -->
 <img src="http://some.example.com/cspro.png">
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/devtools/client/webconsole/test/browser/test-worker-promise-error.html
+++ b/devtools/client/webconsole/test/browser/test-worker-promise-error.html
@@ -36,9 +36,9 @@ context.audioWorklet.addModule(workletSc
   const workletNode = new AudioWorkletNode(context, "error");
   const oscillator = new OscillatorNode(context);
   oscillator.connect(workletNode);
   oscillator.start();
   oscillator.stop();
 });
 </script>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/devtools/server/tests/browser/application-manifest-no-manifest.html
+++ b/devtools/server/tests/browser/application-manifest-no-manifest.html
@@ -1,9 +1,9 @@
 <!doctype html>
 <html>
 <head>
   <meta charset="utf-8">
   <title>No manifest</title>
 </head>
 <body>
   <p>This page does not link to a manifest</p>
-</body>
\ No newline at end of file
+</body>
--- a/devtools/shared/locales/en-US/shared.properties
+++ b/devtools/shared/locales/en-US/shared.properties
@@ -1,6 +1,6 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # LOCALIZATION NOTE (ellipsis): The ellipsis (three dots) character
-ellipsis=窶ヲ
\ No newline at end of file
+ellipsis=窶ヲ
--- a/devtools/shared/resources/tests/network_document.html
+++ b/devtools/shared/resources/tests/network_document.html
@@ -5,9 +5,9 @@
     <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
     <meta http-equiv="Pragma" content="no-cache" />
     <meta http-equiv="Expires" content="0" />
     <title>Test for network events</title>
   </head>
   <body>
     <p>Test for network events</p>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/bindings/BindingIPCUtils.h
+++ b/dom/bindings/BindingIPCUtils.h
@@ -11,9 +11,9 @@
 
 namespace IPC {
 template <>
 struct ParamTraits<mozilla::dom::CallerType>
     : public ContiguousEnumSerializerInclusive<
           mozilla::dom::CallerType, mozilla::dom::CallerType::System,
           mozilla::dom::CallerType::NonSystem> {};
 }  // namespace IPC
-#endif  // _mozilla_dom_BindingIPCUtils_h
\ No newline at end of file
+#endif  // _mozilla_dom_BindingIPCUtils_h
--- a/dom/canvas/CanvasGradient.cpp
+++ b/dom/canvas/CanvasGradient.cpp
@@ -6,9 +6,9 @@
 
 #include "mozilla/dom/CanvasRenderingContext2D.h"
 
 namespace mozilla::dom {
 CanvasGradient::CanvasGradient(CanvasRenderingContext2D* aContext, Type aType)
     : mContext(aContext), mType(aType) {}
 
 CanvasGradient::~CanvasGradient() = default;
-}  // namespace mozilla::dom
\ No newline at end of file
+}  // namespace mozilla::dom
--- a/dom/canvas/CanvasPattern.cpp
+++ b/dom/canvas/CanvasPattern.cpp
@@ -15,9 +15,9 @@ CanvasPattern::CanvasPattern(CanvasRende
       mSurface(aSurface),
       mPrincipal(principalForSecurityCheck),
       mTransform(),
       mForceWriteOnly(forceWriteOnly),
       mCORSUsed(CORSUsed),
       mRepeat(aRepeat) {}
 
 CanvasPattern::~CanvasPattern() = default;
-}  // namespace mozilla::dom
\ No newline at end of file
+}  // namespace mozilla::dom
--- a/dom/canvas/MurmurHash3.h
+++ b/dom/canvas/MurmurHash3.h
@@ -15,9 +15,9 @@
 void MurmurHash3_x86_32(const void* key, int len, uint32_t seed, void* out);
 
 void MurmurHash3_x86_128(const void* key, int len, uint32_t seed, void* out);
 
 void MurmurHash3_x64_128(const void* key, int len, uint32_t seed, void* out);
 
 //-----------------------------------------------------------------------------
 
-#endif  // _MURMURHASH3_H_
\ No newline at end of file
+#endif  // _MURMURHASH3_H_
--- a/dom/encoding/test/file_in_lk_TLD.html
+++ b/dom/encoding/test/file_in_lk_TLD.html
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
 <title>これは文字実験です。</title>
 <script>
 function report() {
   window.parent.postMessage(document.characterSet, "*");
 }
 </script>
 <body onload="report();">
-<p>これは文字実験です。</p>
\ No newline at end of file
+<p>これは文字実験です。</p>
index 18a5f7bce7cf8f8af34a1578b0bc810f4e3cc38f..27d630f3e88020b992a23c4d797b1e1148c51efe
GIT binary patch
literal 379
zc$`&`%?`m(5QV?Br=V+8NhIoL;cq7_SXiPB5>#k{2lg5`cNCGy+&gpboO7mqJZVv&
z&zK%l=1drnXG6-K9UZ-X>O5Dw51eV^8J=<^#8+G_%F3F~gcEC_0SyaZ+>eeY)tu?Z
zEQqo$Wvko?>oC(MLrP-TDav=Lx3&6M-jV8sZiiotvr*O6{v)aQe>$%JxwNE{sJeaq
z12NB<zS+F{CZ`ygW=NHaqG_y?&{$`vj8!{cB9@!>Y~zFK6?dC^`v%ztKi4;&{n^|L
D1C>At
index fa6b79670ad029a22228b39a44a8f58243d7f323..b85fa22926196d81c37ddc709c134220559d79ff
GIT binary patch
literal 61
zc%1wHPmdv)p%@5_7!(+)fjF5VpCON-gdr77S^-6r7(#*UOrXqDh7_Q<5>Tv`fs26)
E0ISXm=>Px#
index 909a15129ea6fc0ced5b748a9fd72d4cc31dc566..0e8f1c460ccc61afb40cda254cebb8fb2882393b
GIT binary patch
literal 385
zc$`&`%?`m(5QV?Br@$Ij5{W7ce>-8p!V+z0QYAFO1A7gePW?nCbMM@lIcLt?=fkJO
zkSPP^ESWK)$c~gfF+KcmT;ytZ!kI2*%cmUiaAX&=n!Ks=z=^H0E^RYM*bh%xtOer@
zSrNQnDUm!@uE#=3##DuFQPJGkYI(IPPlSquO{{vc>P}H#TTH~|{IO;4-z=ZC)CJtW
zDqJDY>b_Zjwpqp)7^g>rx~yZUld_>sPaZ1Ha0gQt*j5WEir8?szI?9xR`8pe=Rf~j
FcmWVCL1h2{
index e634a0ffe62560dd32e93012d3f719a2f127c40b..3ac0ed4918b11a75a524d0521939f3a17fa4b574
GIT binary patch
literal 365
zc$`&`y>7xl5QM+lPvN*C1#t`#62@_n1S+CXKtT!E!jT+^Y)8Ql%zH4m{3%-P-QL{J
z?A#?h@XjZ1%vmyHj88$sHzg^_t@b(CzN6-a!0?72VnW5A#gnqHbx*}sXvEMW6!)qV
zNYyjloE6#S)bOP&g{3UyWI|W$0aNqSk*>Qhr2MPh=T(kBcoZ}I$93nsa>81SjP^D&
z61P@&YyIvWPB}B}m>$oHk+CYFxz<>jt9HD-Sgt!Tmpj!Pj@Eac8(kdSr=IcaZ+a(i
CIy?XX
--- a/dom/events/InputEventOptions.h
+++ b/dom/events/InputEventOptions.h
@@ -67,9 +67,9 @@ struct MOZ_STACK_CLASS InputEventOptions
   dom::DataTransfer* mDataTransfer;
   OwningNonNullStaticRangeArray mTargetRanges;
   // If this is set to true, dispatching event won't be cancelable.
   bool mNeverCancelable;
 };
 
 }  // namespace mozilla
 
-#endif  // #ifndef mozilla_InputEventOptions_h
\ No newline at end of file
+#endif  // #ifndef mozilla_InputEventOptions_h
--- a/dom/gamepad/GamepadHandle.cpp
+++ b/dom/gamepad/GamepadHandle.cpp
@@ -32,9 +32,9 @@ bool operator!=(const GamepadHandle& a, 
 bool operator<(const GamepadHandle& a, const GamepadHandle& b) {
   if (a.mKind == b.mKind) {
     return a.mValue < b.mValue;
   }
   // Arbitrarily order them by kind
   return uint8_t(a.mKind) < uint8_t(b.mKind);
 }
 
-}  // namespace mozilla::dom
\ No newline at end of file
+}  // namespace mozilla::dom
--- a/dom/gamepad/GamepadHandle.h
+++ b/dom/gamepad/GamepadHandle.h
@@ -81,9 +81,9 @@ class GamepadHandle {
   friend struct IPC::ParamTraits<mozilla::dom::GamepadHandle>;
 };
 
 static_assert(std::is_trivially_copyable<GamepadHandle>::value,
               "GamepadHandle must be trivially copyable");
 
 }  // namespace mozilla::dom
 
-#endif  // mozilla_dom_gamepad_GamepadHandle_h
\ No newline at end of file
+#endif  // mozilla_dom_gamepad_GamepadHandle_h
--- a/dom/html/nsRadioVisitor.cpp
+++ b/dom/html/nsRadioVisitor.cpp
@@ -51,9 +51,9 @@ bool nsRadioUpdateStateVisitor::Visit(ns
   if (aRadio == mExcludeElement) {
     return true;
   }
 
   HTMLInputElement* input = static_cast<HTMLInputElement*>(aRadio);
   input->UpdateState(true);
 
   return true;
-}
\ No newline at end of file
+}
--- a/dom/ipc/MMPrinter.h
+++ b/dom/ipc/MMPrinter.h
@@ -26,9 +26,9 @@ class MMPrinter {
   static LazyLogModule sMMLog;
   static void PrintImpl(char const* aLocation, const nsAString& aMsg,
                         ClonedMessageData const& aData);
 };
 
 }  // namespace dom
 }  // namespace mozilla
 
-#endif /* MMPrinter_h */
\ No newline at end of file
+#endif /* MMPrinter_h */
--- a/dom/ipc/tests/file_dummy.html
+++ b/dom/ipc/tests/file_dummy.html
@@ -1,4 +1,4 @@
 <!doctype html>
 <body>
   <h1>This is a dummy file</h1>
-</body>
\ No newline at end of file
+</body>
--- a/dom/l10n/tests/mochitest/document_l10n/test_docl10n.xhtml
+++ b/dom/l10n/tests/mochitest/document_l10n/test_docl10n.xhtml
@@ -52,9 +52,9 @@
   }, { once: true});
   </script>
 </head>
 <body>
   <h1 id="main-desc" data-l10n-id="crash-reports-title"></h1>
 
   <p id="label1" />
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/media/autoplay/test/mochitest/file_autoplay_policy_play_before_loadedmetadata.html
+++ b/dom/media/autoplay/test/mochitest/file_autoplay_policy_play_before_loadedmetadata.html
@@ -55,9 +55,9 @@
             await testPlayBeforeLoadedMetata(event.data, event.source);
             event.source.postMessage("done", "*");
           });
 
       </script>
     </pre>
 </body>
 
-</html>
\ No newline at end of file
+</html>
--- a/dom/media/autoplay/test/mochitest/file_autoplay_policy_unmute_pauses.html
+++ b/dom/media/autoplay/test/mochitest/file_autoplay_policy_unmute_pauses.html
@@ -57,9 +57,9 @@
                 event.source.postMessage("done", "*");
               });
           });
 
       </script>
     </pre>
 </body>
 
-</html>
\ No newline at end of file
+</html>
--- a/dom/media/gmp/CDMStorageIdProvider.cpp
+++ b/dom/media/gmp/CDMStorageIdProvider.cpp
@@ -70,9 +70,9 @@ nsCString CDMStorageIdProvider::ComputeS
         "result(0x%08" PRIx32 ")",
         static_cast<uint32_t>(rv));
     return ""_ns;
   }
   return storageId;
 #endif
 }
 
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/dom/media/gmp/GMPStorage.h
+++ b/dom/media/gmp/GMPStorage.h
@@ -33,9 +33,9 @@ class GMPStorage {
 
 already_AddRefed<GMPStorage> CreateGMPMemoryStorage();
 already_AddRefed<GMPStorage> CreateGMPDiskStorage(const nsCString& aNodeId,
                                                   const nsString& aGMPName);
 
 }  // namespace gmp
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/dom/media/gmp/widevine-adapter/WidevineFileIO.h
+++ b/dom/media/gmp/widevine-adapter/WidevineFileIO.h
@@ -33,9 +33,9 @@ class WidevineFileIO : public cdm::FileI
  private:
   cdm::FileIOClient* mClient;
   GMPRecord* mRecord;
   std::string mName;
 };
 
 }  // namespace mozilla
 
-#endif  // WidevineFileIO_h_
\ No newline at end of file
+#endif  // WidevineFileIO_h_
--- a/dom/media/webrtc/sdp/HybridSdpParser.h
+++ b/dom/media/webrtc/sdp/HybridSdpParser.h
@@ -30,9 +30,9 @@ class HybridSdpParser : public SdpParser
   const bool mStrictSuccess;
   const UniquePtr<SdpParser> mPrimary;
   const Maybe<UniquePtr<SdpParser>> mSecondary;
   const Maybe<UniquePtr<SdpParser>> mFailover;
 };
 
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/dom/media/webrtc/tests/mochitests/test_dataChannel_stats.html
+++ b/dom/media/webrtc/tests/mochitests/test_dataChannel_stats.html
@@ -42,9 +42,9 @@
         is(stats.messagesSent, 0, 'DataChannel has correct messagesSent');
     });
     test.run();
   });
 
 </script>
 </pre>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/media/webrtc/tests/mochitests/test_peerConnection_rtcp_rsize.html
+++ b/dom/media/webrtc/tests/mochitests/test_peerConnection_rtcp_rsize.html
@@ -72,9 +72,9 @@
         });
     test.setMediaConstraints([{audio: true}, {video: true}], []);
     test.run();
   });
 
 </script>
 </pre>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/media/webrtc/tests/mochitests/test_peerConnection_sender_and_receiver_stats.html
+++ b/dom/media/webrtc/tests/mochitests/test_peerConnection_sender_and_receiver_stats.html
@@ -63,9 +63,9 @@
         });
     test.setMediaConstraints([{audio: true}, {video: true}], []);
     test.run();
   });
 
 </script>
 </pre>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/media/webvtt/test/mochitest/test_bug1242594.html
+++ b/dom/media/webvtt/test/mochitest/test_bug1242594.html
@@ -38,9 +38,9 @@ parent.removeChild(video);
 is(video.textTracks.length, 1, "After unbind the video element, should have one TextTrack.");
 parent.appendChild(video);
 is(video.textTracks.length, 1, "After bind the video element, should have one TextTrack.");
 SimpleTest.finish();
 
 </script>
 </pre>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/media/webvtt/test/mochitest/test_bug957847.html
+++ b/dom/media/webvtt/test/mochitest/test_bug957847.html
@@ -22,9 +22,9 @@ var trackElement = document.createElemen
 trackElement.track.addCue(new VTTCue(0, 1, "A"));
 
 // We need to assert something for Mochitest to be happy.
 ok(true);
 SimpleTest.finish();
 </script>
 </pre>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/payments/test/test_currency_amount_validation.html
+++ b/dom/payments/test/test_currency_amount_validation.html
@@ -345,9 +345,9 @@ window.addEventListener("load", () => {
       set: [["dom.payments.request.enabled", true]],
     },
     runTests
   );
 });
 </script>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1367669">Mozilla Bug 1367669</a>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1388661">Mozilla Bug 1388661</a>
\ No newline at end of file
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1388661">Mozilla Bug 1388661</a>
--- a/dom/payments/test/test_payerDetails.html
+++ b/dom/payments/test/test_payerDetails.html
@@ -99,9 +99,9 @@
 
   window.addEventListener("load", () => {
     const prefs = [["dom.payments.request.enabled", true]];
     SpecialPowers.pushPrefEnv({ set: prefs }, runTests);
   });
 </script>
 
 <body>
-  <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1472026">Mozilla Bug 1472026</a>
\ No newline at end of file
+  <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1472026">Mozilla Bug 1472026</a>
--- a/dom/permission/tests/file_empty.html
+++ b/dom/permission/tests/file_empty.html
@@ -1,2 +1,2 @@
 <h1>I'm just a support file</h1>
-<p>I get loaded to do permission testing.</p>
\ No newline at end of file
+<p>I get loaded to do permission testing.</p>
--- a/dom/presentation/PresentationCallbacks.cpp
+++ b/dom/presentation/PresentationCallbacks.cpp
@@ -243,9 +243,9 @@ PresentationResponderLoadingCallback::On
 NS_IMETHODIMP
 PresentationResponderLoadingCallback::OnContentBlockingEvent(
     nsIWebProgress* aWebProgress, nsIRequest* aRequest, uint32_t aEvent) {
   // Do nothing.
   return NS_OK;
 }
 
 }  // namespace dom
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/dom/res/hiddenWindow.html
+++ b/dom/res/hiddenWindow.html
@@ -1,5 +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/. -->
 
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta charset="utf-8"><title></title></head><body></body></html>
\ No newline at end of file
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta charset="utf-8"><title></title></head><body></body></html>
index 55e97ac24766f5162f483e0bf707a7ca86db7a8c..6b6a328211710eb681c9bd4bb6380f77f015e06f
GIT binary patch
literal 560
zc$@(+0?+*)iwFQ|+h|n)1C3KnPa821z2{d<eCbj(>y|@5Xf_f}f;fOcfK+jcj6KO3
z9D8L?mTs&5_l|c7<v^vL?0x&@J-_jII-X2M0LQ)q9hxrMO-*1E7&KNZLIV_lYJ|((
zowFJiVXLe!xuhm)j-=EP71<Vb*lvSQWr!Qu^jy<Z<xh-3ekk9|(PT0kO~;Fi`OWR+
z5>9W<&-lBht;-84Gh@{$S#mi0w%fp$&xfB5Kf(kE6Tw!Iu2;%A@PR-_m1^rZQ#tT+
zWzx|$1k^QH3Bn&F?^UY?R6vTl5;99Ad2P3i!yDee*p~N6%%*bS_kzy)2Z-n@k*IT+
zYD5-#p|4XCP)A(9rksJYXGqQ`hk(<&U^-qJu%;5mrpBo*+cpdu+xD;yp3vtrXWM7m
z5hwSU$xO@|5qo+z>LnugVc!MqR7%6YY$^WHmf47d+BFp8Mn(2KfL{zS<kz7P>2al<
zWjM*y2P^Y!L8`;f8UKdh4#BCN*EP?Hu@N=7ZY&PIvc~VM{Aj%ikEJqZ*|N-;O&knk
zA-0&3+Msv`Yc3}ne1Yvte?C$Vltz()s;WR-El;kN*Qa97d6sv9CzT~izN?^2(fjiW
z0A0dYrA{uc=F8Q83sT(SUNlGJJuhChcB3f7GGT13#_u6MVB{iYx{}|FFP_8gEru?a
yO-OV;w4mTz$BWz5{CIx4TyR6g+ouL*m%sD4zhC(@L2`IFqd(F8Fo(ed000V57ZJk%
index 7a45bcafabffd7063334187b0fe536ad758b2e5a..e0861a51807825efd747d47d7846b26e5bd50ce5
GIT binary patch
literal 609
zc$@)Y0-pUJiwFqmFnU!019D|%a%FR9WpXZPbZu+^jZ;le8!-^Q=T}U8X{efY%b_1M
z8;L>?2M{PARh%Nn9<m0nz4dq#wpIUo$GZe^Xr-R)ef#FUnYXjE@pL)@IQAXr&~(vm
zssxt6ps`vdG>`(M3gNn4JFDR|)XMsTORAKbBPn%6mFyOEsO#XV2yr8uo@;ul{E0Eh
z55;>qnoj4V+4%J8<o51*0q3`u7yMkM+T{b4nX~FF+2nBkt=+(v&xfB5Kf)9eQi56~
zU9FUJ;6nl(6;;-6W^&-?N@x8eM0BN~)H$RIF$qXrgQZCLl%ysSP({2ih0K~HZ*1K-
zyybfj6g@-sYMcvDsIhk^*jaYAK4H|@Bu<1gT8B+bKss7RBK~M|pLs|we@0)qKd7x5
zPyrNmDNI0G@h~fVvh4jpVm^}tg9DL6BC~Zc9Ul!?!zGp)r@BmR7&La<!#Z$dKI`Ve
zUuZ`hmB&nGV%CV*)AK~VMC9Q1ooc6uhIiRg{G;{xh^MpnFc~*0vgZN(VgSIjbu$sP
zTWMz*CP{s?MgF`%RcM{@ZxXB#oNB$Uc(II)sFUl);@~T5{Lacd>rL1d%9zELWiB`v
z^cW|iMk2LA@eb~}JlWtUxP9fHTk3(rsHC7QOAyP&*>Z7nF7})kc^7!KS)$-=3Cc`*
zf9?R#5&l)`>}q+kSpBzPiY@L%^JskM!>g^`s1#yB7`ImA_Yfa3a*;A!!9SUwybQOu
v7*Z~pK<RRbV8U}9pWbm2;_Y*CS^o9v3?EiLuZ|pkvC$vXT}{O60{{RD=0qwp
--- a/dom/tests/browser/beforeunload_test_page.html
+++ b/dom/tests/browser/beforeunload_test_page.html
@@ -84,9 +84,9 @@
     reset() {
       this.popInner(this._innerEventHandlers.length);
       this.popOuter(this._outerEventHandlers.length);
     },
   };
 </script>
 
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/mochitest/test_vrController_displayId.html
+++ b/dom/vr/test/mochitest/test_vrController_displayId.html
@@ -49,9 +49,9 @@
             });
           });
         }, "Finish to add VRDisplay.");
       }
 
       runVRTest(startTest);
     </script>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/mochitest/test_vrDisplay_canvas2d.html
+++ b/dom/vr/test/mochitest/test_vrDisplay_canvas2d.html
@@ -47,9 +47,9 @@
             });
           });
         }, "Finish running WebVR Canvas2D test.");
       }
 
       runVRTest(startTest);
     </script>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/mochitest/test_vrDisplay_exitPresent.html
+++ b/dom/vr/test/mochitest/test_vrDisplay_exitPresent.html
@@ -43,9 +43,9 @@
         }, "Finish running WebVR exitPresent test.");
       }
       runVRTest(startTest);
     </script>
 
     <iframe id="iframe1"></iframe>
     <iframe id="iframe2"></iframe>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/mochitest/test_vrDisplay_getFrameData.html
+++ b/dom/vr/test/mochitest/test_vrDisplay_getFrameData.html
@@ -140,9 +140,9 @@
             }
             return true;
           }
         }
 
         runVRTest(startTest);
     </script>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/mochitest/test_vrDisplay_onvrdisplayconnect.html
+++ b/dom/vr/test/mochitest/test_vrDisplay_onvrdisplayconnect.html
@@ -35,9 +35,9 @@
           });
         });
       }
 
       runVRTest(startTest);
     </script>
     <iframe id="iframe1"></iframe>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/mochitest/test_vrDisplay_onvrdisplaydeactivate_crosscontent.html
+++ b/dom/vr/test/mochitest/test_vrDisplay_onvrdisplaydeactivate_crosscontent.html
@@ -46,9 +46,9 @@
           });
         });
       }
 
       runVRTest(startTest);
     </script>
     <iframe id="iframe1"></iframe>
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/mochitest/test_vrDisplay_requestPresent.html
+++ b/dom/vr/test/mochitest/test_vrDisplay_requestPresent.html
@@ -122,9 +122,9 @@
               return promise_rejects(test, null, vrDisplay.exitPresent());
             });
           }, "WebVR requestPresent fulfilled");
         }
 
         runVRTest(startTest);
     </script>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/reftest/change_size.html
+++ b/dom/vr/test/reftest/change_size.html
@@ -160,9 +160,9 @@ If this fails, something is seriously wr
   </script>
 </head>
 
 <body onload='runTest();'>
   <canvas id='canvas' width='128' height='128'></canvas>
   <div id='status'></div>
 </body>
 
-</html>
\ No newline at end of file
+</html>
--- a/dom/vr/test/reftest/draw_rect.html
+++ b/dom/vr/test/reftest/draw_rect.html
@@ -128,9 +128,9 @@ If this fails, something is seriously wr
   </script>
 </head>
 
 <body onload='runTest();'>
   <canvas id='canvas' width='256' height='256'></canvas>
   <div id='status'></div>
 </body>
 
-</html>
\ No newline at end of file
+</html>
--- a/dom/xhr/tests/file_XHR_system_redirect.html
+++ b/dom/xhr/tests/file_XHR_system_redirect.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
 <html>
 <body>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/editor/composer/crashtests/351236-1.html
+++ b/editor/composer/crashtests/351236-1.html
@@ -29,9 +29,9 @@ window.onload=doe;
 </head>
 <body>
 This page should not crash Mozilla within 2 seconds<br>
 <q style="display: table-row;">
 <iframe style="display: table-row;"></iframe>
 <iframe></iframe>
 </q>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/extensions/spellcheck/hunspell/glue/mozHunspellFileMgrGlue.h
+++ b/extensions/spellcheck/hunspell/glue/mozHunspellFileMgrGlue.h
@@ -29,9 +29,9 @@ extern hunspell_create_filemgr_t* moz_gl
 extern hunspell_get_line_t* moz_glue_hunspell_get_line;
 extern hunspell_get_line_num_t* moz_glue_hunspell_get_line_num;
 extern hunspell_destruct_filemgr_t* moz_glue_hunspell_destruct_filemgr;
 
 #if defined(__cplusplus)
 }
 #endif
 
-#endif
\ No newline at end of file
+#endif
--- a/extensions/spellcheck/hunspell/glue/mozHunspellFileMgrHost.h
+++ b/extensions/spellcheck/hunspell/glue/mozHunspellFileMgrHost.h
@@ -75,9 +75,9 @@ class mozHunspellCallbacks {
   static uint32_t GetFreshId();
   /**
    * Returns the mozHunspellFileMgrHost for the given uint32_t id
    */
   static mozHunspellFileMgrHost& GetMozHunspellFileMgrHost(uint32_t aFd);
 };
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/gfx/layers/TextureSync.h
+++ b/gfx/layers/TextureSync.h
@@ -41,9 +41,9 @@ class TextureSync {
                                   const nsTArray<uint64_t>& aTextureIds);
   static void Shutdown();
   static void CleanupForPid(base::ProcessId aProcessId);
 };
 
 }  // namespace layers
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/gfx/layers/apz/src/ExpectedGeckoMetrics.cpp
+++ b/gfx/layers/apz/src/ExpectedGeckoMetrics.cpp
@@ -12,9 +12,9 @@ namespace layers {
 
 void ExpectedGeckoMetrics::UpdateFrom(const FrameMetrics& aMetrics) {
   mVisualScrollOffset = aMetrics.GetVisualScrollOffset();
   mZoom = aMetrics.GetZoom();
   mDevPixelsPerCSSPixel = aMetrics.GetDevPixelsPerCSSPixel();
 }
 
 }  // namespace layers
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/gfx/layers/ipc/ShadowLayerUtilsX11.cpp
+++ b/gfx/layers/ipc/ShadowLayerUtilsX11.cpp
@@ -145,9 +145,9 @@ void ParamTraits<mozilla::layers::Surfac
 bool ParamTraits<mozilla::layers::SurfaceDescriptorX11>::Read(
     const Message* aMsg, PickleIterator* aIter, paramType* aResult) {
   return (ReadParam(aMsg, aIter, &aResult->mId) &&
           ReadParam(aMsg, aIter, &aResult->mSize) &&
           ReadParam(aMsg, aIter, &aResult->mFormat) &&
           ReadParam(aMsg, aIter, &aResult->mGLXPixmap));
 }
 
-}  // namespace IPC
\ No newline at end of file
+}  // namespace IPC
--- a/gfx/tests/gtest/PolygonTestUtils.cpp
+++ b/gfx/tests/gtest/PolygonTestUtils.cpp
@@ -155,9 +155,9 @@ TEST(PolygonTestUtils, TestSanity)
   EXPECT_TRUE(t2[0] == t2[0]);
   EXPECT_TRUE(t3[0] == t1[0]);
 
   EXPECT_FALSE(t1[0] == t2[0]);
   EXPECT_FALSE(t2[0] == t3[0]);
 
   AssertArrayEQ(t1, t1);
   AssertArrayEQ(t2, t2);
-}
\ No newline at end of file
+}
--- a/gfx/tests/gtest/TestMatrix.cpp
+++ b/gfx/tests/gtest/TestMatrix.cpp
@@ -137,9 +137,9 @@ TEST(Matrix4x4Flagged, Mult)
   // Check that Matrix4x4Flagged::operator*(Matrix4x4Flagged) produces the same
   // result.
   Matrix4x4Flagged flaggedResult = simple * Matrix4x4Flagged(general);
   EXPECT_EQ(realResult, flaggedResult);
 
   // Check that Matrix4x4Flagged::operator*(Matrix4x4) produces the same result.
   Matrix4x4Flagged mixedResult = simple * general;
   EXPECT_EQ(realResult, mixedResult);
-}
\ No newline at end of file
+}
--- a/gfx/tests/reftest/1474722-ref.html
+++ b/gfx/tests/reftest/1474722-ref.html
@@ -9,9 +9,9 @@
       margin: 0 2em;
       float: left;
     }
   </style>
 </head>
 <body style = "overflow:hidden">
 <div class="shadowed" style="height: 200vh"> long shadow </div>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/gfx/tests/reftest/1474722.html
+++ b/gfx/tests/reftest/1474722.html
@@ -9,9 +9,9 @@
       margin: 0 2em;
       float: left;
     }
   </style>
 </head>
 <body style = "overflow:hidden">
 <div class="shadowed" style="height: 100000px"> long shadow </div>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/gfx/tests/reftest/1616444-same-color-different-paths.html
+++ b/gfx/tests/reftest/1616444-same-color-different-paths.html
@@ -84,9 +84,9 @@
   <br>
   <div class="swatch violet"></div>
   <div class="swatch violet layer"></div>
   <div class="swatch violet layer add-border"></div>
   <div class="swatch g-violet"></div>
   <div class="swatch g-violet layer"></div>
   <div class="swatch g-violet layer add-border"></div>
   <br>
-</body></html>
\ No newline at end of file
+</body></html>
--- a/gfx/vr/FxROutputHandler.cpp
+++ b/gfx/vr/FxROutputHandler.cpp
@@ -88,9 +88,9 @@ void FxROutputHandler::UpdateOutput(ID3D
   MOZ_ASSERT(mSwapChain != nullptr);
 
   ID3D11Texture2D* texOrig = nullptr;
   HRESULT hr = mSwapChain->GetBuffer(0, IID_PPV_ARGS(&texOrig));
   if (hr == S_OK) {
     aCtx->CopyResource(mTexCopy, texOrig);
     texOrig->Release();
   }
-}
\ No newline at end of file
+}
--- a/gfx/vr/FxROutputHandler.h
+++ b/gfx/vr/FxROutputHandler.h
@@ -22,9 +22,9 @@ struct ID3D11Device;
 class FxROutputHandler final {
  public:
   bool TryInitialize(IDXGISwapChain* aSwapChain, ID3D11Device* aDevice);
   void UpdateOutput(ID3D11DeviceContext* aCtx);
 
  private:
   RefPtr<IDXGISwapChain> mSwapChain = nullptr;
   RefPtr<ID3D11Texture2D> mTexCopy = nullptr;
-};
\ No newline at end of file
+};
--- a/gfx/vr/FxRWindowManager.cpp
+++ b/gfx/vr/FxRWindowManager.cpp
@@ -42,9 +42,9 @@ bool FxRWindowManager::IsFxRWindow(const
   return (mWindow != nullptr) &&
          (aWindow ==
           mozilla::widget::WidgetUtils::DOMWindowToWidget(mWindow).take());
 }
 
 uint64_t FxRWindowManager::GetWindowID() const {
   MOZ_ASSERT(mWindow);
   return mWindow->WindowID();
-}
\ No newline at end of file
+}
--- a/gfx/vr/FxRWindowManager.h
+++ b/gfx/vr/FxRWindowManager.h
@@ -23,9 +23,9 @@ class FxRWindowManager final {
 
  private:
   FxRWindowManager();
 
   // Only a single window is supported for tracking. Support for multiple
   // windows will require a data structure to collect windows as they are
   // created.
   nsPIDOMWindowOuter* mWindow;
-};
\ No newline at end of file
+};
--- a/gfx/vr/VRShMem.h
+++ b/gfx/vr/VRShMem.h
@@ -97,9 +97,9 @@ class VRShMem final {
 
 #if !defined(MOZ_WIDGET_ANDROID)
   int64_t mBrowserGeneration = 0;
 #endif
 };
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif
\ No newline at end of file
+#endif
--- a/gfx/vr/VRThread.h
+++ b/gfx/vr/VRThread.h
@@ -38,9 +38,9 @@ class VRThread final {
   nsCString mName;
   uint32_t mLifeTime;
   Atomic<bool> mStarted;
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_THREAD_H
\ No newline at end of file
+#endif  // GFX_VR_THREAD_H
--- a/gfx/vr/ipc/VRGPUChild.h
+++ b/gfx/vr/ipc/VRGPUChild.h
@@ -35,9 +35,9 @@ class VRGPUChild final : public PVRGPUCh
   DISALLOW_COPY_AND_ASSIGN(VRGPUChild);
 
   bool mClosed;
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_GPU_CHILD_H
\ No newline at end of file
+#endif  // GFX_VR_GPU_CHILD_H
--- a/gfx/vr/ipc/VRGPUParent.cpp
+++ b/gfx/vr/ipc/VRGPUParent.cpp
@@ -104,9 +104,9 @@ mozilla::ipc::IPCResult VRGPUParent::Rec
   }
 #endif
   return IPC_OK();
 }
 
 bool VRGPUParent::IsClosed() { return mClosed; }
 
 }  // namespace gfx
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/gfx/vr/ipc/VRProcessChild.h
+++ b/gfx/vr/ipc/VRProcessChild.h
@@ -34,9 +34,9 @@ class VRProcessChild final : public mozi
 
  private:
   DISALLOW_COPY_AND_ASSIGN(VRProcessChild);
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif /* GFX_VR_PROCESS_CHILD_H */
\ No newline at end of file
+#endif /* GFX_VR_PROCESS_CHILD_H */
--- a/gfx/vr/service/OpenVRControllerMapper.cpp
+++ b/gfx/vr/service/OpenVRControllerMapper.cpp
@@ -81,9 +81,9 @@ void OpenVRControllerMapper::GetAxisValu
       analogData.bActive) {
     aControllerState.axisValue[mNumAxes] = analogData.x;
     ++mNumAxes;
     aControllerState.axisValue[mNumAxes] = analogData.y * yAxisInvert;
     ++mNumAxes;
   }
 }
 
-}  // namespace mozilla::gfx
\ No newline at end of file
+}  // namespace mozilla::gfx
--- a/gfx/vr/service/OpenVRControllerMapper.h
+++ b/gfx/vr/service/OpenVRControllerMapper.h
@@ -88,9 +88,9 @@ class OpenVRControllerMapper {
                               bool aInvertAxis = false);
   uint32_t mNumButtons;
   uint32_t mNumAxes;
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_SERVICE_OPENVRCONTROLLERMAPPER_H
\ No newline at end of file
+#endif  // GFX_VR_SERVICE_OPENVRCONTROLLERMAPPER_H
--- a/gfx/vr/service/OpenVRCosmosMapper.cpp
+++ b/gfx/vr/service/OpenVRCosmosMapper.cpp
@@ -43,9 +43,9 @@ void OpenVRCosmosMapper::UpdateButtons(V
   // Axis 2, 3: Thumbstick
   GetAxisValueFromAction(aControllerState,
                          aControllerInfo.mActionThumbstick_Analog);
 
   aControllerState.numButtons = mNumButtons;
   aControllerState.numAxes = mNumAxes;
 }
 
-}  // namespace mozilla::gfx
\ No newline at end of file
+}  // namespace mozilla::gfx
--- a/gfx/vr/service/OpenVRCosmosMapper.h
+++ b/gfx/vr/service/OpenVRCosmosMapper.h
@@ -18,9 +18,9 @@ class OpenVRCosmosMapper : public OpenVR
   virtual ~OpenVRCosmosMapper() = default;
   virtual void UpdateButtons(VRControllerState& aControllerState,
                              ControllerInfo& aControllerInfo);
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_SERVICE_OPENVRCOSMOSMAPPER_H
\ No newline at end of file
+#endif  // GFX_VR_SERVICE_OPENVRCOSMOSMAPPER_H
--- a/gfx/vr/service/OpenVRDefaultMapper.cpp
+++ b/gfx/vr/service/OpenVRDefaultMapper.cpp
@@ -62,9 +62,9 @@ void OpenVRDefaultMapper::UpdateButtons(
   // Axis 2, 3: Thumbstick
   GetAxisValueFromAction(aControllerState,
                          aControllerInfo.mActionThumbstick_Analog);
 
   aControllerState.numButtons = mNumButtons;
   aControllerState.numAxes = mNumAxes;
 }
 
-}  // namespace mozilla::gfx
\ No newline at end of file
+}  // namespace mozilla::gfx
--- a/gfx/vr/service/OpenVRDefaultMapper.h
+++ b/gfx/vr/service/OpenVRDefaultMapper.h
@@ -18,9 +18,9 @@ class OpenVRDefaultMapper : public OpenV
   virtual ~OpenVRDefaultMapper() = default;
   virtual void UpdateButtons(VRControllerState& aControllerState,
                              ControllerInfo& aControllerInfo);
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_SERVICE_OPENVRDEFAULTMAPPER_H
\ No newline at end of file
+#endif  // GFX_VR_SERVICE_OPENVRDEFAULTMAPPER_H
--- a/gfx/vr/service/OpenVRKnucklesMapper.cpp
+++ b/gfx/vr/service/OpenVRKnucklesMapper.cpp
@@ -54,9 +54,9 @@ void OpenVRKnucklesMapper::UpdateButtons
   // Axis 2, 3: Thumbstick
   GetAxisValueFromAction(aControllerState,
                          aControllerInfo.mActionThumbstick_Analog);
 
   aControllerState.numButtons = mNumButtons;
   aControllerState.numAxes = mNumAxes;
 }
 
-}  // namespace mozilla::gfx
\ No newline at end of file
+}  // namespace mozilla::gfx
--- a/gfx/vr/service/OpenVRKnucklesMapper.h
+++ b/gfx/vr/service/OpenVRKnucklesMapper.h
@@ -18,9 +18,9 @@ class OpenVRKnucklesMapper : public Open
   virtual ~OpenVRKnucklesMapper() = default;
   virtual void UpdateButtons(VRControllerState& aControllerState,
                              ControllerInfo& aControllerInfo);
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_SERVICE_OPENVRKNUCKLESMAPPER_H
\ No newline at end of file
+#endif  // GFX_VR_SERVICE_OPENVRKNUCKLESMAPPER_H
--- a/gfx/vr/service/OpenVRViveMapper.cpp
+++ b/gfx/vr/service/OpenVRViveMapper.cpp
@@ -35,9 +35,9 @@ void OpenVRViveMapper::UpdateButtons(VRC
   // Axis 0, 1: Trackpad
   GetAxisValueFromAction(aControllerState,
                          aControllerInfo.mActionTrackpad_Analog);
 
   aControllerState.numButtons = mNumButtons;
   aControllerState.numAxes = mNumAxes;
 }
 
-}  // namespace mozilla::gfx
\ No newline at end of file
+}  // namespace mozilla::gfx
--- a/gfx/vr/service/OpenVRViveMapper.h
+++ b/gfx/vr/service/OpenVRViveMapper.h
@@ -18,9 +18,9 @@ class OpenVRViveMapper : public OpenVRCo
   virtual ~OpenVRViveMapper() = default;
   virtual void UpdateButtons(VRControllerState& aControllerState,
                              ControllerInfo& aControllerInfo);
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_SERVICE_OPENVRVIVEMAPPER_H
\ No newline at end of file
+#endif  // GFX_VR_SERVICE_OPENVRVIVEMAPPER_H
--- a/gfx/vr/service/OpenVRWMRMapper.cpp
+++ b/gfx/vr/service/OpenVRWMRMapper.cpp
@@ -43,9 +43,9 @@ void OpenVRWMRMapper::UpdateButtons(VRCo
   // Axis 2, 3: Thumbstick
   GetAxisValueFromAction(aControllerState,
                          aControllerInfo.mActionThumbstick_Analog, true);
 
   aControllerState.numButtons = mNumButtons;
   aControllerState.numAxes = mNumAxes;
 }
 
-}  // namespace mozilla::gfx
\ No newline at end of file
+}  // namespace mozilla::gfx
--- a/gfx/vr/service/OpenVRWMRMapper.h
+++ b/gfx/vr/service/OpenVRWMRMapper.h
@@ -18,9 +18,9 @@ class OpenVRWMRMapper : public OpenVRCon
   virtual ~OpenVRWMRMapper() = default;
   virtual void UpdateButtons(VRControllerState& aControllerState,
                              ControllerInfo& aControllerInfo);
 };
 
 }  // namespace gfx
 }  // namespace mozilla
 
-#endif  // GFX_VR_SERVICE_OPENVRWMRMAPPER_H
\ No newline at end of file
+#endif  // GFX_VR_SERVICE_OPENVRWMRMAPPER_H
--- a/gfx/vr/vrhost/vrhostex.h
+++ b/gfx/vr/vrhost/vrhostex.h
@@ -25,9 +25,9 @@ typedef void (*PFN_CLOSEVRWINDOW)(uint32
 
 typedef void (*PFN_SENDUIMSG)(uint32_t nVRWindowID, uint32_t msg,
                               uint64_t wparam, uint64_t lparam);
 
 typedef void (*PFN_WAITFORVREVENT)(uint32_t& nVRWindowID, uint32_t& eventType,
                                    uint32_t& eventData1, uint32_t& eventData2);
 
 typedef void (*PFN_SENDVRTELEMETRY)(uint32_t nVRWindowID, uint32_t telemetryId,
-                                    uint32_t value);
\ No newline at end of file
+                                    uint32_t value);
--- a/intl/JapaneseDetector.h
+++ b/intl/JapaneseDetector.h
@@ -116,9 +116,9 @@ class JapaneseDetector final {
  private:
   JapaneseDetector() = delete;
   JapaneseDetector(const JapaneseDetector&) = delete;
   JapaneseDetector& operator=(const JapaneseDetector&) = delete;
 };
 
 };  // namespace mozilla
 
-#endif  // mozilla_JapaneseDetector_h
\ No newline at end of file
+#endif  // mozilla_JapaneseDetector_h
--- a/ipc/glue/LibrarySandboxPreload.cpp
+++ b/ipc/glue/LibrarySandboxPreload.cpp
@@ -74,9 +74,9 @@ void PreloadSandboxedDynamicLibraries() 
   if (!PreloadLibrary(GetSandboxedOggPath())) {
     MOZ_CRASH("Library preload failure: Failed to load libogg\n");
   }
 #  endif
 #endif
 }
 
 }  // namespace ipc
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/ipc/glue/LibrarySandboxPreload.h
+++ b/ipc/glue/LibrarySandboxPreload.h
@@ -10,9 +10,9 @@
 
 namespace mozilla {
 namespace ipc {
 nsAutoCString GetSandboxedGraphitePath();
 nsAutoCString GetSandboxedOggPath();
 void PreloadSandboxedDynamicLibraries();
 }  // namespace ipc
 }  // namespace mozilla
-#endif
\ No newline at end of file
+#endif
--- a/layout/base/RelativeTo.h
+++ b/layout/base/RelativeTo.h
@@ -43,9 +43,9 @@ struct RelativeTo {
                << (aR.mViewportType == ViewportType::Visual ? "visual"
                                                             : "layout")
                << "}";
   }
 };
 
 }  // namespace mozilla
 
-#endif  // mozilla_RelativeTo_h
\ No newline at end of file
+#endif  // mozilla_RelativeTo_h
--- a/layout/base/nsRefreshObservers.cpp
+++ b/layout/base/nsRefreshObservers.cpp
@@ -33,9 +33,9 @@ void OneShotPostRefreshObserver::DidRefr
     mPresShell = nullptr;
     mAction = Action();
     return;
   }
 
   delete this;
 }
 
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/mfbt/tests/TestArray.cpp
+++ b/mfbt/tests/TestArray.cpp
@@ -23,9 +23,9 @@ void TestInitialValueByConstructor() {
   MOZ_RELEASE_ASSERT(arr3[0] == 8);
   MOZ_RELEASE_ASSERT(arr3[1] == 9);
   MOZ_RELEASE_ASSERT(arr3[2] == 10);
 }
 
 int main() {
   TestInitialValueByConstructor();
   return 0;
-}
\ No newline at end of file
+}
--- a/mfbt/tests/TestAtomicBitfields.cpp
+++ b/mfbt/tests/TestAtomicBitfields.cpp
@@ -181,9 +181,9 @@ int main() {
   TEST_JAMMED_WITH_FLAGS(16);
   TEST_JAMMED_WITH_FLAGS(32);
 
   TEST_LOPSIDED(8);
   TEST_LOPSIDED(16);
   TEST_LOPSIDED(32);
   TEST_LOPSIDED(64);
   return 0;
-}
\ No newline at end of file
+}
--- a/mfbt/tests/TestRandomNum.cpp
+++ b/mfbt/tests/TestRandomNum.cpp
@@ -48,9 +48,9 @@ static void TestRandomUint64() {
 
     randomsList[i] = randomNum;
   }
 }
 
 int main() {
   TestRandomUint64();
   return 0;
-}
\ No newline at end of file
+}
--- a/mobile/android/components/geckoview/GeckoViewExternalAppService.h
+++ b/mobile/android/components/geckoview/GeckoViewExternalAppService.h
@@ -18,9 +18,9 @@ class GeckoViewExternalAppService : publ
 
   static already_AddRefed<GeckoViewExternalAppService> GetSingleton();
 
  private:
   virtual ~GeckoViewExternalAppService() {}
   static mozilla::StaticRefPtr<GeckoViewExternalAppService> sService;
 };
 
-#endif
\ No newline at end of file
+#endif
--- a/netwerk/base/IPv6Utils.h
+++ b/netwerk/base/IPv6Utils.h
@@ -42,9 +42,9 @@ static int ipv6_scope(const unsigned cha
 
   return IPV6_SCOPE_GLOBAL;
 }
 
 }  // namespace utils
 }  // namespace net
 }  // namespace mozilla
 
-#endif  // NETWORK_IPV6_UTILS_H_
\ No newline at end of file
+#endif  // NETWORK_IPV6_UTILS_H_
--- a/netwerk/protocol/ftp/nsFTPChannel.cpp
+++ b/netwerk/protocol/ftp/nsFTPChannel.cpp
@@ -205,9 +205,9 @@ nsFtpChannel::Suspend() {
 }
 
 NS_IMETHODIMP
 nsFtpChannel::Resume() {
   LOG(("nsFtpChannel::Resume [this=%p]\n", this));
   NS_ENSURE_TRUE(mSuspendCount > 0, NS_ERROR_UNEXPECTED);
   --mSuspendCount;
   return nsBaseChannel::Resume();
-}
\ No newline at end of file
+}
--- a/remote/test/browser/input/doc_dispatchKeyEvent_race.html
+++ b/remote/test/browser/input/doc_dispatchKeyEvent_race.html
@@ -19,9 +19,9 @@
     document.querySelector("input").addEventListener("input", () => {
       // Block the execution synchronously for one second.
       sleep(1000);
       // Update the value that will be checked by the test.
       window.testValue = document.querySelector("input").value;
     });
   </script>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/testing/marionette/harness/marionette_harness/www/html5/boolean_attributes.html
+++ b/testing/marionette/harness/marionette_harness/www/html5/boolean_attributes.html
@@ -1,2 +1,2 @@
 <!DOCTYPE html>
-<input id='disabled' disabled>
\ No newline at end of file
+<input id='disabled' disabled>
--- a/testing/marionette/harness/marionette_harness/www/html5/test_html_inputs.html
+++ b/testing/marionette/harness/marionette_harness/www/html5/test_html_inputs.html
@@ -1,2 +1,2 @@
 <!DOCTYPE html>
-<input id='number' type=number>
\ No newline at end of file
+<input id='number' type=number>
--- a/testing/marionette/harness/marionette_harness/www/slow_resource.html
+++ b/testing/marionette/harness/marionette_harness/www/slow_resource.html
@@ -5,9 +5,9 @@
 <!DOCTYPE html>
 <html>
 <head>
 <title>Slow loading resource</title>
 </head>
 <body>
   <img src="/slow?delay=4" id="slow" />
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/testing/marionette/harness/marionette_harness/www/windowHandles.html
+++ b/testing/marionette/harness/marionette_harness/www/windowHandles.html
@@ -8,9 +8,9 @@
 <title>Marionette New Tab Link</title>
 </head>
 <body>
   <a href="empty.html" id="new-tab" target="_blank">New Tab</a>
   <a href="about:blank" id="new-blank-tab" target="_blank">New blank Tab</a>
 
   <a href="" id="new-window" onClick='javascript:window.open("empty.html", null, "location=1,toolbar=1");'>New Window</a>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/testing/web-platform/mozilla/tests/wasm/spec/js/harness/testharness.css
+++ b/testing/web-platform/mozilla/tests/wasm/spec/js/harness/testharness.css
@@ -94,9 +94,9 @@ tr.error {
 }
 
 span.timeout {
     color:red;
 }
 
 span.ok, span.timeout, span.error {
     font-variant:small-caps;
-}
\ No newline at end of file
+}
--- a/toolkit/components/certviewer/content/components/about-certificate-section.css
+++ b/toolkit/components/certviewer/content/components/about-certificate-section.css
@@ -1,7 +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/. */
 
 :host {
   margin: 2em;
-}
\ No newline at end of file
+}
--- a/toolkit/components/extensions/test/mochitest/test_ext_webnavigation_incognito.html
+++ b/toolkit/components/extensions/test/mochitest/test_ext_webnavigation_incognito.html
@@ -101,9 +101,9 @@ add_task(async function webnav_test_inco
 
   await extension.unload();
   await monitor.unload();
 });
 
 </script>
 
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/toolkit/components/printing/tests/simplifyNonArticleSample.html
+++ b/toolkit/components/printing/tests/simplifyNonArticleSample.html
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
 <html>
 <head>
 <title>Non article title</title>
 <meta name="description" content="This is the non-article description." />
 </head>
 <body>
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/toolkit/components/processtools/ProcessToolsService.h
+++ b/toolkit/components/processtools/ProcessToolsService.h
@@ -1,8 +1,8 @@
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "nsIProcessToolsService.h"
 
-already_AddRefed<nsIProcessToolsService> GetProcessToolsService();
\ No newline at end of file
+already_AddRefed<nsIProcessToolsService> GetProcessToolsService();
--- a/toolkit/components/remote/RemoteUtils.h
+++ b/toolkit/components/remote/RemoteUtils.h
@@ -14,9 +14,9 @@ static void BuildClassName(const char* a
   aClassName.AppendPrintf("Mozilla_%s_%s_RemoteWindow", aProgram, aProfile);
 }
 #endif
 
 char* ConstructCommandLine(int32_t argc, char** argv,
                            const char* aDesktopStartupID,
                            int* aCommandLineLength);
 
-#endif  // TOOLKIT_COMPONENTS_REMOTE_REMOTEUTILS_H_
\ No newline at end of file
+#endif  // TOOLKIT_COMPONENTS_REMOTE_REMOTEUTILS_H_
--- a/toolkit/components/remotebrowserutils/tests/browser/file_postmsg_parent.html
+++ b/toolkit/components/remotebrowserutils/tests/browser/file_postmsg_parent.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html>
 <html>
 <body onload="parent.postMessage({location: window.location.href}, '*')">
 </body>
-</html>
\ No newline at end of file
+</html>
--- a/toolkit/components/resistfingerprinting/RelativeTimeline.h
+++ b/toolkit/components/resistfingerprinting/RelativeTimeline.h
@@ -15,9 +15,9 @@ class RelativeTimeline {
   int64_t GetRandomTimelineSeed();
 
  private:
   uint64_t mRandomTimelineSeed;
 };
 
 }  // namespace mozilla
 
-#endif /* __RelativeTimeline_h__ */
\ No newline at end of file
+#endif /* __RelativeTimeline_h__ */
--- a/toolkit/components/telemetry/core/UserInteractionInfo.h
+++ b/toolkit/components/telemetry/core/UserInteractionInfo.h
@@ -22,9 +22,9 @@ struct UserInteractionInfo {
   explicit constexpr UserInteractionInfo(const uint32_t aNameOffset)
       : name_offset(aNameOffset) {}
 
   const char* name() const;
 };
 
 }  // namespace
 
-#endif  // TelemetryUserInteractionInfo_h__
\ No newline at end of file
+#endif  // TelemetryUserInteractionInfo_h__
--- a/toolkit/components/url-classifier/tests/mochitest/evil.css
+++ b/toolkit/components/url-classifier/tests/mochitest/evil.css
@@ -1,1 +1,1 @@
-#styleCheck { visibility: hidden; }
\ No newline at end of file
+#styleCheck { visibility: hidden; }
--- a/toolkit/locales/en-US/chrome/global/aboutStudies.properties
+++ b/toolkit/locales/en-US/chrome/global/aboutStudies.properties
@@ -24,9 +24,9 @@ noStudies = You have not participated in
 disabledList = This is a list of studies that you have participated in. No new studies will run.
 # LOCALIZATION NOTE (enabledList): %S is brandShortName (e.g. Firefox)
 enabledList = What窶冱 this? %S may install and run studies from time to time.
 
 # LOCALIZATION NOTE (preferenceStudyDescription) $1%S will be replaced with the
 # name of a preference (such as "stream.improvesearch.topSiteSearchShortcuts")
 # and $2%S will be replaced with the value of that preference. Both values will
 # be formatted differently than the surrounding text.
-preferenceStudyDescription = This study sets %1$S to %2$S.
\ No newline at end of file
+preferenceStudyDescription = This study sets %1$S to %2$S.
--- a/toolkit/modules/tests/browser/file_getSelectionDetails_inputs.html
+++ b/toolkit/modules/tests/browser/file_getSelectionDetails_inputs.html
@@ -1,9 +1,9 @@
 <!DOCTYPE html>
 <html>
   <body>
     <input id="url-no-scheme" value="test.example.com" >
     <input id="url-with-scheme" value="https://test.example.com">
     <input id="not-url" value="foo. bar">
     <input id="not-url-number" value="3.5">
   </body>
-</html>
\ No newline at end of file
+</html>
--- a/toolkit/system/windowsDHCPClient/DHCPUtils.h
+++ b/toolkit/system/windowsDHCPClient/DHCPUtils.h
@@ -23,9 +23,9 @@ nsresult RetrieveOption(
     const nsACString& aAdapterName, uint8_t aOption,
     std::vector<char>& aOptionValueBuf, uint32_t* aOptionSize,
     WindowsNetworkFunctionsWrapper* aWindowsNetworkFunctionsWrapper);
 
 }  // namespace windowsDHCPClient
 }  // namespace system
 }  // namespace toolkit
 }  // namespace mozilla
-#endif  // mozilla_toolkit_system_windowsDHCPClient_DHCPUtils_h
\ No newline at end of file
+#endif  // mozilla_toolkit_system_windowsDHCPClient_DHCPUtils_h
--- a/toolkit/themes/linux/global/in-content/info-pages.css
+++ b/toolkit/themes/linux/global/in-content/info-pages.css
@@ -1,5 +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/. */
 
-%include ../../../shared/in-content/info-pages.inc.css
\ No newline at end of file
+%include ../../../shared/in-content/info-pages.inc.css
--- a/toolkit/themes/osx/global/in-content/info-pages.css
+++ b/toolkit/themes/osx/global/in-content/info-pages.css
@@ -1,5 +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/. */
 
-%include ../../../shared/in-content/info-pages.inc.css
\ No newline at end of file
+%include ../../../shared/in-content/info-pages.inc.css
--- a/toolkit/themes/windows/global/in-content/info-pages.css
+++ b/toolkit/themes/windows/global/in-content/info-pages.css
@@ -1,5 +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/. */
 
-%include ../../../shared/in-content/info-pages.inc.css
\ No newline at end of file
+%include ../../../shared/in-content/info-pages.inc.css
--- a/toolkit/xre/updaterfileutils_osx.h
+++ b/toolkit/xre/updaterfileutils_osx.h
@@ -5,9 +5,9 @@
 
 #ifndef updaterfileutils_osx_h_
 #define updaterfileutils_osx_h_
 
 extern "C" {
 bool IsRecursivelyWritable(const char* aPath);
 }
 
-#endif
\ No newline at end of file
+#endif
--- a/tools/clang-tidy/test/bugprone-incorrect-roundings.cpp
+++ b/tools/clang-tidy/test/bugprone-incorrect-roundings.cpp
@@ -1,7 +1,7 @@
 void f1()
 {
   double d;
   int x;
 
   x = (d + 0.5);
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/bugprone-integer-division.cpp
+++ b/tools/clang-tidy/test/bugprone-integer-division.cpp
@@ -1,5 +1,5 @@
 float f() {
   int a = 2;
   int b = 10;
   return a/b;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/bugprone-macro-parentheses.cpp
+++ b/tools/clang-tidy/test/bugprone-macro-parentheses.cpp
@@ -1,5 +1,5 @@
 #define BAD1              -1
 #define BAD2              1+2
 #define BAD3(A)           (A+1)
 #define BAD4(x)           ((unsigned char)(x & 0xff))
-#define BAD5(X) A*B=(C*)X+2
\ No newline at end of file
+#define BAD5(X) A*B=(C*)X+2
--- a/tools/clang-tidy/test/bugprone-misplaced-widening-cast.cpp
+++ b/tools/clang-tidy/test/bugprone-misplaced-widening-cast.cpp
@@ -1,3 +1,3 @@
 long f(int x) {
     return (long)(x * 1000);
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/bugprone-multiple-statement-macro.cpp
+++ b/tools/clang-tidy/test/bugprone-multiple-statement-macro.cpp
@@ -2,9 +2,9 @@ void F();
 
 #define BAD_MACRO(x) \
   F();               \
   F()
 
 void positives() {
   if (1)
     BAD_MACRO(1);
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/bugprone-sizeof-expression.cpp
+++ b/tools/clang-tidy/test/bugprone-sizeof-expression.cpp
@@ -1,3 +1,3 @@
 class C {
   int size() { return sizeof(this); }
-};
\ No newline at end of file
+};
--- a/tools/clang-tidy/test/bugprone-suspicious-string-compare.cpp
+++ b/tools/clang-tidy/test/bugprone-suspicious-string-compare.cpp
@@ -1,8 +1,8 @@
 static const char A[] = "abc";
 
 int strcmp(const char *, const char *);
 
 int test_warning_patterns() {
   if (strcmp(A, "a"))
     return 0;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/bugprone-too-small-loop-variable.cpp
+++ b/tools/clang-tidy/test/bugprone-too-small-loop-variable.cpp
@@ -1,4 +1,4 @@
 int main() {
   long size = 294967296l;
   for (short i = 0; i < size; ++i) {}
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/bugprone-use-after-move.cpp
+++ b/tools/clang-tidy/test/bugprone-use-after-move.cpp
@@ -54,9 +54,9 @@ public:
 };
 
 void func() {
   std::unique_ptr<A> ptr;
   std::move(ptr);
   ptr.get();
   static_cast<bool>(ptr);
   *ptr;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/clang-analyzer-core.DivideZero.cpp
+++ b/tools/clang-tidy/test/clang-analyzer-core.DivideZero.cpp
@@ -1,4 +1,4 @@
 void test(int z) {
   if (z == 0)
     int x = 1 / z;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/clang-analyzer-core.NonNullParamChecker.cpp
+++ b/tools/clang-tidy/test/clang-analyzer-core.NonNullParamChecker.cpp
@@ -1,6 +1,6 @@
 int f(int *p) __attribute__((nonnull));
 
 void test(int *p) {
   if (!p)
     f(p); // warn
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/clang-analyzer-core.NullDereference.cpp
+++ b/tools/clang-tidy/test/clang-analyzer-core.NullDereference.cpp
@@ -1,9 +1,9 @@
 class C {
 public:
   int x;
 };
 
 void test() {
   C *pc = 0;
   int k = pc->x;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/clang-analyzer-core.UndefinedBinaryOperatorResult.cpp
+++ b/tools/clang-tidy/test/clang-analyzer-core.UndefinedBinaryOperatorResult.cpp
@@ -1,4 +1,4 @@
 void test() {
   int x;
   int y = x + 1;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Assign.cpp
+++ b/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Assign.cpp
@@ -1,4 +1,4 @@
 void test() {
   int x;
   x |= 1;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Branch.cpp
+++ b/tools/clang-tidy/test/clang-analyzer-core.uninitialized.Branch.cpp
@@ -1,6 +1,6 @@
 void test() {
   int x;
   if (x) {
     return;
   }
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/cppcoreguidelines-narrowing-conversions.cpp
+++ b/tools/clang-tidy/test/cppcoreguidelines-narrowing-conversions.cpp
@@ -1,4 +1,4 @@
 class Foo {
   int f;
   void a_f(double val) { f = val;}
-};
\ No newline at end of file
+};
--- a/tools/clang-tidy/test/misc-non-copyable-objects.cpp
+++ b/tools/clang-tidy/test/misc-non-copyable-objects.cpp
@@ -1,5 +1,5 @@
 namespace std {
 typedef struct FILE {} FILE;
 }
 
-void g(std::FILE f);
\ No newline at end of file
+void g(std::FILE f);
--- a/tools/clang-tidy/test/misc-redundant-expression.cpp
+++ b/tools/clang-tidy/test/misc-redundant-expression.cpp
@@ -1,3 +1,3 @@
 int TestSimpleEquivalent(int X, int Y) {
   if (X - X) return 1;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/modernize-deprecated-ios-base-aliases.cpp
+++ b/tools/clang-tidy/test/modernize-deprecated-ios-base-aliases.cpp
@@ -10,9 +10,9 @@ public:
 };
 
 template <class CharT>
 class basic_ios : public ios_base {
 };
 } // namespace std
 
 // Test function return values (declaration)
-std::ios_base::io_state f_5();
\ No newline at end of file
+std::ios_base::io_state f_5();
--- a/tools/clang-tidy/test/modernize-use-auto.cpp
+++ b/tools/clang-tidy/test/modernize-use-auto.cpp
@@ -3,9 +3,9 @@
 void func() {
   int val = 42;
   std::vector<int> my_container;
   for (std::vector<int>::iterator I = my_container.begin(),
                                   E = my_container.end();
        I != E;
        ++I) {
   }
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/modernize-use-bool-literals.cpp
+++ b/tools/clang-tidy/test/modernize-use-bool-literals.cpp
@@ -1,5 +1,5 @@
 void foo() {
   bool p = 1;
   bool f = static_cast<bool>(1);
   bool x = p ? 1 : 0;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/modernize-use-override.cpp
+++ b/tools/clang-tidy/test/modernize-use-override.cpp
@@ -1,8 +1,8 @@
 class Base {
 public:
   virtual void foo() = 0;
 };
 
 class Deriv : public Base {
   void foo();
-};
\ No newline at end of file
+};
--- a/tools/clang-tidy/test/performance-faster-string-find.cpp
+++ b/tools/clang-tidy/test/performance-faster-string-find.cpp
@@ -1,6 +1,6 @@
 #include "structures.h"
 
 void foo() {
   std::string str;
   str.find("A");
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/performance-for-range-copy.cpp
+++ b/tools/clang-tidy/test/performance-for-range-copy.cpp
@@ -22,9 +22,9 @@ struct S {
   S(const S &);
   ~S();
   S &operator=(const S &);
 };
 
 void negativeConstReference() {
   for (const S S1 : View<Iterator<S>>()) {
   }
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/performance-inefficient-string-concatenation.cpp
+++ b/tools/clang-tidy/test/performance-inefficient-string-concatenation.cpp
@@ -5,9 +5,9 @@ extern void fstring(std::string);
 void foo() {
   std::string mystr1, mystr2;
   auto myautostr1 = mystr1;
   auto myautostr2 = mystr2;
 
   for (int i = 0; i < 10; ++i) {
     fstring(mystr1 + mystr2 + mystr1);
   }
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/performance-inefficient-vector-operation.cpp
+++ b/tools/clang-tidy/test/performance-inefficient-vector-operation.cpp
@@ -2,9 +2,9 @@
 
 void foo()
 {
   std::vector<int> v;
   int n = 100;
   for (int i = 0; i < n; ++i) {
     v.push_back(n);
   }
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/performance-move-const-arg.cpp
+++ b/tools/clang-tidy/test/performance-move-const-arg.cpp
@@ -25,9 +25,9 @@ void f(TriviallyCopyable) {}
 
 void g() {
   TriviallyCopyable obj;
   f(std::move(obj));
 }
 
 A f5(const A x5) {
   return std::move(x5);
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/performance-type-promotion-in-math-fn.cpp
+++ b/tools/clang-tidy/test/performance-type-promotion-in-math-fn.cpp
@@ -1,7 +1,7 @@
 double acos(double);
 
 void check_all_fns()
 {
   float a;
   acos(a);
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/performance-unnecessary-copy-initialization.cpp
+++ b/tools/clang-tidy/test/performance-unnecessary-copy-initialization.cpp
@@ -1,7 +1,7 @@
 #include "structures.h"
 
 extern const std::string& constReference();
 
 void foo() {
   const std::string UnnecessaryCopy = constReference();
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/performance-unnecessary-value-param.cpp
+++ b/tools/clang-tidy/test/performance-unnecessary-value-param.cpp
@@ -1,4 +1,4 @@
 #include "structures.h"
 
 void f(const std::string Value) {
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-const-return-type.cpp
+++ b/tools/clang-tidy/test/readability-const-return-type.cpp
@@ -1,5 +1,5 @@
 const int p1() {
 // CHECK-MESSAGES: [[@LINE-1]]:1: warning: return type 'const int' is 'const'-qualified at the top level, which may reduce code readability without improving const correctness
 // CHECK-FIXES: int p1() {
   return 1;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-container-size-empty.cpp
+++ b/tools/clang-tidy/test/readability-container-size-empty.cpp
@@ -1,7 +1,7 @@
 #include "structures.h"
 
 void foo() {
   std::string a;
   if (a.size())
     return;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-delete-null-pointer.cpp
+++ b/tools/clang-tidy/test/readability-delete-null-pointer.cpp
@@ -1,6 +1,6 @@
 void func() {
   int* f = 0;
   if (f) {
     delete f;
   }
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-else-after-return.cpp
+++ b/tools/clang-tidy/test/readability-else-after-return.cpp
@@ -2,9 +2,9 @@ void f() {
 
 }
 
 void foo() {
   if (true)
     return;
   else
     f();
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-inconsistent-declaration-parameter-name.cpp
+++ b/tools/clang-tidy/test/readability-inconsistent-declaration-parameter-name.cpp
@@ -1,6 +1,6 @@
 struct S {
   void f(int x);
 };
 
 void S::f(int y) {
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-isolate-declaration.cpp
+++ b/tools/clang-tidy/test/readability-isolate-declaration.cpp
@@ -1,7 +1,7 @@
 void f() {
   int * pointer = nullptr, value = 42, * const const_ptr = &value;
   // This declaration will be diagnosed and transformed into:
   // int * pointer = nullptr;
   // int value = 42;
   // int * const const_ptr = &value;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-magic-numbers.cpp
+++ b/tools/clang-tidy/test/readability-magic-numbers.cpp
@@ -1,4 +1,4 @@
 void func() {
   int radius = 2;
   double circleArea = 3.1415926535 * radius * radius;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-non-const-parameter.cpp
+++ b/tools/clang-tidy/test/readability-non-const-parameter.cpp
@@ -1,5 +1,5 @@
 void warn1(int *first, int *last) {
   *first = 0;
   if (first < last) {
   }
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-qualified-auto.cpp
+++ b/tools/clang-tidy/test/readability-qualified-auto.cpp
@@ -1,6 +1,6 @@
 typedef int *MyPtr;
 MyPtr getPtr();
 
 void foo() {
   auto TdNakedPtr = getPtr();
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-redundant-control-flow.cpp
+++ b/tools/clang-tidy/test/readability-redundant-control-flow.cpp
@@ -1,5 +1,5 @@
 extern void g();
 void f() {
   g();
   return;
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-redundant-preprocessor.cpp
+++ b/tools/clang-tidy/test/readability-redundant-preprocessor.cpp
@@ -1,5 +1,5 @@
 #ifndef FOO
 #ifdef FOO // inner ifdef is considered redundant
 void f();
 #endif
-#endif
\ No newline at end of file
+#endif
--- a/tools/clang-tidy/test/readability-redundant-string-cstr.cpp
+++ b/tools/clang-tidy/test/readability-redundant-string-cstr.cpp
@@ -1,7 +1,7 @@
 #include "structures.h"
 
 void foo() {
   std::string a = "Mozilla";
   std::string tmp;
   tmp.assign(a.c_str());
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-redundant-string-init.cpp
+++ b/tools/clang-tidy/test/readability-redundant-string-init.cpp
@@ -1,5 +1,5 @@
 #include "structures.h"
 
 int foo() {
   std::string a = "";
-}
\ No newline at end of file
+}
--- a/tools/clang-tidy/test/readability-simplify-boolean-expr.cpp
+++ b/tools/clang-tidy/test/readability-simplify-boolean-expr.cpp
@@ -1,2 +1,2 @@
 bool a1 = false;
-bool aa = false == a1;
\ No newline at end of file
+bool aa = false == a1;
--- a/tools/clang-tidy/test/readability-uniqueptr-delete-release.cpp
+++ b/tools/clang-tidy/test/readability-uniqueptr-delete-release.cpp
@@ -1,6 +1,6 @@
 #include "structures.h"
 
 int foo() {
   std::unique_ptr<int> P;
   delete P.release();
-}
\ No newline at end of file
+}
--- a/tools/infer/test/gradle/wrapper/gradle-wrapper.properties
+++ b/tools/infer/test/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
 distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
-distributionSha256Sum=7a2c66d1a78f811d5f37d14630ad21cec5e77a2a4dc61e787e2257a6341016ce
\ No newline at end of file
+distributionSha256Sum=7a2c66d1a78f811d5f37d14630ad21cec5e77a2a4dc61e787e2257a6341016ce
--- a/tools/profiler/core/VTuneProfiler.cpp
+++ b/tools/profiler/core/VTuneProfiler.cpp
@@ -72,9 +72,9 @@ void VTuneProfiler::RegisterThreadIntern
         __itt_thread_set_name("GPU Process");
         break;
       default:
         __itt_thread_set_name("Unknown Process");
     }
     return;
   }
   __itt_thread_set_name(aName);
-}
\ No newline at end of file
+}
--- a/widget/IconLoader.cpp
+++ b/widget/IconLoader.cpp
@@ -173,9 +173,9 @@ nsresult IconLoader::OnFrameComplete(img
     mImageRegionRect.SetRect(0, 0, origWidth, origHeight);
   }
 
   mLoadedIcon = true;
 
   return NS_OK;
 }
 
-}  // namespace mozilla::widget
\ No newline at end of file
+}  // namespace mozilla::widget
--- a/widget/windows/RemoteBackbuffer.h
+++ b/widget/windows/RemoteBackbuffer.h
@@ -84,9 +84,9 @@ class Client {
   SharedData* mSharedDataPtr;
   std::unique_ptr<SharedImage> mBackbuffer;
 };
 
 }  // namespace remote_backbuffer
 }  // namespace widget
 }  // namespace mozilla
 
-#endif  // widget_windows_RemoteBackbuffer_h
\ No newline at end of file
+#endif  // widget_windows_RemoteBackbuffer_h
--- a/widget/windows/SystemStatusBar.h
+++ b/widget/windows/SystemStatusBar.h
@@ -24,9 +24,9 @@ class SystemStatusBar final : public nsI
 
  private:
   ~SystemStatusBar() = default;
   mozilla::LinkedList<RefPtr<StatusBarEntry>> mStatusBarEntries;
 };
 
 }  // namespace mozilla::widget
 
-#endif  // widget_windows_SystemStatusBar_h
\ No newline at end of file
+#endif  // widget_windows_SystemStatusBar_h
--- a/widget/windows/WinContentSystemParameters.cpp
+++ b/widget/windows/WinContentSystemParameters.cpp
@@ -205,9 +205,9 @@ void WinContentSystemParameters::SetCach
   if (aIsValid) {
     mDetail->validCachedValueBitfield |= mask;
   } else {
     mDetail->validCachedValueBitfield &= ~mask;
   }
 }
 
 }  // namespace widget
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/widget/windows/WinContentSystemParameters.h
+++ b/widget/windows/WinContentSystemParameters.h
@@ -64,9 +64,9 @@ class WinContentSystemParameters {
 
   struct Detail;
   std::unique_ptr<Detail> mDetail;
 };
 
 }  // namespace widget
 }  // namespace mozilla
 
-#endif  // mozilla_widget_WinContentSystemParameters_h
\ No newline at end of file
+#endif  // mozilla_widget_WinContentSystemParameters_h
--- a/widget/windows/WindowsEMF.h
+++ b/widget/windows/WindowsEMF.h
@@ -98,9 +98,9 @@ class WindowsEMF {
   /* Compiled EMF data handle. */
   HENHMETAFILE mEmf;
   HDC mDC;
 };
 
 }  // namespace widget
 }  // namespace mozilla
 
-#endif /* MOZILLA_WIDGET_WINDOWSEMF_H */
\ No newline at end of file
+#endif /* MOZILLA_WIDGET_WINDOWSEMF_H */
--- a/widget/windows/nsUXThemeData.cpp
+++ b/widget/windows/nsUXThemeData.cpp
@@ -402,9 +402,9 @@ bool nsUXThemeData::AreFlatMenusEnabled(
 }
 
 // static
 bool nsUXThemeData::IsAppThemed() {
   if (XRE_IsContentProcess()) {
     return WinContentSystemParameters::GetSingleton()->IsAppThemed();
   }
   return !!::IsAppThemed();
-}
\ No newline at end of file
+}
--- a/widget/windows/touchinjection_sdk80.h
+++ b/widget/windows/touchinjection_sdk80.h
@@ -109,9 +109,9 @@ typedef struct {
 #define TOUCH_FLAGS_CONTACTDOWN \
   (POINTER_FLAG_DOWN | POINTER_FLAG_INRANGE | POINTER_FLAG_INCONTACT)
 
 typedef BOOL(WINAPI* InitializeTouchInjectionPtr)(UINT32 maxCount,
                                                   DWORD dwMode);
 typedef BOOL(WINAPI* InjectTouchInputPtr)(UINT32 count,
                                           CONST POINTER_TOUCH_INFO* info);
 
-#endif  // touchinjection_sdk80_h
\ No newline at end of file
+#endif  // touchinjection_sdk80_h
--- a/xpcom/base/LogCommandLineHandler.cpp
+++ b/xpcom/base/LogCommandLineHandler.cpp
@@ -82,9 +82,9 @@ void LoggingHandleCommandLineArgs(
 
       consumer(env);
 
       env.Truncate();
     }
   }
 }
 
-}  // namespace mozilla
\ No newline at end of file
+}  // namespace mozilla
--- a/xpcom/base/ShutdownPhase.h
+++ b/xpcom/base/ShutdownPhase.h
@@ -20,9 +20,9 @@ enum class ShutdownPhase {
   ShutdownPostLastCycleCollection,
   ShutdownPhase_Length,  // never pass this value
   First = WillShutdown,  // for iteration
   Last = ShutdownFinal
 };
 
 }  // namespace mozilla
 
-#endif  // ShutdownPhase_h
\ No newline at end of file
+#endif  // ShutdownPhase_h
--- a/xpcom/string/nsTSubstringTuple.cpp
+++ b/xpcom/string/nsTSubstringTuple.cpp
@@ -84,9 +84,9 @@ auto nsTSubstringTuple<T>::IsDependentOn
 
   const auto checkedLen =
       mozilla::CheckedInt<size_type>{leftLen} + mFragB->Length();
   MOZ_RELEASE_ASSERT(checkedLen.isValid(), "Substring tuple length is invalid");
   return {leftDependentOn, checkedLen.value()};
 }
 
 template class nsTSubstringTuple<char>;
-template class nsTSubstringTuple<char16_t>;
\ No newline at end of file
+template class nsTSubstringTuple<char16_t>;