Global Metrics

path: .metrics.nom.closures
old: 2.0
new: 0.0

path: .metrics.nom.functions
old: 50.0
new: 31.0

path: .metrics.nom.total
old: 52.0
new: 31.0

path: .metrics.nexits.average
old: 1.6538461538461535
new: 1.7741935483870968

path: .metrics.nexits.sum
old: 86.0
new: 55.0

path: .metrics.mi.mi_original
old: -20.120963613963298
new: -2.4264969088252997

path: .metrics.mi.mi_sei
old: -68.70037538717307
new: -49.134172818558405

path: .metrics.cognitive.sum
old: 57.0
new: 55.0

path: .metrics.cognitive.average
old: 1.0961538461538465
new: 1.7741935483870968

path: .metrics.halstead.n1
old: 40.0
new: 31.0

path: .metrics.halstead.difficulty
old: 54.64362850971922
new: 48.51672862453532

path: .metrics.halstead.length
old: 3189.0
new: 1979.0

path: .metrics.halstead.level
old: 0.018300395256916995
new: 0.020611447398666768

path: .metrics.halstead.n2
old: 463.0
new: 269.0

path: .metrics.halstead.bugs
old: 4.491025600240121
new: 2.8487998872027336

path: .metrics.halstead.N1
old: 1924.0
new: 1137.0

path: .metrics.halstead.volume
old: 28619.408126889823
new: 16284.83218849135

path: .metrics.halstead.estimated_program_length
old: 4312.681185244984
new: 2324.8034611497246

path: .metrics.halstead.N2
old: 1265.0
new: 842.0

path: .metrics.halstead.effort
old: 1563868.305853807
new: 790086.7839851324

path: .metrics.halstead.vocabulary
old: 503.0
new: 300.0

path: .metrics.halstead.time
old: 86881.57254743371
new: 43893.71022139624

path: .metrics.halstead.purity_ratio
old: 1.352361613435241
new: 1.1747364634409927

path: .metrics.cyclomatic.sum
old: 131.0
new: 79.0

path: .metrics.cyclomatic.average
old: 2.519230769230769
new: 2.393939393939394

path: .metrics.nargs.sum
old: 60.0
new: 75.0

path: .metrics.nargs.average
old: 1.1538461538461535
new: 2.4193548387096775

path: .metrics.loc.blank
old: 110.0
new: 129.0

path: .metrics.loc.cloc
old: 71.0
new: 56.0

path: .metrics.loc.ploc
old: 587.0
new: 461.0

path: .metrics.loc.sloc
old: 768.0
new: 646.0

path: .metrics.loc.lloc
old: 254.0
new: 182.0

Spaces Data

Minimal test - lines (208, 212)

path: .spaces[7].metrics.nargs.average
old: 1.0
new: 3.0

path: .spaces[7].metrics.nargs.sum
old: 1.0
new: 3.0

path: .spaces[7].metrics.halstead.effort
old: 365.5060725175299
new: 343.3468786650285

path: .spaces[7].metrics.halstead.vocabulary
old: 14.0
new: 17.0

path: .spaces[7].metrics.halstead.N1
old: 10.0
new: 12.0

path: .spaces[7].metrics.halstead.difficulty
old: 5.333333333333333
new: 4.0

path: .spaces[7].metrics.halstead.length
old: 18.0
new: 21.0

path: .spaces[7].metrics.halstead.level
old: 0.1875
new: 0.25

path: .spaces[7].metrics.halstead.estimated_program_length
old: 39.50977500432694
new: 52.529325012980806

path: .spaces[7].metrics.halstead.n2
old: 6.0
new: 9.0

path: .spaces[7].metrics.halstead.volume
old: 68.53238859703687
new: 85.83671966625712

path: .spaces[7].metrics.halstead.time
old: 20.305892917640552
new: 19.074826592501584

path: .spaces[7].metrics.halstead.N2
old: 8.0
new: 9.0

path: .spaces[7].metrics.halstead.purity_ratio
old: 2.194987500240386
new: 2.5013964291895623

path: .spaces[7].metrics.halstead.bugs
old: 0.017040217866005423
new: 0.016344343499188157

path: .spaces[7].metrics.mi.mi_visual_studio
old: 76.60262417125709
new: 71.07858598043994

path: .spaces[7].metrics.mi.mi_original
old: 130.99048733284965
new: 121.54438202655228

path: .spaces[7].metrics.mi.mi_sei
old: 113.38029434612244
new: 99.75244506501232

path: .spaces[7].metrics.loc.sloc
old: 3.0
new: 5.0

path: .spaces[7].metrics.loc.ploc
old: 3.0
new: 5.0

path: .spaces[7].metrics.loc.lloc
old: 1.0
new: 2.0

Code

nsOfflineCachePendingUpdate::OnContentBlockingEvent(
    nsIWebProgress* aWebProgress, nsIRequest* aRequest, uint32_t aEvent) {
  MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
  return NS_OK;
}

Minimal test - lines (511, 566)

path: .spaces[25].metrics.loc.ploc
old: 4.0
new: 41.0

path: .spaces[25].metrics.loc.sloc
old: 4.0
new: 56.0

path: .spaces[25].metrics.loc.cloc
old: 0.0
new: 2.0

path: .spaces[25].metrics.loc.blank
old: 0.0
new: 13.0

path: .spaces[25].metrics.loc.lloc
old: 1.0
new: 24.0

path: .spaces[25].metrics.mi.mi_sei
old: 105.12994940155043
new: 35.33981285333145

path: .spaces[25].metrics.mi.mi_original
old: 125.27178399587255
new: 66.11830620544939

path: .spaces[25].metrics.mi.mi_visual_studio
old: 73.25835321396058
new: 38.66567614353765

path: .spaces[25].metrics.cyclomatic.average
old: 1.0
new: 12.0

path: .spaces[25].metrics.cyclomatic.sum
old: 1.0
new: 12.0

path: .spaces[25].metrics.cognitive.average
old: 0.0
new: 10.0

path: .spaces[25].metrics.cognitive.sum
old: 0.0
new: 10.0

path: .spaces[25].metrics.nexits.average
old: 1.0
new: 9.0

path: .spaces[25].metrics.nexits.sum
old: 1.0
new: 9.0

path: .spaces[25].metrics.halstead.time
old: 35.0
new: 1201.0684495443827

path: .spaces[25].metrics.halstead.N2
old: 9.0
new: 79.0

path: .spaces[25].metrics.halstead.difficulty
old: 7.5
new: 17.86904761904762

path: .spaces[25].metrics.halstead.N1
old: 12.0
new: 125.0

path: .spaces[25].metrics.halstead.bugs
old: 0.024496598167132053
new: 0.2586856003575021

path: .spaces[25].metrics.halstead.purity_ratio
old: 2.3204312358666934
new: 1.5058233064320394

path: .spaces[25].metrics.halstead.level
old: 0.13333333333333333
new: 0.05596269153897401

path: .spaces[25].metrics.halstead.vocabulary
old: 16.0
new: 61.0

path: .spaces[25].metrics.halstead.n1
old: 10.0
new: 19.0

path: .spaces[25].metrics.halstead.estimated_program_length
old: 48.72905595320056
new: 307.18795451213606

path: .spaces[25].metrics.halstead.length
old: 21.0
new: 204.0

path: .spaces[25].metrics.halstead.volume
old: 84.0
new: 1209.870416862829

path: .spaces[25].metrics.halstead.effort
old: 630.0
new: 21619.232091798887

path: .spaces[25].metrics.halstead.n2
old: 6.0
new: 42.0

path: .spaces[25].metrics.nargs.sum
old: 0.0
new: 3.0

path: .spaces[25].metrics.nargs.average
old: 0.0
new: 3.0

Code

static nsresult OfflineAppPermForPrincipal(nsIPrincipal* aPrincipal,
                                           bool pinned, bool* aAllowed) {
  *aAllowed = false;

  if (!StaticPrefs::browser_cache_offline_enable()) {
    return NS_OK;
  }

  if (!StaticPrefs::browser_cache_offline_storage_enable()) {
    return NS_OK;
  }

  if (!aPrincipal) return NS_ERROR_INVALID_ARG;

  nsCOMPtr uri;
  // Casting to BasePrincipal, as we can't get InnerMost URI otherwise
  auto* basePrincipal = BasePrincipal::Cast(aPrincipal);
  basePrincipal->GetURI(getter_AddRefs(uri));

  if (!uri) return NS_OK;

  nsCOMPtr innerURI = NS_GetInnermostURI(uri);
  if (!innerURI) return NS_OK;

  // only https applications can use offline APIs.
  if (!innerURI->SchemeIs("https")) {
    return NS_OK;
  }

  nsAutoCString domain;
  nsresult rv = innerURI->GetAsciiHost(domain);
  NS_ENSURE_SUCCESS(rv, rv);

  if (nsOfflineCacheUpdateService::AllowedDomains()->Contains(domain)) {
    *aAllowed = true;
    return NS_OK;
  }

  nsCOMPtr permissionManager =
      components::PermissionManager::Service();
  if (!permissionManager) {
    return NS_OK;
  }

  uint32_t perm;
  const nsLiteralCString permName = pinned ? "pin-app"_ns : "offline-app"_ns;
  permissionManager->TestExactPermissionFromPrincipal(aPrincipal, permName,
                                                      &perm);

  if (perm == nsIPermissionManager::ALLOW_ACTION ||
      perm == nsIOfflineCacheUpdateService::ALLOW_NO_WARN) {
    *aAllowed = true;
  }

  return NS_OK;
}

Minimal test - lines (126, 179)

path: .spaces[3].metrics.cognitive.average
old: 0.75
new: 9.0

path: .spaces[3].metrics.cognitive.sum
old: 3.0
new: 9.0

path: .spaces[3].metrics.cyclomatic.average
old: 1.4
new: 9.0

path: .spaces[3].metrics.cyclomatic.sum
old: 7.0
new: 9.0

path: .spaces[3].metrics.mi.mi_visual_studio
old: 45.79053785724141
new: 39.45877221467855

path: .spaces[3].metrics.mi.mi_original
old: 78.3018197358828
new: 67.47450048710031

path: .spaces[3].metrics.mi.mi_sei
old: 62.98291018427097
new: 40.41504838432542

path: .spaces[3].metrics.nargs.average
old: 0.25
new: 4.0

path: .spaces[3].metrics.nargs.sum
old: 1.0
new: 4.0

path: .spaces[3].metrics.nom.functions
old: 4.0
new: 1.0

path: .spaces[3].metrics.nom.total
old: 4.0
new: 1.0

path: .spaces[3].metrics.halstead.volume
old: 626.8335845403158
new: 1192.0782048501403

path: .spaces[3].metrics.halstead.bugs
old: 0.1427259405467272
new: 0.2473173734502071

path: .spaces[3].metrics.halstead.effort
old: 8860.051627637156
new: 20209.88398455238

path: .spaces[3].metrics.halstead.N2
old: 49.0
new: 81.0

path: .spaces[3].metrics.halstead.n2
old: 26.0
new: 43.0

path: .spaces[3].metrics.halstead.time
old: 492.22509042428646
new: 1122.771332475132

path: .spaces[3].metrics.halstead.purity_ratio
old: 1.5454255692803094
new: 1.5342688282495114

path: .spaces[3].metrics.halstead.difficulty
old: 14.134615384615383
new: 16.953488372093023

path: .spaces[3].metrics.halstead.level
old: 0.07074829931972788
new: 0.05898491083676269

path: .spaces[3].metrics.halstead.estimated_program_length
old: 180.8147916057962
new: 308.3880344781518

path: .spaces[3].metrics.halstead.N1
old: 68.0
new: 120.0

path: .spaces[3].metrics.halstead.vocabulary
old: 41.0
new: 61.0

path: .spaces[3].metrics.halstead.length
old: 117.0
new: 201.0

path: .spaces[3].metrics.halstead.n1
old: 15.0
new: 18.0

path: .spaces[3].metrics.nexits.average
old: 0.5
new: 7.0

path: .spaces[3].metrics.nexits.sum
old: 2.0
new: 7.0

path: .spaces[3].metrics.loc.ploc
old: 30.0
new: 43.0

path: .spaces[3].metrics.loc.blank
old: 1.0
new: 8.0

path: .spaces[3].metrics.loc.cloc
old: 4.0
new: 3.0

path: .spaces[3].metrics.loc.sloc
old: 35.0
new: 54.0

path: .spaces[3].metrics.loc.lloc
old: 12.0
new: 25.0

Code

nsOfflineCachePendingUpdate::OnStateChange(nsIWebProgress* aWebProgress,
                                           nsIRequest* aRequest,
                                           uint32_t progressStateFlags,
                                           nsresult aStatus) {
  if (mDidReleaseThis) {
    return NS_OK;
  }
  nsCOMPtr updateDoc = do_QueryReferent(mDocument);
  if (!updateDoc) {
    // The document that scheduled this update has gone away,
    // we don't need to listen anymore.
    aWebProgress->RemoveProgressListener(this);
    MOZ_ASSERT(!mDidReleaseThis);
    mDidReleaseThis = true;
    NS_RELEASE_THIS();
    return NS_OK;
  }

  if (!(progressStateFlags & STATE_STOP)) {
    return NS_OK;
  }

  nsCOMPtr windowProxy;
  aWebProgress->GetDOMWindow(getter_AddRefs(windowProxy));
  if (!windowProxy) return NS_OK;

  auto* outerWindow = nsPIDOMWindowOuter::From(windowProxy);
  nsPIDOMWindowInner* innerWindow = outerWindow->GetCurrentInnerWindow();

  nsCOMPtr progressDoc = outerWindow->GetDoc();
  if (!progressDoc || progressDoc != updateDoc) {
    return NS_OK;
  }

  LOG(("nsOfflineCachePendingUpdate::OnStateChange [%p, doc=%p]", this,
       progressDoc.get()));

  // Only schedule the update if the document loaded successfully
  if (NS_SUCCEEDED(aStatus)) {
    nsCOMPtr update;
    mService->Schedule(mManifestURI, mDocumentURI, mLoadingPrincipal, updateDoc,
                       innerWindow, nullptr, getter_AddRefs(update));
    if (mDidReleaseThis) {
      return NS_OK;
    }
  }

  aWebProgress->RemoveProgressListener(this);
  MOZ_ASSERT(!mDidReleaseThis);
  mDidReleaseThis = true;
  NS_RELEASE_THIS();

  return NS_OK;
}

Minimal test - lines (291, 316)

path: .spaces[14].metrics.halstead.difficulty
old: 7.857142857142857
new: 11.2

path: .spaces[14].metrics.halstead.purity_ratio
old: 2.404384677475562
new: 1.946695988126816

path: .spaces[14].metrics.halstead.volume
old: 100.07820003461548
new: 562.3214567196417

path: .spaces[14].metrics.halstead.N2
old: 10.0
new: 48.0

path: .spaces[14].metrics.halstead.n1
old: 11.0
new: 14.0

path: .spaces[14].metrics.halstead.n2
old: 7.0
new: 30.0

path: .spaces[14].metrics.halstead.bugs
old: 0.028397591141375755
new: 0.11367907487840216

path: .spaces[14].metrics.halstead.vocabulary
old: 18.0
new: 44.0

path: .spaces[14].metrics.halstead.N1
old: 14.0
new: 55.0

path: .spaces[14].metrics.halstead.time
old: 43.68492858653851
new: 349.8889064033326

path: .spaces[14].metrics.halstead.length
old: 24.0
new: 103.0

path: .spaces[14].metrics.halstead.estimated_program_length
old: 57.70523225941349
new: 200.50968677706203

path: .spaces[14].metrics.halstead.effort
old: 786.3287145576932
new: 6298.000315259987

path: .spaces[14].metrics.halstead.level
old: 0.1272727272727273
new: 0.08928571428571429

path: .spaces[14].metrics.nargs.average
old: 0.0
new: 4.0

path: .spaces[14].metrics.nargs.sum
old: 0.0
new: 4.0

path: .spaces[14].metrics.mi.mi_visual_studio
old: 72.72577869593864
new: 49.743890632914145

path: .spaces[14].metrics.mi.mi_sei
old: 103.81608352809806
new: 67.94806203418798

path: .spaces[14].metrics.mi.mi_original
old: 124.36108157005508
new: 85.06205298228318

path: .spaces[14].metrics.loc.lloc
old: 1.0
new: 6.0

path: .spaces[14].metrics.loc.sloc
old: 4.0
new: 26.0

path: .spaces[14].metrics.loc.cloc
old: 0.0
new: 2.0

path: .spaces[14].metrics.loc.ploc
old: 4.0
new: 19.0

path: .spaces[14].metrics.loc.blank
old: 0.0
new: 5.0

Code

nsOfflineCacheUpdateService::ScheduleOnDocumentStop(
    nsIURI* aManifestURI, nsIURI* aDocumentURI, nsIPrincipal* aLoadingPrincipal,
    Document* aDocument) {
  LOG(
      ("nsOfflineCacheUpdateService::ScheduleOnDocumentStop [%p, "
       "manifestURI=%p, documentURI=%p doc=%p]",
       this, aManifestURI, aDocumentURI, aDocument));

  nsCOMPtr progress =
      do_QueryInterface(aDocument->GetContainer());
  NS_ENSURE_TRUE(progress, NS_ERROR_INVALID_ARG);

  // Proceed with cache update
  RefPtr update = new nsOfflineCachePendingUpdate(
      this, aManifestURI, aDocumentURI, aLoadingPrincipal, aDocument);
  NS_ENSURE_TRUE(update, NS_ERROR_OUT_OF_MEMORY);

  nsresult rv = progress->AddProgressListener(
      update, nsIWebProgress::NOTIFY_STATE_DOCUMENT);
  NS_ENSURE_SUCCESS(rv, rv);

  // The update will release when it has scheduled itself.
  Unused << update.forget();

  return NS_OK;
}

Minimal test - lines (464, 469)

path: .spaces[22].metrics.mi.mi_visual_studio
old: 72.72577869593864
new: 67.19969561818925

path: .spaces[22].metrics.mi.mi_original
old: 124.36108157005508
new: 114.91147950710362

path: .spaces[22].metrics.mi.mi_sei
old: 103.81608352809806
new: 90.18318949350387

path: .spaces[22].metrics.halstead.difficulty
old: 7.857142857142857
new: 5.541666666666667

path: .spaces[22].metrics.halstead.bugs
old: 0.028397591141375755
new: 0.03255464627332205

path: .spaces[22].metrics.halstead.time
old: 43.68492858653851
new: 53.62025169168489

path: .spaces[22].metrics.halstead.n1
old: 11.0
new: 7.0

path: .spaces[22].metrics.halstead.vocabulary
old: 18.0
new: 19.0

path: .spaces[22].metrics.halstead.length
old: 24.0
new: 41.0

path: .spaces[22].metrics.halstead.purity_ratio
old: 2.404384677475562
new: 1.5285618161721244

path: .spaces[22].metrics.halstead.level
old: 0.1272727272727273
new: 0.1804511278195489

path: .spaces[22].metrics.halstead.effort
old: 786.3287145576932
new: 965.164530450328

path: .spaces[22].metrics.halstead.N2
old: 10.0
new: 19.0

path: .spaces[22].metrics.halstead.N1
old: 14.0
new: 22.0

path: .spaces[22].metrics.halstead.volume
old: 100.07820003461548
new: 174.165028051187

path: .spaces[22].metrics.halstead.n2
old: 7.0
new: 12.0

path: .spaces[22].metrics.halstead.estimated_program_length
old: 57.70523225941349
new: 62.6710344630571

path: .spaces[22].metrics.loc.sloc
old: 4.0
new: 6.0

path: .spaces[22].metrics.loc.ploc
old: 4.0
new: 6.0

path: .spaces[22].metrics.nargs.sum
old: 0.0
new: 5.0

path: .spaces[22].metrics.nargs.average
old: 0.0
new: 5.0

Code

nsOfflineCacheUpdateService::ScheduleAppUpdate(
    nsIURI* aManifestURI, nsIURI* aDocumentURI, nsIPrincipal* aLoadingPrincipal,
    nsIFile* aProfileDir, nsIOfflineCacheUpdate** aUpdate) {
  return Schedule(aManifestURI, aDocumentURI, aLoadingPrincipal, nullptr,
                  nullptr, aProfileDir, aUpdate);
}

Minimal test - lines (267, 276)

path: .spaces[12].metrics.loc.sloc
old: 3.0
new: 10.0

path: .spaces[12].metrics.loc.ploc
old: 3.0
new: 8.0

path: .spaces[12].metrics.loc.cloc
old: 0.0
new: 1.0

path: .spaces[12].metrics.loc.blank
old: 0.0
new: 1.0

path: .spaces[12].metrics.loc.lloc
old: 1.0
new: 3.0

path: .spaces[12].metrics.mi.mi_original
old: 132.43687749961728
new: 108.1169347486444

path: .spaces[12].metrics.mi.mi_sei
old: 115.46699426690871
new: 104.00934544372608

path: .spaces[12].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 63.2262776307862

path: .spaces[12].metrics.halstead.effort
old: 272.43023996768716
new: 940.0193606380012

path: .spaces[12].metrics.halstead.n1
old: 7.0
new: 12.0

path: .spaces[12].metrics.halstead.n2
old: 4.0
new: 8.0

path: .spaces[12].metrics.halstead.difficulty
old: 5.25
new: 7.5

path: .spaces[12].metrics.halstead.N1
old: 9.0
new: 19.0

path: .spaces[12].metrics.halstead.level
old: 0.1904761904761905
new: 0.13333333333333333

path: .spaces[12].metrics.halstead.time
old: 15.135013331538175
new: 52.223297813222295

path: .spaces[12].metrics.halstead.bugs
old: 0.01400819850161732
new: 0.03198673734700207

path: .spaces[12].metrics.halstead.N2
old: 6.0
new: 10.0

path: .spaces[12].metrics.halstead.estimated_program_length
old: 27.651484454403228
new: 67.01955000865388

path: .spaces[12].metrics.halstead.length
old: 15.0
new: 29.0

path: .spaces[12].metrics.halstead.purity_ratio
old: 1.8434322969602153
new: 2.3110189658156512

path: .spaces[12].metrics.halstead.volume
old: 51.89147427955946
new: 125.33591475173353

path: .spaces[12].metrics.halstead.vocabulary
old: 11.0
new: 20.0

path: .spaces[12].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[12].metrics.cognitive.sum
old: 0.0
new: 1.0

path: .spaces[12].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[12].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[12].metrics.nargs.average
old: 1.0
new: 0.0

path: .spaces[12].metrics.nargs.sum
old: 1.0
new: 0.0

Code

nsOfflineCacheUpdateService* nsOfflineCacheUpdateService::EnsureService() {
  if (!gOfflineCacheUpdateService) {
    // Make the service manager hold a long-lived reference to the service
    nsCOMPtr service =
        components::OfflineCacheUpdate::Service();
    Unused << service;
  }

  return gOfflineCacheUpdateService;
}

Minimal test - lines (230, 236)

path: .spaces[9].metrics.nargs.average
old: 2.0
new: 0.0

path: .spaces[9].metrics.nargs.sum
old: 2.0
new: 0.0

path: .spaces[9].metrics.mi.mi_sei
old: 102.7934374179506
new: 92.63477674940373

path: .spaces[9].metrics.mi.mi_original
old: 123.65223730209578
new: 116.6107903014273

path: .spaces[9].metrics.mi.mi_visual_studio
old: 72.31124988426654
new: 68.19344462071771

path: .spaces[9].metrics.nexits.sum
old: 1.0
new: 0.0

path: .spaces[9].metrics.nexits.average
old: 1.0
new: 0.0

path: .spaces[9].metrics.halstead.N1
old: 15.0
new: 13.0

path: .spaces[9].metrics.halstead.N2
old: 12.0
new: 8.0

path: .spaces[9].metrics.halstead.time
old: 42.47927513443585
new: 27.62994989545349

path: .spaces[9].metrics.halstead.purity_ratio
old: 2.2869854059946086
new: 1.6956971654493718

path: .spaces[9].metrics.halstead.estimated_program_length
old: 61.74860596185444
new: 35.60964047443681

path: .spaces[9].metrics.halstead.effort
old: 764.6269524198453
new: 497.3390981181628

path: .spaces[9].metrics.halstead.n1
old: 10.0
new: 8.0

path: .spaces[9].metrics.halstead.volume
old: 114.6940428629768
new: 77.70923408096293

path: .spaces[9].metrics.halstead.vocabulary
old: 19.0
new: 13.0

path: .spaces[9].metrics.halstead.bugs
old: 0.027872664048771673
new: 0.02092411734427081

path: .spaces[9].metrics.halstead.level
old: 0.15
new: 0.15625

path: .spaces[9].metrics.halstead.n2
old: 9.0
new: 5.0

path: .spaces[9].metrics.halstead.difficulty
old: 6.666666666666667
new: 6.4

path: .spaces[9].metrics.halstead.length
old: 27.0
new: 21.0

path: .spaces[9].metrics.loc.lloc
old: 1.0
new: 4.0

path: .spaces[9].metrics.loc.ploc
old: 4.0
new: 6.0

path: .spaces[9].metrics.loc.sloc
old: 4.0
new: 7.0

path: .spaces[9].metrics.loc.blank
old: 0.0
new: 1.0

Code

nsOfflineCacheUpdateService::~nsOfflineCacheUpdateService() {
  MOZ_ASSERT(gOfflineCacheUpdateService == this);
  gOfflineCacheUpdateService = nullptr;

  delete mAllowedDomains;
  mAllowedDomains = nullptr;
}

Minimal test - lines (592, 646)

path: .spaces[29].metrics.halstead.effort
old: 666.0791492653966
new: 14320.720051344426

path: .spaces[29].metrics.halstead.bugs
old: 0.025423146759899307
new: 0.1965721473697822

path: .spaces[29].metrics.halstead.volume
old: 92.5109929535273
new: 1124.7323510644935

path: .spaces[29].metrics.halstead.purity_ratio
old: 1.4243856189774724
new: 1.520483038470406

path: .spaces[29].metrics.halstead.level
old: 0.1388888888888889
new: 0.07853881278538813

path: .spaces[29].metrics.halstead.n2
old: 5.0
new: 43.0

path: .spaces[29].metrics.halstead.difficulty
old: 7.2
new: 12.732558139534884

path: .spaces[29].metrics.halstead.time
old: 37.00439718141092
new: 795.5955584080236

path: .spaces[29].metrics.halstead.N1
old: 16.0
new: 119.0

path: .spaces[29].metrics.halstead.N2
old: 9.0
new: 73.0

path: .spaces[29].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 291.93274338631795

path: .spaces[29].metrics.halstead.vocabulary
old: 13.0
new: 58.0

path: .spaces[29].metrics.halstead.length
old: 25.0
new: 192.0

path: .spaces[29].metrics.halstead.n1
old: 8.0
new: 15.0

path: .spaces[29].metrics.loc.cloc
old: 0.0
new: 2.0

path: .spaces[29].metrics.loc.lloc
old: 2.0
new: 22.0

path: .spaces[29].metrics.loc.ploc
old: 6.0
new: 41.0

path: .spaces[29].metrics.loc.blank
old: 0.0
new: 12.0

path: .spaces[29].metrics.loc.sloc
old: 6.0
new: 55.0

path: .spaces[29].metrics.cyclomatic.average
old: 2.0
new: 9.0

path: .spaces[29].metrics.cyclomatic.sum
old: 2.0
new: 9.0

path: .spaces[29].metrics.mi.mi_original
old: 117.97139370147602
new: 67.4796404431577

path: .spaces[29].metrics.mi.mi_sei
old: 94.69953238667514
new: 37.12513327017156

path: .spaces[29].metrics.mi.mi_visual_studio
old: 68.98911912367018
new: 39.461778036934334

path: .spaces[29].metrics.nexits.average
old: 0.0
new: 8.0

path: .spaces[29].metrics.nexits.sum
old: 0.0
new: 8.0

path: .spaces[29].metrics.cognitive.average
old: 1.0
new: 11.0

path: .spaces[29].metrics.cognitive.sum
old: 1.0
new: 11.0

Code

nsOfflineCacheUpdateService::AllowOfflineApp(nsIPrincipal* aPrincipal) {
  nsresult rv;

  if (!StaticPrefs::browser_cache_offline_enable()) {
    return NS_ERROR_NOT_AVAILABLE;
  }

  if (!StaticPrefs::browser_cache_offline_storage_enable()) {
    return NS_ERROR_NOT_AVAILABLE;
  }

  nsCOMPtr uri;
  // Casting to BasePrincipal, as we can't get InnerMost URI otherwise
  auto* basePrincipal = BasePrincipal::Cast(aPrincipal);
  basePrincipal->GetURI(getter_AddRefs(uri));

  if (!uri) {
    return NS_ERROR_NOT_AVAILABLE;
  }

  nsCOMPtr innerURI = NS_GetInnermostURI(uri);
  if (!innerURI) {
    return NS_ERROR_NOT_AVAILABLE;
  }

  // if http then we should prevent this cache
  if (innerURI->SchemeIs("http")) {
    return NS_ERROR_NOT_AVAILABLE;
  }

  if (GeckoProcessType_Default != XRE_GetProcessType()) {
    ContentChild* child = ContentChild::GetSingleton();

    if (!child->SendSetOfflinePermission(IPC::Principal(aPrincipal))) {
      return NS_ERROR_FAILURE;
    }

    nsAutoCString domain;
    rv = aPrincipal->GetBaseDomain(domain);
    NS_ENSURE_SUCCESS(rv, rv);

    nsOfflineCacheUpdateService::AllowedDomains()->PutEntry(domain);
  } else {
    nsCOMPtr permissionManager =
        components::PermissionManager::Service();
    if (!permissionManager) return NS_ERROR_NOT_AVAILABLE;

    rv = permissionManager->AddFromPrincipal(
        aPrincipal, "offline-app"_ns, nsIPermissionManager::ALLOW_ACTION,
        nsIPermissionManager::EXPIRE_NEVER, 0);
    NS_ENSURE_SUCCESS(rv, rv);
  }

  return NS_OK;
}

Minimal test - lines (78, 105)

path: .spaces[1].metrics.cognitive.sum
old: 1.0
new: 0.0

path: .spaces[1].metrics.cognitive.average
old: 1.0
new: 0.0

path: .spaces[1].metrics.nom.total
old: 1.0
new: 2.0

path: .spaces[1].metrics.nom.functions
old: 1.0
new: 2.0

path: .spaces[1].metrics.loc.ploc
old: 67.0
new: 25.0

path: .spaces[1].metrics.loc.sloc
old: 67.0
new: 28.0

path: .spaces[1].metrics.loc.lloc
old: 64.0
new: 1.0

path: .spaces[1].metrics.loc.blank
old: 0.0
new: 3.0

path: .spaces[1].metrics.cyclomatic.sum
old: 32.0
new: 3.0

path: .spaces[1].metrics.cyclomatic.average
old: 32.0
new: 1.0

path: .spaces[1].metrics.mi.mi_original
old: 57.35166264793436
new: 84.21590702475855

path: .spaces[1].metrics.mi.mi_sei
old: 10.298342797841713
new: 46.10247901478586

path: .spaces[1].metrics.mi.mi_visual_studio
old: 33.53898400463998
new: 49.24906843553131

path: .spaces[1].metrics.halstead.N1
old: 192.0
new: 48.0

path: .spaces[1].metrics.halstead.difficulty
old: 5.884615384615385
new: 9.9

path: .spaces[1].metrics.halstead.length
old: 260.0
new: 93.0

path: .spaces[1].metrics.halstead.purity_ratio
old: 1.2498161167550674
new: 1.6575285220363267

path: .spaces[1].metrics.halstead.time
old: 504.1126736928454
new: 264.44166382377426

path: .spaces[1].metrics.halstead.estimated_program_length
old: 324.95219035631754
new: 154.1501525493784

path: .spaces[1].metrics.halstead.effort
old: 9074.028126471218
new: 4759.949948827937

path: .spaces[1].metrics.halstead.level
old: 0.1699346405228758
new: 0.101010101010101

path: .spaces[1].metrics.halstead.N2
old: 68.0
new: 45.0

path: .spaces[1].metrics.halstead.bugs
old: 0.14501474369831066
new: 0.09432214516755982

path: .spaces[1].metrics.halstead.n2
old: 52.0
new: 25.0

path: .spaces[1].metrics.halstead.n1
old: 9.0
new: 11.0

path: .spaces[1].metrics.halstead.vocabulary
old: 61.0
new: 36.0

path: .spaces[1].metrics.halstead.volume
old: 1541.9917077663506
new: 480.80302513413505

path: .spaces[1].metrics.nargs.average
old: 1.0
new: 2.5

path: .spaces[1].metrics.nargs.sum
old: 1.0
new: 5.0

path: .spaces[1].metrics.nexits.average
old: 30.0
new: 0.0

path: .spaces[1].metrics.nexits.sum
old: 30.0
new: 0.0

Code

class nsOfflineCachePendingUpdate final : public nsIWebProgressListener,
                                          public nsSupportsWeakReference {
 public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIWEBPROGRESSLISTENER

  nsOfflineCachePendingUpdate(nsOfflineCacheUpdateService* aService,
                              nsIURI* aManifestURI, nsIURI* aDocumentURI,
                              nsIPrincipal* aLoadingPrincipal,
                              Document* aDocument)
      : mService(aService),
        mManifestURI(aManifestURI),
        mDocumentURI(aDocumentURI),
        mLoadingPrincipal(aLoadingPrincipal),
        mDidReleaseThis(false) {
    mDocument = do_GetWeakReference(aDocument);
  }

 private:
  ~nsOfflineCachePendingUpdate() {}

  RefPtr mService;
  nsCOMPtr mManifestURI;
  nsCOMPtr mDocumentURI;
  nsCOMPtr mLoadingPrincipal;
  nsWeakPtr mDocument;
  bool mDidReleaseThis;
};

Minimal test - lines (471, 490)

path: .spaces[23].metrics.nargs.average
old: 0.0
new: 3.0

path: .spaces[23].metrics.nargs.sum
old: 0.0
new: 3.0

path: .spaces[23].metrics.mi.mi_sei
old: 105.12994940155043
new: 73.04831028452162

path: .spaces[23].metrics.mi.mi_original
old: 125.27178399587255
new: 91.1969254639455

path: .spaces[23].metrics.mi.mi_visual_studio
old: 73.25835321396058
new: 53.33153535903246

path: .spaces[23].metrics.loc.lloc
old: 1.0
new: 7.0

path: .spaces[23].metrics.loc.ploc
old: 4.0
new: 14.0

path: .spaces[23].metrics.loc.blank
old: 0.0
new: 5.0

path: .spaces[23].metrics.loc.cloc
old: 0.0
new: 1.0

path: .spaces[23].metrics.loc.sloc
old: 4.0
new: 20.0

path: .spaces[23].metrics.cognitive.sum
old: 0.0
new: 1.0

path: .spaces[23].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[23].metrics.nexits.sum
old: 1.0
new: 2.0

path: .spaces[23].metrics.nexits.average
old: 1.0
new: 2.0

path: .spaces[23].metrics.halstead.effort
old: 630.0
new: 4118.8142626068075

path: .spaces[23].metrics.halstead.n1
old: 10.0
new: 14.0

path: .spaces[23].metrics.halstead.n2
old: 6.0
new: 21.0

path: .spaces[23].metrics.halstead.N2
old: 9.0
new: 33.0

path: .spaces[23].metrics.halstead.level
old: 0.13333333333333333
new: 0.09090909090909093

path: .spaces[23].metrics.halstead.length
old: 21.0
new: 73.0

path: .spaces[23].metrics.halstead.difficulty
old: 7.5
new: 11.0

path: .spaces[23].metrics.halstead.estimated_program_length
old: 48.72905595320056
new: 145.54163478716043

path: .spaces[23].metrics.halstead.vocabulary
old: 16.0
new: 35.0

path: .spaces[23].metrics.halstead.N1
old: 12.0
new: 40.0

path: .spaces[23].metrics.halstead.time
old: 35.0
new: 228.82301458926707

path: .spaces[23].metrics.halstead.volume
old: 84.0
new: 374.43766023698254

path: .spaces[23].metrics.halstead.bugs
old: 0.024496598167132053
new: 0.08564990466735453

path: .spaces[23].metrics.halstead.purity_ratio
old: 2.3204312358666934
new: 1.9937210244816497

path: .spaces[23].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[23].metrics.cyclomatic.average
old: 1.0
new: 2.0

Code

NS_IMETHODIMP nsOfflineCacheUpdateService::CheckForUpdate(
    nsIURI* aManifestURI, nsIPrincipal* aLoadingPrincipal,
    nsIObserver* aObserver) {
  if (GeckoProcessType_Default != XRE_GetProcessType()) {
    // Not intended to support this on child processes
    return NS_ERROR_NOT_IMPLEMENTED;
  }

  nsCOMPtr update = new OfflineCacheUpdateGlue();

  nsresult rv;

  rv = update->InitForUpdateCheck(aManifestURI, aLoadingPrincipal, aObserver);
  NS_ENSURE_SUCCESS(rv, rv);

  rv = update->Schedule();
  NS_ENSURE_SUCCESS(rv, rv);

  return NS_OK;
}

Minimal test - lines (200, 205)

path: .spaces[6].metrics.loc.sloc
old: 3.0
new: 6.0

path: .spaces[6].metrics.loc.ploc
old: 3.0
new: 6.0

path: .spaces[6].metrics.loc.lloc
old: 1.0
new: 2.0

path: .spaces[6].metrics.halstead.n2
old: 7.0
new: 9.0

path: .spaces[6].metrics.halstead.level
old: 0.2916666666666667
new: 0.25

path: .spaces[6].metrics.halstead.N2
old: 8.0
new: 9.0

path: .spaces[6].metrics.halstead.difficulty
old: 3.4285714285714284
new: 4.0

path: .spaces[6].metrics.halstead.estimated_program_length
old: 35.161259458730164
new: 52.529325012980806

path: .spaces[6].metrics.halstead.time
old: 11.982376230171155
new: 19.074826592501584

path: .spaces[6].metrics.halstead.bugs
old: 0.011988247942334716
new: 0.016344343499188157

path: .spaces[6].metrics.halstead.vocabulary
old: 13.0
new: 17.0

path: .spaces[6].metrics.halstead.effort
old: 215.6827721430808
new: 343.3468786650285

path: .spaces[6].metrics.halstead.purity_ratio
old: 2.068309379925304
new: 2.5013964291895623

path: .spaces[6].metrics.halstead.n1
old: 6.0
new: 8.0

path: .spaces[6].metrics.halstead.length
old: 17.0
new: 21.0

path: .spaces[6].metrics.halstead.volume
old: 62.907475208398566
new: 85.83671966625712

path: .spaces[6].metrics.halstead.N1
old: 9.0
new: 12.0

path: .spaces[6].metrics.nargs.sum
old: 1.0
new: 3.0

path: .spaces[6].metrics.nargs.average
old: 1.0
new: 3.0

path: .spaces[6].metrics.mi.mi_sei
old: 114.02277779900194
new: 95.49128769050486

path: .spaces[6].metrics.mi.mi_visual_studio
old: 76.86305434314004
new: 69.35132912660247

path: .spaces[6].metrics.mi.mi_original
old: 131.43582292676948
new: 118.5907728064902

Code

nsOfflineCachePendingUpdate::OnSecurityChange(nsIWebProgress* aWebProgress,
                                              nsIRequest* aRequest,
                                              uint32_t aState) {
  MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
  return NS_OK;
}

Minimal test - lines (454, 461)

path: .spaces[21].metrics.loc.sloc
old: 4.0
new: 8.0

path: .spaces[21].metrics.loc.ploc
old: 4.0
new: 8.0

path: .spaces[21].metrics.mi.mi_original
old: 126.19700005047748
new: 109.79401249948933

path: .spaces[21].metrics.mi.mi_sei
old: 106.4647540152798
new: 82.80024521970583

path: .spaces[21].metrics.mi.mi_visual_studio
old: 73.79941523419735
new: 64.20702485350253

path: .spaces[21].metrics.nargs.average
old: 2.0
new: 5.0

path: .spaces[21].metrics.nargs.sum
old: 2.0
new: 5.0

path: .spaces[21].metrics.halstead.N2
old: 8.0
new: 20.0

path: .spaces[21].metrics.halstead.bugs
old: 0.01957356884634842
new: 0.0338637731485916

path: .spaces[21].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 67.75720079023742

path: .spaces[21].metrics.halstead.vocabulary
old: 13.0
new: 20.0

path: .spaces[21].metrics.halstead.level
old: 0.15625
new: 0.1857142857142857

path: .spaces[21].metrics.halstead.purity_ratio
old: 1.8741916039177269
new: 1.539936381596305

path: .spaces[21].metrics.halstead.length
old: 19.0
new: 44.0

path: .spaces[21].metrics.halstead.volume
old: 70.30835464468075
new: 190.16483617504392

path: .spaces[21].metrics.halstead.time
old: 24.99852609588649
new: 56.88691680450033

path: .spaces[21].metrics.halstead.n1
old: 8.0
new: 7.0

path: .spaces[21].metrics.halstead.effort
old: 449.9734697259568
new: 1023.964502481006

path: .spaces[21].metrics.halstead.N1
old: 11.0
new: 24.0

path: .spaces[21].metrics.halstead.difficulty
old: 6.4
new: 5.384615384615385

path: .spaces[21].metrics.halstead.n2
old: 5.0
new: 13.0

Code

nsOfflineCacheUpdateService::ScheduleUpdate(nsIURI* aManifestURI,
                                            nsIURI* aDocumentURI,
                                            nsIPrincipal* aLoadingPrincipal,
                                            mozIDOMWindow* aWindow,
                                            nsIOfflineCacheUpdate** aUpdate) {
  return Schedule(aManifestURI, aDocumentURI, aLoadingPrincipal, nullptr,
                  nsPIDOMWindowInner::From(aWindow), nullptr, aUpdate);
}

Minimal test - lines (45, 49)

path: .spaces[0].metrics.mi.mi_visual_studio
old: 89.84306917940205
new: 70.47966131662542

path: .spaces[0].metrics.mi.mi_original
old: 153.6316482967775
new: 120.52022085142949

path: .spaces[0].metrics.mi.mi_sei
old: 146.04458498874996
new: 98.37671267599616

path: .spaces[0].metrics.halstead.N2
old: 2.0
new: 8.0

path: .spaces[0].metrics.halstead.estimated_program_length
old: 17.509775004326936
new: 51.01955000865387

path: .spaces[0].metrics.halstead.difficulty
old: 3.0
new: 12.0

path: .spaces[0].metrics.halstead.n2
old: 2.0
new: 4.0

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.9455305560363263
new: 2.0407820003461548

path: .spaces[0].metrics.halstead.time
old: 4.5
new: 66.66666666666667

path: .spaces[0].metrics.halstead.level
old: 0.3333333333333333
new: 0.08333333333333333

path: .spaces[0].metrics.halstead.vocabulary
old: 8.0
new: 16.0

path: .spaces[0].metrics.halstead.volume
old: 27.0
new: 100.0

path: .spaces[0].metrics.halstead.length
old: 9.0
new: 25.0

path: .spaces[0].metrics.halstead.effort
old: 81.0
new: 1200.0

path: .spaces[0].metrics.halstead.n1
old: 6.0
new: 12.0

path: .spaces[0].metrics.halstead.bugs
old: 0.006240251469155711
new: 0.03764144115524113

path: .spaces[0].metrics.halstead.N1
old: 7.0
new: 17.0

path: .spaces[0].metrics.loc.lloc
old: 1.0
new: 3.0

path: .spaces[0].metrics.loc.sloc
old: 1.0
new: 5.0

path: .spaces[0].metrics.loc.blank
old: 0.0
new: 1.0

path: .spaces[0].metrics.loc.ploc
old: 1.0
new: 4.0

path: .spaces[0].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[0].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[0].metrics.cognitive.sum
old: 0.0
new: 1.0

Code

nsTHashtable* nsOfflineCacheUpdateService::AllowedDomains() {
  if (!mAllowedDomains) mAllowedDomains = new nsTHashtable();

  return mAllowedDomains;
}

Minimal test - lines (278, 288)

path: .spaces[13].metrics.loc.blank
old: 0.0
new: 3.0

path: .spaces[13].metrics.loc.ploc
old: 3.0
new: 8.0

path: .spaces[13].metrics.loc.sloc
old: 3.0
new: 11.0

path: .spaces[13].metrics.loc.lloc
old: 1.0
new: 5.0

path: .spaces[13].metrics.mi.mi_original
old: 131.43582292676948
new: 106.13100883211833

path: .spaces[13].metrics.mi.mi_sei
old: 114.02277779900194
new: 77.5156479940316

path: .spaces[13].metrics.mi.mi_visual_studio
old: 76.86305434314004
new: 62.06491744568322

path: .spaces[13].metrics.halstead.n2
old: 5.0
new: 11.0

path: .spaces[13].metrics.halstead.vocabulary
old: 13.0
new: 20.0

path: .spaces[13].metrics.halstead.N2
old: 7.0
new: 14.0

path: .spaces[13].metrics.halstead.effort
old: 352.28186116703193
new: 816.8444099337116

path: .spaces[13].metrics.halstead.purity_ratio
old: 2.0946847337904004
new: 2.017668873272457

path: .spaces[13].metrics.halstead.bugs
old: 0.016626682361242505
new: 0.02912761816732554

path: .spaces[13].metrics.halstead.N1
old: 10.0
new: 19.0

path: .spaces[13].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 66.58307281799108

path: .spaces[13].metrics.halstead.time
old: 19.571214509279553
new: 45.38024499631731

path: .spaces[13].metrics.halstead.volume
old: 62.907475208398566
new: 142.62362713128297

path: .spaces[13].metrics.halstead.level
old: 0.17857142857142858
new: 0.1746031746031746

path: .spaces[13].metrics.halstead.n1
old: 8.0
new: 9.0

path: .spaces[13].metrics.halstead.difficulty
old: 5.6
new: 5.7272727272727275

path: .spaces[13].metrics.halstead.length
old: 17.0
new: 33.0

Code

nsresult nsOfflineCacheUpdateService::ScheduleUpdate(
    nsOfflineCacheUpdate* aUpdate) {
  LOG(("nsOfflineCacheUpdateService::Schedule [%p, update=%p]", this, aUpdate));

  aUpdate->SetOwner(this);

  mUpdates.AppendElement(aUpdate);
  ProcessNextUpdate();

  return NS_OK;
}

Minimal test - lines (225, 228)

path: .spaces[8].metrics.nexits.sum
old: 1.0
new: 0.0

path: .spaces[8].metrics.nexits.average
old: 1.0
new: 0.0

path: .spaces[8].metrics.mi.mi_sei
old: 114.02277779900194
new: 107.53701147893022

path: .spaces[8].metrics.mi.mi_visual_studio
old: 76.86305434314004
new: 74.23405396973165

path: .spaces[8].metrics.mi.mi_original
old: 131.43582292676948
new: 126.9402322882411

path: .spaces[8].metrics.loc.ploc
old: 3.0
new: 4.0

path: .spaces[8].metrics.loc.sloc
old: 3.0
new: 4.0

path: .spaces[8].metrics.nargs.average
old: 1.0
new: 0.0

path: .spaces[8].metrics.nargs.sum
old: 1.0
new: 0.0

path: .spaces[8].metrics.halstead.vocabulary
old: 13.0
new: 12.0

path: .spaces[8].metrics.halstead.n2
old: 5.0
new: 6.0

path: .spaces[8].metrics.halstead.level
old: 0.17857142857142858
new: 0.2857142857142857

path: .spaces[8].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 31.019550008653873

path: .spaces[8].metrics.halstead.difficulty
old: 5.6
new: 3.5

path: .spaces[8].metrics.halstead.bugs
old: 0.016626682361242505
new: 0.011899986460347829

path: .spaces[8].metrics.halstead.purity_ratio
old: 2.0946847337904004
new: 1.8246794122737573

path: .spaces[8].metrics.halstead.volume
old: 62.907475208398566
new: 60.94436251225965

path: .spaces[8].metrics.halstead.effort
old: 352.28186116703193
new: 213.3052687929088

path: .spaces[8].metrics.halstead.n1
old: 8.0
new: 6.0

path: .spaces[8].metrics.halstead.time
old: 19.571214509279553
new: 11.850292710717154

Code

nsOfflineCacheUpdateService::nsOfflineCacheUpdateService()
    : mDisabled(false), mUpdateRunning(false) {
  MOZ_ASSERT(NS_IsMainThread());
}

Minimal test - lines (371, 382)

path: .spaces[18].metrics.cognitive.sum
old: 0.0
new: 2.0

path: .spaces[18].metrics.cognitive.average
old: 0.0
new: 2.0

path: .spaces[18].metrics.mi.mi_sei
old: 105.12994940155043
new: 72.06006432176225

path: .spaces[18].metrics.mi.mi_original
old: 125.27178399587255
new: 102.27891024290474

path: .spaces[18].metrics.mi.mi_visual_studio
old: 73.25835321396058
new: 59.812228212225

path: .spaces[18].metrics.loc.sloc
old: 4.0
new: 12.0

path: .spaces[18].metrics.loc.ploc
old: 4.0
new: 10.0

path: .spaces[18].metrics.loc.lloc
old: 1.0
new: 5.0

path: .spaces[18].metrics.loc.blank
old: 0.0
new: 2.0

path: .spaces[18].metrics.halstead.effort
old: 630.0
new: 2361.189788128185

path: .spaces[18].metrics.halstead.volume
old: 84.0
new: 218.26124091941205

path: .spaces[18].metrics.halstead.vocabulary
old: 16.0
new: 25.0

path: .spaces[18].metrics.halstead.n2
old: 6.0
new: 11.0

path: .spaces[18].metrics.halstead.estimated_program_length
old: 48.72905595320056
new: 91.35671671381672

path: .spaces[18].metrics.halstead.length
old: 21.0
new: 47.0

path: .spaces[18].metrics.halstead.n1
old: 10.0
new: 14.0

path: .spaces[18].metrics.halstead.bugs
old: 0.024496598167132053
new: 0.0591061506155739

path: .spaces[18].metrics.halstead.purity_ratio
old: 2.3204312358666934
new: 1.943759930081207

path: .spaces[18].metrics.halstead.N1
old: 12.0
new: 30.0

path: .spaces[18].metrics.halstead.N2
old: 9.0
new: 17.0

path: .spaces[18].metrics.halstead.difficulty
old: 7.5
new: 10.818181818181818

path: .spaces[18].metrics.halstead.level
old: 0.13333333333333333
new: 0.09243697478991596

path: .spaces[18].metrics.halstead.time
old: 35.0
new: 131.17721045156583

path: .spaces[18].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[18].metrics.cyclomatic.sum
old: 1.0
new: 2.0

Code

nsOfflineCacheUpdateService::GetUpdate(uint32_t aIndex,
                                       nsIOfflineCacheUpdate** aUpdate) {
  LOG(("nsOfflineCacheUpdateService::GetUpdate [%p, %d]", this, aIndex));

  if (aIndex < mUpdates.Length()) {
    NS_ADDREF(*aUpdate = mUpdates[aIndex]);
  } else {
    *aUpdate = nullptr;
  }

  return NS_OK;
}

Minimal test - lines (115, 123)

path: .spaces[2].metrics.mi.mi_sei
old: 5.20108586904589
new: 82.92067351609002

path: .spaces[2].metrics.mi.mi_original
old: 38.01236000610619
new: 109.87748703358766

path: .spaces[2].metrics.mi.mi_visual_studio
old: 22.229450295968533
new: 64.2558403705191

path: .spaces[2].metrics.nexits.sum
old: 7.0
new: 1.0

path: .spaces[2].metrics.nexits.average
old: 7.0
new: 1.0

path: .spaces[2].metrics.cyclomatic.average
old: 23.0
new: 1.0

path: .spaces[2].metrics.cyclomatic.sum
old: 23.0
new: 1.0

path: .spaces[2].metrics.nargs.average
old: 10.0
new: 6.0

path: .spaces[2].metrics.nargs.sum
old: 10.0
new: 6.0

path: .spaces[2].metrics.cognitive.average
old: 28.0
new: 0.0

path: .spaces[2].metrics.cognitive.sum
old: 28.0
new: 0.0

path: .spaces[2].metrics.loc.sloc
old: 167.0
new: 9.0

path: .spaces[2].metrics.loc.cloc
old: 17.0
new: 0.0

path: .spaces[2].metrics.loc.lloc
old: 58.0
new: 2.0

path: .spaces[2].metrics.loc.blank
old: 24.0
new: 0.0

path: .spaces[2].metrics.loc.ploc
old: 126.0
new: 9.0

path: .spaces[2].metrics.halstead.purity_ratio
old: 1.280721915671745
new: 2.2339850002884627

path: .spaces[2].metrics.halstead.n1
old: 36.0
new: 8.0

path: .spaces[2].metrics.halstead.N2
old: 317.0
new: 12.0

path: .spaces[2].metrics.halstead.bugs
old: 1.4026166833540883
new: 0.021517142732338488

path: .spaces[2].metrics.halstead.length
old: 760.0
new: 30.0

path: .spaces[2].metrics.halstead.difficulty
old: 49.61739130434783
new: 4.0

path: .spaces[2].metrics.halstead.vocabulary
old: 151.0
new: 20.0

path: .spaces[2].metrics.halstead.level
old: 0.02015422362425517
new: 0.25

path: .spaces[2].metrics.halstead.effort
old: 272954.57788145705
new: 518.6313713864835

path: .spaces[2].metrics.halstead.volume
old: 5501.18760188706
new: 129.65784284662087

path: .spaces[2].metrics.halstead.n2
old: 115.0
new: 12.0

path: .spaces[2].metrics.halstead.N1
old: 443.0
new: 18.0

path: .spaces[2].metrics.halstead.estimated_program_length
old: 973.3486559105264
new: 67.01955000865388

path: .spaces[2].metrics.halstead.time
old: 15164.143215636504
new: 28.81285396591575

Code

nsOfflineCachePendingUpdate::OnProgressChange(nsIWebProgress* aProgress,
                                              nsIRequest* aRequest,
                                              int32_t curSelfProgress,
                                              int32_t maxSelfProgress,
                                              int32_t curTotalProgress,
                                              int32_t maxTotalProgress) {
  MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
  return NS_OK;
}

Minimal test - lines (583, 589)

path: .spaces[28].metrics.loc.lloc
old: 43.0
new: 1.0

path: .spaces[28].metrics.loc.sloc
old: 131.0
new: 7.0

path: .spaces[28].metrics.loc.blank
old: 28.0
new: 0.0

path: .spaces[28].metrics.loc.cloc
old: 6.0
new: 0.0

path: .spaces[28].metrics.loc.ploc
old: 97.0
new: 7.0

path: .spaces[28].metrics.nexits.average
old: 2.3333333333333335
new: 1.0

path: .spaces[28].metrics.nexits.sum
old: 7.0
new: 1.0

path: .spaces[28].metrics.nargs.sum
old: 6.0
new: 2.0

path: .spaces[28].metrics.cognitive.average
old: 6.0
new: 0.0

path: .spaces[28].metrics.cognitive.sum
old: 18.0
new: 0.0

path: .spaces[28].metrics.halstead.level
old: 0.03340484216978241
new: 0.1390374331550802

path: .spaces[28].metrics.halstead.N1
old: 369.0
new: 20.0

path: .spaces[28].metrics.halstead.bugs
old: 0.8613087151410893
new: 0.03806121014103269

path: .spaces[28].metrics.halstead.n2
old: 109.0
new: 13.0

path: .spaces[28].metrics.halstead.vocabulary
old: 135.0
new: 24.0

path: .spaces[28].metrics.halstead.purity_ratio
old: 1.3870056839876663
new: 2.3286341659687695

path: .spaces[28].metrics.halstead.effort
old: 131346.9959795381
new: 1220.1290593265262

path: .spaces[28].metrics.halstead.difficulty
old: 29.93577981651376
new: 7.1923076923076925

path: .spaces[28].metrics.halstead.n1
old: 26.0
new: 11.0

path: .spaces[28].metrics.halstead.time
old: 7297.055332196561
new: 67.78494774036257

path: .spaces[28].metrics.halstead.estimated_program_length
old: 859.9435240723533
new: 86.15946414084446

path: .spaces[28].metrics.halstead.N2
old: 251.0
new: 17.0

path: .spaces[28].metrics.halstead.length
old: 620.0
new: 37.0

path: .spaces[28].metrics.halstead.volume
old: 4387.625670171515
new: 169.64361252668277

path: .spaces[28].metrics.nom.closures
old: 2.0
new: 0.0

path: .spaces[28].metrics.nom.total
old: 3.0
new: 1.0

path: .spaces[28].metrics.mi.mi_original
old: 44.96177711142343
new: 112.55101641921529

path: .spaces[28].metrics.mi.mi_visual_studio
old: 26.293436907265168
new: 65.8193078474943

path: .spaces[28].metrics.mi.mi_sei
old: 6.967905035011345
new: 86.77776110240586

path: .spaces[28].metrics.cyclomatic.sum
old: 15.0
new: 1.0

path: .spaces[28].metrics.cyclomatic.average
old: 15.0
new: 1.0

Code

nsresult nsOfflineCacheUpdateService::OfflineAppPinnedForURI(
    nsIURI* aDocumentURI, bool* aPinned) {
  OriginAttributes attrs;
  nsCOMPtr principal =
      BasePrincipal::CreateContentPrincipal(aDocumentURI, attrs);
  return OfflineAppPermForPrincipal(principal, true, aPinned);
}

Minimal test - lines (182, 188)

path: .spaces[4].metrics.halstead.length
old: 35.0
new: 25.0

path: .spaces[4].metrics.halstead.n2
old: 10.0
new: 11.0

path: .spaces[4].metrics.halstead.purity_ratio
old: 1.6348365985392463
new: 2.482149912200411

path: .spaces[4].metrics.halstead.time
old: 55.135675019070575
new: 23.599597296908808

path: .spaces[4].metrics.halstead.vocabulary
old: 18.0
new: 19.0

path: .spaces[4].metrics.halstead.volume
old: 145.94737505048093
new: 106.19818783608964

path: .spaces[4].metrics.halstead.N1
old: 18.0
new: 14.0

path: .spaces[4].metrics.halstead.estimated_program_length
old: 57.219280948873624
new: 62.05374780501027

path: .spaces[4].metrics.halstead.bugs
old: 0.033165168845354476
new: 0.01883635254437623

path: .spaces[4].metrics.halstead.effort
old: 992.4421503432704
new: 424.7927513443585

path: .spaces[4].metrics.halstead.N2
old: 17.0
new: 11.0

path: .spaces[4].metrics.halstead.level
old: 0.14705882352941177
new: 0.25

path: .spaces[4].metrics.halstead.difficulty
old: 6.8
new: 4.0

path: .spaces[4].metrics.loc.ploc
old: 6.0
new: 7.0

path: .spaces[4].metrics.loc.lloc
old: 0.0
new: 2.0

path: .spaces[4].metrics.loc.sloc
old: 6.0
new: 7.0

path: .spaces[4].metrics.mi.mi_visual_studio
old: 67.73720281682291
new: 67.2436602055262

path: .spaces[4].metrics.mi.mi_sei
old: 91.50922433205152
new: 90.29165050503887

path: .spaces[4].metrics.mi.mi_original
old: 115.8306168167672
new: 114.9866589514498

path: .spaces[4].metrics.nargs.sum
old: 1.0
new: 4.0

path: .spaces[4].metrics.nargs.average
old: 1.0
new: 4.0

path: .spaces[4].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[4].metrics.nexits.sum
old: 0.0
new: 1.0

Code

nsOfflineCachePendingUpdate::OnLocationChange(nsIWebProgress* aWebProgress,
                                              nsIRequest* aRequest,
                                              nsIURI* location,
                                              uint32_t aFlags) {
  MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
  return NS_OK;
}

Minimal test - lines (363, 368)

path: .spaces[17].metrics.halstead.effort
old: 642.315589339339
new: 560.5663325143322

path: .spaces[17].metrics.halstead.purity_ratio
old: 2.403216609239857
new: 2.2029485584698687

path: .spaces[17].metrics.halstead.volume
old: 89.92418250750745
new: 98.09910819000814

path: .spaces[17].metrics.halstead.length
old: 22.0
new: 24.0

path: .spaces[17].metrics.halstead.N2
old: 10.0
new: 8.0

path: .spaces[17].metrics.halstead.N1
old: 12.0
new: 16.0

path: .spaces[17].metrics.halstead.time
old: 35.684199407741055
new: 31.14257402857401

path: .spaces[17].metrics.halstead.level
old: 0.14
new: 0.175

path: .spaces[17].metrics.halstead.difficulty
old: 7.142857142857143
new: 5.714285714285714

path: .spaces[17].metrics.halstead.bugs
old: 0.024814815683571648
new: 0.022661922621840313

path: .spaces[17].metrics.nargs.average
old: 0.0
new: 1.0

path: .spaces[17].metrics.nargs.sum
old: 0.0
new: 1.0

path: .spaces[17].metrics.loc.sloc
old: 4.0
new: 6.0

path: .spaces[17].metrics.loc.blank
old: 0.0
new: 1.0

path: .spaces[17].metrics.loc.lloc
old: 1.0
new: 3.0

path: .spaces[17].metrics.loc.ploc
old: 4.0
new: 5.0

path: .spaces[17].metrics.mi.mi_original
old: 124.91740347654104
new: 117.89640956484268

path: .spaces[17].metrics.mi.mi_sei
old: 104.6186863837232
new: 94.4895332852044

path: .spaces[17].metrics.mi.mi_visual_studio
old: 73.05111314417604
new: 68.94526875137

Code

nsOfflineCacheUpdateService::GetNumUpdates(uint32_t* aNumUpdates) {
  LOG(("nsOfflineCacheUpdateService::GetNumUpdates [%p]", this));

  *aNumUpdates = mUpdates.Length();
  return NS_OK;
}

Minimal test - lines (191, 197)

path: .spaces[5].metrics.nargs.average
old: 1.0
new: 4.0

path: .spaces[5].metrics.nargs.sum
old: 1.0
new: 4.0

path: .spaces[5].metrics.loc.ploc
old: 8.0
new: 7.0

path: .spaces[5].metrics.loc.sloc
old: 9.0
new: 7.0

path: .spaces[5].metrics.loc.lloc
old: 3.0
new: 2.0

path: .spaces[5].metrics.loc.cloc
old: 1.0
new: 0.0

path: .spaces[5].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[5].metrics.nexits.average
old: 0.0
new: 1.0

path: .spaces[5].metrics.halstead.volume
old: 277.3259433703244
new: 106.19818783608964

path: .spaces[5].metrics.halstead.N1
old: 37.0
new: 14.0

path: .spaces[5].metrics.halstead.estimated_program_length
old: 96.32251891746031
new: 62.05374780501027

path: .spaces[5].metrics.halstead.level
old: 0.07792207792207792
new: 0.25

path: .spaces[5].metrics.halstead.time
old: 197.7231262918054
new: 23.599597296908808

path: .spaces[5].metrics.halstead.effort
old: 3559.016273252497
new: 424.7927513443585

path: .spaces[5].metrics.halstead.purity_ratio
old: 1.632585066397633
new: 2.482149912200411

path: .spaces[5].metrics.halstead.difficulty
old: 12.833333333333334
new: 4.0

path: .spaces[5].metrics.halstead.vocabulary
old: 26.0
new: 19.0

path: .spaces[5].metrics.halstead.length
old: 59.0
new: 25.0

path: .spaces[5].metrics.halstead.n1
old: 14.0
new: 8.0

path: .spaces[5].metrics.halstead.N2
old: 22.0
new: 11.0

path: .spaces[5].metrics.halstead.n2
old: 12.0
new: 11.0

path: .spaces[5].metrics.halstead.bugs
old: 0.07770197561805875
new: 0.01883635254437623

path: .spaces[5].metrics.mi.mi_visual_studio
old: 61.94383369567817
new: 67.2436602055262

path: .spaces[5].metrics.mi.mi_sei
old: 101.90447559150178
new: 90.29165050503887

path: .spaces[5].metrics.mi.mi_original
old: 105.92395561960969
new: 114.9866589514498

Code

nsOfflineCachePendingUpdate::OnStatusChange(nsIWebProgress* aWebProgress,
                                            nsIRequest* aRequest,
                                            nsresult aStatus,
                                            const char16_t* aMessage) {
  MOZ_ASSERT_UNREACHABLE("notification excluded in AddProgressListener(...)");
  return NS_OK;
}

Minimal test - lines (238, 251)

path: .spaces[10].metrics.mi.mi_visual_studio
old: 56.87266593857348
new: 58.315024685442495

path: .spaces[10].metrics.mi.mi_original
old: 97.25225875496064
new: 99.71869221210667

path: .spaces[10].metrics.mi.mi_sei
old: 97.6696230233762
new: 88.48198170551962

path: .spaces[10].metrics.nargs.sum
old: 1.0
new: 0.0

path: .spaces[10].metrics.nargs.average
old: 1.0
new: 0.0

path: .spaces[10].metrics.halstead.bugs
old: 0.10357337406458224
new: 0.04930460901953381

path: .spaces[10].metrics.halstead.estimated_program_length
old: 128.36161893476807
new: 96.32251891746031

path: .spaces[10].metrics.halstead.effort
old: 5477.142857142857
new: 1798.9254292714263

path: .spaces[10].metrics.halstead.n1
old: 18.0
new: 12.0

path: .spaces[10].metrics.halstead.volume
old: 355.0
new: 220.92066675263132

path: .spaces[10].metrics.halstead.N1
old: 47.0
new: 28.0

path: .spaces[10].metrics.halstead.level
old: 0.06481481481481481
new: 0.12280701754385966

path: .spaces[10].metrics.halstead.length
old: 71.0
new: 47.0

path: .spaces[10].metrics.halstead.purity_ratio
old: 1.807910125841804
new: 2.049415296116177

path: .spaces[10].metrics.halstead.difficulty
old: 15.428571428571429
new: 8.142857142857142

path: .spaces[10].metrics.halstead.N2
old: 24.0
new: 19.0

path: .spaces[10].metrics.halstead.time
old: 304.2857142857143
new: 99.94030162619036

path: .spaces[10].metrics.halstead.vocabulary
old: 32.0
new: 26.0

path: .spaces[10].metrics.loc.blank
old: 0.0
new: 3.0

path: .spaces[10].metrics.loc.ploc
old: 11.0
new: 10.0

path: .spaces[10].metrics.loc.cloc
old: 3.0
new: 1.0

path: .spaces[10].metrics.cognitive.sum
old: 2.0
new: 1.0

path: .spaces[10].metrics.cognitive.average
old: 2.0
new: 1.0

Code

nsresult nsOfflineCacheUpdateService::Init() {
  // Observe xpcom-shutdown event
  nsCOMPtr observerService =
      mozilla::services::GetObserverService();
  if (!observerService) return NS_ERROR_FAILURE;

  nsresult rv =
      observerService->AddObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, true);
  NS_ENSURE_SUCCESS(rv, rv);

  gOfflineCacheUpdateService = this;

  return NS_OK;
}

Minimal test - lines (569, 572)

path: .spaces[26].metrics.mi.mi_visual_studio
old: 76.86305434314004
new: 73.55682051328075

path: .spaces[26].metrics.mi.mi_sei
old: 114.02277779900194
new: 105.86627077189092

path: .spaces[26].metrics.mi.mi_original
old: 131.43582292676948
new: 125.7821630777101

path: .spaces[26].metrics.loc.ploc
old: 3.0
new: 4.0

path: .spaces[26].metrics.loc.sloc
old: 3.0
new: 4.0

path: .spaces[26].metrics.nargs.average
old: 1.0
new: 2.0

path: .spaces[26].metrics.nargs.sum
old: 1.0
new: 2.0

path: .spaces[26].metrics.halstead.length
old: 17.0
new: 20.0

path: .spaces[26].metrics.halstead.N1
old: 10.0
new: 12.0

path: .spaces[26].metrics.halstead.n2
old: 5.0
new: 6.0

path: .spaces[26].metrics.halstead.difficulty
old: 5.6
new: 5.333333333333333

path: .spaces[26].metrics.halstead.effort
old: 352.28186116703193
new: 406.1178583528111

path: .spaces[26].metrics.halstead.vocabulary
old: 13.0
new: 14.0

path: .spaces[26].metrics.halstead.purity_ratio
old: 2.0946847337904004
new: 1.975488750216347

path: .spaces[26].metrics.halstead.bugs
old: 0.016626682361242505
new: 0.018280166067772708

path: .spaces[26].metrics.halstead.time
old: 19.571214509279553
new: 22.56210324182284

path: .spaces[26].metrics.halstead.volume
old: 62.907475208398566
new: 76.14709844115208

path: .spaces[26].metrics.halstead.N2
old: 7.0
new: 8.0

path: .spaces[26].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 39.50977500432694

path: .spaces[26].metrics.halstead.level
old: 0.17857142857142858
new: 0.1875

Code

nsOfflineCacheUpdateService::OfflineAppAllowed(nsIPrincipal* aPrincipal,
                                               bool* aAllowed) {
  return OfflineAppPermForPrincipal(aPrincipal, false, aAllowed);
}

Minimal test - lines (421, 451)

path: .spaces[20].metrics.loc.cloc
old: 0.0
new: 3.0

path: .spaces[20].metrics.loc.lloc
old: 1.0
new: 11.0

path: .spaces[20].metrics.loc.sloc
old: 4.0
new: 31.0

path: .spaces[20].metrics.loc.blank
old: 0.0
new: 6.0

path: .spaces[20].metrics.loc.ploc
old: 4.0
new: 22.0

path: .spaces[20].metrics.mi.mi_original
old: 125.39425724332408
new: 81.10997598646682

path: .spaces[20].metrics.mi.mi_sei
old: 105.30664094829032
new: 64.79614921081314

path: .spaces[20].metrics.mi.mi_visual_studio
old: 73.32997499609597
new: 47.43273449500984

path: .spaces[20].metrics.cognitive.average
old: 0.0
new: 3.0

path: .spaces[20].metrics.cognitive.sum
old: 0.0
new: 3.0

path: .spaces[20].metrics.halstead.difficulty
old: 6.75
new: 14.444444444444445

path: .spaces[20].metrics.halstead.purity_ratio
old: 2.0971000008241782
new: 1.5846213685808597

path: .spaces[20].metrics.halstead.n1
old: 9.0
new: 15.0

path: .spaces[20].metrics.halstead.time
old: 30.766763440417087
new: 510.60585966312465

path: .spaces[20].metrics.halstead.vocabulary
old: 15.0
new: 42.0

path: .spaces[20].metrics.halstead.effort
old: 553.8017419275076
new: 9190.905473936244

path: .spaces[20].metrics.halstead.bugs
old: 0.022479239973047977
new: 0.1462573201421246

path: .spaces[20].metrics.halstead.length
old: 21.0
new: 118.0

path: .spaces[20].metrics.halstead.level
old: 0.14814814814814814
new: 0.06923076923076923

path: .spaces[20].metrics.halstead.estimated_program_length
old: 44.039100017307746
new: 186.98532149254143

path: .spaces[20].metrics.halstead.n2
old: 6.0
new: 27.0

path: .spaces[20].metrics.halstead.N2
old: 9.0
new: 52.0

path: .spaces[20].metrics.halstead.N1
old: 12.0
new: 66.0

path: .spaces[20].metrics.halstead.volume
old: 82.0447025077789
new: 636.2934558878937

path: .spaces[20].metrics.cyclomatic.average
old: 1.0
new: 3.0

path: .spaces[20].metrics.cyclomatic.sum
old: 1.0
new: 3.0

path: .spaces[20].metrics.nargs.sum
old: 2.0
new: 7.0

path: .spaces[20].metrics.nargs.average
old: 2.0
new: 7.0

Code

nsresult nsOfflineCacheUpdateService::Schedule(
    nsIURI* aManifestURI, nsIURI* aDocumentURI, nsIPrincipal* aLoadingPrincipal,
    Document* aDocument, nsPIDOMWindowInner* aWindow,
    nsIFile* aCustomProfileDir, nsIOfflineCacheUpdate** aUpdate) {
  nsCOMPtr update;
  if (GeckoProcessType_Default != XRE_GetProcessType()) {
    update = new OfflineCacheUpdateChild(aWindow);
  } else {
    update = new OfflineCacheUpdateGlue();
  }

  nsresult rv;

  if (aWindow) {
    // Ensure there is window.applicationCache object that is
    // responsible for association of the new applicationCache
    // with the corresponding document.  Just ignore the result.
    aWindow->GetApplicationCache();
  }

  rv = update->Init(aManifestURI, aDocumentURI, aLoadingPrincipal, aDocument,
                    aCustomProfileDir);
  NS_ENSURE_SUCCESS(rv, rv);

  rv = update->Schedule();
  NS_ENSURE_SUCCESS(rv, rv);

  NS_ADDREF(*aUpdate = update);

  return NS_OK;
}

Minimal test - lines (497, 505)

path: .spaces[24].metrics.nargs.average
old: 1.0
new: 3.0

path: .spaces[24].metrics.nargs.sum
old: 1.0
new: 3.0

path: .spaces[24].metrics.loc.ploc
old: 3.0
new: 8.0

path: .spaces[24].metrics.loc.lloc
old: 1.0
new: 5.0

path: .spaces[24].metrics.loc.sloc
old: 3.0
new: 9.0

path: .spaces[24].metrics.loc.blank
old: 0.0
new: 1.0

path: .spaces[24].metrics.halstead.n2
old: 5.0
new: 14.0

path: .spaces[24].metrics.halstead.level
old: 0.17857142857142858
new: 0.10980392156862744

path: .spaces[24].metrics.halstead.n1
old: 8.0
new: 15.0

path: .spaces[24].metrics.halstead.time
old: 19.571214509279553
new: 113.06372435088576

path: .spaces[24].metrics.halstead.purity_ratio
old: 2.0946847337904004
new: 2.432746257455092

path: .spaces[24].metrics.halstead.N2
old: 7.0
new: 17.0

path: .spaces[24].metrics.halstead.vocabulary
old: 13.0
new: 29.0

path: .spaces[24].metrics.halstead.length
old: 17.0
new: 46.0

path: .spaces[24].metrics.halstead.bugs
old: 0.016626682361242505
new: 0.05353148281427934

path: .spaces[24].metrics.halstead.effort
old: 352.28186116703193
new: 2035.1470383159435

path: .spaces[24].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 111.90632784293425

path: .spaces[24].metrics.halstead.N1
old: 10.0
new: 29.0

path: .spaces[24].metrics.halstead.volume
old: 62.907475208398566
new: 223.4671257758683

path: .spaces[24].metrics.halstead.difficulty
old: 5.6
new: 9.107142857142858

path: .spaces[24].metrics.cognitive.average
old: 0.0
new: 3.0

path: .spaces[24].metrics.cognitive.sum
old: 0.0
new: 3.0

path: .spaces[24].metrics.cyclomatic.sum
old: 1.0
new: 3.0

path: .spaces[24].metrics.cyclomatic.average
old: 1.0
new: 3.0

path: .spaces[24].metrics.mi.mi_visual_studio
old: 76.86305434314004
new: 62.33145462528467

path: .spaces[24].metrics.mi.mi_original
old: 131.43582292676948
new: 106.58678740923678

path: .spaces[24].metrics.mi.mi_sei
old: 114.02277779900194
new: 78.37683720579274

Code

nsOfflineCacheUpdateService::Observe(nsISupports* aSubject, const char* aTopic,
                                     const char16_t* aData) {
  if (!strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID)) {
    if (mUpdates.Length() > 0) mUpdates[0]->Cancel();
    mDisabled = true;
  }

  return NS_OK;
}

Minimal test - lines (384, 419)

path: .spaces[19].metrics.halstead.N1
old: 12.0
new: 80.0

path: .spaces[19].metrics.halstead.estimated_program_length
old: 44.039100017307746
new: 252.9035678365762

path: .spaces[19].metrics.halstead.n2
old: 6.0
new: 33.0

path: .spaces[19].metrics.halstead.difficulty
old: 6.75
new: 19.39393939393939

path: .spaces[19].metrics.halstead.effort
old: 553.8017419275076
new: 15996.519669471045

path: .spaces[19].metrics.halstead.length
old: 21.0
new: 144.0

path: .spaces[19].metrics.halstead.purity_ratio
old: 2.0971000008241782
new: 1.7562747766428903

path: .spaces[19].metrics.halstead.volume
old: 82.0447025077789
new: 824.8205454571006

path: .spaces[19].metrics.halstead.N2
old: 9.0
new: 64.0

path: .spaces[19].metrics.halstead.time
old: 30.766763440417087
new: 888.6955371928357

path: .spaces[19].metrics.halstead.vocabulary
old: 15.0
new: 53.0

path: .spaces[19].metrics.halstead.bugs
old: 0.022479239973047977
new: 0.21162277981436584

path: .spaces[19].metrics.halstead.level
old: 0.14814814814814814
new: 0.0515625

path: .spaces[19].metrics.halstead.n1
old: 9.0
new: 20.0

path: .spaces[19].metrics.cyclomatic.sum
old: 1.0
new: 5.0

path: .spaces[19].metrics.cyclomatic.average
old: 1.0
new: 5.0

path: .spaces[19].metrics.nargs.average
old: 2.0
new: 4.0

path: .spaces[19].metrics.nargs.sum
old: 2.0
new: 4.0

path: .spaces[19].metrics.loc.blank
old: 0.0
new: 7.0

path: .spaces[19].metrics.loc.lloc
old: 1.0
new: 13.0

path: .spaces[19].metrics.loc.ploc
old: 4.0
new: 28.0

path: .spaces[19].metrics.loc.cloc
old: 0.0
new: 1.0

path: .spaces[19].metrics.loc.sloc
old: 4.0
new: 36.0

path: .spaces[19].metrics.cognitive.average
old: 0.0
new: 6.0

path: .spaces[19].metrics.cognitive.sum
old: 0.0
new: 6.0

path: .spaces[19].metrics.mi.mi_visual_studio
old: 73.32997499609597
new: 44.95797123890645

path: .spaces[19].metrics.mi.mi_sei
old: 105.30664094829032
new: 48.486923437269

path: .spaces[19].metrics.mi.mi_original
old: 125.39425724332408
new: 76.87813081853004

path: .spaces[19].metrics.nexits.average
old: 1.0
new: 2.0

path: .spaces[19].metrics.nexits.sum
old: 1.0
new: 2.0

Code

nsresult nsOfflineCacheUpdateService::FindUpdate(
    nsIURI* aManifestURI, nsACString const& aOriginSuffix,
    nsIFile* aCustomProfileDir, nsOfflineCacheUpdate** aUpdate) {
  nsresult rv;

  nsCOMPtr cacheService =
      do_GetService(NS_APPLICATIONCACHESERVICE_CONTRACTID, &rv);
  NS_ENSURE_SUCCESS(rv, rv);

  nsAutoCString groupID;
  rv =
      cacheService->BuildGroupIDForSuffix(aManifestURI, aOriginSuffix, groupID);
  NS_ENSURE_SUCCESS(rv, rv);

  RefPtr update;
  for (uint32_t i = 0; i < mUpdates.Length(); i++) {
    update = mUpdates[i];

    bool partial;
    rv = update->GetPartial(&partial);
    NS_ENSURE_SUCCESS(rv, rv);

    if (partial) {
      // Partial updates aren't considered
      continue;
    }

    if (update->IsForGroupID(groupID) &&
        update->IsForProfile(aCustomProfileDir)) {
      update.swap(*aUpdate);
      return NS_OK;
    }
  }

  return NS_ERROR_NOT_AVAILABLE;
}

Minimal test - lines (318, 335)

path: .spaces[15].metrics.halstead.length
old: 17.0
new: 63.0

path: .spaces[15].metrics.halstead.level
old: 0.17857142857142858
new: 0.08735632183908046

path: .spaces[15].metrics.halstead.n2
old: 5.0
new: 19.0

path: .spaces[15].metrics.halstead.estimated_program_length
old: 35.60964047443681
new: 139.3139816895559

path: .spaces[15].metrics.halstead.vocabulary
old: 13.0
new: 34.0

path: .spaces[15].metrics.halstead.bugs
old: 0.016626682361242505
new: 0.07929461933927795

path: .spaces[15].metrics.halstead.time
old: 19.571214509279553
new: 203.8332151527274

path: .spaces[15].metrics.halstead.difficulty
old: 5.6
new: 11.447368421052632

path: .spaces[15].metrics.halstead.volume
old: 62.907475208398566
new: 320.5101589987714

path: .spaces[15].metrics.halstead.N1
old: 10.0
new: 34.0

path: .spaces[15].metrics.halstead.N2
old: 7.0
new: 29.0

path: .spaces[15].metrics.halstead.n1
old: 8.0
new: 15.0

path: .spaces[15].metrics.halstead.purity_ratio
old: 2.0946847337904004
new: 2.2113330426913635

path: .spaces[15].metrics.halstead.effort
old: 352.28186116703193
new: 3668.9978727490934

path: .spaces[15].metrics.cyclomatic.sum
old: 1.0
new: 2.0

path: .spaces[15].metrics.cyclomatic.average
old: 1.0
new: 2.0

path: .spaces[15].metrics.mi.mi_original
old: 131.43582292676948
new: 93.71242486142944

path: .spaces[15].metrics.mi.mi_sei
old: 114.02277779900194
new: 77.55563274655853

path: .spaces[15].metrics.mi.mi_visual_studio
old: 76.86305434314004
new: 54.80258763826284

path: .spaces[15].metrics.loc.ploc
old: 3.0
new: 13.0

path: .spaces[15].metrics.loc.sloc
old: 3.0
new: 18.0

path: .spaces[15].metrics.loc.blank
old: 0.0
new: 4.0

path: .spaces[15].metrics.loc.cloc
old: 0.0
new: 1.0

path: .spaces[15].metrics.loc.lloc
old: 1.0
new: 7.0

path: .spaces[15].metrics.cognitive.average
old: 0.0
new: 1.0

path: .spaces[15].metrics.cognitive.sum
old: 0.0
new: 1.0

Code

nsresult nsOfflineCacheUpdateService::UpdateFinished(
    nsOfflineCacheUpdate* aUpdate) {
  LOG(("nsOfflineCacheUpdateService::UpdateFinished [%p, update=%p]", this,
       aUpdate));

  NS_ASSERTION(mUpdates.Length() > 0 && mUpdates[0] == aUpdate,
               "Unknown update completed");

  // keep this item alive until we're done notifying observers
  RefPtr update = mUpdates[0];
  Unused << update;
  mUpdates.RemoveElementAt(0);
  mUpdateRunning = false;

  ProcessNextUpdate();

  return NS_OK;
}

Minimal test - lines (341, 356)

path: .spaces[16].metrics.mi.mi_original
old: 124.91740347654104
new: 96.6327608614548

path: .spaces[16].metrics.mi.mi_sei
old: 104.6186863837232
new: 64.11803232783505

path: .spaces[16].metrics.mi.mi_visual_studio
old: 73.05111314417604
new: 56.51038646868701

path: .spaces[16].metrics.halstead.time
old: 35.684199407741055
new: 117.64435680762637

path: .spaces[16].metrics.halstead.bugs
old: 0.024814815683571648
new: 0.05496773162444412

path: .spaces[16].metrics.halstead.purity_ratio
old: 2.403216609239857
new: 1.752408968163232

path: .spaces[16].metrics.halstead.N1
old: 12.0
new: 33.0

path: .spaces[16].metrics.halstead.length
old: 22.0
new: 52.0

path: .spaces[16].metrics.halstead.n2
old: 7.0
new: 13.0

path: .spaces[16].metrics.halstead.vocabulary
old: 17.0
new: 25.0

path: .spaces[16].metrics.halstead.level
old: 0.14
new: 0.11403508771929824

path: .spaces[16].metrics.halstead.difficulty
old: 7.142857142857143
new: 8.76923076923077

path: .spaces[16].metrics.halstead.N2
old: 10.0
new: 19.0

path: .spaces[16].metrics.halstead.volume
old: 89.92418250750745
new: 241.48052186828568

path: .spaces[16].metrics.halstead.n1
old: 10.0
new: 12.0

path: .spaces[16].metrics.halstead.effort
old: 642.315589339339
new: 2117.5984225372745

path: .spaces[16].metrics.halstead.estimated_program_length
old: 52.87076540327685
new: 91.12526634448808

path: .spaces[16].metrics.cyclomatic.sum
old: 1.0
new: 4.0

path: .spaces[16].metrics.cyclomatic.average
old: 1.0
new: 4.0

path: .spaces[16].metrics.cognitive.average
old: 0.0
new: 3.0

path: .spaces[16].metrics.cognitive.sum
old: 0.0
new: 3.0

path: .spaces[16].metrics.loc.ploc
old: 4.0
new: 11.0

path: .spaces[16].metrics.loc.blank
old: 0.0
new: 5.0

path: .spaces[16].metrics.loc.sloc
old: 4.0
new: 16.0

path: .spaces[16].metrics.loc.lloc
old: 1.0
new: 9.0

path: .spaces[16].metrics.nexits.sum
old: 1.0
new: 4.0

path: .spaces[16].metrics.nexits.average
old: 1.0
new: 4.0

Code

nsresult nsOfflineCacheUpdateService::ProcessNextUpdate() {
  LOG(("nsOfflineCacheUpdateService::ProcessNextUpdate [%p, num=%zu]", this,
       mUpdates.Length()));

  if (mDisabled) return NS_ERROR_ABORT;

  if (mUpdateRunning) return NS_OK;

  if (mUpdates.Length() > 0) {
    mUpdateRunning = true;

    return mUpdates[0]->Begin();
  }

  return NS_OK;
}

Minimal test - lines (254, 264)

path: .spaces[11].metrics.nargs.average
old: 1.0
new: 0.0

path: .spaces[11].metrics.nargs.sum
old: 1.0
new: 0.0

path: .spaces[11].metrics.halstead.vocabulary
old: 11.0
new: 26.0

path: .spaces[11].metrics.halstead.time
old: 15.135013331538175
new: 138.4018361452655

path: .spaces[11].metrics.halstead.length
old: 15.0
new: 53.0

path: .spaces[11].metrics.halstead.bugs
old: 0.01400819850161732
new: 0.06125689553736768

path: .spaces[11].metrics.halstead.N1
old: 9.0
new: 33.0

path: .spaces[11].metrics.halstead.volume
old: 51.89147427955946
new: 249.12330506147785

path: .spaces[11].metrics.halstead.effort
old: 272.43023996768716
new: 2491.2330506147787

path: .spaces[11].metrics.halstead.purity_ratio
old: 1.8434322969602153
new: 1.8153100504088375

path: .spaces[11].metrics.halstead.level
old: 0.1904761904761905
new: 0.1

path: .spaces[11].metrics.halstead.n1
old: 7.0
new: 13.0

path: .spaces[11].metrics.halstead.estimated_program_length
old: 27.651484454403228
new: 96.2114326716684

path: .spaces[11].metrics.halstead.N2
old: 6.0
new: 20.0

path: .spaces[11].metrics.halstead.difficulty
old: 5.25
new: 10.0

path: .spaces[11].metrics.halstead.n2
old: 4.0
new: 13.0

path: .spaces[11].metrics.mi.mi_original
old: 132.43687749961728
new: 102.77076711096154

path: .spaces[11].metrics.mi.mi_sei
old: 115.46699426690871
new: 72.87148364553941

path: .spaces[11].metrics.mi.mi_visual_studio
old: 77.4484663740452
new: 60.09986380757985

path: .spaces[11].metrics.cognitive.average
old: 0.0
new: 3.0

path: .spaces[11].metrics.cognitive.sum
old: 0.0
new: 3.0

path: .spaces[11].metrics.cyclomatic.sum
old: 1.0
new: 3.0

path: .spaces[11].metrics.cyclomatic.average
old: 1.0
new: 3.0

path: .spaces[11].metrics.nexits.average
old: 1.0
new: 2.0

path: .spaces[11].metrics.nexits.sum
old: 1.0
new: 2.0

path: .spaces[11].metrics.loc.lloc
old: 1.0
new: 6.0

path: .spaces[11].metrics.loc.ploc
old: 3.0
new: 10.0

path: .spaces[11].metrics.loc.blank
old: 0.0
new: 1.0

path: .spaces[11].metrics.loc.sloc
old: 3.0
new: 11.0

Code

already_AddRefed
nsOfflineCacheUpdateService::GetInstance() {
  if (!gOfflineCacheUpdateService) {
    auto serv = MakeRefPtr();
    if (NS_FAILED(serv->Init())) serv = nullptr;
    MOZ_ASSERT(gOfflineCacheUpdateService == serv.get());
    return serv.forget();
  }

  return do_AddRef(gOfflineCacheUpdateService);
}

Minimal test - lines (575, 581)

path: .spaces[27].metrics.loc.ploc
old: 4.0
new: 7.0

path: .spaces[27].metrics.loc.sloc
old: 4.0
new: 7.0

path: .spaces[27].metrics.mi.mi_original
old: 125.27178399587255
new: 112.76359852557472

path: .spaces[27].metrics.mi.mi_sei
old: 105.12994940155043
new: 87.08445225303234

path: .spaces[27].metrics.mi.mi_visual_studio
old: 73.25835321396058
new: 65.94362486875714

path: .spaces[27].metrics.nargs.sum
old: 0.0
new: 2.0

path: .spaces[27].metrics.nargs.average
old: 0.0
new: 2.0

path: .spaces[27].metrics.halstead.vocabulary
old: 16.0
new: 23.0

path: .spaces[27].metrics.halstead.bugs
old: 0.024496598167132053
new: 0.03752048052956009

path: .spaces[27].metrics.halstead.time
old: 35.0
new: 66.34557535550286

path: .spaces[27].metrics.halstead.estimated_program_length
old: 48.72905595320056
new: 81.07329781366414

path: .spaces[27].metrics.halstead.effort
old: 630.0
new: 1194.2203563990515

path: .spaces[27].metrics.halstead.length
old: 21.0
new: 36.0

path: .spaces[27].metrics.halstead.purity_ratio
old: 2.3204312358666934
new: 2.2520360503795596

path: .spaces[27].metrics.halstead.N2
old: 9.0
new: 16.0

path: .spaces[27].metrics.halstead.N1
old: 12.0
new: 20.0

path: .spaces[27].metrics.halstead.difficulty
old: 7.5
new: 7.333333333333333

path: .spaces[27].metrics.halstead.n1
old: 10.0
new: 11.0

path: .spaces[27].metrics.halstead.n2
old: 6.0
new: 12.0

path: .spaces[27].metrics.halstead.volume
old: 84.0
new: 162.84823041805248

path: .spaces[27].metrics.halstead.level
old: 0.13333333333333333
new: 0.13636363636363638

Code

nsOfflineCacheUpdateService::OfflineAppAllowedForURI(nsIURI* aURI,
                                                     bool* aAllowed) {
  OriginAttributes attrs;
  nsCOMPtr principal =
      BasePrincipal::CreateContentPrincipal(aURI, attrs);
  return OfflineAppPermForPrincipal(principal, false, aAllowed);
}