Bug 1201492 - Remove extended_statistics_ok from Telemetry histograms. r=dexter
authorAnup Kumar <allamsetty.anup@gmail.com>
Mon, 21 Dec 2015 08:31:00 +0100
changeset 277322 7ff2f511b41bee04d9033e96d13b53a9683b482c
parent 277321 54a11404252e034308598ba1d087a1ec2d8df933
child 277323 2903b0280572ec549faf5f4a29b728b6543336df
push id29821
push usercbook@mozilla.com
push dateWed, 23 Dec 2015 10:58:53 +0000
treeherdermozilla-central@1954eb87782e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdexter
bugs1201492
milestone46.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1201492 - Remove extended_statistics_ok from Telemetry histograms. r=dexter
ipc/chromium/src/base/histogram.cc
ipc/chromium/src/base/histogram.h
toolkit/components/telemetry/Histograms.json
toolkit/components/telemetry/Telemetry.cpp
toolkit/components/telemetry/TelemetrySession.jsm
toolkit/components/telemetry/gen-histogram-data.py
toolkit/components/telemetry/histogram_tools.py
toolkit/components/telemetry/tests/unit/test_nsITelemetry.js
--- a/ipc/chromium/src/base/histogram.cc
+++ b/ipc/chromium/src/base/histogram.cc
@@ -555,18 +555,17 @@ const std::string Histogram::GetAsciiBuc
   else
     StringAppendF(&result, "%d", ranges(i));
   return result;
 }
 
 // Update histogram data with new sample.
 void Histogram::Accumulate(Sample value, Count count, size_t index) {
   // Note locking not done in this version!!!
-  sample_.AccumulateWithExponentialStats(value, count, index,
-					 flags_ & kExtendedStatisticsFlag);
+  sample_.AccumulateWithLinearStats(value, count, index);
 }
 
 void Histogram::SetBucketRange(size_t i, Sample value) {
   DCHECK_GT(bucket_count_, i);
   ranges_[i] = value;
 }
 
 bool Histogram::ValidateBucketRanges() const {
@@ -738,29 +737,16 @@ void Histogram::SampleSet::Accumulate(Sa
 
 void Histogram::SampleSet::AccumulateWithLinearStats(Sample value,
                                                      Count count,
                                                      size_t index) {
   Accumulate(value, count, index);
   sum_squares_ += static_cast<int64_t>(count) * value * value;
 }
 
-void Histogram::SampleSet::AccumulateWithExponentialStats(Sample value,
-                                                          Count count,
-                                                          size_t index,
-							  bool computeExtendedStatistics) {
-  Accumulate(value, count, index);
-  if (computeExtendedStatistics) {
-    DCHECK_GE(value, 0);
-    float value_log = logf(static_cast<float>(value) + 1.0f);
-    log_sum_ += count * value_log;
-    log_sum_squares_ += count * value_log * value_log;
-  }
-}
-
 Count Histogram::SampleSet::TotalCount() const {
   Count total = 0;
   for (Counts::const_iterator it = counts_.begin();
        it != counts_.end();
        ++it) {
     total += *it;
   }
   return total;
--- a/ipc/chromium/src/base/histogram.h
+++ b/ipc/chromium/src/base/histogram.h
@@ -288,17 +288,16 @@ class Histogram {
     EXPONENTIAL,
     LINEAR,
     CUSTOM
   };
 
   enum Flags {
     kNoFlags = 0,
     kUmaTargetedHistogramFlag = 0x1,  // Histogram should be UMA uploaded.
-    kExtendedStatisticsFlag = 0x2, // OK to gather extended statistics on histograms.
 
     // Indicate that the histogram was pickled to be sent across an IPC Channel.
     // If we observe this flag on a histogram being aggregated into after IPC,
     // then we are running in a single process mode, and the aggregation should
     // not take place (as we would be aggregating back into the source
     // histogram!).
     kIPCSerializationSourceFlag = 0x10,
 
@@ -331,20 +330,16 @@ class Histogram {
     ~SampleSet();
 
     // Adjust size of counts_ for use with given histogram.
     void Resize(const Histogram& histogram);
     void CheckSize(const Histogram& histogram) const;
 
     // Accessor for histogram to make routine additions.
     void AccumulateWithLinearStats(Sample value, Count count, size_t index);
-    // Alternate routine for exponential histograms.
-    // computeExpensiveStatistics should be true if we want to compute log sums.
-    void AccumulateWithExponentialStats(Sample value, Count count, size_t index,
-					bool computeExtendedStatistics);
 
     // Accessor methods.
     Count counts(size_t i) const { return counts_[i]; }
     Count TotalCount() const;
     int64_t sum() const { return sum_; }
     uint64_t sum_squares() const { return sum_squares_; }
     double log_sum() const { return log_sum_; }
     double log_sum_squares() const { return log_sum_squares_; }
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -20,17 +20,16 @@
     "kind": "flag",
     "description": "has the IAccessibleTable accessibility interface been used"
   },
   "A11Y_UPDATE_TIME": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "time spent updating accessibility (ms)"
   },
   "ADDON_SHIM_USAGE": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 15,
     "keyed": "true",
     "description": "Reasons why add-on shims were used, keyed by add-on ID."
@@ -489,160 +488,145 @@
   },
   "MEMORY_VSIZE": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": "32 * 1024",
     "high": "16 * 1024 * 1024",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "Virtual memory size (KB)"
   },
   "MEMORY_VSIZE_MAX_CONTIGUOUS": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": "32 * 1024",
     "high": "16 * 1024 * 1024",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "Maximum-sized block of contiguous virtual memory (KB)"
   },
   "MEMORY_JS_COMPARTMENTS_SYSTEM": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Total JavaScript compartments used for add-ons and internals."
   },
   "MEMORY_JS_COMPARTMENTS_USER": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Total JavaScript compartments used for web pages"
   },
   "MEMORY_JS_MAIN_RUNTIME_TEMPORARY_PEAK": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1024,
     "high": "16 * 1024 * 1024",
     "n_buckets": 200,
-    "extended_statistics_ok": true,
     "description": "Peak memory used by the main JSRuntime to store transient data (KB)"
   },
   "MEMORY_JS_GC_HEAP": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1024,
     "high": "16 * 1024 * 1024",
     "n_buckets": 200,
-    "extended_statistics_ok": true,
     "description": "Memory used by the garbage-collected JavaScript heap (KB)"
   },
   "MEMORY_STORAGE_SQLITE": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1024,
     "high": "512 * 1024",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Memory used by SQLite (KB)"
   },
   "MEMORY_IMAGES_CONTENT_USED_UNCOMPRESSED": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1024,
     "high": "1024 * 1024",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Memory used for uncompressed, in-use content images (KB)"
   },
   "MEMORY_HEAP_ALLOCATED": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1024,
     "high": "16 * 1024 * 1024",
     "n_buckets": 200,
-    "extended_statistics_ok": true,
     "description": "Heap memory allocated (KB)"
   },
   "MEMORY_HEAP_COMMITTED_UNUSED": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1024,
     "high": "512 * 1024",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Committed, unused heap memory (KB)"
   },
   "MEMORY_HEAP_COMMITTED_UNUSED_RATIO": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "linear",
     "high": "100",
     "n_buckets": 25,
     "description": "Ratio of committed, unused memory to allocated memory in the heap (percentage)."
   },
   "GHOST_WINDOWS": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "128",
     "n_buckets": 32,
-    "extended_statistics_ok": true,
     "description": "Number of ghost windows"
   },
   "MEMORY_FREE_PURGED_PAGES_MS": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1024",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time(ms) to purge dirty heap pages."
   },
   "LOW_MEMORY_EVENTS_VIRTUAL": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1024",
     "n_buckets": 21,
-    "extended_statistics_ok": true,
     "description": "Number of low-virtual-memory events fired since last ping",
     "cpp_guard": "XP_WIN"
   },
   "LOW_MEMORY_EVENTS_PHYSICAL": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1024",
     "n_buckets": 21,
-    "extended_statistics_ok": true,
     "description": "Number of low-physical-memory events fired since last ping",
     "cpp_guard": "XP_WIN"
   },
   "LOW_MEMORY_EVENTS_COMMIT_SPACE": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1024",
     "n_buckets": 21,
-    "extended_statistics_ok": true,
     "description": "Number of low-commit-space events fired since last ping",
     "cpp_guard": "XP_WIN"
   },
   "EARLY_GLUESTARTUP_READ_OPS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "linear",
     "high": "100",
@@ -651,17 +635,16 @@
     "cpp_guard": "XP_WIN"
   },
   "EARLY_GLUESTARTUP_READ_TRANSFER": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "50 * 1024",
     "n_buckets": 12,
-    "extended_statistics_ok": true,
     "description": "ProcessIoCounters.ReadTransferCount before glue startup (KB) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***",
     "cpp_guard": "XP_WIN"
   },
   "GLUESTARTUP_READ_OPS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "linear",
     "high": "100",
@@ -670,17 +653,16 @@
     "cpp_guard": "XP_WIN"
   },
   "GLUESTARTUP_READ_TRANSFER": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "50 * 1024",
     "n_buckets": 12,
-    "extended_statistics_ok": true,
     "description": "ProcessIoCounters.ReadTransferCount after glue startup (KB) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***",
     "cpp_guard": "XP_WIN"
   },
   "EARLY_GLUESTARTUP_HARD_FAULTS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "linear",
     "high": "100",
@@ -689,112 +671,101 @@
     "cpp_guard": "XP_UNIX"
   },
   "GLUESTARTUP_HARD_FAULTS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "500",
     "n_buckets": 12,
-    "extended_statistics_ok": true,
     "description": "Hard faults count after glue startup *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***",
     "cpp_guard": "XP_UNIX"
   },
   "PAGE_FAULTS_HARD": {
     "expires_in_version": "default",
     "kind": "exponential",
     "low": 8,
     "high": "64 * 1024",
     "n_buckets": 13,
-    "extended_statistics_ok": true,
     "description": "Hard page faults (since last telemetry ping)",
     "cpp_guard": "XP_UNIX"
   },
   "FONTLIST_INITOTHERFAMILYNAMES": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time(ms) spent on reading other family names from all fonts"
   },
   "FONTLIST_INITFACENAMELISTS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time(ms) spent on reading family names from all fonts"
   },
   "DWRITEFONT_DELAYEDINITFONTLIST_TOTAL": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "gfxDWriteFontList::DelayedInitFontList Total (ms)",
     "cpp_guard": "XP_WIN"
   },
   "DWRITEFONT_DELAYEDINITFONTLIST_COUNT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "gfxDWriteFontList::DelayedInitFontList Font Family Count",
     "cpp_guard": "XP_WIN"
   },
   "DWRITEFONT_DELAYEDINITFONTLIST_COLLECT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "gfxDWriteFontList::DelayedInitFontList GetSystemFontCollection (ms)",
     "cpp_guard": "XP_WIN"
   },
   "DWRITEFONT_INIT_PROBLEM": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 8,
     "description": "DirectWrite system fontlist initialization problem (1=GDI interop, 2=system font collection, 3=no fonts)",
     "cpp_guard": "XP_WIN"
   },
   "GDI_INITFONTLIST_TOTAL": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "gfxGDIFontList::InitFontList Total (ms)",
     "cpp_guard": "XP_WIN"
   },
   "MAC_INITFONTLIST_TOTAL": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "gfxMacPlatformFontList::InitFontList Total (ms)",
     "cpp_guard": "XP_DARWIN"
   },
   "SYSTEM_FONT_FALLBACK": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "100000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "System font fallback (us)"
   },
   "SYSTEM_FONT_FALLBACK_FIRST": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "40000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "System font fallback, first call (ms)"
   },
   "SYSTEM_FONT_FALLBACK_SCRIPT": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 110,
     "description": "System font fallback script"
   },
@@ -812,17 +783,16 @@
     "n_buckets": 20,
     "description": "Maximum retention time for the gradient cache. (ms)"
   },
   "STARTUP_CACHE_AGE_HOURS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Startup cache age (hours)"
   },
   "STARTUP_CACHE_INVALID": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "flag",
     "description": "Was the disk startup cache file detected as invalid"
   },
@@ -950,335 +920,295 @@
   },
   "TOTAL_CONTENT_PAGE_LOAD_TIME": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 100,
     "high": "30000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "HTTP: Total page load time (ms)"
   },
   "HTTP_SUBITEM_OPEN_LATENCY_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Page start -> subitem open() (ms)"
   },
   "HTTP_SUBITEM_FIRST_BYTE_LATENCY_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Page start -> first byte received for subitem reply (ms)"
   },
   "HTTP_REQUEST_PER_PAGE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP: Requests per page (count)"
   },
   "HTTP_REQUEST_PER_PAGE_FROM_CACHE": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 101,
     "description": "HTTP: Requests serviced from cache (%)"
   },
   "HTTP_REQUEST_PER_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP: requests per connection"
   },
   "HTTP_KBREAD_PER_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP: KB read per connection"
   },
   "HTTP_PAGE_DNS_ISSUE_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: open() -> DNS request issued (ms)"
   },
   "HTTP_PAGE_DNS_LOOKUP_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: DNS lookup time (ms)"
   },
   "HTTP_PAGE_TCP_CONNECTION": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: TCP connection setup (ms)"
   },
   "HTTP_PAGE_OPEN_TO_FIRST_SENT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Open -> first byte of request sent (ms)"
   },
   "HTTP_PAGE_FIRST_SENT_TO_LAST_RECEIVED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: First byte of request sent -> last byte of response received (ms)"
   },
   "HTTP_PAGE_OPEN_TO_FIRST_RECEIVED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Open -> first byte of reply received (ms)"
   },
   "HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Open -> cache read start (ms)"
   },
   "HTTP_PAGE_OPEN_TO_FIRST_FROM_CACHE_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Open -> cache read start (ms), [cache2]"
   },
   "HTTP_PAGE_CACHE_READ_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Cache read time (ms)"
   },
   "HTTP_PAGE_CACHE_READ_TIME_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Cache read time (ms) [cache2]"
   },
   "HTTP_PAGE_REVALIDATION": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Positive cache validation time (ms)"
   },
   "HTTP_PAGE_COMPLETE_LOAD": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Overall load time - all (ms)"
   },
   "HTTP_PAGE_COMPLETE_LOAD_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Overall load time - all (ms) [cache2]"
   },
   "HTTP_PAGE_COMPLETE_LOAD_CACHED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Overall load time - cache hits (ms)"
   },
   "HTTP_PAGE_COMPLETE_LOAD_CACHED_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Overall load time - cache hits (ms) [cache2]"
   },
   "HTTP_PAGE_COMPLETE_LOAD_NET": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Overall load time - network (ms)"
   },
   "HTTP_PAGE_COMPLETE_LOAD_NET_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP page: Overall load time - network (ms) [cache2]"
   },
   "HTTP_SUB_DNS_ISSUE_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: open() -> DNS request issued (ms)"
   },
   "HTTP_SUB_DNS_LOOKUP_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: DNS lookup time (ms)"
   },
   "HTTP_SUB_TCP_CONNECTION": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: TCP connection setup (ms)"
   },
   "HTTP_SUB_OPEN_TO_FIRST_SENT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Open -> first byte of request sent (ms)"
   },
   "HTTP_SUB_FIRST_SENT_TO_LAST_RECEIVED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: First byte of request sent -> last byte of response received (ms)"
   },
   "HTTP_SUB_OPEN_TO_FIRST_RECEIVED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Open -> first byte of reply received (ms)"
   },
   "HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Open -> cache read start (ms)"
   },
   "HTTP_SUB_OPEN_TO_FIRST_FROM_CACHE_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Open -> cache read start (ms) [cache2]"
   },
   "HTTP_SUB_CACHE_READ_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Cache read time (ms)"
   },
   "HTTP_SUB_CACHE_READ_TIME_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Cache read time (ms) [cache2]"
   },
   "HTTP_SUB_REVALIDATION": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Positive cache validation time (ms)"
   },
   "HTTP_SUB_COMPLETE_LOAD": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Overall load time - all (ms)"
   },
   "HTTP_SUB_COMPLETE_LOAD_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Overall load time - all (ms) [cache2]"
   },
   "HTTP_SUB_COMPLETE_LOAD_CACHED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Overall load time - cache hits (ms)"
   },
   "HTTP_SUB_COMPLETE_LOAD_CACHED_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Overall load time - cache hits (ms) [cache2]"
   },
   "HTTP_SUB_COMPLETE_LOAD_NET": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Overall load time - network (ms)"
   },
   "HTTP_SUB_COMPLETE_LOAD_NET_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "HTTP subitem: Overall load time - network (ms) [cache2]"
   },
   "HTTP_PROXY_TYPE": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 8,
     "description": "HTTP Proxy Type (none, http, socks)"
   },
@@ -1325,32 +1255,30 @@
     "n_values": 16,
     "description": "SSL Version (1=tls1, 2=tls1.1, 3=tls1.2)"
   },
   "SSL_TIME_UNTIL_READY": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 200,
-    "extended_statistics_ok": true,
     "description": "ms of SSL wait time including TCP and proxy tunneling"
   },
   "SSL_TIME_UNTIL_HANDSHAKE_FINISHED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 200,
     "description": "ms of SSL wait time for full handshake including TCP and proxy tunneling"
   },
   "SSL_BYTES_BEFORE_CERT_CALLBACK": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "32000",
     "n_buckets": 64,
-    "extended_statistics_ok": true,
     "description": "plaintext bytes read before a server certificate authenticated"
   },
   "SSL_NPN_TYPE": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 16,
     "description": "NPN Results (0=none, 1=negotiated, 2=no-overlap, 3=selected(alpn))"
   },
@@ -1365,33 +1293,30 @@
     "n_values": 16,
     "description": "HTTP result of OCSP, etc.. (0=canceled, 1=OK, 2=FAILED, 3=internal-error)"
   },
   "CERT_VALIDATION_HTTP_REQUEST_CANCELED_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 200,
-    "extended_statistics_ok": true,
     "description": "ms elapsed time of OCSP etc.. that was canceled"
   },
   "CERT_VALIDATION_HTTP_REQUEST_SUCCEEDED_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 200,
-    "extended_statistics_ok": true,
     "description": "ms elapsed time of OCSP etc.. that succeeded"
   },
   "CERT_VALIDATION_HTTP_REQUEST_FAILED_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 200,
-    "extended_statistics_ok": true,
     "description": "ms elapsed time of OCSP etc.. that failed"
   },
   "SSL_KEY_EXCHANGE_ALGORITHM_FULL": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 16,
     "description": "SSL Handshake Key Exchange Algorithm for full handshake (null=0, rsa=1, dh=2, fortezza=3, ecdh=4)"
   },
@@ -1435,66 +1360,60 @@
     "n_values": 48,
     "description": "HTTP: Protocol Version Used on Response from nsHttp.h"
   },
   "SPDY_PARALLEL_STREAMS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "SPDY: Streams concurrent active per connection"
   },
   "SPDY_REQUEST_PER_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "SPDY: Streams created per connection"
   },
   "SPDY_SERVER_INITIATED_STREAMS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "100000",
     "n_buckets": 250,
-    "extended_statistics_ok": true,
     "description": "SPDY: Streams recevied per connection"
   },
   "SPDY_CHUNK_RECVD": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "SPDY: Recvd Chunk Size (rounded to KB)"
   },
   "SPDY_SYN_SIZE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 20,
     "high": "20000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "SPDY: SYN Frame Header Size"
   },
   "SPDY_SYN_RATIO": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "99",
     "n_buckets": 20,
     "description": "SPDY: SYN Frame Header Ratio (lower better)"
   },
   "SPDY_SYN_REPLY_SIZE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 16,
     "high": "20000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "SPDY: SYN Reply Header Size"
   },
   "SPDY_SYN_REPLY_RATIO": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "99",
     "n_buckets": 20,
     "description": "SPDY: SYN Reply Header Ratio (lower better)"
@@ -1509,73 +1428,65 @@
     "kind": "boolean",
     "description": "SPDY: Coalesce Succeeded"
   },
   "SPDY_KBREAD_PER_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "SPDY: KB read per connection"
   },
   "SPDY_SETTINGS_UL_BW": {
     "expires_in_version": "42",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "SPDY: Settings Upload Bandwidth"
   },
   "SPDY_SETTINGS_DL_BW": {
     "expires_in_version": "42",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "SPDY: Settings Download Bandwidth"
   },
   "SPDY_SETTINGS_RTT": {
     "expires_in_version": "42",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "SPDY: Settings RTT"
   },
   "SPDY_SETTINGS_MAX_STREAMS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "H2: Settings Max Streams parameter"
   },
   "SPDY_SETTINGS_CWND": {
     "expires_in_version": "42",
     "kind": "exponential",
     "high": "500",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "SPDY: Settings CWND (packets)"
   },
   "SPDY_SETTINGS_RETRANS": {
     "expires_in_version": "42",
     "kind": "exponential",
     "high": "100",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "SPDY: Retransmission Rate"
   },
   "SPDY_SETTINGS_IW": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "H2: Settings Initial Window (rounded to KB)"
   },
   "SPDY_GOAWAY_LOCAL": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 32,
     "description": "H2: goaway reason client sent from rfc 7540. 31 is none sent."
   },
@@ -1640,25 +1551,23 @@
     "n_values": 4,
     "description": "HTTP Cache v2 Miss by half-life value (5 min, 15 min, 1 hour, 6 hours)"
   },
   "HTTP_CACHE_ENTRY_RELOAD_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "900000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time before we reload an HTTP cache entry again to memory"
   },
   "HTTP_CACHE_ENTRY_ALIVE_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "7200000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time for which an HTTP cache entry is kept warmed in memory"
   },
   "HTTP_CACHE_ENTRY_REUSE_COUNT": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "20",
     "n_buckets": 19,
     "description": "Reuse count of an HTTP cache entry warmed in memory"
@@ -1680,65 +1589,58 @@
     "kind": "boolean",
     "description": "Rate of page load from offline cache"
   },
   "CACHE_DEVICE_SEARCH_2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time to search cache (ms)"
   },
   "CACHE_MEMORY_SEARCH_2": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time to search memory cache (ms)"
   },
   "CACHE_DISK_SEARCH_2": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time to search disk cache (ms)"
   },
   "CACHE_OFFLINE_SEARCH_2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time to search offline cache (ms)"
   },
   "TRANSACTION_WAIT_TIME_HTTP": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "Time from submission to dispatch of HTTP transaction (ms)"
   },
   "TRANSACTION_WAIT_TIME_HTTP_PIPELINES": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "Time from submission to dispatch of HTTP with pipelines transaction (ms)"
   },
   "TRANSACTION_WAIT_TIME_SPDY": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "Time from submission to dispatch of SPDY transaction (ms)"
   },
   "HTTP_SAW_QUIC_ALT_PROTOCOL": {
     "expires_in_version": "never",
     "kind": "boolean",
     "description": "Fraction of responses with a quic alt-protocol advertisement."
   },
   "HTTP_CONTENT_ENCODING": {
@@ -1747,17 +1649,16 @@
     "n_values": 6,
     "description": "encoding removed: 0=unknown, 1=gzip, 2=deflate, 3=brotli"
   },
   "HTTP_DISK_CACHE_OVERHEAD": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "32000000",
     "n_buckets": 100,
-    "extended_statistics_ok": true,
     "description": "HTTP Disk cache memory overhead (bytes)"
   },
   "CACHE_LM_INCONSISTENT": {
     "expires_in_version": "never",
     "kind": "boolean",
     "description": "Cache discovered inconsistent last-modified entry"
   },
   "CACHE_SERVICE_LOCK_WAIT_2": {
@@ -2274,49 +2175,44 @@
     "n_values": 16,
     "description": "DNS Lookup Type (hit, renewal, negative-hit, literal, overflow, network-first, network-shared)"
   },
   "DNS_CLEANUP_AGE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1440",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "DNS Cache Entry Age at Removal Time (minutes)"
   },
   "DNS_LOOKUP_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time for a successful DNS OS resolution (msec)"
   },
   "DNS_RENEWAL_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time for a renewed DNS OS resolution (msec)"
   },
   "DNS_RENEWAL_TIME_FOR_TTL": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time for a DNS OS resolution (msec) used to get TTL"
   },
   "DNS_FAILED_LOOKUP_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time for an unsuccessful DNS OS resolution (msec)"
   },
   "DNS_BLACKLIST_COUNT": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": 21,
     "n_buckets": 20,
     "description": "The number of unusable addresses reported for each record"
@@ -2342,121 +2238,107 @@
     "high": "1000",
     "n_buckets": 50
   },
   "PREDICTOR_PREDICT_ATTEMPTS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Number of times nsINetworkPredictor::Predict is called and attempts to predict"
   },
   "PREDICTOR_LEARN_ATTEMPTS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Number of times nsINetworkPredictor::Learn is called and attempts to learn"
   },
   "PREDICTOR_PREDICT_FULL_QUEUE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Number of times nsINetworkPredictor::Predict doesn't continue because the queue is full"
   },
   "PREDICTOR_LEARN_FULL_QUEUE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Number of times nsINetworkPredictor::Learn doesn't continue because the queue is full"
   },
   "PREDICTOR_WAIT_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Amount of time a predictor event waits in the queue (ms)"
   },
   "PREDICTOR_PREDICT_WORK_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Amount of time spent doing the work for predict (ms)"
   },
   "PREDICTOR_LEARN_WORK_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Amount of time spent doing the work for learn (ms)"
   },
   "PREDICTOR_TOTAL_PREDICTIONS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many actual predictions (preresolves, preconnects, ...) happen"
   },
   "PREDICTOR_TOTAL_PRECONNECTS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many actual preconnects happen"
   },
   "PREDICTOR_TOTAL_PRECONNECTS_CREATED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many preconnects actually created a speculative socket"
   },
   "PREDICTOR_TOTAL_PRECONNECTS_USED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many preconnects actually created a used speculative socket"
   },
   "PREDICTOR_TOTAL_PRECONNECTS_UNUSED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many preconnects needlessly created a speculative socket"
   },
   "PREDICTOR_TOTAL_PRERESOLVES": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many actual preresolves happen"
   },
   "PREDICTOR_PREDICTIONS_CALCULATED": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many prediction calculations are performed"
   },
   "PREDICTOR_GLOBAL_DEGRADATION": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "100",
     "n_buckets": 50,
     "description": "The global degradation calculated"
@@ -2496,33 +2378,30 @@
     "n_buckets": 10,
     "description": "How long it takes from the time Predict() is called to the time we figure out there's nothing to do"
   },
   "HTTPCONNMGR_TOTAL_SPECULATIVE_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many speculative http connections are created"
   },
   "HTTPCONNMGR_USED_SPECULATIVE_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many speculative http connections are actually used"
   },
   "HTTPCONNMGR_UNUSED_SPECULATIVE_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "How many speculative connections are made needlessly"
   },
   "TAP_TO_LOAD_IMAGE_SIZE": {
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "32 * 1024",
     "n_buckets": 50,
     "description": "The size of the image being shown, when using tap-to-load images. (kilobytes)",
@@ -2739,25 +2618,23 @@
     "description": "The URL path contains !//"
   },
   "FIND_PLUGINS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent scanning filesystem for plugins (ms)"
   },
   "CHECK_JAVA_ENABLED": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent checking if Java is enabled (ms)"
   },
   "PLUGIN_HANG_UI_USER_RESPONSE": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 3,
     "description": "User response to Plugin Hang UI"
   },
@@ -2788,25 +2665,23 @@
     "n_buckets": 20,
     "description": "Time spent loading plugin DLL and obtaining metadata (ms)"
   },
   "PLUGIN_STARTUP_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Time spent starting up plugins (ms)"
   },
   "PLUGIN_SHUTDOWN_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Time spent shutting down plugins (ms)"
   },
   "PLUGIN_CALLED_DIRECTLY": {
     "expires_in_version": "never",
     "kind": "flag",
     "description": "A plugin object was successfully invoked as a function"
   },
   "FLASH_PLUGIN_STATES": {
@@ -2845,241 +2720,212 @@
     "n_values": 30,
     "description": "Flash object instances count on page"
   },
   "MOZ_SQLITE_OPEN_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite open() (ms)"
   },
   "MOZ_SQLITE_OPEN_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite open() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_TRUNCATE_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite truncate() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_TRUNCATE_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite truncate() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_OTHER_READ_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_OTHER_READ_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_PLACES_READ_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_PLACES_READ_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_COOKIES_OPEN_READAHEAD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on cookie DB open with readahead (ms)"
   },
   "MOZ_SQLITE_COOKIES_READ_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_COOKIES_READ_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_WEBAPPS_READ_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_WEBAPPS_READ_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite read() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_OTHER_WRITE_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_OTHER_WRITE_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_PLACES_WRITE_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms)"
   },
   "MOZ_SQLITE_PLACES_WRITE_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_COOKIES_WRITE_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_COOKIES_WRITE_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_WEBAPPS_WRITE_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_WEBAPPS_WRITE_MAIN_THREAD_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite write() (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_SQLITE_OTHER_SYNC_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_OTHER_SYNC_MAIN_THREAD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_PLACES_SYNC_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_PLACES_SYNC_MAIN_THREAD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_COOKIES_SYNC_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_COOKIES_SYNC_MAIN_THREAD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_WEBAPPS_SYNC_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_WEBAPPS_SYNC_MAIN_THREAD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent on SQLite fsync() (ms)"
   },
   "MOZ_SQLITE_OTHER_READ_B": {
     "expires_in_version": "default",
     "kind": "linear",
     "high": "32768",
     "n_buckets": 3,
     "description": "SQLite read() (bytes)"
@@ -3134,17 +2980,16 @@
     "description": "SQLite write (bytes)"
   },
   "MOZ_STORAGE_ASYNC_REQUESTS_MS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "32768",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "mozStorage async requests completion (ms) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "MOZ_STORAGE_ASYNC_REQUESTS_SUCCESS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "40",
     "kind": "boolean",
     "description": "mozStorage async requests success *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
@@ -3154,265 +2999,238 @@
     "n_values": "mozilla::StartupTimeline::MAX_EVENT_ID",
     "description": "Flags errors in startup calculation()"
   },
   "NETWORK_DISK_CACHE_OPEN": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent opening disk cache (ms)"
   },
   "NETWORK_DISK_CACHE_TRASHRENAME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent renaming bad Cache to Cache.Trash (ms)"
   },
   "NETWORK_DISK_CACHE_DELETEDIR": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent deleting disk cache (ms)"
   },
   "NETWORK_DISK_CACHE_DELETEDIR_SHUTDOWN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent during showdown stopping thread deleting old disk cache (ms)"
   },
   "NETWORK_DISK_CACHE_SHUTDOWN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Total Time spent (ms) during disk cache showdown"
   },
   "NETWORK_DISK_CACHE_SHUTDOWN_V2": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Total Time spent (ms) during disk cache showdown [cache2]"
   },
   "NETWORK_DISK_CACHE_SHUTDOWN_CLEAR_PRIVATE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent (ms) during showdown deleting disk cache for 'clear private data' option"
   },
   "NETWORK_DISK_CACHE2_SHUTDOWN_CLEAR_PRIVATE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent (ms) during showdown deleting disk cache v2 for 'clear private data' option"
   },
   "NETWORK_DISK_CACHE_REVALIDATION": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Total Time spent (ms) during disk cache revalidation"
   },
   "NETWORK_DISK_CACHE_STREAMIO_CLOSE": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent in nsDiskCacheStreamIO::Close() on non-main thread (ms)"
   },
   "NETWORK_DISK_CACHE_STREAMIO_CLOSE_MAIN_THREAD": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent in nsDiskCacheStreamIO::Close() on the main thread (ms)"
   },
   "IDLE_NOTIFY_BACK_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent checking for and notifying listeners that the user is back (ms)"
   },
   "IDLE_NOTIFY_BACK_LISTENERS": {
     "expires_in_version": "40",
     "kind": "linear",
     "high": "100",
     "n_buckets": 20,
     "description": "Number of listeners notified that the user is back"
   },
   "IDLE_NOTIFY_IDLE_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent checking for and notifying listeners that the user is idle (ms)"
   },
   "IDLE_NOTIFY_IDLE_LISTENERS": {
     "expires_in_version": "40",
     "kind": "linear",
     "high": "100",
     "n_buckets": 20,
     "description": "Number of listeners notified that the user is idle"
   },
   "URLCLASSIFIER_LOOKUP_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "500",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent per dbservice lookup (ms)"
   },
   "URLCLASSIFIER_CL_CHECK_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "500",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent per classifier lookup (ms)"
   },
   "URLCLASSIFIER_CL_UPDATE_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 20,
     "high": "15000",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "Time spent per classifier update (ms)"
   },
   "URLCLASSIFIER_PS_FILELOAD_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent loading PrefixSet from file (ms)"
   },
   "URLCLASSIFIER_PS_FALLOCATE_TIME": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time spent fallocating PrefixSet (ms)"
   },
   "URLCLASSIFIER_PS_CONSTRUCT_TIME": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "Time spent constructing PrefixSet from DB (ms)"
   },
   "URLCLASSIFIER_LC_PREFIXES": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "1500000",
     "n_buckets": 15,
     "description": "Size of the prefix cache in entries"
   },
   "URLCLASSIFIER_LC_COMPLETIONS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "200",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Size of the completion cache in entries"
   },
   "URLCLASSIFIER_PS_FAILURE": {
     "expires_in_version": "default",
     "kind": "boolean",
     "description": "Did UrlClassifier fail to construct the PrefixSet?"
   },
   "PLACES_PAGES_COUNT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1000,
     "high": "150000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "releaseChannelCollection": "opt-out",
     "description": "PLACES: Number of unique pages"
   },
   "PLACES_BOOKMARKS_COUNT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 100,
     "high": "8000",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "releaseChannelCollection": "opt-out",
     "description": "PLACES: Number of bookmarks"
   },
   "PLACES_TAGS_COUNT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "200",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Number of tags"
   },
   "PLACES_KEYWORDS_COUNT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "200",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Number of keywords"
   },
   "PLACES_BACKUPS_DAYSFROMLAST": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 15,
     "description": "PLACES: Days from last backup"
   },
   "PLACES_BACKUPS_BOOKMARKSTREE_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": 2000,
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time to build the bookmarks tree"
   },
   "PLACES_BACKUPS_TOJSON_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "low": 50,
     "high": 2000,
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time to convert and write the backup"
   },
   "PLACES_EXPORT_TOHTML_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": 2000,
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time to convert and write bookmarks.html"
   },
   "PLACES_FAVICON_ICO_SIZES": {
     "expires_in_version" : "never",
     "kind": "exponential",
     "high": 524288,
     "n_buckets" : 100,
     "description": "PLACES: Size of the ICO favicon files loaded from the web (Bytes)"
@@ -3495,35 +3313,32 @@
     "cpp_guard": "ANDROID"
   },
   "FENNEC_FAVICONS_COUNT": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "2000",
     "n_buckets": 10,
     "cpp_guard": "ANDROID",
-    "extended_statistics_ok": true,
     "description": "Number of favicons stored in the browser DB *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "FENNEC_THUMBNAILS_COUNT": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "2000",
     "n_buckets": 10,
     "cpp_guard": "ANDROID",
-    "extended_statistics_ok": true,
     "description": "Number of thumbnails stored in the browser DB *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "FENNEC_READING_LIST_COUNT": {
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 10,
     "cpp_guard": "ANDROID",
-    "extended_statistics_ok": true,
     "description": "Number of reading list items stored in the browser DB *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "PLACES_SORTED_BOOKMARKS_PERC": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "100",
     "n_buckets": 10,
     "description": "PLACES: Percentage of bookmarks organized in folders"
@@ -3536,122 +3351,110 @@
     "description": "PLACES: Percentage of tagged bookmarks"
   },
   "PLACES_DATABASE_FILESIZE_MB": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 5,
     "high": "200",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Database filesize (MB)"
   },
   "PLACES_DATABASE_PAGESIZE_B": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1024,
     "high": "32768",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Database page size (bytes)"
   },
   "PLACES_DATABASE_SIZE_PER_PAGE_B": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 500,
     "high": "10240",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "PLACES: Average size of a place in the database (bytes)"
   },
   "PLACES_EXPIRATION_STEPS_TO_CLEAN2": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 10,
     "description": "PLACES: Expiration steps to cleanup the database"
   },
   "PLACES_AUTOCOMPLETE_1ST_RESULT_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "500",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time for first autocomplete result if > 50ms (ms)"
   },
   "PLACES_AUTOCOMPLETE_6_FIRST_RESULTS_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "1000",
     "n_buckets": 30,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time for the 6 first autocomplete results (ms)"
   },
   "HISTORY_LASTVISITED_TREE_QUERY_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "2000",
     "n_buckets": 30,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time to load the sidebar history tree sorted by last visit (ms)"
   },
   "PLACES_HISTORY_LIBRARY_SEARCH_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "1000",
     "n_buckets": 30,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time to search the history library (ms)"
   },
   "PLACES_AUTOCOMPLETE_URLINLINE_DOMAIN_QUERY_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": 2000,
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Duration of the domain query for the url inline autocompletion (ms)"
   },
   "PLACES_IDLE_FRECENCY_DECAY_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "10000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time to decay all frecencies values on idle (ms)"
   },
   "PLACES_IDLE_MAINTENANCE_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 1000,
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Time to execute maintenance tasks on idle (ms)"
   },
   "PLACES_ANNOS_BOOKMARKS_COUNT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "5000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Number of bookmarks annotations"
   },
   "PLACES_ANNOS_PAGES_COUNT": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "5000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "PLACES: Number of pages annotations"
   },
   "PLACES_MAINTENANCE_DAYSFROMLAST": {
     "expires_in_version" : "never",
     "kind": "exponential",
     "low": 7,
     "high": 60,
     "n_buckets" : 10,
@@ -4034,17 +3837,16 @@
     "n_buckets": 40,
     "description": "Gloda: size of global-messages-db.sqlite (MB)"
   },
   "THUNDERBIRD_CONVERSATIONS_TIME_TO_2ND_GLODA_QUERY_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 30,
-    "extended_statistics_ok": true,
     "description": "Conversations: time between the moment we click and the second gloda query returns (ms)"
   },
   "THUNDERBIRD_INDEXING_RATE_MSG_PER_S": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "100",
     "n_buckets": 20,
     "description": "Gloda: indexing rate (message/s)"
@@ -4180,68 +3982,62 @@
     "n_buckets": 20,
     "description": "Firefox: Time in ms spent on switching tabs in response to a tab click"
   },
   "FX_IDENTITY_POPUP_OPEN_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Firefox: Time taken by the identity popup to open in milliseconds"
   },
   "FX_BOOKMARKS_TOOLBAR_INIT_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 50,
     "high": "5000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Firefox: Time to initialize the bookmarks toolbar view (ms)"
   },
   "FX_BROWSER_FULLSCREEN_USED": {
     "expires_in_version": "46",
     "kind": "count",
     "description": "The number of times that a session enters browser fullscreen (f11-fullscreen)"
   },
   "FX_NEW_WINDOW_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Firefox: Time taken to open a new browser window (ms)"
   },
   "FX_PAGE_LOAD_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Firefox: Time taken to load a page (ms). This includes all static contents, no dynamic content. Loading of about: pages is not counted."
   },
   "FX_TOTAL_TOP_VISITS": {
     "expires_in_version": "default",
     "kind": "boolean",
     "description": "Count the number of times a new top page was starting to load"
   },
   "FX_THUMBNAILS_CAPTURE_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "500",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "THUMBNAILS: Time (ms) it takes to capture a thumbnail"
   },
   "FX_THUMBNAILS_STORE_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "500",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "THUMBNAILS: Time (ms) it takes to store a thumbnail in the cache"
   },
   "FX_THUMBNAILS_HIT_OR_MISS": {
     "expires_in_version": "never",
     "kind": "boolean",
     "description": "THUMBNAILS: Thumbnail found"
   },
   "FX_MIGRATION_ENTRY_POINT": {
@@ -4291,107 +4087,96 @@
     "description": "Widget: Time it takes for the message before a UI message (ms)"
   },
   "FX_SESSION_RESTORE_STARTUP_INIT_SESSION_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time it takes to prepare the data structures for restoring a session (ms)"
   },
   "FX_SESSION_RESTORE_STARTUP_ONLOAD_INITIAL_WINDOW_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time it takes to finish restoration once we have first opened a window (ms)"
   },
   "FX_SESSION_RESTORE_COLLECT_ALL_WINDOWS_DATA_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time to collect all window data (ms)"
   },
   "FX_SESSION_RESTORE_COLLECT_COOKIES_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time to collect cookies (ms)"
   },
   "FX_SESSION_RESTORE_COLLECT_DATA_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time to collect all window and tab data (ms)"
   },
   "FX_SESSION_RESTORE_COLLECT_DATA_LONGEST_OP_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Duration of the longest uninterruptible operation while collecting all window and tab data (ms)"
   },
   "FX_SESSION_RESTORE_CONTENT_COLLECT_DATA_LONGEST_OP_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Duration of the longest uninterruptible operation while collecting data in the content process (ms)"
   },
   "FX_SESSION_RESTORE_SERIALIZE_DATA_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time to JSON serialize session data (ms)"
   },
   "FX_SESSION_RESTORE_READ_FILE_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time to read the session data from the file on disk (ms)"
   },
   "FX_SESSION_RESTORE_WRITE_FILE_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time to write the session data to the file on disk (ms)"
   },
   "FX_SESSION_RESTORE_FILE_SIZE_BYTES": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "exponential",
     "high": 50000000,
     "n_buckets": 30,
-    "extended_statistics_ok": true,
     "description": "Session restore: The size of file sessionstore.js (bytes)"
   },
   "FX_SESSION_RESTORE_CORRUPT_FILE": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "boolean",
     "description": "Session restore: Whether the file read on startup contained parse-able JSON"
   },
@@ -4402,31 +4187,29 @@
     "description": "Session restore: Whether none of the backup files contained parse-able JSON"
   },
   "FX_SESSION_RESTORE_RESTORE_WINDOW_MS": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Session restore: Time spent blocking the main thread while restoring a window state (ms)"
   },
   "FX_SESSION_RESTORE_SEND_UPDATE_CAUSED_OOM": {
     "alert_emails": ["session-restore-telemetry-alerts@mozilla.com"],
     "expires_in_version": "default",
     "kind": "count",
     "description": "Count of messages sent by SessionRestore from child frames to the parent and that cannot be transmitted as they eat up too much memory."
   },
   "FX_SESSION_RESTORE_DOM_STORAGE_SIZE_ESTIMATE_CHARS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "30000000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Session restore: Number of characters in DOM Storage for a tab. Pages without DOM Storage or with an empty DOM Storage are ignored."
   },
   "FX_TABLETMODE_PAGE_LOAD": {
     "expires_in_version": "47",
     "kind": "exponential",
     "high": 100000,
     "n_buckets": 30,
     "keyed": true,
@@ -4604,25 +4387,23 @@
     "kind": "boolean",
     "description": "Type of XMLHttpRequest, async or sync"
   },
   "DOM_TIMERS_FIRED_PER_NATIVE_TIMEOUT": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "DOM: Timer handlers called per native timer expiration *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "DOM_TIMERS_RECENTLY_SET": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "DOM: setTimeout/setInterval calls recently (last 30s or more) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "DOM_RANGE_DETACHED": {
     "expires_in_version": "40",
     "kind": "boolean",
     "description": "DOM: Ranges that are detached on destruction (bug 702948) *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "DOM_WINDOW_SHOWMODALDIALOG_USED": {
@@ -4630,174 +4411,155 @@
     "kind": "flag",
     "description": "Whether Window.showModalDialog was used in this session"
   },
   "LOCALDOMSTORAGE_INIT_DATABASE_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to open the localStorage database (ms)"
   },
   "LOCALDOMSTORAGE_SHUTDOWN_DATABASE_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to flush and close the localStorage database (ms)"
   },
   "LOCALDOMSTORAGE_PRELOAD_PENDING_ON_FIRST_ACCESS": {
     "expires_in_version": "default",
     "kind": "boolean",
     "description": "True when we had to wait for a pending preload on first access to localStorage data, false otherwise"
   },
   "LOCALDOMSTORAGE_GETALLKEYS_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to block before we return a list of all keys in domain's LocalStorage (ms)"
   },
   "LOCALDOMSTORAGE_GETKEY_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to block before we return a key name in domain's LocalStorage (ms)"
   },
   "LOCALDOMSTORAGE_GETLENGTH_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to block before we return number of keys in domain's LocalStorage (ms)"
   },
   "LOCALDOMSTORAGE_GETVALUE_BLOCKING_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to block before we return a value for a key in LocalStorage (ms)"
   },
   "LOCALDOMSTORAGE_SETVALUE_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to block before we set a single key's value in LocalStorage (ms)"
   },
   "LOCALDOMSTORAGE_REMOVEKEY_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to block before we remove a single key from LocalStorage (ms)"
   },
   "LOCALDOMSTORAGE_CLEAR_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to block before we clear LocalStorage for all domains (ms)"
   },
   "LOCALDOMSTORAGE_UNLOAD_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to fetch LocalStorage data before we can clean the cache (ms)"
   },
   "LOCALDOMSTORAGE_SESSIONONLY_PRELOAD_BLOCKING_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to fetch LocalStorage data before we can expose them as session only data (ms)"
   },
   "LOCALDOMSTORAGE_KEY_SIZE_BYTES": {
     "expires_in_version": "40",
     "kind": "exponential",
     "low": 1024,
     "high": "32768",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "DOM storage: size of keys stored in localStorage"
   },
   "LOCALDOMSTORAGE_VALUE_SIZE_BYTES": {
     "expires_in_version": "40",
     "kind": "exponential",
     "low": 1024,
     "high": "32768",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "DOM storage: size of values stored in localStorage"
   },
   "SESSIONDOMSTORAGE_KEY_SIZE_BYTES": {
     "expires_in_version": "40",
     "kind": "exponential",
     "low": 1024,
     "high": "32768",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "DOM storage: size of keys stored in sessionStorage"
   },
   "SESSIONDOMSTORAGE_VALUE_SIZE_BYTES": {
     "expires_in_version": "40",
     "kind": "exponential",
     "low": 1024,
     "high": "32768",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "DOM storage: size of values stored in sessionStorage"
   },
   "RANGE_CHECKSUM_ERRORS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Number of histograms with range checksum errors"
   },
   "BUCKET_ORDER_ERRORS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Number of histograms with bucket order errors"
   },
   "TOTAL_COUNT_HIGH_ERRORS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Number of histograms with total count high errors"
   },
   "TOTAL_COUNT_LOW_ERRORS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Number of histograms with total count low errors"
   },
   "TELEMETRY_ARCHIVE_DIRECTORIES_COUNT": {
     "alert_emails": ["telemetry-client-dev@mozilla.com"],
     "expires_in_version": "never",
     "kind": "linear",
     "high": "13",
     "n_buckets": 12,
@@ -4983,41 +4745,37 @@
     "kind": "count",
     "description": "Count of discarded content payloads."
   },
   "TELEMETRY_COMPRESS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time taken to compress telemetry object (ms)"
   },
   "TELEMETRY_PING": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time taken to submit telemetry info (ms)"
   },
   "TELEMETRY_SEND" : {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to send the compressed string to the Telemetry servers and get a reply back (ms)"
   },
   "TELEMETRY_STRINGIFY" : {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "3000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time to stringify telemetry object (ms)"
   },
   "TELEMETRY_SUCCESS": {
     "expires_in_version": "never",
     "kind": "boolean",
     "description": "Successful telemetry submission"
   },
   "TELEMETRY_INVALID_PING_TYPE_SUBMITTED": {
@@ -5157,17 +4915,16 @@
     "n_values": 9,
     "description": "Number of pinned sites on the new tab page."
   },
   "NEWTAB_PAGE_BLOCKED_SITES_COUNT": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "100",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Number of sites blocked from the new tab page."
   },
   "NEWTAB_PAGE_SHOWN": {
     "expires_in_version": "35",
     "kind": "boolean",
     "description": "Number of times about:newtab was shown from opening a new tab or window. *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "NEWTAB_PAGE_SITE_CLICKED": {
@@ -5177,35 +4934,32 @@
     "description": "Track click count on about:newtab tiles per index (0-8). For non-default row or column configurations all clicks into the '9' bucket. *** No longer needed (bug 1156565). Delete histogram and accumulation code! ***"
   },
   "BROWSERPROVIDER_XUL_IMPORT_TIME": {
     "expires_in_version": "40",
     "kind": "exponential",
     "low": 20,
     "high": "600000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Time for the initial conversion of a XUL places database (ms)",
     "cpp_guard": "ANDROID"
   },
   "BROWSERPROVIDER_XUL_IMPORT_BOOKMARKS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": "50000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Number of bookmarks in the original XUL places database",
     "cpp_guard": "ANDROID"
   },
   "BROWSERPROVIDER_XUL_IMPORT_HISTORY": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "1000000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Number of history entries in the original XUL places database",
     "cpp_guard": "ANDROID"
   },
   "FENNEC_GLOBALHISTORY_ADD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "low": 10,
     "high": "20000",
@@ -5332,31 +5086,29 @@
     "releaseChannelCollection": "opt-out",
     "description": "Record the search counts for search engines"
   },
   "SEARCH_SERVICE_INIT_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "Time (ms) it takes to initialize the search service"
   },
   "SEARCH_SERVICE_INIT_SYNC": {
     "alert_emails": ["rvitillo@mozilla.com", "gavin@mozilla.com"],
     "expires_in_version": "never",
     "kind": "boolean",
     "description": "search service has been initialized synchronously"
   },
   "SEARCH_SERVICE_BUILD_CACHE_MS": {
     "expires_in_version": "40",
     "kind": "exponential",
     "high": "1000",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "Time (ms) it takes to build the cache of the search service"
   },
   "SEARCH_SERVICE_COUNTRY_FETCH_TIME_MS": {
     "alert_emails": ["mhammond@mozilla.com", "gavin@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "n_buckets": 30,
     "high": 100000,
@@ -5444,42 +5196,38 @@
     "kind": "flag",
     "description": "Whether content ever accesed the Components shim in this session"
   },
   "CHECK_ADDONS_MODIFIED_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "Time (ms) it takes to figure out extension last modified time"
   },
   "TELEMETRY_MEMORY_REPORTER_MS": {
     "alert_emails": ["memshrink-telemetry-alerts@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 10,
-    "extended_statistics_ok": true,
     "description": "Time (ms) it takes to run memory reporters when sending a telemetry ping"
   },
   "SSL_SUCCESFUL_CERT_VALIDATION_TIME_MOZILLAPKIX" : {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent on a successful cert verification in mozilla::pkix mode (ms)"
   },
   "SSL_INITIAL_FAILED_CERT_VALIDATION_TIME_MOZILLAPKIX" : {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent on an initially failed cert verification in mozilla::pkix mode (ms)"
   },
   "HEALTHREPORT_DB_OPEN_FIRSTRUN_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "20000",
     "n_buckets": 15,
     "description": "Time (ms) spent to open Firefox Health Report's database the first time, including schema setup."
@@ -5498,25 +5246,23 @@
     "n_buckets": 15,
     "description": "Time (ms) spent to initialize Firefox Health Report the first time, including provider and collector initialization."
   },
   "HEALTHREPORT_INIT_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "20000",
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "Time (ms) spent to initialize Firefox Health Report service."
   },
   "HEALTHREPORT_GENERATE_JSON_PAYLOAD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Time (ms) it takes to obtain and format a Health Report JSON payload."
   },
   "HEALTHREPORT_JSON_PAYLOAD_SERIALIZE_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 10,
     "description": "Time (ms) it takes to JSON.stringify() the FHR JSON payload."
@@ -5535,17 +5281,16 @@
     "n_buckets": 202,
     "description": "Size (in bytes) of the compressed Health Report payload. This is what is sent over the wire."
   },
   "HEALTHREPORT_UPLOAD_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Time (ms) it takes to upload the Health Report payload."
   },
   "HEALTHREPORT_COLLECT_CONSTANT_DATA_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "20000",
     "n_buckets": 15,
     "description": "Time (ms) it takes FHR to collect constant data."
@@ -7811,95 +7556,85 @@
     "n_values": 8,
     "description": "The module used for the NTLM protocol (Windows_API, Kerberos, Samba_auth or Generic) and whether or not the authentication was used to connect to a proxy server. This data is collected only once per session (at first NTLM authentification) ; fixed version."
   },
   "FX_THUMBNAILS_BG_QUEUE_SIZE_ON_CAPTURE": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": 100,
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "BACKGROUND THUMBNAILS: Size of capture queue when a capture request is received"
   },
   "FX_THUMBNAILS_BG_CAPTURE_QUEUE_TIME_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": 300000,
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "BACKGROUND THUMBNAILS: Time the capture request spent in the queue before being serviced (ms)"
   },
   "FX_THUMBNAILS_BG_CAPTURE_SERVICE_TIME_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": 30000,
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "BACKGROUND THUMBNAILS: Time the capture took once it started and successfully completed (ms)"
   },
   "FX_THUMBNAILS_BG_CAPTURE_DONE_REASON_2": {
     "expires_in_version": "default",
     "kind": "enumerated",
     "n_values": 10,
     "description": "BACKGROUND THUMBNAILS: Reason the capture completed (see TEL_CAPTURE_DONE_* constants in BackgroundPageThumbs.jsm)"
   },
   "FX_THUMBNAILS_BG_CAPTURE_PAGE_LOAD_TIME_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": 60000,
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "BACKGROUND THUMBNAILS: Time the capture's page load took (ms)"
   },
   "FX_THUMBNAILS_BG_CAPTURE_CANVAS_DRAW_TIME_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "high": 500,
     "n_buckets": 15,
-    "extended_statistics_ok": true,
     "description": "BACKGROUND THUMBNAILS: Time it took to draw the capture's window to canvas (ms)"
   },
   "NETWORK_CACHE_V2_MISS_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent to find out a cache entry file is missing"
   },
   "NETWORK_CACHE_V2_HIT_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent to open an existing file"
   },
   "NETWORK_CACHE_V1_TRUNCATE_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent to reopen an entry with OPEN_TRUNCATE"
   },
   "NETWORK_CACHE_V1_MISS_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent to find out a cache entry is missing"
   },
   "NETWORK_CACHE_V1_HIT_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent to open an existing cache entry"
   },
   "NETWORK_CACHE_V2_OUTPUT_STREAM_STATUS": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": "7",
     "description": "Final status of the CacheFileOutputStream (0=ok, 1=other error, 2=out of memory, 3=disk full, 4=file corrupted, 5=file not found, 6=binding aborted)"
   },
@@ -7934,25 +7669,23 @@
     "n_values": 400,
     "description": "Hit rate for a specific cache size in file count. The hit rate is split into 20 buckets, the lower limit of the range in percents is 5*n/20. The cache size is divided into 20 ranges of length 5000, the lower limit of the range is 5000*(n%20)"
   },
   "NETWORK_CACHE_METADATA_FIRST_READ_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent to read the first part of the metadata from the cache entry file."
   },
   "NETWORK_CACHE_METADATA_SECOND_READ_TIME_MS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time spent to read the missing part of the metadata from the cache entry file."
   },
   "NETWORK_CACHE_METADATA_FIRST_READ_SIZE": {
     "expires_in_version": "never",
     "kind": "linear",
     "high": "5119",
     "n_buckets": 256,
     "description": "Guessed size of the metadata that we read from the cache file as the first part."
@@ -8192,34 +7925,31 @@
     "kind": "boolean",
     "description": "Is OCSP required when the cert has an OCSP URI? (pref security.OCSP.require)"
   },
   "OSFILE_WORKER_LAUNCH_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "description": "The duration between the instant the first message is sent to OS.File and the moment the OS.File worker starts executing JavaScript, in milliseconds",
     "high": "5000",
-    "n_buckets": 10,
-    "extended_statistics_ok": true
+    "n_buckets": 10
   },
   "OSFILE_WORKER_READY_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "description": "The duration between the instant the first message is sent to OS.File and the moment the OS.File worker has finished executing its startup JavaScript and is ready to receive requests, in milliseconds",
     "high": "5000",
-    "n_buckets": 10,
-    "extended_statistics_ok": true
+    "n_buckets": 10
   },
   "OSFILE_WRITEATOMIC_JANK_MS": {
     "expires_in_version": "default",
     "kind": "exponential",
     "description": "The duration during which the main thread is blocked during a call to OS.File.writeAtomic, in milliseconds",
     "high": "5000",
-    "n_buckets": 10,
-    "extended_statistics_ok": true
+    "n_buckets": 10
   },
   "CERT_VALIDATION_SUCCESS_BY_CA": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 256,
     "description": "Successful SSL server cert validations by CA (see RootHashes.inc for names of CAs)"
   },
   "CERT_PINNING_FAILURES_BY_CA": {
@@ -8603,57 +8333,52 @@
     "description": "Whether the e10s pref was set but it was blocked from running due to blacklisted conditions"
   },
   "BLOCKED_ON_PLUGIN_MODULE_INIT_MS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "keyed": true,
     "description": "Time (ms) that the main thread has been blocked on LoadModule and NP_Initialize in PluginModuleParent"
   },
   "BLOCKED_ON_PLUGIN_INSTANCE_INIT_MS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "keyed": true,
     "description": "Time (ms) that the main thread has been blocked on NPP_New in an IPC plugin"
   },
   "BLOCKED_ON_PLUGIN_STREAM_INIT_MS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "keyed": true,
     "description": "Time (ms) that the main thread has been blocked on NPP_NewStream in an IPC plugin"
   },
   "BLOCKED_ON_PLUGINASYNCSURROGATE_WAITFORINIT_MS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "keyed": true,
     "description": "Time (ms) that the main thread has been blocked on PluginAsyncSurrogate::WaitForInit in an IPC plugin"
   },
   "BLOCKED_ON_PLUGIN_INSTANCE_DESTROY_MS": {
     "alert_emails": ["perf-telemetry-alerts@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "10000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "keyed": true,
     "description": "Time (ms) that the main thread has been blocked on NPP_Destroy in an IPC plugin"
   },
   "ONBEFOREUNLOAD_PROMPT_ACTION" : {
     "expires_in_version": "45",
     "kind": "enumerated",
     "n_values": 3,
     "description": "What button a user clicked in an onbeforeunload prompt.  (Stay on Page = 0, Leave Page = 1, prompt aborted = 2)"
@@ -8827,138 +8552,124 @@
     "description": "Count of use of audio/video codecs in HTMLMediaElements and WebAudio. Those with 'resource' prefix are approximate; report based on HTTP ContentType or sniffing. Those with 'webaudio' prefix are for WebAudio."
   },
   "FX_SANITIZE_TOTAL": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Total time it takes to sanitize (ms)"
   },
   "FX_SANITIZE_CACHE": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize the cache (ms)"
   },
   "FX_SANITIZE_COOKIES": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize cookies (ms)"
   },
   "FX_SANITIZE_COOKIES_2": {
     "alert_emails": ["firefox-dev@mozilla.org"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize firefox cookies (ms). A subset of FX_SANITIZE_COOKIES."
   },
   "FX_SANITIZE_PLUGINS": {
     "alert_emails": ["firefox-dev@mozilla.org"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize plugin cookies (ms). A subset of FX_SANITIZE_COOKIES."
   },
   "FX_SANITIZE_OFFLINEAPPS": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize stored offline app data (ms)"
   },
   "FX_SANITIZE_HISTORY": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize history (ms)"
   },
   "FX_SANITIZE_FORMDATA": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize stored form data (ms)"
   },
   "FX_SANITIZE_DOWNLOADS": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize recent downloads (ms)"
   },
   "FX_SANITIZE_SESSIONS": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize saved sessions (ms)"
   },
   "FX_SANITIZE_SITESETTINGS": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize site-specific settings (ms)"
   },
   "FX_SANITIZE_OPENWINDOWS": {
     "alert_emails": ["firefox-dev@mozilla.org", "gavin@mozilla.com"],
     "expires_in_version": "50",
     "kind": "exponential",
     "high": "30000",
     "n_buckets": 20,
-    "extended_statistics_ok": true,
     "description": "Sanitize: Time it takes to sanitize the open windows list (ms)"
   },
   "PWMGR_ABOUT_LOGINS_GET_ALL_LOGINS_MS": {
     "expires_in_version": "55",
     "kind": "exponential",
     "high": 60000,
     "n_buckets": 30,
-    "extended_statistics_ok": true,
     "description": "How long getAllLogins() on about:logins takes for mobile users"
   },
   "PWMGR_ABOUT_LOGINS_USAGE": {
     "expires_in_version": "55",
     "kind": "enumerated",
     "n_values": 12,
     "description": "Usage of about:logins 0= list of logins viewed, 1=a login's specifics page was viewed, 2=user edited login credentials 3=user toggled the show/hide button"
   },
   "PWMGR_BLOCKLIST_NUM_SITES": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": 100,
     "n_buckets" : 10,
-    "extended_statistics_ok": true,
     "description": "The number of sites for which the user has explicitly rejected saving logins"
   },
   "PWMGR_FORM_ACTION_EFFECT": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values" : 5,
     "description": "The effect of the form action on signon autofill. (0=No effect, 1=Fewer logins after considering the form action, 2=No logins match form origin and action."
   },
@@ -9020,17 +8731,16 @@
     "n_buckets" : 20,
     "description": "The number of passwords per hostname"
   },
   "PWMGR_NUM_SAVED_PASSWORDS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": 750,
     "n_buckets" : 50,
-    "extended_statistics_ok": true,
     "description": "Total number of saved logins, including those that cannot be decrypted"
   },
   "PWMGR_NUM_HTTPAUTH_PASSWORDS": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": 750,
     "n_buckets" : 50,
     "description": "Number of HTTP Auth logins"
@@ -10165,26 +9875,24 @@
     "description": "Count of times a Notification was rendered (accounting for XUL DND). A system backend may put the notification directly into the tray if its own DND is on."
   },
   "WEBFONT_DOWNLOAD_TIME": {
     "alert_emails": ["jdaggett@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time to download a webfont (ms)"
   },
   "WEBFONT_DOWNLOAD_TIME_AFTER_START": {
     "alert_emails": ["jdaggett@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Time after navigationStart webfont download completed (ms)"
   },
   "WEBFONT_FONTTYPE": {
     "alert_emails": ["jdaggett@mozilla.com"],
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 10,
     "description": "Font format type (woff/woff2/ttf/...)"
@@ -10203,26 +9911,24 @@
     "description": "Number of fonts loaded at page load"
   },
   "WEBFONT_SIZE_PER_PAGE": {
     "alert_emails": ["jdaggett@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Size of all fonts loaded at page load (kb)"
   },
   "WEBFONT_SIZE": {
     "alert_emails": ["jdaggett@mozilla.com"],
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "5000",
     "n_buckets": 50,
-    "extended_statistics_ok": true,
     "description": "Size of font loaded (kb)"
   },
   "WEBFONT_COMPRESSION_WOFF": {
     "alert_emails": ["jdaggett@mozilla.com"],
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 50,
     "description": "Compression ratio of WOFF data (%)"
--- a/toolkit/components/telemetry/Telemetry.cpp
+++ b/toolkit/components/telemetry/Telemetry.cpp
@@ -873,17 +873,16 @@ private:
 struct TelemetryHistogram {
   uint32_t min;
   uint32_t max;
   uint32_t bucketCount;
   uint32_t histogramType;
   uint32_t id_offset;
   uint32_t expiration_offset;
   uint32_t dataset;
-  bool extendedStatisticsOK;
   bool keyed;
 
   const char *id() const;
   const char *expiration() const;
 };
 
 #include "TelemetryHistogramData.inc"
 bool gCorruptHistograms[Telemetry::HistogramCount];
@@ -1082,19 +1081,16 @@ GetHistogramByEnumId(Telemetry::ID id, H
       for (int i = 0; i < b.length; ++i) {
         MOZ_ASSERT(gBucketLowerBounds[b.offset + i] == h->ranges(i),
                    "C++/Python bucket mismatch");
       }
     }
   }
 #endif
 
-  if (p.extendedStatisticsOK) {
-    h->SetFlags(Histogram::kExtendedStatisticsFlag);
-  }
   *ret = knownHistograms[id] = h;
   return NS_OK;
 }
 
 /**
  * This clones a histogram |existing| with the id |existingId| to a
  * new histogram with the name |newName|.
  * For simplicity this is limited to registered histograms.
@@ -1232,22 +1228,17 @@ ReflectHistogramAndSamples(JSContext *cx
 
   if (!(JS_DefineProperty(cx, obj, "min", h->declared_min(), JSPROP_ENUMERATE)
         && JS_DefineProperty(cx, obj, "max", h->declared_max(), JSPROP_ENUMERATE)
         && JS_DefineProperty(cx, obj, "histogram_type", h->histogram_type(), JSPROP_ENUMERATE)
         && JS_DefineProperty(cx, obj, "sum", double(ss.sum()), JSPROP_ENUMERATE))) {
     return REFLECT_FAILURE;
   }
 
-  if (h->histogram_type() == Histogram::HISTOGRAM) {
-    if (!(JS_DefineProperty(cx, obj, "log_sum", ss.log_sum(), JSPROP_ENUMERATE)
-          && JS_DefineProperty(cx, obj, "log_sum_squares", ss.log_sum_squares(), JSPROP_ENUMERATE))) {
-      return REFLECT_FAILURE;
-    }
-  } else {
+  if (h->histogram_type() != Histogram::HISTOGRAM) {
     // Export |sum_squares| as two separate 32-bit properties so that we
     // can accurately reconstruct it on the analysis side.
     uint64_t sum_squares = ss.sum_squares();
     // Cast to avoid implicit truncation warnings.
     uint32_t lo = static_cast<uint32_t>(sum_squares);
     uint32_t hi = static_cast<uint32_t>(sum_squares >> 32);
     if (!(JS_DefineProperty(cx, obj, "sum_squares_lo", lo, JSPROP_ENUMERATE)
           && JS_DefineProperty(cx, obj, "sum_squares_hi", hi, JSPROP_ENUMERATE))) {
@@ -1981,17 +1972,16 @@ TelemetryImpl::NewHistogram(const nsACSt
   }
 
   Histogram *h;
   nsresult rv = HistogramGet(PromiseFlatCString(name).get(), PromiseFlatCString(expiration).get(),
                              histogramType, min, max, bucketCount, optArgCount == 3, &h);
   if (NS_FAILED(rv))
     return rv;
   h->ClearFlags(Histogram::kUmaTargetedHistogramFlag);
-  h->SetFlags(Histogram::kExtendedStatisticsFlag);
   return WrapAndReturnHistogram(h, cx, ret);
 }
 
 NS_IMETHODIMP
 TelemetryImpl::NewKeyedHistogram(const nsACString &name, const nsACString &expiration, uint32_t histogramType,
                             uint32_t min, uint32_t max, uint32_t bucketCount, JSContext *cx,
                             uint8_t optArgCount, JS::MutableHandle<JS::Value> ret)
 {
@@ -2922,20 +2912,18 @@ CreateJSTimeHistogram(JSContext* cx, con
       !JS_DefineProperty(cx, ret, "max",
                          time.GetBucketMax(ArrayLength(time) - 1),
                          JSPROP_ENUMERATE) ||
       !JS_DefineProperty(cx, ret, "histogram_type",
                          nsITelemetry::HISTOGRAM_EXPONENTIAL,
                          JSPROP_ENUMERATE)) {
     return nullptr;
   }
-  // TODO: calculate "sum", "log_sum", and "log_sum_squares"
-  if (!JS_DefineProperty(cx, ret, "sum", 0, JSPROP_ENUMERATE) ||
-      !JS_DefineProperty(cx, ret, "log_sum", 0.0, JSPROP_ENUMERATE) ||
-      !JS_DefineProperty(cx, ret, "log_sum_squares", 0.0, JSPROP_ENUMERATE)) {
+  // TODO: calculate "sum"
+  if (!JS_DefineProperty(cx, ret, "sum", 0, JSPROP_ENUMERATE)) {
     return nullptr;
   }
 
   JS::RootedObject ranges(
     cx, JS_NewArrayObject(cx, ArrayLength(time) + 1));
   JS::RootedObject counts(
     cx, JS_NewArrayObject(cx, ArrayLength(time) + 1));
   if (!ranges || !counts) {
@@ -4398,17 +4386,16 @@ KeyedHistogram::GetHistogram(const nsCSt
   nsresult rv = HistogramGet(histogramName.get(), mExpiration.get(),
                              mHistogramType, mMin, mMax, mBucketCount,
                              true, &h);
   if (NS_FAILED(rv)) {
     return rv;
   }
 
   h->ClearFlags(Histogram::kUmaTargetedHistogramFlag);
-  h->SetFlags(Histogram::kExtendedStatisticsFlag);
   *histogram = h;
 
   entry = map.PutEntry(key);
   if (MOZ_UNLIKELY(!entry)) {
     return NS_ERROR_OUT_OF_MEMORY;
   }
 
   entry->mData = h;
--- a/toolkit/components/telemetry/TelemetrySession.jsm
+++ b/toolkit/components/telemetry/TelemetrySession.jsm
@@ -777,47 +777,42 @@ var Impl = {
     return ret;
   },
 
   /**
    * When reflecting a histogram into JS, Telemetry hands us an object
    * with the following properties:
    *
    * - min, max, histogram_type, sum, sum_squares_{lo,hi}: simple integers;
-   * - log_sum, log_sum_squares: doubles;
    * - counts: array of counts for histogram buckets;
    * - ranges: array of calculated bucket sizes.
    *
    * This format is not straightforward to read and potentially bulky
    * with lots of zeros in the counts array.  Packing histograms makes
    * raw histograms easier to read and compresses the data a little bit.
    *
    * Returns an object:
    * { range: [min, max], bucket_count: <number of buckets>,
    *   histogram_type: <histogram_type>, sum: <sum>,
    *   sum_squares_lo: <sum_squares_lo>,
    *   sum_squares_hi: <sum_squares_hi>,
-   *   log_sum: <log_sum>, log_sum_squares: <log_sum_squares>,
    *   values: { bucket1: count1, bucket2: count2, ... } }
    */
   packHistogram: function packHistogram(hgram) {
     let r = hgram.ranges;;
     let c = hgram.counts;
     let retgram = {
       range: [r[1], r[r.length - 1]],
       bucket_count: r.length,
       histogram_type: hgram.histogram_type,
       values: {},
       sum: hgram.sum
     };
 
-    if (hgram.histogram_type == Telemetry.HISTOGRAM_EXPONENTIAL) {
-      retgram.log_sum = hgram.log_sum;
-      retgram.log_sum_squares = hgram.log_sum_squares;
-    } else {
+    if (hgram.histogram_type != Telemetry.HISTOGRAM_EXPONENTIAL) {
       retgram.sum_squares_lo = hgram.sum_squares_lo;
       retgram.sum_squares_hi = hgram.sum_squares_hi;
     }
 
     let first = true;
     let last = 0;
 
     for (let i = 0; i < c.length; i++) {
--- a/toolkit/components/telemetry/gen-histogram-data.py
+++ b/toolkit/components/telemetry/gen-histogram-data.py
@@ -55,21 +55,20 @@ class StringTable:
                 f.write("  /* %5d */ '\\0',\n" % offset)
         f.write("  /* %5d */ %s, '\\0' };\n\n"
                 % (entries[-1][1], explodeToCharArray(entries[-1][0])))
 
 def print_array_entry(output, histogram, name_index, exp_index):
     cpp_guard = histogram.cpp_guard()
     if cpp_guard:
         print("#if defined(%s)" % cpp_guard, file=output)
-    print("  { %s, %s, %s, %s, %d, %d, %s, %s, %s }," \
+    print("  { %s, %s, %s, %s, %d, %d, %s, %s }," \
         % (histogram.low(), histogram.high(),
            histogram.n_buckets(), histogram.nsITelemetry_kind(),
            name_index, exp_index, histogram.dataset(),
-           "true" if histogram.extended_statistics_ok() else "false",
            "true" if histogram.keyed() else "false"), file=output)
     if cpp_guard:
         print("#endif", file=output)
 
 def write_histogram_table(output, histograms):
     table = StringTable()
 
     print("const TelemetryHistogram gHistograms[] = {", file=output)
--- a/toolkit/components/telemetry/histogram_tools.py
+++ b/toolkit/components/telemetry/histogram_tools.py
@@ -105,17 +105,16 @@ The key 'cpp_guard' is optional; if pres
 symbol that should guard C/C++ definitions associated with the histogram."""
         self.check_name(name)
         self.verify_attributes(name, definition)
         self._name = name
         self._description = definition['description']
         self._kind = definition['kind']
         self._cpp_guard = definition.get('cpp_guard')
         self._keyed = definition.get('keyed', False)
-        self._extended_statistics_ok = definition.get('extended_statistics_ok', False)
         self._expiration = definition.get('expires_in_version')
         self.compute_bucket_parameters(definition)
         table = { 'boolean': 'BOOLEAN',
                   'flag': 'FLAG',
                   'count': 'COUNT',
                   'enumerated': 'LINEAR',
                   'linear': 'LINEAR',
                   'exponential': 'EXPONENTIAL' }
@@ -173,21 +172,16 @@ associated with the histogram.  Returns 
     def keyed(self):
         """Returns True if this a keyed histogram, false otherwise."""
         return self._keyed
 
     def dataset(self):
         """Returns the dataset this histogram belongs into."""
         return self._dataset
 
-    def extended_statistics_ok(self):
-        """Return True if gathering extended statistics for this histogram
-is enabled."""
-        return self._extended_statistics_ok
-
     def ranges(self):
         """Return an array of lower bounds for each bucket in the histogram."""
         table = { 'boolean': linear_buckets,
                   'flag': linear_buckets,
                   'count': linear_buckets,
                   'enumerated': linear_buckets,
                   'linear': linear_buckets,
                   'exponential': exponential_buckets }
@@ -211,17 +205,17 @@ is enabled."""
         general_keys = always_allowed_keys + ['low', 'high', 'n_buckets']
 
         table = {
             'boolean': always_allowed_keys,
             'flag': always_allowed_keys,
             'count': always_allowed_keys,
             'enumerated': always_allowed_keys + ['n_values'],
             'linear': general_keys,
-            'exponential': general_keys + ['extended_statistics_ok']
+            'exponential': general_keys
             }
         table_dispatch(definition['kind'], table,
                        lambda allowed_keys: Histogram.check_keys(name, definition, allowed_keys))
 
         if ('alert_emails' in definition
             and not isinstance(definition['alert_emails'], list)):
             raise KeyError, 'alert_emails must be an array if present (in Histogram %s)' % name
 
--- a/toolkit/components/telemetry/tests/unit/test_nsITelemetry.js
+++ b/toolkit/components/telemetry/tests/unit/test_nsITelemetry.js
@@ -23,45 +23,31 @@ function test_expired_histogram() {
   do_check_eq(Telemetry.histogramSnapshots[clone_id], undefined);
   do_check_eq(rh[test_expired_id], undefined);
 }
 
 function test_histogram(histogram_type, name, min, max, bucket_count) {
   var h = Telemetry.newHistogram(name, "never", histogram_type, min, max, bucket_count);
   var r = h.snapshot().ranges;
   var sum = 0;
-  var log_sum = 0;
-  var log_sum_squares = 0;
   for(var i=0;i<r.length;i++) {
     var v = r[i];
     sum += v;
-    if (histogram_type == Telemetry.HISTOGRAM_EXPONENTIAL) {
-      var log_v = Math.log(1+v);
-      log_sum += log_v;
-      log_sum_squares += log_v*log_v;
-    }
     h.add(v);
   }
   var s = h.snapshot();
   // verify properties
   do_check_eq(sum, s.sum);
   if (histogram_type == Telemetry.HISTOGRAM_EXPONENTIAL) {
-    // We do the log with float precision in C++ and double precision in
-    // JS, so there's bound to be tiny discrepancies.  Just check the
-    // integer part.
-    do_check_eq(Math.floor(log_sum), Math.floor(s.log_sum));
-    do_check_eq(Math.floor(log_sum_squares), Math.floor(s.log_sum_squares));
     do_check_false("sum_squares_lo" in s);
     do_check_false("sum_squares_hi" in s);
   } else {
     // Doing the math to verify sum_squares was reflected correctly is
     // tedious in JavaScript.  Just make sure we have something.
     do_check_neq(s.sum_squares_lo + s.sum_squares_hi, 0);
-    do_check_false("log_sum" in s);
-    do_check_false("log_sum_squares" in s);
   }
 
   // there should be exactly one element per bucket
   for (var i of s.counts) {
     do_check_eq(i, 1);
   }
   var hgrams = Telemetry.histogramSnapshots
   gh = hgrams[name]
@@ -79,20 +65,17 @@ function test_histogram(histogram_type, 
 
   // Check that clearing works.
   h.clear();
   var s = h.snapshot();
   for (var i of s.counts) {
     do_check_eq(i, 0);
   }
   do_check_eq(s.sum, 0);
-  if (histogram_type == Telemetry.HISTOGRAM_EXPONENTIAL) {
-    do_check_eq(s.log_sum, 0);
-    do_check_eq(s.log_sum_squares, 0);
-  } else {
+  if (histogram_type != Telemetry.HISTOGRAM_EXPONENTIAL) {
     do_check_eq(s.sum_squares_lo, 0);
     do_check_eq(s.sum_squares_hi, 0);
   }
 
   h.add(0);
   h.add(1);
   var c = h.snapshot().counts;
   do_check_eq(c[0], 1);
@@ -203,20 +186,17 @@ function test_getHistogramById() {
 function compareHistograms(h1, h2) {
   let s1 = h1.snapshot();
   let s2 = h2.snapshot();
 
   do_check_eq(s1.histogram_type, s2.histogram_type);
   do_check_eq(s1.min, s2.min);
   do_check_eq(s1.max, s2.max);
   do_check_eq(s1.sum, s2.sum);
-  if (s1.histogram_type == Telemetry.HISTOGRAM_EXPONENTIAL) {
-    do_check_eq(s1.log_sum, s2.log_sum);
-    do_check_eq(s1.log_sum_squares, s2.log_sum_squares);
-  } else {
+  if (s1.histogram_type != Telemetry.HISTOGRAM_EXPONENTIAL) {
     do_check_eq(s1.sum_squares_lo, s2.sum_squares_lo);
     do_check_eq(s1.sum_squares_hi, s2.sum_squares_hi);
   }
 
   do_check_eq(s1.counts.length, s2.counts.length);
   for (let i = 0; i < s1.counts.length; i++)
     do_check_eq(s1.counts[i], s2.counts[i]);
 
@@ -415,31 +395,16 @@ function test_histogramRecording() {
   h = Telemetry.getHistogramById("TELEMETRY_TEST_RELEASE_OPTOUT");
   h.clear();
   orig = h.snapshot();
   h.add(1);
   Assert.equal(orig.sum + 1, h.snapshot().sum,
                "Histogram value should have incremented by 1 due to recording.");
 }
 
-// Check that histograms that aren't flagged as needing extended stats
-// don't record extended stats.
-function test_extended_stats() {
-  var h = Telemetry.getHistogramById("GRADIENT_DURATION");
-  var s = h.snapshot();
-  do_check_eq(s.sum, 0);
-  do_check_eq(s.log_sum, 0);
-  do_check_eq(s.log_sum_squares, 0);
-  h.add(1);
-  s = h.snapshot();
-  do_check_eq(s.sum, 1);
-  do_check_eq(s.log_sum, 0);
-  do_check_eq(s.log_sum_squares, 0);
-}
-
 // Return an array of numbers from lower up to, excluding, upper
 function numberRange(lower, upper)
 {
   let a = [];
   for (let i=lower; i<upper; ++i) {
     a.push(i);
   }
   return a;
@@ -992,17 +957,16 @@ function run_test()
   test_count_histogram();
   test_getHistogramById();
   test_histogramFrom();
   test_getSlowSQL();
   test_getWebrtc();
   test_privateMode();
   test_histogramRecording();
   test_addons();
-  test_extended_stats();
   test_expired_histogram();
   test_keyed_histogram();
   test_datasets();
   test_subsession();
   test_keyed_subsession();
   test_histogram_recording_enabled();
   test_keyed_histogram_recording_enabled();
 }