# Global Metrics

path: .metrics.cyclomatic.sum
old: 79.0
new: 107.0
path: .metrics.cyclomatic.average
old: 2.0256410256410255
new: 4.115384615384615
path: .metrics.mi.mi_original
old: -22.208673277126692
new: 0.17341045345260395
path: .metrics.mi.mi_sei
old: -72.92622341020545
new: -30.36248250088067
path: .metrics.mi.mi_visual_studio
old: 0.0
new: 0.1014096219021076
path: .metrics.nexits.average
old: 0.13513513513513514
new: 10.166666666666666
path: .metrics.nexits.sum
old: 5.0
new: 61.0
path: .metrics.loc.lloc
old: 479.0
new: 163.0
path: .metrics.loc.cloc
old: 195.0
new: 112.0
path: .metrics.loc.blank
old: 237.0
new: 54.0
path: .metrics.loc.sloc
old: 1466.0
new: 474.0
path: .metrics.loc.ploc
old: 1034.0
new: 308.0
path: .metrics.nom.functions
old: 35.0
new: 6.0
path: .metrics.nom.total
old: 37.0
new: 6.0
path: .metrics.nom.closures
old: 2.0
new: 0.0
path: .metrics.halstead.N2
old: 3162.0
new: 363.0
path: .metrics.halstead.purity_ratio
old: 0.30310445484674026
new: 1.6050340486170298
path: .metrics.halstead.bugs
old: 17.13661480786923
new: 0.8370098905496379
path: .metrics.halstead.difficulty
old: 204.8259109311741
new: 16.753846153846155
path: .metrics.halstead.effort
old: 11656533.990216505
new: 125828.13710630132
path: .metrics.halstead.level
old: 0.004882194813409234
new: 0.05968778696051423
path: .metrics.halstead.estimated_program_length
old: 2123.2467062014157
new: 1558.4880612071358
path: .metrics.halstead.n2
old: 247.0
new: 195.0
path: .metrics.halstead.N1
old: 3843.0
new: 608.0
path: .metrics.halstead.length
old: 7005.0
new: 971.0
path: .metrics.halstead.n1
old: 32.0
new: 18.0
path: .metrics.halstead.volume
old: 56909.46978936346
new: 7510.403041239288
path: .metrics.halstead.vocabulary
old: 279.0
new: 213.0
path: .metrics.halstead.time
old: 647585.2216786946
new: 6990.452061461185
path: .metrics.nargs.sum
old: 64.0
new: 6.0
path: .metrics.nargs.average
old: 1.7297297297297298
new: 1.0
path: .metrics.cognitive.average
old: 0.945945945945946
new: 1.0
path: .metrics.cognitive.sum
old: 35.0
new: 6.0

# Spaces Data

## Minimal test - lines (18, 18)

path: .spaces[0].metrics.halstead.estimated_program_length
old: 12.754887502163468
new: null
path: .spaces[0].metrics.halstead.n1
old: 3.0
new: 0.0
path: .spaces[0].metrics.halstead.time
old: 2.573408678552804
new: 0.0
path: .spaces[0].metrics.halstead.bugs
old: 0.004299318203100795
new: 0.0
path: .spaces[0].metrics.halstead.level
old: 0.6666666666666666
new: null
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.1595352274694062
new: null
path: .spaces[0].metrics.halstead.effort
old: 46.321356213950466
new: 0.0
path: .spaces[0].metrics.halstead.length
old: 11.0
new: 1.0
path: .spaces[0].metrics.halstead.n2
old: 4.0
new: 1.0
path: .spaces[0].metrics.halstead.N1
old: 7.0
new: 0.0
path: .spaces[0].metrics.halstead.volume
old: 30.880904142633646
new: 0.0
path: .spaces[0].metrics.halstead.N2
old: 4.0
new: 1.0
path: .spaces[0].metrics.halstead.difficulty
old: 1.5
new: 0.0
path: .spaces[0].metrics.halstead.vocabulary
old: 7.0
new: 1.0
path: .spaces[0].metrics.mi.mi_visual_studio
old: 74.18736151928911
new: null
path: .spaces[0].metrics.mi.mi_original
old: 126.86038819798438
new: null
path: .spaces[0].metrics.mi.mi_sei
old: 154.02377510423386
new: null
path: .spaces[0].metrics.loc.ploc
old: 5.0
new: 1.0
path: .spaces[0].metrics.loc.sloc
old: 5.0
new: 1.0
path: .spaces[0].metrics.loc.cloc
old: 3.0
new: 0.0

### Code

    class nsCommandParams;

## Minimal test - lines (176, 191)

path: .spaces[4].metrics.halstead.effort
old: 6664.20156908517
new: 1326.3641519943344
path: .spaces[4].metrics.halstead.purity_ratio
old: 1.831928469504774
new: 1.6022638862533347
path: .spaces[4].metrics.halstead.vocabulary
old: 43.0
new: 24.0
path: .spaces[4].metrics.halstead.N2
old: 48.0
new: 15.0
path: .spaces[4].metrics.halstead.bugs
old: 0.11804406636993477
new: 0.04023962538837978
path: .spaces[4].metrics.halstead.length
old: 106.0
new: 54.0
path: .spaces[4].metrics.halstead.time
old: 370.23342050473167
new: 73.68689733301858
path: .spaces[4].metrics.halstead.n2
old: 29.0
new: 14.0
path: .spaces[4].metrics.halstead.n1
old: 14.0
new: 10.0
path: .spaces[4].metrics.halstead.N1
old: 58.0
new: 39.0
path: .spaces[4].metrics.halstead.volume
old: 575.1840639984224
new: 247.58797503894243
path: .spaces[4].metrics.halstead.difficulty
old: 11.586206896551724
new: 5.357142857142857
path: .spaces[4].metrics.halstead.level
old: 0.08630952380952381
new: 0.18666666666666668
path: .spaces[4].metrics.halstead.estimated_program_length
old: 194.18441776750603
new: 86.52224985768008
path: .spaces[4].metrics.loc.lloc
old: 3.0
new: 13.0
path: .spaces[4].metrics.loc.cloc
old: 6.0
new: 1.0
path: .spaces[4].metrics.loc.ploc
old: 17.0
new: 16.0
path: .spaces[4].metrics.loc.sloc
old: 22.0
new: 16.0
path: .spaces[4].metrics.mi.mi_sei
old: 86.80547274012011
new: 81.43506512380861
path: .spaces[4].metrics.mi.mi_original
old: 87.4207237310491
new: 95.1228796372426
path: .spaces[4].metrics.mi.mi_visual_studio
old: 51.123230252075494
new: 55.627414992539535
path: .spaces[4].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[4].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[4].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[4].metrics.nargs.average
old: 2.0
new: 1.0
path: .spaces[4].metrics.nexits.sum
old: 0.0
new: 2.0
path: .spaces[4].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[4].metrics.cyclomatic.average
old: 2.0
new: 10.0
path: .spaces[4].metrics.cyclomatic.sum
old: 2.0
new: 10.0

### Code

    inline bool IsDataAvailableOnHTMLEditor(EditorInputType aInputType) {
      switch (aInputType) {
        case EditorInputType::eInsertText:
        case EditorInputType::eInsertCompositionText:
        case EditorInputType::eInsertFromComposition:  // Only level 2
        case EditorInputType::eFormatSetBlockTextDirection:
        case EditorInputType::eFormatSetInlineTextDirection:
        case EditorInputType::eInsertLink:
        case EditorInputType::eFormatBackColor:
        case EditorInputType::eFormatFontColor:
        case EditorInputType::eFormatFontName:
          return true;
        default:
          return false;
      }
    }

## Minimal test - lines (240, 353)

path: .spaces[7].metrics.cyclomatic.average
old: 3.0
new: 51.0
path: .spaces[7].metrics.cyclomatic.sum
old: 3.0
new: 51.0
path: .spaces[7].metrics.cognitive.average
old: 2.0
new: 1.0
path: .spaces[7].metrics.cognitive.sum
old: 2.0
new: 1.0
path: .spaces[7].metrics.loc.ploc
old: 27.0
new: 110.0
path: .spaces[7].metrics.loc.cloc
old: 2.0
new: 18.0
path: .spaces[7].metrics.loc.lloc
old: 13.0
new: 107.0
path: .spaces[7].metrics.loc.sloc
old: 33.0
new: 114.0
path: .spaces[7].metrics.loc.blank
old: 4.0
new: 0.0
path: .spaces[7].metrics.halstead.estimated_program_length
old: 371.48151536929834
new: 385.12968771735893
path: .spaces[7].metrics.halstead.effort
old: 15918.926703278566
new: 25180.44515359671
path: .spaces[7].metrics.halstead.level
old: 0.07046070460704608
new: 0.09493161705551086
path: .spaces[7].metrics.halstead.bugs
old: 0.21093789155485032
new: 0.2863657105533752
path: .spaces[7].metrics.halstead.n1
old: 18.0
new: 11.0
path: .spaces[7].metrics.halstead.n2
old: 52.0
new: 59.0
path: .spaces[7].metrics.halstead.N2
old: 82.0
new: 113.0
path: .spaces[7].metrics.halstead.volume
old: 1121.6587921009288
new: 2390.420376608537
path: .spaces[7].metrics.halstead.purity_ratio
old: 2.029953635897805
new: 0.9875120197881
path: .spaces[7].metrics.halstead.length
old: 183.0
new: 390.0
path: .spaces[7].metrics.halstead.N1
old: 101.0
new: 277.0
path: .spaces[7].metrics.halstead.time
old: 884.3848168488092
new: 1398.9136196442616
path: .spaces[7].metrics.halstead.difficulty
old: 14.192307692307692
new: 10.533898305084746
path: .spaces[7].metrics.mi.mi_original
old: 77.14924505279457
new: 42.0916176358929
path: .spaces[7].metrics.mi.mi_visual_studio
old: 45.11651757473366
new: 24.61498107362158
path: .spaces[7].metrics.mi.mi_sei
old: 54.51775817724325
new: 19.08922276671034
path: .spaces[7].metrics.nexits.sum
old: 0.0
new: 51.0
path: .spaces[7].metrics.nexits.average
old: 0.0
new: 51.0
path: .spaces[7].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[7].metrics.nargs.average
old: 2.0
new: 1.0

### Code

    inline bool IsCancelableBeforeInputEvent(EditorInputType aInputType) {
      switch (aInputType) {
        case EditorInputType::eInsertText:
          return true;  // In Level 1, undefined.
        case EditorInputType::eInsertReplacementText:
          return true;  // In Level 1, undefined.
        case EditorInputType::eInsertLineBreak:
          return true;  // In Level 1, undefined.
        case EditorInputType::eInsertParagraph:
          return true;  // In Level 1, undefined.
        case EditorInputType::eInsertOrderedList:
          return true;
        case EditorInputType::eInsertUnorderedList:
          return true;
        case EditorInputType::eInsertHorizontalRule:
          return true;
        case EditorInputType::eInsertFromYank:
          return true;
        case EditorInputType::eInsertFromDrop:
          return true;
        case EditorInputType::eInsertFromPaste:
          return true;
        case EditorInputType::eInsertFromPasteAsQuotation:
          return true;
        case EditorInputType::eInsertTranspose:
          return true;
        case EditorInputType::eInsertCompositionText:
          return false;
        case EditorInputType::eInsertFromComposition:
          MOZ_ASSERT(!StaticPrefs::dom_input_events_conform_to_level_1());
          return true;
        case EditorInputType::eInsertLink:
          return true;
        case EditorInputType::eDeleteByComposition:
          MOZ_ASSERT(!StaticPrefs::dom_input_events_conform_to_level_1());
          return true;
        case EditorInputType::eDeleteCompositionText:
          MOZ_ASSERT(!StaticPrefs::dom_input_events_conform_to_level_1());
          return false;
        case EditorInputType::eDeleteWordBackward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteWordForward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteSoftLineBackward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteSoftLineForward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteEntireSoftLine:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteHardLineBackward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteHardLineForward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteByDrag:
          return true;
        case EditorInputType::eDeleteByCut:
          return true;
        case EditorInputType::eDeleteContent:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteContentBackward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eDeleteContentForward:
          return true;  // In Level 1, undefined.
        case EditorInputType::eHistoryUndo:
          return true;
        case EditorInputType::eHistoryRedo:
          return true;
        case EditorInputType::eFormatBold:
          return true;
        case EditorInputType::eFormatItalic:
          return true;
        case EditorInputType::eFormatUnderline:
          return true;
        case EditorInputType::eFormatStrikeThrough:
          return true;
        case EditorInputType::eFormatSuperscript:
          return true;
        case EditorInputType::eFormatSubscript:
          return true;
        case EditorInputType::eFormatJustifyFull:
          return true;
        case EditorInputType::eFormatJustifyCenter:
          return true;
        case EditorInputType::eFormatJustifyRight:
          return true;
        case EditorInputType::eFormatJustifyLeft:
          return true;
        case EditorInputType::eFormatIndent:
          return true;
        case EditorInputType::eFormatOutdent:
          return true;
        case EditorInputType::eFormatRemove:
          return true;
        case EditorInputType::eFormatSetBlockTextDirection:
          return true;
        case EditorInputType::eFormatSetInlineTextDirection:
          return true;
        case EditorInputType::eFormatBackColor:
          return true;
        case EditorInputType::eFormatFontColor:
          return true;
        case EditorInputType::eFormatFontName:
          return true;
        case EditorInputType::eUnknown:
          // This is not declared by Input Events, but it does not make sense to
          // allow web apps to cancel default action without inputType value check.
          // If some our specific edit actions should be cancelable, new inputType
          // value for them should be declared by the spec.
          return false;
        default:
          MOZ_ASSERT_UNREACHABLE("The new input type is not handled");
          return false;
      }
    }

## Minimal test - lines (218, 229)

path: .spaces[6].metrics.loc.ploc
old: 23.0
new: 10.0
path: .spaces[6].metrics.loc.sloc
old: 31.0
new: 12.0
path: .spaces[6].metrics.loc.lloc
old: 12.0
new: 7.0
path: .spaces[6].metrics.loc.blank
old: 6.0
new: 0.0
path: .spaces[6].metrics.nargs.average
old: 2.0
new: 1.0
path: .spaces[6].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[6].metrics.cyclomatic.average
old: 1.0
new: 4.0
path: .spaces[6].metrics.cyclomatic.sum
old: 1.0
new: 4.0
path: .spaces[6].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[6].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[6].metrics.mi.mi_visual_studio
old: 46.53689553634223
new: 61.2357988460806
path: .spaces[6].metrics.mi.mi_original
old: 79.57809136714522
new: 104.71321602679782
path: .spaces[6].metrics.mi.mi_sei
old: 58.37884098860836
new: 105.33202078376571
path: .spaces[6].metrics.halstead.purity_ratio
old: 1.9454861954900573
new: 1.9073093649624544
path: .spaces[6].metrics.halstead.level
old: 0.09001956947162428
new: 0.17777777777777778
path: .spaces[6].metrics.halstead.vocabulary
old: 60.0
new: 18.0
path: .spaces[6].metrics.halstead.N1
old: 85.0
new: 21.0
path: .spaces[6].metrics.halstead.N2
old: 73.0
new: 9.0
path: .spaces[6].metrics.halstead.volume
old: 933.288714106146
new: 125.09775004326936
path: .spaces[6].metrics.halstead.time
old: 575.9789044785514
new: 39.09304688852168
path: .spaces[6].metrics.halstead.length
old: 158.0
new: 30.0
path: .spaces[6].metrics.halstead.n2
old: 46.0
new: 8.0
path: .spaces[6].metrics.halstead.difficulty
old: 11.108695652173912
new: 5.625
path: .spaces[6].metrics.halstead.estimated_program_length
old: 307.38681888742906
new: 57.219280948873624
path: .spaces[6].metrics.halstead.bugs
old: 0.15848863815237038
new: 0.02637100993032116
path: .spaces[6].metrics.halstead.effort
old: 10367.620280613924
new: 703.6748439933903
path: .spaces[6].metrics.halstead.n1
old: 14.0
new: 10.0
path: .spaces[6].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[6].metrics.nexits.sum
old: 0.0
new: 2.0

### Code

    inline bool MayHaveTargetRangesOnHTMLEditor(EditorInputType aInputType) {
      switch (aInputType) {
        // Explicitly documented by the specs.
        case EditorInputType::eHistoryRedo:
        case EditorInputType::eHistoryUndo:
        // Not documented, but other browsers use empty array.
        case EditorInputType::eFormatSetBlockTextDirection:
          return false;
        default:
          return true;
      }
    }

## Minimal test - lines (139, 147)

path: .spaces[2].metrics.halstead.N2
old: 55.0
new: 8.0
path: .spaces[2].metrics.halstead.purity_ratio
old: 1.851710652247735
new: 2.0334909770491096
path: .spaces[2].metrics.halstead.time
old: 669.9654672202126
new: 33.737788530955186
path: .spaces[2].metrics.halstead.bugs
old: 0.17529197221485393
new: 0.02390405007110428
path: .spaces[2].metrics.halstead.effort
old: 12059.378409963829
new: 607.2801935571933
path: .spaces[2].metrics.halstead.n2
old: 34.0
new: 7.0
path: .spaces[2].metrics.halstead.difficulty
old: 15.367647058823527
new: 5.714285714285714
path: .spaces[2].metrics.halstead.estimated_program_length
old: 253.68435935793968
new: 52.87076540327685
path: .spaces[2].metrics.halstead.level
old: 0.06507177033492823
new: 0.175
path: .spaces[2].metrics.halstead.volume
old: 784.7251022751582
new: 106.27403387250882
path: .spaces[2].metrics.halstead.n1
old: 19.0
new: 10.0
path: .spaces[2].metrics.halstead.length
old: 137.0
new: 26.0
path: .spaces[2].metrics.halstead.N1
old: 82.0
new: 18.0
path: .spaces[2].metrics.halstead.vocabulary
old: 53.0
new: 17.0
path: .spaces[2].metrics.cyclomatic.sum
old: 8.0
new: 3.0
path: .spaces[2].metrics.cyclomatic.average
old: 2.0
new: 3.0
path: .spaces[2].metrics.nom.total
old: 3.0
new: 1.0
path: .spaces[2].metrics.nom.functions
old: 3.0
new: 1.0
path: .spaces[2].metrics.loc.sloc
old: 26.0
new: 9.0
path: .spaces[2].metrics.loc.ploc
old: 21.0
new: 9.0
path: .spaces[2].metrics.loc.blank
old: 5.0
new: 0.0
path: .spaces[2].metrics.loc.lloc
old: 4.0
new: 6.0
path: .spaces[2].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[2].metrics.nargs.average
old: 0.6666666666666666
new: 1.0
path: .spaces[2].metrics.nexits.average
old: 1.0
new: 2.0
path: .spaces[2].metrics.nexits.sum
old: 3.0
new: 2.0
path: .spaces[2].metrics.cognitive.sum
old: 4.0
new: 1.0
path: .spaces[2].metrics.cognitive.average
old: 1.3333333333333333
new: 1.0
path: .spaces[2].metrics.mi.mi_original
old: 81.71910204905996
new: 110.45165273358803
path: .spaces[2].metrics.mi.mi_sei
old: 43.00945015530091
new: 83.95265924293803
path: .spaces[2].metrics.mi.mi_visual_studio
old: 47.78894856670173
new: 64.591609785724

### Code

    inline bool ExposesClipboardDataOrDataTransfer(EditorInputType aInputType) {
      switch (aInputType) {
        case EditorInputType::eInsertFromPaste:
        case EditorInputType::eInsertFromPasteAsQuotation:
          return true;
        default:
          return false;
      }
    }

## Minimal test - lines (197, 209)

path: .spaces[5].metrics.cyclomatic.sum
old: 2.0
new: 7.0
path: .spaces[5].metrics.cyclomatic.average
old: 2.0
new: 7.0
path: .spaces[5].metrics.mi.mi_visual_studio
old: 45.569334426302014
new: 58.89279656516549
path: .spaces[5].metrics.mi.mi_original
old: 77.92356186897645
new: 100.70668212643298
path: .spaces[5].metrics.mi.mi_sei
old: 59.76036807257039
new: 70.30091791200458
path: .spaces[5].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[5].metrics.nargs.average
old: 2.0
new: 1.0
path: .spaces[5].metrics.nexits.sum
old: 0.0
new: 2.0
path: .spaces[5].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[5].metrics.halstead.n1
old: 13.0
new: 10.0
path: .spaces[5].metrics.halstead.purity_ratio
old: 1.598886594256385
new: 1.6969768750924736
path: .spaces[5].metrics.halstead.N1
old: 104.0
new: 30.0
path: .spaces[5].metrics.halstead.N2
old: 85.0
new: 12.0
path: .spaces[5].metrics.halstead.vocabulary
old: 59.0
new: 21.0
path: .spaces[5].metrics.halstead.bugs
old: 0.18762235364773192
new: 0.033471855994458254
path: .spaces[5].metrics.halstead.effort
old: 13353.919430912758
new: 1006.2399914002252
path: .spaces[5].metrics.halstead.length
old: 189.0
new: 42.0
path: .spaces[5].metrics.halstead.n2
old: 46.0
new: 11.0
path: .spaces[5].metrics.halstead.level
old: 0.08325791855203621
new: 0.18333333333333335
path: .spaces[5].metrics.halstead.estimated_program_length
old: 302.1895663144568
new: 71.27302875388389
path: .spaces[5].metrics.halstead.time
old: 741.8844128284866
new: 55.90222174445695
path: .spaces[5].metrics.halstead.volume
old: 1111.819536329388
new: 184.4773317567079
path: .spaces[5].metrics.halstead.difficulty
old: 12.01086956521739
new: 5.454545454545454
path: .spaces[5].metrics.loc.cloc
old: 3.0
new: 0.0
path: .spaces[5].metrics.loc.blank
old: 4.0
new: 0.0
path: .spaces[5].metrics.loc.sloc
old: 32.0
new: 13.0
path: .spaces[5].metrics.loc.ploc
old: 25.0
new: 13.0
path: .spaces[5].metrics.loc.lloc
old: 13.0
new: 10.0

### Code

    inline bool IsDataTransferAvailableOnHTMLEditor(EditorInputType aInputType) {
      switch (aInputType) {
        case EditorInputType::eInsertFromPaste:
        case EditorInputType::eInsertFromPasteAsQuotation:
        case EditorInputType::eInsertFromDrop:
        case EditorInputType::eInsertTranspose:
        case EditorInputType::eInsertReplacementText:
        case EditorInputType::eInsertFromYank:
          return true;
        default:
          return false;
      }
    }

## Minimal test - lines (39, 105)

path: .spaces[1].metrics.halstead.length
old: 50.0
new: 115.0
path: .spaces[1].metrics.halstead.effort
old: 1729.4749852191371
new: 4538.683785383965
path: .spaces[1].metrics.halstead.estimated_program_length
old: 71.54887502163469
new: 227.95057052383703
path: .spaces[1].metrics.halstead.time
old: 96.0819436232854
new: 252.14909918799808
path: .spaces[1].metrics.halstead.level
old: 0.12698412698412698
new: 0.14074074074074072
path: .spaces[1].metrics.halstead.volume
old: 219.61587113893805
new: 638.7777179429283
path: .spaces[1].metrics.halstead.vocabulary
old: 21.0
new: 47.0
path: .spaces[1].metrics.halstead.purity_ratio
old: 1.4309775004326937
new: 1.9821788741203223
path: .spaces[1].metrics.halstead.n2
old: 12.0
new: 38.0
path: .spaces[1].metrics.halstead.N1
old: 29.0
new: 55.0
path: .spaces[1].metrics.halstead.N2
old: 21.0
new: 60.0
path: .spaces[1].metrics.halstead.bugs
old: 0.04802731065671358
new: 0.09137597612054814
path: .spaces[1].metrics.halstead.difficulty
old: 7.875
new: 7.105263157894737
path: .spaces[1].metrics.cyclomatic.sum
old: 2.0
new: 1.0
path: .spaces[1].metrics.nargs.average
old: 0.0
new: null
path: .spaces[1].metrics.loc.blank
old: 1.0
new: 22.0
path: .spaces[1].metrics.loc.ploc
old: 9.0
new: 33.0
path: .spaces[1].metrics.loc.cloc
old: 0.0
new: 12.0
path: .spaces[1].metrics.loc.sloc
old: 10.0
new: 67.0
path: .spaces[1].metrics.loc.lloc
old: 2.0
new: 1.0
path: .spaces[1].metrics.nexits.average
old: 0.5
new: null
path: .spaces[1].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[1].metrics.cognitive.average
old: 0.0
new: null
path: .spaces[1].metrics.mi.mi_sei
old: 76.27480462033601
new: 54.52260880700632
path: .spaces[1].metrics.mi.mi_original
old: 105.20034559765352
new: 69.06428558586197
path: .spaces[1].metrics.mi.mi_visual_studio
old: 61.520669940148245
new: 40.388471102843255
path: .spaces[1].metrics.nom.closures
old: 1.0
new: 0.0
path: .spaces[1].metrics.nom.total
old: 2.0
new: 0.0
path: .spaces[1].metrics.nom.functions
old: 1.0
new: 0.0

### Code

    namespace mozilla {

    enum class CanBubble { eYes, eNo };

    enum class Cancelable { eYes, eNo };

    enum class ChromeOnlyDispatch { eYes, eNo };

    enum class Trusted { eYes, eNo };

    enum class Composed { eYes, eNo, eDefault };

    /**
     * Event messages
     */

    typedef uint16_t EventMessageType;

    enum EventMessage : EventMessageType {

    #define NS_EVENT_MESSAGE(aMessage) aMessage,
    #define NS_EVENT_MESSAGE_FIRST_LAST(aMessage, aFirst, aLast) \
      aMessage##First = aFirst, aMessage##Last = aLast,

    #include "mozilla/EventMessageList.h"

    #undef NS_EVENT_MESSAGE
    #undef NS_EVENT_MESSAGE_FIRST_LAST

      // For preventing bustage due to "," after the last item.
      eEventMessage_MaxValue
    };

    const char* ToChar(EventMessage aEventMessage);

    /**
     * Event class IDs
     */

    typedef uint8_t EventClassIDType;

    enum EventClassID : EventClassIDType {
    // The event class name will be:
    //   eBasicEventClass for WidgetEvent
    //   eFooEventClass for WidgetFooEvent or InternalFooEvent
    #define NS_ROOT_EVENT_CLASS(aPrefix, aName) eBasic##aName##Class
    #define NS_EVENT_CLASS(aPrefix, aName) , e##aName##Class

    #include "mozilla/EventClassList.h"

    #undef NS_EVENT_CLASS
    #undef NS_ROOT_EVENT_CLASS
    };

    const char* ToChar(EventClassID aEventClassID);

    typedef uint16_t Modifiers;

    #define NS_DEFINE_KEYNAME(aCPPName, aDOMKeyName) KEY_NAME_INDEX_##aCPPName,

    typedef uint16_t KeyNameIndexType;
    enum KeyNameIndex : KeyNameIndexType {
    #include "mozilla/KeyNameList.h"
      // If a DOM keyboard event is synthesized by script, this is used.  Then,
      // specified key name should be stored and use it as .key value.
      KEY_NAME_INDEX_USE_STRING
    };

## Minimal test - lines (153, 170)

path: .spaces[3].metrics.cognitive.sum
old: 0.0
new: 1.0
path: .spaces[3].metrics.cognitive.average
old: 0.0
new: 1.0
path: .spaces[3].metrics.mi.mi_sei
old: 98.84084096343476
new: 75.9692507963135
path: .spaces[3].metrics.mi.mi_visual_studio
old: 53.19695120443815
new: 53.746822924335575
path: .spaces[3].metrics.mi.mi_original
old: 90.96678655958924
new: 91.90706720061384
path: .spaces[3].metrics.nargs.average
old: 2.0
new: 1.0
path: .spaces[3].metrics.nargs.sum
old: 2.0
new: 1.0
path: .spaces[3].metrics.halstead.time
old: 181.19514283359405
new: 86.01151845348456
path: .spaces[3].metrics.halstead.length
old: 79.0
new: 62.0
path: .spaces[3].metrics.halstead.vocabulary
old: 31.0
new: 26.0
path: .spaces[3].metrics.halstead.level
old: 0.12
new: 0.18823529411764703
path: .spaces[3].metrics.halstead.N2
old: 35.0
new: 17.0
path: .spaces[3].metrics.halstead.estimated_program_length
old: 125.4579468272276
new: 97.21928094887365
path: .spaces[3].metrics.halstead.volume
old: 391.3815085205631
new: 291.4272625247477
path: .spaces[3].metrics.halstead.n2
old: 21.0
new: 16.0
path: .spaces[3].metrics.halstead.N1
old: 44.0
new: 45.0
path: .spaces[3].metrics.halstead.bugs
old: 0.07330913859967017
new: 0.04460992487605961
path: .spaces[3].metrics.halstead.purity_ratio
old: 1.5880752762940202
new: 1.56805291853022
path: .spaces[3].metrics.halstead.difficulty
old: 8.333333333333334
new: 5.3125
path: .spaces[3].metrics.halstead.effort
old: 3261.5125710046927
new: 1548.207332162722
path: .spaces[3].metrics.loc.ploc
old: 16.0
new: 18.0
path: .spaces[3].metrics.loc.lloc
old: 1.0
new: 15.0
path: .spaces[3].metrics.loc.cloc
old: 9.0
new: 1.0
path: .spaces[3].metrics.loc.sloc
old: 20.0
new: 18.0
path: .spaces[3].metrics.cyclomatic.sum
old: 2.0
new: 12.0
path: .spaces[3].metrics.cyclomatic.average
old: 2.0
new: 12.0
path: .spaces[3].metrics.nexits.average
old: 0.0
new: 2.0
path: .spaces[3].metrics.nexits.sum
old: 0.0
new: 2.0

### Code

    inline bool IsDataAvailableOnTextEditor(EditorInputType aInputType) {
      switch (aInputType) {
        case EditorInputType::eInsertText:
        case EditorInputType::eInsertCompositionText:
        case EditorInputType::eInsertFromComposition:  // Only level 2
        case EditorInputType::eInsertFromPaste:
        case EditorInputType::eInsertFromPasteAsQuotation:
        case EditorInputType::eInsertTranspose:
        case EditorInputType::eInsertFromDrop:
        case EditorInputType::eInsertReplacementText:
        case EditorInputType::eInsertFromYank:
        case EditorInputType::eFormatSetBlockTextDirection:
        case EditorInputType::eFormatSetInlineTextDirection:
          return true;
        default:
          return false;
      }
    }

## Minimal test - lines (392, 472)

path: .spaces[8].metrics.nom.total
old: 1.0
new: 0.0
path: .spaces[8].metrics.nom.functions
old: 1.0
new: 0.0
path: .spaces[8].metrics.halstead.n2
old: 46.0
new: 60.0
path: .spaces[8].metrics.halstead.N1
old: 93.0
new: 75.0
path: .spaces[8].metrics.halstead.difficulty
old: 13.858695652173912
new: 5.916666666666667
path: .spaces[8].metrics.halstead.time
old: 773.1481640179239
new: 294.14883219283115
path: .spaces[8].metrics.halstead.purity_ratio
old: 1.9260161802373712
new: 2.655018607434142
path: .spaces[8].metrics.halstead.volume
old: 1004.183027147986
new: 894.8753204739651
path: .spaces[8].metrics.halstead.bugs
old: 0.192857071573191
new: 0.10126013476204689
path: .spaces[8].metrics.halstead.N2
old: 75.0
new: 71.0
path: .spaces[8].metrics.halstead.vocabulary
old: 63.0
new: 70.0
path: .spaces[8].metrics.halstead.level
old: 0.07215686274509804
new: 0.16901408450704225
path: .spaces[8].metrics.halstead.effort
old: 13916.66695232263
new: 5294.67897947096
path: .spaces[8].metrics.halstead.length
old: 168.0
new: 146.0
path: .spaces[8].metrics.halstead.estimated_program_length
old: 323.57071827987835
new: 387.6327166853848
path: .spaces[8].metrics.halstead.n1
old: 17.0
new: 10.0
path: .spaces[8].metrics.loc.ploc
old: 26.0
new: 50.0
path: .spaces[8].metrics.loc.lloc
old: 13.0
new: 0.0
path: .spaces[8].metrics.loc.cloc
old: 3.0
new: 11.0
path: .spaces[8].metrics.loc.sloc
old: 33.0
new: 81.0
path: .spaces[8].metrics.loc.blank
old: 4.0
new: 20.0
path: .spaces[8].metrics.mi.mi_sei
old: 59.25233485567541
new: 40.41505144527741
path: .spaces[8].metrics.mi.mi_visual_studio
old: 45.45294952044234
new: 35.413546669444486
path: .spaces[8].metrics.mi.mi_original
old: 77.7245436799564
new: 60.55716480475007
path: .spaces[8].metrics.cognitive.sum
old: 2.0
new: 0.0
path: .spaces[8].metrics.cognitive.average
old: 2.0
new: null
path: .spaces[8].metrics.nargs.sum
old: 2.0
new: 0.0
path: .spaces[8].metrics.nargs.average
old: 2.0
new: null
path: .spaces[8].metrics.cyclomatic.average
old: 3.0
new: 1.0
path: .spaces[8].metrics.cyclomatic.sum
old: 3.0
new: 17.0
path: .spaces[8].metrics.nexits.average
old: 0.0
new: null

### Code

    namespace mozilla {

    template
    class OwningNonNull;

    namespace dom {
    class StaticRange;
    }

    #define NS_EVENT_CLASS(aPrefix, aName) class aPrefix##aName;
    #define NS_ROOT_EVENT_CLASS(aPrefix, aName) NS_EVENT_CLASS(aPrefix, aName)

    #include "mozilla/EventClassList.h"

    #undef NS_EVENT_CLASS
    #undef NS_ROOT_EVENT_CLASS

    // BasicEvents.h
    struct BaseEventFlags;
    struct EventFlags;

    class WidgetEventTime;

    class NativeEventData;

    // TextEvents.h
    enum class AccessKeyType;

    struct AlternativeCharCode;
    struct ShortcutKeyCandidate;

    typedef nsTArray ShortcutKeyCandidateArray;
    typedef AutoTArray AutoShortcutKeyCandidateArray;

    // TextRange.h
    typedef uint8_t RawTextRangeType;
    enum class TextRangeType : RawTextRangeType;

    struct TextRangeStyle;
    struct TextRange;

    class EditCommands;
    class TextRangeArray;

    typedef nsTArray> OwningNonNullStaticRangeArray;

    // FontRange.h
    struct FontRange;

    enum MouseButton : int16_t {
      eNotPressed = -1,
      ePrimary = 0,
      eMiddle = 1,
      eSecondary = 2,
      eX1 = 3,  // Typically, "back" button
      eX2 = 4,  // Typically, "forward" button
    };

    enum MouseButtonsFlag {
      eNoButtons = 0x00,
      ePrimaryFlag = 0x01,
      eSecondaryFlag = 0x02,
      eMiddleFlag = 0x04,
      // typicall, "back" button being left side of 5-button
      // mice, see "buttons" attribute document of DOM3 Events.
      e4thFlag = 0x08,
      // typicall, "forward" button being right side of 5-button
      // mice, see "buttons" attribute document of DOM3 Events.
      e5thFlag = 0x10
    };

    enum class TextRangeType : RawTextRangeType;

    // IMEData.h

    template
    class StartAndEndOffsets;
    template
    class OffsetAndData;

    }  // namespace mozilla