Global Metrics

path: .metrics.halstead.N1
old: 58.0
new: 224.0

path: .metrics.halstead.time
old: 310.51738035815714
new: 2467.9798266925213

path: .metrics.halstead.effort
old: 5589.312846446828
new: 44423.63688046538

path: .metrics.halstead.level
old: 0.08888888888888889
new: 0.05704584040747029

path: .metrics.halstead.volume
old: 496.82780857305136
new: 2534.1836998024396

path: .metrics.halstead.estimated_program_length
old: 168.64245895143551
new: 617.665286268844

path: .metrics.halstead.purity_ratio
old: 1.794068712249314
new: 1.629723710471884

path: .metrics.halstead.bugs
old: 0.10498268866694442
new: 0.4181076870879481

path: .metrics.halstead.difficulty
old: 11.25
new: 17.529761904761905

path: .metrics.halstead.length
old: 94.0
new: 379.0

path: .metrics.halstead.vocabulary
old: 39.0
new: 103.0

path: .metrics.halstead.N2
old: 36.0
new: 155.0

path: .metrics.halstead.n2
old: 24.0
new: 84.0

path: .metrics.halstead.n1
old: 15.0
new: 19.0

path: .metrics.nom.functions
old: 2.0
new: 1.0

path: .metrics.nom.total
old: 2.0
new: 1.0

path: .metrics.loc.ploc
old: 22.0
new: 75.0

path: .metrics.loc.sloc
old: 46.0
new: 95.0

path: .metrics.loc.blank
old: 9.0
new: 14.0

path: .metrics.loc.cloc
old: 15.0
new: 6.0

path: .metrics.loc.lloc
old: 9.0
new: 26.0

path: .metrics.nargs.average
old: 1.0
new: 3.0

path: .metrics.nargs.sum
old: 2.0
new: 3.0

path: .metrics.cyclomatic.sum
old: 6.0
new: 11.0

path: .metrics.cyclomatic.average
old: 1.5
new: 5.5

path: .metrics.cognitive.sum
old: 2.0
new: 18.0

path: .metrics.cognitive.average
old: 1.0
new: 18.0

path: .metrics.mi.mi_original
old: 75.31314315378192
new: 53.941534724339704

path: .metrics.mi.mi_visual_studio
old: 44.04277377414147
new: 31.54475714873667

path: .metrics.mi.mi_sei
old: 72.24868474889504
new: 22.218848401521605

path: .metrics.nexits.average
old: 2.0
new: 4.0

Spaces Data

Minimal test - lines (31, 95)

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

path: .spaces[0].metrics.nargs.sum
old: 2.0
new: 3.0

path: .spaces[0].metrics.nexits.average
old: 2.0
new: 4.0

path: .spaces[0].metrics.cognitive.sum
old: 2.0
new: 18.0

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

path: .spaces[0].metrics.halstead.effort
old: 5555.1716344388715
new: 34083.936251787556

path: .spaces[0].metrics.halstead.time
old: 308.6206463577151
new: 1893.5520139881976

path: .spaces[0].metrics.halstead.difficulty
old: 11.590909090909092
new: 16.175675675675677

path: .spaces[0].metrics.halstead.estimated_program_length
old: 156.71085454414833
new: 534.558199082504

path: .spaces[0].metrics.halstead.length
old: 92.0
new: 323.0

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.7033788537407428
new: 1.654978944527876

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

path: .spaces[0].metrics.halstead.bugs
old: 0.10455474159436792
new: 0.3504116809010894

path: .spaces[0].metrics.halstead.n2
old: 22.0
new: 74.0

path: .spaces[0].metrics.halstead.level
old: 0.08627450980392157
new: 0.061821219715956555

path: .spaces[0].metrics.halstead.vocabulary
old: 37.0
new: 92.0

path: .spaces[0].metrics.halstead.volume
old: 479.2697096378634
new: 2107.110511806415

path: .spaces[0].metrics.halstead.N1
old: 58.0
new: 190.0

path: .spaces[0].metrics.halstead.N2
old: 34.0
new: 133.0

path: .spaces[0].metrics.mi.mi_sei
old: 73.61031965770286
new: 23.27285408942249

path: .spaces[0].metrics.mi.mi_visual_studio
old: 48.33615916972567
new: 35.83564172158431

path: .spaces[0].metrics.mi.mi_original
old: 82.6548321802309
new: 61.27894734390917

path: .spaces[0].metrics.loc.lloc
old: 9.0
new: 24.0

path: .spaces[0].metrics.loc.blank
old: 6.0
new: 9.0

path: .spaces[0].metrics.loc.sloc
old: 30.0
new: 65.0

path: .spaces[0].metrics.loc.ploc
old: 19.0
new: 55.0

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

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

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

path: .spaces[0].metrics.cyclomatic.average
old: 1.6666666666666667
new: 10.0

path: .spaces[0].metrics.cyclomatic.sum
old: 5.0
new: 10.0

Code

nsresult nsDragServiceProxy::InvokeDragSessionImpl(
    nsIArray* aArrayTransferables, const Maybe& aRegion,
    uint32_t aActionType) {
  NS_ENSURE_STATE(mSourceDocument->GetDocShell());
  BrowserChild* child = BrowserChild::GetFrom(mSourceDocument->GetDocShell());
  NS_ENSURE_STATE(child);
  nsTArray dataTransfers;
  nsContentUtils::TransferablesToIPCTransferables(
      aArrayTransferables, dataTransfers, false, child->Manager(), nullptr);

  nsCOMPtr principal;
  if (mSourceNode) {
    principal = mSourceNode->NodePrincipal();
  }

  nsCOMPtr csp;
  if (mSourceDocument) {
    csp = mSourceDocument->GetCsp();
  }

  nsCOMPtr cookieJarSettings;
  cookieJarSettings = mSourceDocument->CookieJarSettings();
  net::CookieJarSettingsArgs csArgs;
  net::CookieJarSettings::Cast(cookieJarSettings)->Serialize(csArgs);

  LayoutDeviceIntRect dragRect;
  if (mHasImage || mSelection) {
    nsPresContext* pc;
    RefPtr surface;
    DrawDrag(mSourceNode, aRegion, mScreenPosition, &dragRect, &surface, &pc);

    if (surface) {
      RefPtr dataSurface = surface->GetDataSurface();
      if (dataSurface) {
        size_t length;
        int32_t stride;
        Maybe maybeShm = nsContentUtils::GetSurfaceData(
            dataSurface, &length, &stride, child);
        if (maybeShm.isNothing()) {
          return NS_ERROR_FAILURE;
        }

        auto surfaceData = maybeShm.value();

        // Save the surface data to shared memory.
        if (!surfaceData.IsReadable() || !surfaceData.get()) {
          NS_WARNING("Failed to create shared memory for drag session.");
          return NS_ERROR_FAILURE;
        }

        mozilla::Unused << child->SendInvokeDragSession(
            dataTransfers, aActionType, Some(std::move(surfaceData)), stride,
            dataSurface->GetFormat(), dragRect, principal, csp, csArgs);
        StartDragSession();
        return NS_OK;
      }
    }
  }

  mozilla::Unused << child->SendInvokeDragSession(
      dataTransfers, aActionType, Nothing(), 0, static_cast(0),
      dragRect, principal, csp, csArgs);
  StartDragSession();
  return NS_OK;
}