Fingerprint Pro Internals
Collector s85

IndexedDB blob error

the error text from storing a Blob, which differs per engine

Group: Storage · signal map · run it live

// s85 — sig_s85_blob
// module cm, stage2, codes 0 -1 -2 -3 -4 -5
//
// measures
//   window.Blob window.indexedDB.deleteDatabase() window.indexedDB.open() window.indexedDB crypto
//   crypto.getRandomValues() navigator.vendor.indexOf("Apple") window.ApplePayError window.Counter
//   window.CSSPrimitiveValue window.RGBColor window.WebKitMediaKeys
// engine
//   Math.random() Promise.race() Uint32Array Promise Error undefined
// reported value
//   null string value
// probes
//   "-" "96375" "MozAppearance" "SecurityError"
// compares against
//   === "SecurityError" === 0 >= 4 in "ApplePayError" in "CSSMozDocumentRule" in "CSSPrimitiveValue"
//   in "CanvasCaptureMediaStream" in "Counter" in "MozAppearance" in "RGBColor" in "WebKitMediaKeys"
//   in "buildID" in "mozInnerScreenX" in "onmozfullscreenchange"
// decides on
//   fn25() || fn46()
//   fn142: !((v957 = arg822.cancel) == null)
//   fn25: fn9(["ApplePayError" in window, "CSSPrimitiveValue" in window, "Counter" in window, navigator.vendor.indexOf("Apple") === 0, "RGBColor" in window, "WebKitMediaK…
//   fn46: fn9(["buildID" in navigator, "MozAppearance" in (document.documentElement?.style ?? {}), "onmozfullscreenchange" in window, "mozInnerScreenX" in window, "CSSMoz…
//   h_s85_securityError: !indexedDB2
//   h_s85_securityError: v504 instanceof Error
//   h_s85_securityError: !fn25()
//   h_s85_securityError: v505 instanceof Error && v505.name === "SecurityError"
//   visibilitychange: !(v869 || v868)
//   visibilitychange: !v869 && v868
//
// 2 owned helpers inlined below.
// shared with other collectors, see agent.clean.js:
//   fn142:7227 fn158:8266 fn25:712 fn46:3216 fn64:3826 fn66:3854 fn9:252 fn97:5431 uint32Array:2786
//   visibilitychange:6423

// agent.clean.js:3261
async function h_s85_securityError() {
  const indexedDB2 = window.indexedDB;
  if (!indexedDB2) {
    return { s: -2, v: null };
  }
  const v502 = "" + h_s85_fn(16) + "";
  return new Promise((arg375, arg376) => {
    try {
      const v503 = indexedDB2.open(v502, 1);
      v503.onerror = () => {
        arg375({ s: -5, v: null });
      };
      v503.onupgradeneeded = (arg377) => {
        const result3 = arg377.target.result;
        try {
          result3.createObjectStore("-", { autoIncrement: true }).put(new window.Blob());
          return void arg375({ s: 0, v: "" });
        } catch (v504) {
          if (v504 instanceof Error) {
            return void arg375({ s: 0, v: v504.message });
          }
          arg376(v504);
        } finally {
          result3.close();
          indexedDB2.deleteDatabase(v502);
        }
      };
    } catch (v505) {
      if (!fn25()) {
        return void arg375({ s: -5, v: null });
      }
      if (v505 instanceof Error && v505.name === "SecurityError") {
        return void arg375({ s: -4, v: null });
      }
      arg376(v505);
    }
  });
}

// agent.clean.js:4644
function sig_s85_blob() {
  return fn142(fn66(250, { s: -3, v: null }), async () => {
    if (fn25() || fn46()) {
      return h_s85_securityError();
    }
    return { s: -1, v: null };
  });
}

// agent.clean.js:7884
function h_s85_fn(arg891) {
  return fn97(arg891, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
}