Backed out changeset 5c50775a9771 (bug 1539154) for failures in browser_telemetry_complete_stageFailure.js
authorNoemi Erli <nerli@mozilla.com>
Fri, 19 Apr 2019 09:37:10 +0300
changeset 470178 0160424142d14988f7b30595e03f156c31278a42
parent 470177 7854ee8867a80bf3204777205683deb0551c006e
child 470179 c06f27cbfe40d9f05272813d63680b8e73b1e370
child 470180 723b79068fb090492592eb6552a6d64225f2d30d
push id112843
push useraiakab@mozilla.com
push dateFri, 19 Apr 2019 09:50:22 +0000
treeherdermozilla-inbound@c06f27cbfe40 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1539154
milestone68.0a1
backs out5c50775a9771c31446f43ae444a0f612a3a571e7
first release with
nightly linux32
0160424142d1 / 68.0a1 / 20190419094745 / files
nightly linux64
0160424142d1 / 68.0a1 / 20190419094745 / files
nightly mac
0160424142d1 / 68.0a1 / 20190419094745 / files
nightly win32
0160424142d1 / 68.0a1 / 20190419094745 / files
nightly win64
0160424142d1 / 68.0a1 / 20190419094745 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 5c50775a9771 (bug 1539154) for failures in browser_telemetry_complete_stageFailure.js
toolkit/components/telemetry/Scalars.yaml
toolkit/mozapps/update/UpdateService.jsm
toolkit/mozapps/update/UpdateTelemetry.jsm
toolkit/mozapps/update/tests/browser/browser.ini
toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloadAutoFailures.js
toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloadAutoFailures_bgWin.js
toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloaded_staged.js
toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_completeBadSize.js
toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_partialBadSize.js
toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_partialBadSize_completeBadSize.js
toolkit/mozapps/update/tests/browser/browser_doorhanger_sp_patch_partialApplyFailure_completeBadSize.js
toolkit/mozapps/update/tests/browser/browser_telemetry_completeBadSize.js
toolkit/mozapps/update/tests/browser/browser_telemetry_complete_applied.js
toolkit/mozapps/update/tests/browser/browser_telemetry_complete_applyFailure.js
toolkit/mozapps/update/tests/browser/browser_telemetry_complete_stageFailure.js
toolkit/mozapps/update/tests/browser/browser_telemetry_complete_staged_applied.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partialBadSize_completeBadSize.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partialBadSize_complete_staged_applied.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applied.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_applied.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_applyFailure.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_stageFailure.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_staged_applied.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partial_stageFailure_complete_stageFailure.js
toolkit/mozapps/update/tests/browser/browser_telemetry_partial_staged_applied.js
toolkit/mozapps/update/tests/browser/head.js
toolkit/mozapps/update/tests/data/shared.js
--- a/toolkit/components/telemetry/Scalars.yaml
+++ b/toolkit/components/telemetry/Scalars.yaml
@@ -2687,782 +2687,16 @@ update:
       - application-update-telemetry-alerts@mozilla.com
       - rstrong@mozilla.com
     release_channel_collection: opt-out
     record_in_processes:
       - main
     operating_systems:
       - windows
 
-update.startup:
-  from_app_version:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the previous application version that the update was applied to
-      when the update makes it to the last phase where the application has
-      exited and started.
-    expires: "72"
-    kind: string
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - 'main'
-
-  mar_partial_size_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes of a partial update MAR file when
-      the update makes it to the last phase where the application has exited and
-      started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  mar_complete_size_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes of a complete update MAR file when
-      the update makes it to the last phase where the application has exited and
-      started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-update.startup.intervals:
-  check:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the check phase of the update process
-      when an update makes it to the last phase where the application has exited
-      and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  download_bits_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the BITS downloader for a partial update MAR file when the
-      update makes it to the last phase where the application has exited and
-      and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  download_bits_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the BITS downloader for a complete update MAR file when the
-      update makes it to the last phase where the application has exited and
-      started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  download_internal_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the internal application downloader for a partial update MAR
-      file when the update makes it to the last phase where the application has
-      exited and and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  download_internal_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the internal application downloader for a complete update
-      MAR file when the update makes it to the last phase where the application
-      has exited and and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  stage_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the stage phase of the update process
-      for a partial update MAR file when the update makes it to the last phase
-      where the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  stage_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the stage phase of the update process
-      for a complete update MAR file when the update makes it to the last phase
-      where the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  apply_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the apply phase of the update process
-      for a partial update MAR file when the update makes it to the last phase
-      where the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  apply_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the apply phase of the update process
-      for a complete update MAR file when the update makes it to the last phase
-      where the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-update.startup.downloads:
-  bits_partial_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded using the BITS downloader for
-      a partial update MAR file when the update makes it to the last phase where
-      the application has exited and started. This value can be different than
-      the size of the update MAR file because the value is only monitored
-      during the initial download while the application is running and not if
-      the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  bits_partial_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the BITS downloader for a
-      partial update MAR file when the update makes it to the last phase where
-      the application has exited and started. This value can be used with the
-      value of update.startup.downloads.bits_partial_bytes to estimate the bytes
-      per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  bits_complete_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded using the BITS downloader for
-      a complete update MAR file when the update makes it to the last phase
-      where the application has exited and started. This value can be different
-      than the size of the update MAR file because the value is only monitored
-      during the initial download while the application is running and not if
-      the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  bits_complete_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the BITS downloader for a
-      complete update MAR file when the update makes it to the last phase where
-      the application has exited and started. This value can be used with the
-      value of update.startup.downloads.bits_complete_bytes to estimate the
-      bytes per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  internal_partial_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded using the internal application
-      downloader for a partial update MAR file when the update makes it to the
-      last phase where the application has exited and started. This value can be
-      different than the size of the update MAR file because the value is only
-      monitored during the initial download while the application is running and
-      not if the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  internal_partial_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the internal application
-      downloader for a partial update MAR file when the update makes it to the
-      last phase where the application has exited and started. This value can be
-      used with the value of update.startup.downloads.internal_partial_bytes to
-      estimate the bytes per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  internal_complete_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded by the internal
-      application downloader for a complete update MAR file when an update makes
-      it to the last phase where the application has exited and started. This
-      value can be different than the size of the update MAR file because the
-      value is only monitored during the initial download while the
-      application is running and not if the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  internal_complete_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the internal application
-      downloader for a complete update MAR file when the update makes it to the
-      last phase where the application has exited and started. This value can be
-      used with the value of update.startup.downloads.internal_complete_bytes to
-      estimate the bytes per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-update.session:
-  from_app_version:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the previous application version that the update was applied to
-      when the update has finished due to a failure before the application has
-      exited and started.
-    expires: "72"
-    kind: string
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - 'main'
-
-  mar_partial_size_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes of a partial update MAR file when
-      the update has finished due to a failure before the application has exited
-      and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  mar_complete_size_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes of a complete update MAR file when
-      the update has finished due to a failure before the application has exited
-      and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-update.session.intervals:
-  check:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the check phase of the update process
-      when an update has finished due to a failure before the application has
-      exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  download_bits_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the BITS downloader for a partial update MAR file when the
-      update has finished due to a failure before the application has exited
-      and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  download_bits_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the BITS downloader for a complete update MAR file when the
-      update has finished due to a failure before the application has exited and
-      started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  download_internal_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the internal application downloader for a partial update MAR
-      file when the update has finished due to a failure before the application
-      has exited and and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  download_internal_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the download phase of the update
-      process using the internal application downloader for a complete update
-      MAR file when the update has finished due to a failure before the
-      application has exited and and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  stage_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the stage phase of the update process
-      for a partial update MAR file when the update has finished due to a
-      failure before the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  stage_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the stage phase of the update process
-      for a complete update MAR file when the update has finished due to a
-      failure before the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  apply_partial:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the apply phase of the update process
-      for a partial update MAR file when the update has finished due to a
-      failure before the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  apply_complete:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the interval in seconds of the apply phase of the update process
-      for a complete update MAR file when the update has finished due to a
-      failure before the application has exited and started.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-update.session.downloads:
-  bits_partial_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded using the BITS downloader for
-      a partial update MAR file when the update has finished due to a failure
-      before the application has exited and started. This value can be
-      different than the size of the update MAR file because the value is only
-      monitored during the initial download while the application is running and
-      not if the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  bits_partial_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the BITS downloader for a
-      partial update MAR file when the update has finished due to a failure
-      before the application has exited and started. This value can be used with
-      the value of update.session.downloads.bits_partial_bytes to estimate the
-      bytes per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  bits_complete_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded using the BITS downloader for
-      a complete update MAR file when the update has finished due to a failure
-      before the application has exited and started. This value can be different
-      than the size of the update MAR file because the value is only monitored
-      during the initial download while the application is running and not if
-      the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  bits_complete_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the BITS downloader for a
-      complete update MAR file when the update has finished due to a failure
-      before the application has exited and started. This value can be used with
-      the value of update.session.downloads.bits_complete_bytes to estimate the
-      bytes per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-    operating_systems:
-      - "windows"
-
-  internal_partial_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded using the internal
-      application downloader for a partial update MAR file when the update has
-      finished due to a failure before the application has exited and started.
-      This value can be different than the size of the update MAR file because
-      the value is only monitored during the initial download while the
-      application is running and not if the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  internal_partial_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the internal application
-      downloader for a partial update MAR file when the update has finished due
-      to a failure before the application has exited and started. This value can
-      be used with the value of update.session.downloads.internal_partial_bytes
-      to estimate the bytes per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  internal_complete_bytes:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of bytes downloaded by the internal
-      application downloader for a complete update MAR file when an update has
-      finished due to a failure before the application has exited and started.
-      This value can be different than the size of the update MAR file because
-      the value is only monitored during the initial download while the
-      application is running and not if the download is resumed.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
-  internal_complete_seconds:
-    bug_numbers:
-      - 1539154
-    description: >
-      Records the total number of seconds spent downloading during the initial
-      download without exiting the application using the internal application
-      downloader for a complete update MAR file when the update has finished due
-      to a failure before the application has exited and started. This value can
-      be used with the value of update.session.downloads.internal_complete_bytes
-      to estimate the bytes per second for the download.
-    expires: "72"
-    kind: uint
-    keyed: false
-    notification_emails:
-      - application-update-telemetry-alerts@mozilla.com
-      - rstrong@mozilla.com
-    release_channel_collection: opt-out
-    record_in_processes:
-      - main
-
 # The following section contains search counters.
 browser.search:
   with_ads:
     bug_numbers:
       - 1495548
       - 1505411
     description: >
       Records counts of SERP pages with adverts displayed. The key format is ‘<engine-name>’.
--- a/toolkit/mozapps/update/UpdateService.jsm
+++ b/toolkit/mozapps/update/UpdateService.jsm
@@ -228,18 +228,16 @@ var gUpdateMutexHandle = null;
 var gUpdateDirPermissionFixAttempted = false;
 // This is used for serializing writes to the update log file
 var gLogfileWritePromise;
 // This value will be set to true if it appears that BITS is being used by
 // another user to download updates. We don't really want two users using BITS
 // at once. Computers with many users (ex: a school computer), should not end
 // up with dozens of BITS jobs.
 var gBITSInUseByAnotherUser = false;
-// The start time in milliseconds of the update check.
-var gCheckStartMs;
 
 XPCOMUtils.defineLazyGetter(this, "gLogEnabled", function aus_gLogEnabled() {
   return Services.prefs.getBoolPref(PREF_APP_UPDATE_LOG, false) ||
          Services.prefs.getBoolPref(PREF_APP_UPDATE_LOG_FILE, false);
 });
 
 XPCOMUtils.defineLazyGetter(this, "gLogfileEnabled",
                             function aus_gLogfileEnabled() {
@@ -1930,26 +1928,18 @@ UpdateService.prototype = {
         }
 
         // When downloading an update with nsIIncrementalDownload the download
         // is stopped when the quit-application observer notification is
         // received and networking hasn't started to shutdown. The download will
         // be resumed the next time the application starts. Downloads using
         // Windows BITS are not stopped since they don't require Firefox to be
         // running to perform the download.
-        if (this._downloader) {
-          if (!this._downloader.usingBits) {
-            this.stopDownload();
-          } else {
-            // The BITS downloader isn't stopped on exit so the
-            // active-update.xml needs to be saved for the values sent to
-            // telemetry to be saved to disk.
-            Cc["@mozilla.org/updates/update-manager;1"].
-              getService(Ci.nsIUpdateManager).saveUpdates();
-          }
+        if (this._downloader && !this._downloader.usingBits) {
+          this.stopDownload();
         }
         // Prevent leaking the downloader (bug 454964)
         this._downloader = null;
         // In case an update check is in progress.
         Cc["@mozilla.org/updates/update-checker;1"].
           createInstance(Ci.nsIUpdateChecker).stopCurrentCheck();
 
         if (gLogfileWritePromise) {
@@ -2132,20 +2122,16 @@ UpdateService.prototype = {
     }
 
     let parts = status.split(":");
     update.state = parts[0];
     if (update.state == STATE_FAILED && parts[1]) {
       update.errorCode = parseInt(parts[1]);
     }
 
-    if (update.state == STATE_SUCCEEDED || update.patchCount == 1 ||
-        (update.selectedPatch && update.selectedPatch.type == "complete")) {
-      AUSTLMY.pingUpdatePhases(update, true);
-    }
 
     if (status != STATE_SUCCEEDED) {
       // Rotate the update logs so the update log isn't removed. By passing
       // false the patch directory won't be removed.
       cleanUpUpdatesDir(false);
     }
 
     if (status == STATE_SUCCEEDED) {
@@ -3184,20 +3170,16 @@ UpdateManager.prototype = {
   /**
    * See nsIUpdateService.idl
    */
   refreshUpdateStatus: function UM_refreshUpdateStatus() {
     var update = this._activeUpdate;
     if (!update) {
       return;
     }
-
-    let patch = update.selectedPatch.QueryInterface(Ci.nsIWritablePropertyBag);
-    patch.setProperty("stageFinished", Math.ceil(Date.now() / 1000));
-
     var status = readStatusFile(getUpdatesDir());
     pingStateAndStatusCodes(update, false, status);
     var parts = status.split(":");
     update.state = parts[0];
     if (update.state == STATE_FAILED && parts[1]) {
       update.errorCode = parseInt(parts[1]);
     }
 
@@ -3213,20 +3195,16 @@ UpdateManager.prototype = {
 
       update.QueryInterface(Ci.nsIWritablePropertyBag);
       update.setProperty("stagingFailed", "true");
     }
     if (update.state == STATE_APPLIED && shouldUseService()) {
       writeStatusFile(getUpdatesDir(), update.state = STATE_APPLIED_SERVICE);
     }
 
-    if (update.state == STATE_FAILED) {
-      AUSTLMY.pingUpdatePhases(update, false);
-    }
-
     // Now that the active update's properties have been updated write the
     // active-update.xml to disk. Since there have been no changes to the update
     // history the updates.xml will not be written to disk.
     this.saveUpdates();
 
     // Send an observer notification which the app update doorhanger uses to
     // display a restart notification
     LOG("UpdateManager:refreshUpdateStatus - Notifying observers that " +
@@ -3240,17 +3218,16 @@ UpdateManager.prototype = {
       return;
     }
 
     if (update.state == STATE_APPLIED ||
         update.state == STATE_APPLIED_SERVICE ||
         update.state == STATE_PENDING ||
         update.state == STATE_PENDING_SERVICE ||
         update.state == STATE_PENDING_ELEVATE) {
-      patch.setProperty("applyStart", Math.floor(Date.now() / 1000));
       // Notify the user that an update has been staged and is ready for
       // installation (i.e. that they should restart the application).
       let prompter = Cc["@mozilla.org/updates/update-prompt;1"].
                      createInstance(Ci.nsIUpdatePrompt);
       prompter.showUpdateDownloaded(update, true);
     }
   },
 
@@ -3396,17 +3373,16 @@ Checker.prototype = {
    */
   checkForUpdates: function UC_checkForUpdates(listener, force) {
     LOG("Checker: checkForUpdates, force: " + force);
     gUpdateFileWriteInfo = {phase: "check", failure: false};
     if (!listener) {
       throw Cr.NS_ERROR_NULL_POINTER;
     }
 
-    gCheckStartMs = Date.now();
     let UpdateServiceInstance = UpdateServiceFactory.createInstance();
     // |force| can override |canCheckForUpdates| since |force| indicates a
     // manual update check. But nothing should override enterprise policies.
     if (UpdateServiceInstance.disabledByPolicy) {
       LOG("Checker: checkForUpdates, disabled by policy");
       return;
     }
     if (!UpdateServiceInstance.canCheckForUpdates && !force) {
@@ -3670,27 +3646,16 @@ Downloader.prototype = {
    * observer registers itself. Without this variable, there is no way of
    * knowing whether the download was started as Active or Idle and, therefore,
    * we don't know if we need to start Active mode when _pendingRequest
    * resolves.
    */
   _bitsActiveNotifications: false,
 
   /**
-   * The start time of the first download attempt in milliseconds for telemetry.
-   */
-  _startDownloadMs: null,
-
-  /**
-   * The name of the downloader being used to download the update. This is used
-   * when setting property names on the update patch for telemetry.
-   */
-  _downloaderName: "bits",
-
-  /**
    * Cancels the active download.
    *
    * For a BITS download, this will cancel and remove the download job. For
    * an nsIIncrementalDownload, this will stop the download, but leaves the
    * data around to allow the transfer to be resumed later.
    */
   cancel: async function Downloader_cancel(cancelError) {
     LOG("Downloader: cancel");
@@ -3908,38 +3873,23 @@ Downloader.prototype = {
     // This function may return null, which indicates that there are no patches
     // to download.
     this._patch = this._selectPatch(update, updateDir);
     if (!this._patch) {
       LOG("Downloader:downloadUpdate - no patch to download");
       AUSTLMY.pingDownloadCode(undefined, AUSTLMY.DWNLD_ERR_NO_UPDATE_PATCH);
       return readStatusFile(updateDir);
     }
-    // QI the update and the patch to nsIWritablePropertyBag so it isn't
-    // necessary later in the download code.
-    this._update.QueryInterface(Ci.nsIWritablePropertyBag);
-    if (gCheckStartMs && !this._update.getProperty("checkInterval")) {
-      let interval = Math.max(Math.ceil((Date.now() - gCheckStartMs) / 1000), 1);
-      this._update.setProperty("checkInterval", interval);
-    }
     // this._patch implements nsIWritablePropertyBag. Expose that interface
     // immediately after a patch is assigned so that this._patch.getProperty
     // and this._patch.setProperty can always safely be called.
     this._patch.QueryInterface(Ci.nsIWritablePropertyBag);
     this.isCompleteUpdate = this._patch.type == "complete";
 
-    let canUseBits = this._canUseBits(this._patch);
-    if (!canUseBits) {
-      this._downloaderName = "internal";
-    }
-    if (!this._patch.getProperty(this._downloaderName + "DownloadStart")) {
-      this._patch.setProperty(this._downloaderName + "DownloadStart", Math.floor(Date.now() / 1000));
-    }
-
-    if (!canUseBits) {
+    if (!this._canUseBits(this._patch)) {
       let patchFile = getUpdatesDir().clone();
       patchFile.append(FILE_UPDATE_MAR);
 
       // The interval is 0 since there is no need to throttle downloads.
       let interval = 0;
 
       LOG("Downloader:downloadUpdate - Starting nsIIncrementalDownload with " +
           "url: " + this._patch.URL + ", path: " + patchFile.path +
@@ -4153,27 +4103,16 @@ Downloader.prototype = {
           ", final URI spec: " + request.finalURI.spec);
       // Set finalURL in onStartRequest if it is different.
       if (this._patch.finalURL != request.finalURI.spec) {
         this._patch.finalURL = request.finalURI.spec;
         Cc["@mozilla.org/updates/update-manager;1"].
           getService(Ci.nsIUpdateManager).saveUpdates();
       }
     }
-    // Only record the download bytes per second when there isn't already a
-    // value for the bytes per second so downloads that are already in progess
-    // don't have their records overwritten. When the Update Agent is
-    // implemented this should be reworked so that telemetry receives the bytes
-    // and seconds it took to complete for the entire update download instead of
-    // just the sample that is currently recorded. Note: this._patch has already
-    // been QI'd to nsIWritablePropertyBag.
-    if (!this._patch.getProperty("internalBytes") &&
-        !this._patch.getProperty("bitsBytes")) {
-      this._startDownloadMs = Date.now();
-    }
 
     // Make shallow copy in case listeners remove themselves when called.
     let listeners = this._listeners.concat();
     let listenerCount = listeners.length;
     for (let i = 0; i < listenerCount; ++i) {
       listeners[i].onStartRequest(request);
     }
   },
@@ -4187,21 +4126,16 @@ Downloader.prototype = {
    * @param   progress
    *          The current number of bytes transferred
    * @param   maxProgress
    *          The total number of bytes that must be transferred
    */
   onProgress: function Downloader_onProgress(request, context, progress,
                                              maxProgress) {
     LOG("Downloader:onProgress - progress: " + progress + "/" + maxProgress);
-    if (this._startDownloadMs) {
-      let seconds = Math.round((Date.now() - this._startDownloadMs) / 1000);
-      this._patch.setProperty(this._downloaderName + "Seconds", seconds);
-      this._patch.setProperty(this._downloaderName + "Bytes", progress);
-    }
 
     if (progress > this._patch.size) {
       LOG("Downloader:onProgress - progress: " + progress +
           " is higher than patch size: " + this._patch.size);
       AUSTLMY.pingDownloadCode(this.isCompleteUpdate,
                                AUSTLMY.DWNLD_ERR_PATCH_SIZE_LARGER);
       this.cancel(Cr.NS_ERROR_UNEXPECTED);
       return;
@@ -4314,18 +4248,16 @@ Downloader.prototype = {
                                             DEFAULT_SOCKET_MAX_ERRORS);
     // Prevent the preference from setting a value greater than 20.
     maxFail = Math.min(maxFail, 20);
     let permissionFixingInProgress = false;
     LOG("Downloader:onStopRequest - status: " + status + ", " +
         "current fail: " + this.updateService._consecutiveSocketErrors + ", " +
         "max fail: " + maxFail + ", " +
         "retryTimeout: " + retryTimeout);
-    this._patch.setProperty(this._downloaderName + "DownloadFinished",
-                            Math.floor(Date.now() / 1000));
     if (Components.isSuccessCode(status)) {
       if (this._verifyDownload()) {
         if (shouldUseService()) {
           state = STATE_PENDING_SERVICE;
         } else if (getElevationRequired()) {
           state = STATE_PENDING_ELEVATE;
         } else {
           state = STATE_PENDING;
@@ -4519,17 +4451,16 @@ Downloader.prototype = {
 
       if (allFailed && !permissionFixingInProgress) {
         if (Services.prefs.getBoolPref(PREF_APP_UPDATE_DOORHANGER, false)) {
           let downloadAttempts = Services.prefs.getIntPref(PREF_APP_UPDATE_DOWNLOAD_ATTEMPTS, 0);
           downloadAttempts++;
           Services.prefs.setIntPref(PREF_APP_UPDATE_DOWNLOAD_ATTEMPTS, downloadAttempts);
           let maxAttempts = Math.min(Services.prefs.getIntPref(PREF_APP_UPDATE_DOWNLOAD_MAXATTEMPTS, 2), 10);
 
-          AUSTLMY.pingUpdatePhases(this._update, false);
           if (downloadAttempts > maxAttempts) {
             LOG("Downloader:onStopRequest - notifying observers of error. " +
                 "topic: update-error, status: download-attempts-exceeded, " +
                 "downloadAttempts: " + downloadAttempts + " " +
                 "maxAttempts: " + maxAttempts);
             Services.obs.notifyObservers(this._update, "update-error", "download-attempts-exceeded");
           } else {
             this._update.selectedPatch.selected = false;
@@ -4560,32 +4491,29 @@ Downloader.prototype = {
     }
 
     if (state == STATE_PENDING || state == STATE_PENDING_SERVICE ||
         state == STATE_PENDING_ELEVATE) {
       if (getCanStageUpdates()) {
         LOG("Downloader:onStopRequest - attempting to stage update: " +
             this._update.name);
         gUpdateFileWriteInfo = {phase: "stage", failure: false};
-        this._patch.setProperty("stageStart", Math.floor(Date.now() / 1000));
         // Stage the update
         try {
           Cc["@mozilla.org/updates/update-processor;1"].
             createInstance(Ci.nsIUpdateProcessor).processUpdate();
         } catch (e) {
           // Fail gracefully in case the application does not support the update
           // processor service.
           LOG("Downloader:onStopRequest - failed to stage update. Exception: " +
               e);
           if (this.background) {
             shouldShowPrompt = true;
           }
         }
-      } else {
-        this._patch.setProperty("applyStart", Math.floor(Date.now() / 1000));
       }
     }
 
     // Do this after *everything* else, since it will likely cause the app
     // to shut down.
     if (shouldShowPrompt) {
       // Notify the user that an update has been downloaded and is ready for
       // installation (i.e. that they should restart the application). We do
--- a/toolkit/mozapps/update/UpdateTelemetry.jsm
+++ b/toolkit/mozapps/update/UpdateTelemetry.jsm
@@ -8,24 +8,16 @@ var EXPORTED_SYMBOLS = [
   "AUSTLMY",
 ];
 
 const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
 const {BitsError, BitsUnknownError} =
   ChromeUtils.import("resource://gre/modules/Bits.jsm");
 ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 
-// It is possible for the update.session telemetry to be set more than once
-// which must be prevented since they are scalars and setting them more than
-// once could lead to values set in the first ping not being present in the
-// next ping which would make the values incomprehensible in relation to the
-// other values. This isn't needed for update.startup since this will only be
-// set once during startup.
-var gUpdatePhasesSetForSession = false;
-
 var AUSTLMY = {
   // Telemetry for the application update background update check occurs when
   // the background update timer fires after the update interval which is
   // determined by the app.update.interval preference and its telemetry
   // histogram IDs have the suffix '_NOTIFY'.
   // Telemetry for the externally initiated background update check occurs when
   // a call is made to |checkForBackgroundUpdates| which is typically initiated
   // by an application when it has determined that the application should have
@@ -436,121 +428,16 @@ var AUSTLMY = {
             Cu.reportError(e);
           }
         }
       }
     }
   },
 
   /**
-   * Submit the update phase telemetry. These are scalars and must only be
-   * submitted once per sesssion. The update.startup is only submitted once
-   * once per session due to it only being submitted during startup and only the
-   * first call to pingUpdatePhases for update.session will be submitted.
-   *
-   * @param  aUpdate
-   *         The update object which contains the values to submit to telemetry.
-   * @param  aIsStartup
-   *         If true the telemetry will be set under update.startup and if false
-   *         the telemetry will be set under update.session. When false
-   *         subsequent calls will return early and not submit telemetry.
-   */
-  pingUpdatePhases: function UT_pingUpdatePhases(aUpdate, aIsStartup) {
-    if (!aIsStartup && !Cu.isInAutomation) {
-      if (gUpdatePhasesSetForSession) {
-        return;
-      }
-      gUpdatePhasesSetForSession = true;
-    }
-    let basePrefix = aIsStartup ? "update.startup." : "update.session.";
-    // None of the calls to getProperty should fail.
-    try {
-      let update = aUpdate.QueryInterface(Ci.nsIWritablePropertyBag);
-      let scalarSet = Services.telemetry.scalarSet;
-
-      // Though it is possible that the previous app version that was updated
-      // from could change the record is for the app version that initiated the
-      // update.
-      scalarSet(basePrefix + "from_app_version", aUpdate.previousAppVersion);
-
-      // The check interval only happens once even if the partial patch fails
-      // to apply on restart and the complete patch is downloaded.
-      scalarSet(basePrefix + "intervals.check",
-                update.getProperty("checkInterval"));
-
-      for (let i = 0; i < aUpdate.patchCount; ++i) {
-        let patch =
-          aUpdate.getPatchAt(i).QueryInterface(Ci.nsIWritablePropertyBag);
-        let type = patch.type;
-
-        scalarSet(basePrefix + "mar_" + type + "_size_bytes", patch.size);
-
-        let prefix = basePrefix + "intervals.";
-        let internalDownloadStart = patch.getProperty("internalDownloadStart");
-        let internalDownloadFinished =
-          patch.getProperty("internalDownloadFinished");
-        if (internalDownloadStart !== null && internalDownloadFinished !== null) {
-          scalarSet(prefix + "download_internal_" + type,
-                    Math.max((internalDownloadFinished - internalDownloadStart), 1));
-        }
-
-        let bitsDownloadStart = patch.getProperty("bitsDownloadStart");
-        let bitsDownloadFinished = patch.getProperty("bitsDownloadFinished");
-        if (bitsDownloadStart !== null && bitsDownloadFinished !== null) {
-          scalarSet(prefix + "download_bits_" + type,
-                    Math.max((bitsDownloadFinished - bitsDownloadStart), 1));
-        }
-
-
-        let stageStart = patch.getProperty("stageStart");
-        let stageFinished = patch.getProperty("stageFinished");
-        if (stageStart !== null && stageFinished !== null) {
-          scalarSet(prefix + "stage_" + type,
-                    Math.max((stageFinished - stageStart), 1));
-        }
-
-        // Both the partial and the complete patch are recorded for the apply
-        // interval because it is possible for a partial patch to fail when it
-        // is applied during a restart and then to try the complete patch.
-        let applyStart = patch.getProperty("applyStart");
-        if (applyStart !== null) {
-          let applyFinished = Date.now() / 1000;
-          scalarSet(prefix + "apply_" + type,
-                    Math.max((applyFinished - applyStart), 1));
-        }
-
-        prefix = basePrefix + "downloads.";
-        let internalBytes = patch.getProperty("internalBytes");
-        if (internalBytes !== null) {
-          scalarSet(prefix + "internal_" + type + "_bytes",
-                    Math.max(internalBytes, 1));
-        }
-        let internalSeconds = patch.getProperty("internalSeconds");
-        if (internalSeconds !== null) {
-          scalarSet(prefix + "internal_" + type + "_seconds",
-                    Math.max(internalSeconds, 1));
-        }
-
-        let bitsBytes = patch.getProperty("bitsBytes");
-        if (bitsBytes !== null) {
-          scalarSet(prefix + "bits_" + type + "_bytes",
-                    Math.max(bitsBytes, 1));
-        }
-        let bitsSeconds = patch.getProperty("bitsSeconds");
-        if (bitsSeconds !== null) {
-          scalarSet(prefix + "bits_" + type + "_seconds",
-                    Math.max(bitsSeconds, 1));
-        }
-      }
-    } catch (e) {
-      Cu.reportError(e);
-    }
-  },
-
-  /**
    * Submit a telemetry ping for the last page displayed by the update wizard.
    *
    * @param  aPageID
    *         The page id for the last page displayed.
    */
   pingWizLastPageCode: function UT_pingWizLastPageCode(aPageID) {
     let pageMap = { invalid: 0,
                     dummy: 1,
--- a/toolkit/mozapps/update/tests/browser/browser.ini
+++ b/toolkit/mozapps/update/tests/browser/browser.ini
@@ -69,25 +69,9 @@ reason = test must be able to prevent fi
 [browser_doorhanger_bc_patch_partialBadSize.js]
 [browser_doorhanger_bc_patch_partialBadSize_complete.js]
 [browser_doorhanger_bc_patch_partialBadSize_completeBadSize.js]
 [browser_doorhanger_sp_patch_completeApplyFailure.js]
 [browser_doorhanger_sp_patch_partialApplyFailure.js]
 [browser_doorhanger_sp_patch_partialApplyFailure_complete.js]
 [browser_doorhanger_sp_patch_partialApplyFailure_complete_staging.js]
 [browser_doorhanger_sp_patch_partialApplyFailure_completeBadSize.js]
-
-# Telemetry Application Update Tests
-[browser_telemetry_completeBadSize.js]
-[browser_telemetry_partialBadSize_completeBadSize.js]
-[browser_telemetry_complete_stageFailure.js]
-[browser_telemetry_partial_stageFailure_complete_stageFailure.js]
-[browser_telemetry_complete_applyFailure.js]
-[browser_telemetry_partial_applyFailure_complete_applyFailure.js]
-[browser_telemetry_partial_applyFailure_complete_stageFailure.js]
-[browser_telemetry_partial_applyFailure_complete_applied.js]
-[browser_telemetry_partial_applyFailure_complete_staged_applied.js]
-[browser_telemetry_partialBadSize_complete_staged_applied.js]
-[browser_telemetry_complete_applied.js]
-[browser_telemetry_partial_applied.js]
-[browser_telemetry_partial_staged_applied.js]
-[browser_telemetry_complete_staged_applied.js]
 [browser_TelemetryUpdatePing.js]
--- a/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloadAutoFailures.js
+++ b/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloadAutoFailures.js
@@ -1,12 +1,13 @@
 add_task(async function testDownloadFailures() {
   const maxBackgroundErrors = 5;
   SpecialPowers.pushPrefEnv({set: [
     [PREF_APP_UPDATE_BACKGROUNDMAXERRORS, maxBackgroundErrors],
+    [PREF_APP_UPDATE_DOWNLOADPROMPT_MAXATTEMPTS, 2],
   ]});
   let updateParams = "badURL=1";
 
   await runUpdateTest(updateParams, 1, [
     {
       // if we fail maxBackgroundErrors download attempts, then we want to
       // first show the user an update available prompt.
       notificationId: "update-available",
--- a/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloadAutoFailures_bgWin.js
+++ b/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloadAutoFailures_bgWin.js
@@ -1,12 +1,13 @@
 add_task(async function testBackgroundWindowFailures() {
   const maxBackgroundErrors = 5;
   SpecialPowers.pushPrefEnv({set: [
     [PREF_APP_UPDATE_BACKGROUNDMAXERRORS, maxBackgroundErrors],
+    [PREF_APP_UPDATE_DOWNLOADPROMPT_MAXATTEMPTS, 2],
   ]});
 
   let updateParams = "badURL=1";
   let extraWindow = await BrowserTestUtils.openNewBrowserWindow();
   await SimpleTest.promiseFocus(extraWindow);
 
   function getBackgroundWindowHandler(destroyWindow) {
     return async function() {
--- a/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloaded_staged.js
+++ b/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_downloaded_staged.js
@@ -1,14 +1,15 @@
 add_task(async function testCompleteAndPartialPatchesWithBadCompleteSize() {
   SpecialPowers.pushPrefEnv({set: [
     [PREF_APP_UPDATE_STAGING_ENABLED, true],
   ]});
 
   let updateParams = "invalidCompleteSize=1&promptWaitTime=0";
+
   await runUpdateTest(updateParams, 1, [
     {
       notificationId: "update-restart",
       button: "secondaryButton",
       cleanup() {
         AppMenuNotifications.removeNotification(/.*/);
       },
     },
--- a/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_completeBadSize.js
+++ b/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_completeBadSize.js
@@ -1,10 +1,15 @@
 add_task(async function testCompletePatchWithBadCompleteSize() {
+  SpecialPowers.pushPrefEnv({set: [
+    [PREF_APP_UPDATE_DOWNLOADPROMPT_MAXATTEMPTS, 2],
+  ]});
+
   let updateParams = "completePatchOnly=1&invalidCompleteSize=1";
+
   await runUpdateTest(updateParams, 1, [
     {
       // if we fail maxBackgroundErrors download attempts, then we want to
       // first show the user an update available prompt.
       notificationId: "update-available",
       button: "button",
     },
     {
--- a/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_partialBadSize.js
+++ b/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_partialBadSize.js
@@ -1,10 +1,14 @@
 add_task(async function testPartialPatchWithBadPartialSize() {
+  SpecialPowers.pushPrefEnv({set: [
+    [PREF_APP_UPDATE_DOWNLOADPROMPT_MAXATTEMPTS, 2],
+  ]});
   let updateParams = "partialPatchOnly=1&invalidPartialSize=1";
+
   await runUpdateTest(updateParams, 1, [
     {
       // if we fail maxBackgroundErrors download attempts, then we want to
       // first show the user an update available prompt.
       notificationId: "update-available",
       button: "button",
     },
     {
--- a/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_partialBadSize_completeBadSize.js
+++ b/toolkit/mozapps/update/tests/browser/browser_doorhanger_bc_patch_partialBadSize_completeBadSize.js
@@ -1,10 +1,14 @@
 add_task(async function testCompleteAndPartialPatchesWithBadSizes() {
+  SpecialPowers.pushPrefEnv({set: [
+    [PREF_APP_UPDATE_DOWNLOADPROMPT_MAXATTEMPTS, 2],
+  ]});
   let updateParams = "invalidPartialSize=1&invalidCompleteSize=1";
+
   await runUpdateTest(updateParams, 1, [
     {
       // if we fail maxBackgroundErrors download attempts, then we want to
       // first show the user an update available prompt.
       notificationId: "update-available",
       button: "button",
     },
     {
--- a/toolkit/mozapps/update/tests/browser/browser_doorhanger_sp_patch_partialApplyFailure_completeBadSize.js
+++ b/toolkit/mozapps/update/tests/browser/browser_doorhanger_sp_patch_partialApplyFailure_completeBadSize.js
@@ -1,16 +1,14 @@
 add_task(async function testPartialPatchApplyFailureWithCompleteValidationFailure() {
   // because of the way we're simulating failure, we have to just pretend we've already
   // retried.
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_DOWNLOAD_MAXATTEMPTS, 0],
-    ],
-  });
+  SpecialPowers.pushPrefEnv({set: [
+    [PREF_APP_UPDATE_DOWNLOADPROMPT_MAXATTEMPTS, 0],
+  ]});
 
   let patchProps = {type: "partial",
                     state: STATE_PENDING};
   let patches = getLocalPatchString(patchProps);
   patchProps = {size: "1234",
                 selected: "false"};
   patches += getLocalPatchString(patchProps);
   let updateProps = {isCompleteUpdate: "false"};
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_completeBadSize.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.session
-// Complete patch only
-// Complete patch download failure
-add_task(async function telemetry_completeBadSize() {
-  let updateParams = "&completePatchOnly=1&invalidCompleteSize=1";
-  await runTelemetryUpdateTest(updateParams, "update-error");
-
-  let expected = getTelemetryUpdatePhaseValues({
-    forSession: true,
-    noPartialPatch: true,
-    completeBadSize: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_complete_applied.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Complete patch only
-// Complete patch download
-// Complete patch applied
-add_task(async function telemetry_complete_applied() {
-  let updateParams = "&completePatchOnly=1";
-  await runTelemetryUpdateTest(updateParams, "update-downloaded");
-
-  writeStatusFile(STATE_SUCCEEDED);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({
-    noPartialPatch: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_complete_applyFailure.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Complete patch only
-// Complete patch download
-// Complete patch apply failure
-add_task(async function telemetry_complete_applyFailure() {
-  let updateParams = "&completePatchOnly=1";
-  await runTelemetryUpdateTest(updateParams, "update-downloaded");
-
-  writeStatusFile(STATE_FAILED_CRC_ERROR);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({
-    noPartialPatch: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_complete_stageFailure.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.session
-// Complete patch only
-// Complete patch download
-// Complete patch stage failure
-add_task(async function telemetry_complete_stageFailure() {
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_STAGING_ENABLED, true],
-    ],
-  });
-
-  let updateParams = "&completePatchOnly=1";
-  await runTelemetryUpdateTest(updateParams, "update-staged", true);
-
-  let expected = getTelemetryUpdatePhaseValues({
-    forSession: true,
-    noPartialPatch: true,
-    noApplyComplete: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_complete_staged_applied.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Complete patch only
-// Complete patch download
-// Complete patch staged
-// Complete patch applied
-add_task(async function telemetry_complete_staged_applied() {
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_STAGING_ENABLED, true],
-    ],
-  });
-
-  let updateParams = "&completePatchOnly=1";
-  await runTelemetryUpdateTest(updateParams, "update-staged");
-
-  writeStatusFile(STATE_SUCCEEDED);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({
-    noPartialPatch: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partialBadSize_completeBadSize.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.session
-// Partial and complete patches
-// Partial patch download failure
-// Complete patch download failure
-add_task(async function telemetry_partialBadSize_completeBadSize() {
-  let updateParams = "&invalidPartialSize=1&invalidCompleteSize=1";
-  await runTelemetryUpdateTest(updateParams, "update-error");
-
-  let expected = getTelemetryUpdatePhaseValues({
-    forSession: true,
-    partialBadSize: true,
-    completeBadSize: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partialBadSize_complete_staged_applied.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Partial and complete patches
-// Partial patch download failure
-// Complete patch download
-// Complete patch staged
-// Complete patch applied
-add_task(async function telemetry_partialBadSize_complete_staged_applied() {
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_STAGING_ENABLED, true],
-    ],
-  });
-
-  let updateParams = "&invalidPartialSize=1";
-  await runTelemetryUpdateTest(updateParams, "update-staged");
-
-  writeStatusFile(STATE_SUCCEEDED);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({
-    partialBadSize: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applied.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Partial and complete patches
-// Partial patch download
-// Partial patch applied
-add_task(async function telemetry_partial_applied() {
-  let updateParams = "";
-  await runTelemetryUpdateTest(updateParams, "update-downloaded");
-
-  writeStatusFile(STATE_SUCCEEDED);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({
-    noInternalComplete: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_applied.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Partial and complete patches
-// Partial patch download
-// Partial patch apply failure
-// Complete patch download
-// Complete patch applied
-add_task(async function telemetry_sp_partialBadSize_complete_staged_applied() {
-  let updateParams = "";
-  await runTelemetryUpdateTest(updateParams, "update-downloaded");
-
-  writeStatusFile(STATE_FAILED_CRC_ERROR);
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-
-  // The download of the complete patch will happen automatically.
-  await waitForEvent("update-downloaded");
-  writeStatusFile(STATE_SUCCEEDED);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({});
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_applyFailure.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Partial and complete patches
-// Partial patch download
-// Partial patch apply failure
-// Complete patch download
-// Complete patch apply failure
-add_task(async function telemetry_partial_applyFailure_complete_applyFailure() {
-  let updateParams = "";
-  await runTelemetryUpdateTest(updateParams, "update-downloaded");
-
-  writeStatusFile(STATE_FAILED_CRC_ERROR);
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-
-  // The download of the complete patch will happen automatically.
-  await waitForEvent("update-downloaded");
-  writeStatusFile(STATE_FAILED_CRC_ERROR);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({});
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_stageFailure.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.session
-// Partial and complete patches
-// Partial patch download
-// Partial patch apply failure
-// Complete patch download
-// Complete patch stage failure
-add_task(async function telemetry_partial_applyFailure_complete_stageFailure() {
-  let updateParams = "";
-  await runTelemetryUpdateTest(updateParams, "update-downloaded");
-
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_STAGING_ENABLED, true],
-    ],
-  });
-  // Now that staging is enabled setup the test updater.
-  await setupTestUpdater();
-  // Remove the update-settings.ini file so staging fails.
-  removeUpdateSettingsIni();
-  // Fail applying the partial.
-  writeStatusFile(STATE_FAILED_CRC_ERROR);
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry wasn't set.
-  checkTelemetryUpdatePhaseEmpty(true);
-
-  // The download and staging of the complete patch will happen automatically.
-  await waitForEvent("update-staged");
-
-  let expected = getTelemetryUpdatePhaseValues({
-    forSession: true,
-    noStagePartial: true,
-    noApplyComplete: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partial_applyFailure_complete_staged_applied.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Partial and complete patches
-// Partial patch download
-// Partial patch apply failure
-// Complete patch download
-// Complete patch staged
-// Complete patch applied
-add_task(async function telemetry_partial_applyFailure_complete_staged_applied() {
-  let updateParams = "";
-  await runTelemetryUpdateTest(updateParams, "update-downloaded");
-
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_STAGING_ENABLED, true],
-    ],
-  });
-  // Now that staging is enabled setup the test updater.
-  await setupTestUpdater();
-  // Fail applying the partial.
-  writeStatusFile(STATE_FAILED_CRC_ERROR);
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-
-  // The download and staging of the complete will happen automatically.
-  await waitForEvent("update-staged");
-  // Succeed applying the complete patch.
-  writeStatusFile(STATE_SUCCEEDED);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({
-    noStagePartial: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partial_stageFailure_complete_stageFailure.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.session
-// Partial and complete patches
-// Partial patch download
-// Partial patch stage failure
-// Complete patch download
-// Complete patch stage failure
-add_task(async function telemetry_partial_stageFailure_complete_stageFailure() {
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_STAGING_ENABLED, true],
-    ],
-  });
-
-  let updateParams = "";
-  await runTelemetryUpdateTest(updateParams, "update-staged", true);
-
-  await waitForEvent("update-staged");
-
-  let expected = getTelemetryUpdatePhaseValues({
-    forSession: true,
-    noApplyPartial: true,
-    noApplyComplete: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  testPostUpdateProcessing();
-  // Verify that update phase startup telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(true);
-});
deleted file mode 100644
--- a/toolkit/mozapps/update/tests/browser/browser_telemetry_partial_staged_applied.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Telemetry test for Application Update phases.
-// Telemetry update.startup
-// Partial and complete patches
-// Partial patch download
-// Partial patch staged
-// Partial patch applied
-add_task(async function telemetry_partial_staged_applied() {
-  await SpecialPowers.pushPrefEnv({
-    set: [
-      [PREF_APP_UPDATE_STAGING_ENABLED, true],
-    ],
-  });
-
-  let updateParams = "";
-  await runTelemetryUpdateTest(updateParams, "update-staged");
-
-  writeStatusFile(STATE_SUCCEEDED);
-  testPostUpdateProcessing();
-
-  let expected = getTelemetryUpdatePhaseValues({
-    noInternalComplete: true,
-  });
-  checkTelemetryUpdatePhases(expected);
-
-  // Verify that update phase session telemetry is empty.
-  checkTelemetryUpdatePhaseEmpty(false);
-});
--- a/toolkit/mozapps/update/tests/browser/head.js
+++ b/toolkit/mozapps/update/tests/browser/head.js
@@ -41,36 +41,31 @@ gDebugTest = true;
 requestLongerTimeout(10);
 
 /**
  * Common tasks to perform for all tests before each one has started.
  */
 add_task(async function setupTestCommon() {
   await SpecialPowers.pushPrefEnv({
     set: [
-      [PREF_APP_UPDATE_DOWNLOAD_ATTEMPTS, 0],
-      [PREF_APP_UPDATE_DOWNLOAD_MAXATTEMPTS, 2],
       [PREF_APP_UPDATE_LOG, gDebugTest],
-      [PREF_APP_UPDATE_SERVICE_ENABLED, false],
     ],
   });
 
   setUpdateTimerPrefs();
   removeUpdateFiles(true);
-  AppMenuNotifications.removeNotification(/.*/);
   // Most app update mochitest-browser-chrome tests expect auto update to be
   // enabled. Those that don't will explicitly change this.
   await setAppUpdateAutoEnabledHelper(true);
 });
 
 /**
  * Common tasks to perform for all tests after each one has finished.
  */
 registerCleanupFunction(async () => {
-  AppMenuNotifications.removeNotification(/.*/);
   gEnv.set("MOZ_TEST_SKIP_UPDATE_STAGE", "");
   gEnv.set("MOZ_TEST_SLOW_SKIP_UPDATE_STAGE", "");
   UpdateListener.reset();
   reloadUpdateManagerData(true);
   // Pass false when the log files are needed for troubleshooting the tests.
   removeUpdateFiles(true);
   // Always try to restore the original updater files. If none of the updater
   // backup files are present then this is just a no-op.
@@ -120,19 +115,18 @@ async function continueFileHandler(leafN
     continueFile = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
     let continuePath = REL_PATH_DATA + leafName;
     let continuePathParts = continuePath.split("/");
     for (let i = 0; i < continuePathParts.length; ++i) {
       continueFile.append(continuePathParts[i]);
     }
   }
   if (continueFile.exists()) {
-    logTestInfo("The continue file should not exist, path: " +
-                continueFile.path);
-    continueFile.remove(false);
+    throw new Error("The continue file should not exist, path: " +
+                    continueFile.path);
   }
   debugDump("Creating continue file, path: " + continueFile.path);
   continueFile.create(Ci.nsIFile.NORMAL_FILE_TYPE, PERMS_FILE);
   // If for whatever reason the continue file hasn't been removed when a test
   // has finished remove it during cleanup so it doesn't affect tests that run
   // after the test that created it.
   registerCleanupFunction(() => {
     if (continueFile.exists()) {
@@ -259,16 +253,17 @@ async function setAppUpdateAutoEnabledHe
  * @return A promise which will resolve once all of the steps have been run
  *         and cleanup has been performed.
  */
 function runUpdateTest(updateParams, checkAttempts, steps) {
   return (async function() {
     gEnv.set("MOZ_TEST_SKIP_UPDATE_STAGE", "1");
     await SpecialPowers.pushPrefEnv({
       set: [
+        [PREF_APP_UPDATE_DOWNLOADPROMPTATTEMPTS, 0],
         [PREF_APP_UPDATE_DISABLEDFORTESTING, false],
         [PREF_APP_UPDATE_IDLETIME, 0],
         [PREF_APP_UPDATE_URL_MANUAL, URL_MANUAL_UPDATE],
       ],
     });
 
     await setupTestUpdater();
 
@@ -305,16 +300,17 @@ function runUpdateTest(updateParams, che
  * @return A promise which will resolve once all of the steps have been run
  *         and cleanup has been performed.
  */
 function runUpdateProcessingTest(updates, steps) {
   return (async function() {
     gEnv.set("MOZ_TEST_SKIP_UPDATE_STAGE", "1");
     await SpecialPowers.pushPrefEnv({
       set: [
+        [PREF_APP_UPDATE_DOWNLOADPROMPTATTEMPTS, 0],
         [PREF_APP_UPDATE_DISABLEDFORTESTING, false],
         [PREF_APP_UPDATE_IDLETIME, 0],
         [PREF_APP_UPDATE_URL_MANUAL, URL_MANUAL_UPDATE],
       ],
     });
 
     await setupTestUpdater();
 
@@ -675,16 +671,17 @@ function runAboutDialogUpdateTest(update
       }
     })();
   }
 
   return (async function() {
     gEnv.set("MOZ_TEST_SLOW_SKIP_UPDATE_STAGE", "1");
     await SpecialPowers.pushPrefEnv({
       set: [
+        [PREF_APP_UPDATE_SERVICE_ENABLED, false],
         [PREF_APP_UPDATE_DISABLEDFORTESTING, false],
         [PREF_APP_UPDATE_URL_MANUAL, detailsURL],
       ],
     });
 
     await setupTestUpdater();
 
     let updateURL = URL_HTTP_UPDATE_SJS + "?detailsURL=" + detailsURL +
@@ -803,16 +800,17 @@ function runAboutPrefsUpdateTest(updateP
       });
     })();
   }
 
   return (async function() {
     gEnv.set("MOZ_TEST_SLOW_SKIP_UPDATE_STAGE", "1");
     await SpecialPowers.pushPrefEnv({
       set: [
+        [PREF_APP_UPDATE_SERVICE_ENABLED, false],
         [PREF_APP_UPDATE_DISABLEDFORTESTING, false],
         [PREF_APP_UPDATE_URL_MANUAL, detailsURL],
       ],
     });
 
     await setupTestUpdater();
 
     let updateURL = URL_HTTP_UPDATE_SJS + "?detailsURL=" + detailsURL +
@@ -838,279 +836,8 @@ function runAboutPrefsUpdateTest(updateP
       await BrowserTestUtils.removeTab(tab);
     });
 
     for (let step of steps) {
       await processAboutPrefsStep(step);
     }
   })();
 }
-
-
-/**
- * Removes the modified update-settings.ini file so the updater will fail to
- * stage an update.
- */
-function removeUpdateSettingsIni() {
-  if (Services.prefs.getBoolPref(PREF_APP_UPDATE_STAGING_ENABLED)) {
-    let greDir = getGREDir();
-    let updateSettingsIniBak = greDir.clone();
-    updateSettingsIniBak.append(FILE_UPDATE_SETTINGS_INI_BAK);
-    if (updateSettingsIniBak.exists()) {
-      let updateSettingsIni = greDir.clone();
-      updateSettingsIni.append(FILE_UPDATE_SETTINGS_INI);
-      updateSettingsIni.remove(false);
-    }
-  }
-}
-
-/**
- * Runs a telemetry update test. This will set various common prefs for
- * updating, checks for an update, and waits for the specified observer
- * notification.
- *
- * @param  updateParams
- *         Params which will be sent to app_update.sjs.
- * @param  event
- *         The observer notification to wait for before proceeding.
- * @param  stageFailure (optional)
- *         Whether to force a staging failure by removing the modified
- *         update-settings.ini file.
- * @return A promise which will resolve after the .
- */
-function runTelemetryUpdateTest(updateParams, event, stageFailure = false) {
-  // Some elements append a trailing /. After the chrome tests are removed this
-  // code can be changed so URL_HOST already has a trailing /.
-  let detailsURL = URL_HOST + "/";
-  return (async function() {
-    Services.telemetry.clearScalars();
-    gEnv.set("MOZ_TEST_SLOW_SKIP_UPDATE_STAGE", "1");
-    await SpecialPowers.pushPrefEnv({
-      set: [
-        [PREF_APP_UPDATE_DISABLEDFORTESTING, false],
-      ],
-    });
-
-    await setupTestUpdater();
-
-    if (stageFailure) {
-      removeUpdateSettingsIni();
-    }
-
-    let updateURL = URL_HTTP_UPDATE_SJS + "?detailsURL=" + detailsURL +
-                    updateParams + getVersionParams();
-    setUpdateURL(updateURL);
-    if (Services.prefs.getBoolPref(PREF_APP_UPDATE_STAGING_ENABLED)) {
-      // Since MOZ_TEST_SKIP_UPDATE_STAGE is checked before
-      // MOZ_TEST_SLOW_SKIP_UPDATE_STAGE in updater.cpp this removes the need
-      // for the continue file to continue staging the update.
-      gEnv.set("MOZ_TEST_SKIP_UPDATE_STAGE", "1");
-    }
-    gAUS.checkForBackgroundUpdates();
-    await waitForEvent(event);
-  })();
-}
-
-/**
- * Gets an object with the expected update phase values that can be passed to
- * checkTelemetryUpdatePhases for update phase telemetry tests.
- *
- * @param  overrides
- *         Params which can override the default values.
- * @return An object that can be passed to checkTelemetryUpdatePhases for update
- *         phase telemetry tests.
- */
-function getTelemetryUpdatePhaseValues(overrides) {
-  // Set values that could never be recorded due to values that would prevent
-  // them from occurring. This makes it so callers only have to specify a couple
-  // of values.
-  if (overrides.noPartialPatch) {
-    if (!overrides.noInternalPartial) {
-      overrides.noInternalPartial = true;
-    }
-  }
-
-  if (overrides.noCompletePatch) {
-    if (!overrides.noInternalComplete) {
-      overrides.noInternalComplete = true;
-    }
-  }
-
-  if (overrides.noPartialPatch || overrides.partialBadSize ||
-      overrides.noInternalPartial) {
-    if (!overrides.noStagePartial) {
-      overrides.noStagePartial = true;
-    }
-    if (!overrides.noApplyPartial) {
-      overrides.noApplyPartial = true;
-    }
-  }
-
-  if (overrides.noCompletePatch || overrides.completeBadSize ||
-      overrides.noInternalComplete) {
-    if (!overrides.noStageComplete) {
-      overrides.noStageComplete = true;
-    }
-    if (!overrides.noApplyComplete) {
-      overrides.noApplyComplete = true;
-    }
-  }
-
-  if (!Services.prefs.getBoolPref(PREF_APP_UPDATE_STAGING_ENABLED)) {
-    if (!overrides.noStagePartial) {
-      overrides.noStagePartial = true;
-    }
-    if (!overrides.noStageComplete) {
-      overrides.noStageComplete = true;
-    }
-  }
-
-  let marSize = parseInt(SIZE_SIMPLE_MAR);
-  let partialSize =
-    overrides.partialBadSize ? parseInt(SIZE_SIMPLE_MAR + "1") : marSize;
-  let completeSize =
-    overrides.completeBadSize ? parseInt(SIZE_SIMPLE_MAR + "1") : marSize;
-
-  let partialDownloadBytes = overrides.partialBadSize ? 1 : marSize;
-  let completeDownloadBytes = overrides.completeBadSize ? 1 : marSize;
-
-  let obj = {};
-  obj.basePrefix =
-    overrides.forSession ? "update.session." : "update.startup.";
-  obj.from_app_version = Services.appinfo.version;
-
-  obj.mars = {};
-  obj.mars.mar_partial_size_bytes =
-    overrides.noPartialPatch ? null : partialSize;
-  obj.mars.mar_complete_size_bytes =
-    overrides.noCompletePatch ? null : completeSize;
-
-  obj.intervals = {};
-  obj.intervals.check = 1;
-  obj.intervals.download_bits_partial = null;
-  obj.intervals.download_bits_complete = null;
-  obj.intervals.download_internal_partial =
-    overrides.noInternalPartial ? null : 1;
-  obj.intervals.download_internal_complete =
-    overrides.noInternalComplete ? null : 1;
-  obj.intervals.stage_partial = overrides.noStagePartial ? null : 1;
-  obj.intervals.stage_complete = overrides.noStageComplete ? null : 1;
-  obj.intervals.apply_partial = overrides.noApplyPartial ? null : 1;
-  obj.intervals.apply_complete = overrides.noApplyComplete ? null : 1;
-
-  obj.downloads = {};
-  obj.downloads.bits_partial_ = {};
-  obj.downloads.bits_partial_.bytes = null;
-  obj.downloads.bits_partial_.seconds = null;
-  obj.downloads.bits_complete_ = {};
-  obj.downloads.bits_complete_.bytes = null;
-  obj.downloads.bits_complete_.seconds = null;
-  obj.downloads.internal_partial_ = {};
-  obj.downloads.internal_partial_.bytes =
-    overrides.noInternalPartial ? null : partialDownloadBytes;
-  obj.downloads.internal_partial_.seconds =
-    overrides.noInternalPartial ? null : 1;
-  obj.downloads.internal_complete_ = {};
-  obj.downloads.internal_complete_.bytes =
-    overrides.noInternalComplete ? null : completeDownloadBytes;
-  obj.downloads.internal_complete_.seconds =
-    overrides.noInternalComplete ? null : 1;
-
-  return obj;
-}
-
-/**
- * Checks the telemetry values for app update phases under either update.startup
- * or update.session based on the object passed to this function.
- *
- * @param  expected
- *         An object containing the expected results to compare against the
- *         actual results.
- */
-function checkTelemetryUpdatePhases(expected) {
-  let scalars = TelemetryTestUtils.getProcessScalars("parent");
-  let basePrefix = expected.basePrefix;
-  let namePrefix = basePrefix;
-  {
-    let name = namePrefix + "from_app_version";
-    if (expected.from_app_version) {
-      Assert.ok(!!scalars[name],
-                "The " + name + " value should exist.");
-      Assert.equal(scalars[name],
-                   expected.from_app_version,
-                   "The " + name + " value should equal the expected value.");
-    } else {
-      Assert.ok(!scalars[name],
-                "The " + name + " value should not exist.");
-    }
-  }
-
-  for (let [nameSuffix, value] of Object.entries(expected.mars)) {
-    let name = namePrefix + nameSuffix;
-    if (value) {
-      Assert.ok(!!scalars[name],
-                "The " + name + " value should exist.");
-      Assert.equal(scalars[name], value,
-                   "The " + name + " value should equal the expected value.");
-    } else {
-      Assert.ok(!scalars[name],
-                "The " + name + " value should not exist.");
-    }
-  }
-
-  namePrefix = basePrefix + "intervals.";
-  for (let [suffix, value] of Object.entries(expected.intervals)) {
-    let name = namePrefix + suffix;
-    if (value) {
-      Assert.ok(!!scalars[name],
-                "The " + name + " value should exist.");
-      Assert.greaterOrEqual(scalars[name], value,
-                           "The " + name + " value should be equal to or " +
-                           "greater than " + value + ".");
-    } else {
-      Assert.ok(!scalars[name],
-                "The " + name + " value should not exist.");
-    }
-  }
-
-  namePrefix = basePrefix + "downloads.";
-  for (let [nameMid, values] of Object.entries(expected.downloads)) {
-    let name = namePrefix + nameMid + "bytes";
-    if (values.bytes) {
-      Assert.ok(!!scalars[name],
-                "The " + name + " value should exist.");
-      Assert.greaterOrEqual(scalars[name], values.bytes,
-                           "The " + name + " value should be equal to or " +
-                           "greater than " + values.bytes + ".");
-    } else {
-      Assert.ok(!scalars[name],
-                "The " + name + " value should not exist.");
-    }
-
-    name = namePrefix + nameMid + "seconds";
-    if (values.seconds) {
-      Assert.ok(!!scalars[name],
-              "The " + name + " value should exist.");
-      Assert.greaterOrEqual(scalars[name], values.seconds,
-                           "The " + name + " value should be equal to or " +
-                           "greater than " + values.seconds + ".");
-    } else {
-      Assert.ok(!scalars[name],
-              "The " + name + " value should not exist.");
-    }
-  }
-}
-
-/**
- * Checks whether telemetry for update.startup or update.session is set by
- * checking if there is a value for the from_app_version scalar.
- *
- * @param  isStartup
- *         When true update.startup.from_app_version will be checked and when
- *         false update.session.from_app_version will be checked.
- */
-function checkTelemetryUpdatePhaseEmpty(isStartup) {
-  let scalars = TelemetryTestUtils.getProcessScalars("parent");
-  let name =
-    "update." + (isStartup ? "startup" : "session") + ".from_app_version";
-  Assert.ok(!scalars[name],
-            "The " + name + " value should not exist.");
-}
--- a/toolkit/mozapps/update/tests/data/shared.js
+++ b/toolkit/mozapps/update/tests/data/shared.js
@@ -5,48 +5,46 @@
 /* Shared code for xpcshell, mochitests-chrome, and mochitest-browser-chrome. */
 
 // Definitions needed to run eslint on this file.
 /* global AppConstants, DATA_URI_SPEC, LOG_FUNCTION */
 /* global Services, URL_HOST */
 
 const {FileUtils} = ChromeUtils.import("resource://gre/modules/FileUtils.jsm");
 const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
-const {TelemetryTestUtils} =
-  ChromeUtils.import("resource://testing-common/TelemetryTestUtils.jsm");
 
 ChromeUtils.defineModuleGetter(this, "ctypes",
                                "resource://gre/modules/ctypes.jsm");
 ChromeUtils.defineModuleGetter(this, "UpdateUtils",
                                "resource://gre/modules/UpdateUtils.jsm");
 
-const PREF_APP_UPDATE_AUTO                 = "app.update.auto";
-const PREF_APP_UPDATE_BACKGROUNDERRORS     = "app.update.backgroundErrors";
-const PREF_APP_UPDATE_BACKGROUNDMAXERRORS  = "app.update.backgroundMaxErrors";
-const PREF_APP_UPDATE_BITS_ENABLED         = "app.update.BITS.enabled";
-const PREF_APP_UPDATE_CANCELATIONS         = "app.update.cancelations";
-const PREF_APP_UPDATE_CHANNEL              = "app.update.channel";
-const PREF_APP_UPDATE_DOORHANGER           = "app.update.doorhanger";
-const PREF_APP_UPDATE_DOWNLOAD_MAXATTEMPTS = "app.update.download.maxAttempts";
-const PREF_APP_UPDATE_DOWNLOAD_ATTEMPTS    = "app.update.download.attempts";
-const PREF_APP_UPDATE_DISABLEDFORTESTING   = "app.update.disabledForTesting";
-const PREF_APP_UPDATE_IDLETIME             = "app.update.idletime";
-const PREF_APP_UPDATE_INTERVAL             = "app.update.interval";
-const PREF_APP_UPDATE_LASTUPDATETIME       = "app.update.lastUpdateTime.background-update-timer";
-const PREF_APP_UPDATE_LOG                  = "app.update.log";
-const PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED  = "app.update.notifiedUnsupported";
-const PREF_APP_UPDATE_PROMPTWAITTIME       = "app.update.promptWaitTime";
-const PREF_APP_UPDATE_RETRYTIMEOUT         = "app.update.socket.retryTimeout";
-const PREF_APP_UPDATE_SERVICE_ENABLED      = "app.update.service.enabled";
-const PREF_APP_UPDATE_SILENT               = "app.update.silent";
-const PREF_APP_UPDATE_SOCKET_MAXERRORS     = "app.update.socket.maxErrors";
-const PREF_APP_UPDATE_STAGING_ENABLED      = "app.update.staging.enabled";
-const PREF_APP_UPDATE_URL                  = "app.update.url";
-const PREF_APP_UPDATE_URL_DETAILS          = "app.update.url.details";
-const PREF_APP_UPDATE_URL_MANUAL           = "app.update.url.manual";
+const PREF_APP_UPDATE_AUTO                       = "app.update.auto";
+const PREF_APP_UPDATE_BACKGROUNDERRORS           = "app.update.backgroundErrors";
+const PREF_APP_UPDATE_BACKGROUNDMAXERRORS        = "app.update.backgroundMaxErrors";
+const PREF_APP_UPDATE_BITS_ENABLED               = "app.update.BITS.enabled";
+const PREF_APP_UPDATE_CANCELATIONS               = "app.update.cancelations";
+const PREF_APP_UPDATE_CHANNEL                    = "app.update.channel";
+const PREF_APP_UPDATE_DOORHANGER                 = "app.update.doorhanger";
+const PREF_APP_UPDATE_DOWNLOADPROMPTATTEMPTS     = "app.update.download.attempts";
+const PREF_APP_UPDATE_DOWNLOADPROMPT_MAXATTEMPTS = "app.update.download.maxAttempts";
+const PREF_APP_UPDATE_DISABLEDFORTESTING         = "app.update.disabledForTesting";
+const PREF_APP_UPDATE_IDLETIME                   = "app.update.idletime";
+const PREF_APP_UPDATE_INTERVAL                   = "app.update.interval";
+const PREF_APP_UPDATE_LASTUPDATETIME             = "app.update.lastUpdateTime.background-update-timer";
+const PREF_APP_UPDATE_LOG                        = "app.update.log";
+const PREF_APP_UPDATE_NOTIFIEDUNSUPPORTED        = "app.update.notifiedUnsupported";
+const PREF_APP_UPDATE_PROMPTWAITTIME             = "app.update.promptWaitTime";
+const PREF_APP_UPDATE_RETRYTIMEOUT               = "app.update.socket.retryTimeout";
+const PREF_APP_UPDATE_SERVICE_ENABLED            = "app.update.service.enabled";
+const PREF_APP_UPDATE_SILENT                     = "app.update.silent";
+const PREF_APP_UPDATE_SOCKET_MAXERRORS           = "app.update.socket.maxErrors";
+const PREF_APP_UPDATE_STAGING_ENABLED            = "app.update.staging.enabled";
+const PREF_APP_UPDATE_URL                        = "app.update.url";
+const PREF_APP_UPDATE_URL_DETAILS                = "app.update.url.details";
+const PREF_APP_UPDATE_URL_MANUAL                 = "app.update.url.manual";
 
 const PREFBRANCH_APP_PARTNER         = "app.partner.";
 const PREF_DISTRIBUTION_ID           = "distribution.id";
 const PREF_DISTRIBUTION_VERSION      = "distribution.version";
 
 const CONFIG_APP_UPDATE_AUTO         = "app.update.auto";
 
 const NS_APP_PROFILE_DIR_STARTUP   = "ProfDS";