Esempio n. 1
0
NS_IMETHODIMP
TelemetryImpl::GetAddonHistogram(const nsACString &id, const nsACString &name,
                                 JSContext *cx, jsval *ret)
{
  AddonEntryType *addonEntry = mAddonMap.GetEntry(id);
  // The given id has not been registered.
  if (!addonEntry) {
    return NS_ERROR_INVALID_ARG;
  }

  AddonHistogramMapType *histogramMap = addonEntry->mData;
  AddonHistogramEntryType *histogramEntry = histogramMap->GetEntry(name);
  // The given histogram name has not been registered.
  if (!histogramEntry) {
    return NS_ERROR_INVALID_ARG;
  }

  AddonHistogramInfo &info = histogramEntry->mData;
  if (!info.h) {
    nsCAutoString actualName;
    AddonHistogramName(id, name, actualName);
    if (!CreateHistogramForAddon(actualName, info)) {
      return NS_ERROR_FAILURE;
    }
  }
  return WrapAndReturnHistogram(info.h, cx, ret);
}
Esempio n. 2
0
NS_IMETHODIMP
TelemetryImpl::GetAddonHistogram(const nsACString &id, const nsACString &name,
                                 JSContext *cx, jsval *ret)
{
  AddonEntryType *addonEntry = mAddonMap.GetEntry(id);
  // The given id has not been registered.
  if (!addonEntry) {
    return NS_ERROR_INVALID_ARG;
  }

  AddonHistogramMapType *histogramMap = addonEntry->mData;
  AddonHistogramEntryType *histogramEntry = histogramMap->GetEntry(name);
  // The given histogram name has not been registered.
  if (!histogramEntry) {
    return NS_ERROR_INVALID_ARG;
  }

  AddonHistogramInfo &info = histogramEntry->mData;
  Histogram *h;
  if (info.h) {
    h = info.h;
  } else {
    nsCAutoString actualName;
    AddonHistogramName(id, name, actualName);
    nsresult rv = HistogramGet(PromiseFlatCString(actualName).get(),
                               info.min, info.max, info.bucketCount,
                               info.histogramType, &h);
    if (NS_FAILED(rv)) {
      return rv;
    }
    // Don't let this histogram be reported via the normal means
    // (e.g. Telemetry.registeredHistograms); we'll make it available in
    // other ways.
    h->ClearFlags(Histogram::kUmaTargetedHistogramFlag);
    info.h = h;
  }
  return WrapAndReturnHistogram(h, cx, ret);
}