Global Metrics
path: .metrics.mi.mi_visual_studio
old: 4.530164422824171
new: 30.705851351138655
path: .metrics.mi.mi_sei
old: -26.791468114926268
new: 30.507903833068507
path: .metrics.mi.mi_original
old: 7.746581163029333
new: 52.5070058104471
path: .metrics.cyclomatic.average
old: 1.0357142857142858
new: 1.1111111111111112
path: .metrics.cyclomatic.sum
old: 29.0
new: 10.0
path: .metrics.loc.blank
old: 107.0
new: 23.0
path: .metrics.loc.cloc
old: 162.0
new: 18.0
path: .metrics.loc.ploc
old: 388.0
new: 68.0
path: .metrics.loc.sloc
old: 657.0
new: 109.0
path: .metrics.loc.lloc
old: 208.0
new: 3.0
path: .metrics.halstead.purity_ratio
old: 0.5082696556309584
new: 1.4122852110124742
path: .metrics.halstead.bugs
old: 4.113129901827948
new: 0.3720099307156042
path: .metrics.halstead.difficulty
old: 68.73529411764706
new: 16.392857142857142
path: .metrics.halstead.effort
old: 1370694.028183296
new: 37283.24306435292
path: .metrics.halstead.time
old: 76149.66823240533
new: 2071.29128135294
path: .metrics.halstead.volume
old: 19941.63327267097
new: 2274.359054034601
path: .metrics.halstead.n1
old: 19.0
new: 17.0
path: .metrics.halstead.N2
old: 1230.0
new: 135.0
path: .metrics.halstead.estimated_program_length
old: 1340.3070818988374
new: 498.5366794874034
path: .metrics.halstead.length
old: 2637.0
new: 353.0
path: .metrics.halstead.level
old: 0.01454856653829696
new: 0.06100217864923747
path: .metrics.halstead.vocabulary
old: 189.0
new: 87.0
path: .metrics.halstead.n2
old: 170.0
new: 70.0
path: .metrics.halstead.N1
old: 1407.0
new: 218.0
path: .metrics.nexits.sum
old: 0.0
new: 1.0
path: .metrics.nexits.average
old: 0.0
new: 0.25
path: .metrics.nargs.average
old: 1.4
new: 1.25
path: .metrics.nargs.sum
old: 35.0
new: 5.0
path: .metrics.nom.total
old: 25.0
new: 4.0
path: .metrics.nom.functions
old: 25.0
new: 4.0
Spaces Data
Minimal test - lines (17, 107)
path: .spaces[1].metrics.mi.mi_original
old: 129.16123554141697
new: 56.07949935458514
path: .spaces[1].metrics.mi.mi_sei
old: 110.84306171748976
new: 31.66685140316248
path: .spaces[1].metrics.mi.mi_visual_studio
old: 75.5328862815304
new: 32.79502886233049
path: .spaces[1].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[1].metrics.nexits.average
old: 0.0
new: 0.25
path: .spaces[1].metrics.nom.total
old: 1.0
new: 4.0
path: .spaces[1].metrics.nom.functions
old: 1.0
new: 4.0
path: .spaces[1].metrics.nargs.average
old: 0.0
new: 1.25
path: .spaces[1].metrics.nargs.sum
old: 0.0
new: 5.0
path: .spaces[1].metrics.loc.ploc
old: 4.0
new: 60.0
path: .spaces[1].metrics.loc.lloc
old: 1.0
new: 3.0
path: .spaces[1].metrics.loc.cloc
old: 0.0
new: 11.0
path: .spaces[1].metrics.loc.blank
old: 0.0
new: 20.0
path: .spaces[1].metrics.loc.sloc
old: 4.0
new: 91.0
path: .spaces[1].metrics.cyclomatic.average
old: 1.0
new: 1.1428571428571428
path: .spaces[1].metrics.cyclomatic.sum
old: 2.0
new: 8.0
path: .spaces[1].metrics.halstead.volume
old: 38.039100017307746
new: 2193.355441593239
path: .spaces[1].metrics.halstead.level
old: 0.32
new: 0.059742647058823525
path: .spaces[1].metrics.halstead.estimated_program_length
old: 19.60964047443681
new: 460.9407761481053
path: .spaces[1].metrics.halstead.n1
old: 5.0
new: 17.0
path: .spaces[1].metrics.halstead.vocabulary
old: 9.0
new: 82.0
path: .spaces[1].metrics.halstead.length
old: 12.0
new: 345.0
path: .spaces[1].metrics.halstead.N2
old: 5.0
new: 128.0
path: .spaces[1].metrics.halstead.time
old: 6.604010419671484
new: 2039.633094404653
path: .spaces[1].metrics.halstead.n2
old: 4.0
new: 65.0
path: .spaces[1].metrics.halstead.N1
old: 7.0
new: 217.0
path: .spaces[1].metrics.halstead.effort
old: 118.87218755408672
new: 36713.39569928376
path: .spaces[1].metrics.halstead.bugs
old: 0.008058711007931684
new: 0.3682096068741957
path: .spaces[1].metrics.halstead.difficulty
old: 3.125
new: 16.73846153846154
path: .spaces[1].metrics.halstead.purity_ratio
old: 1.6341367062030674
new: 1.3360602207191457
Code
namespace mozilla {
namespace widget {
class GeckoViewSupport final
: public java::GeckoSession::Window::Natives {
RefPtr mWindow;
// We hold a WeakRef because we want to allow the
// GeckoSession.Window to be garbage collected.
// Callers need to create a LocalRef from this
// before calling methods.
java::GeckoSession::Window::WeakRef mGeckoViewWindow;
public:
typedef java::GeckoSession::Window::Natives Base;
template
static void OnNativeCall(Functor&& aCall) {
NS_DispatchToMainThread(new WindowEvent(std::move(aCall)));
}
GeckoViewSupport(nsWindow* aWindow,
const java::GeckoSession::Window::LocalRef& aInstance,
nsPIDOMWindowOuter* aDOMWindow)
: mWindow(aWindow), mGeckoViewWindow(aInstance), mDOMWindow(aDOMWindow) {}
~GeckoViewSupport();
nsWindow* GetNsWindow() const { return mWindow; }
using Base::DisposeNative;
/**
* GeckoView methods
*/
private:
nsCOMPtr mDOMWindow;
bool mIsReady{false};
public:
// Create and attach a window.
static void Open(const jni::Class::LocalRef& aCls,
java::GeckoSession::Window::Param aWindow,
jni::Object::Param aQueue, jni::Object::Param aCompositor,
jni::Object::Param aDispatcher,
jni::Object::Param aSessionAccessibility,
jni::Object::Param aInitData, jni::String::Param aId,
jni::String::Param aChromeURI, int32_t aScreenId,
bool aPrivateMode);
// Close and destroy the nsWindow.
void Close();
// Transfer this nsWindow to new GeckoSession objects.
void Transfer(const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aQueue, jni::Object::Param aCompositor,
jni::Object::Param aDispatcher,
jni::Object::Param aSessionAccessibility,
jni::Object::Param aInitData);
void AttachEditable(const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aEditableParent);
void AttachAccessibility(const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aSessionAccessibility);
void OnReady(jni::Object::Param aQueue = nullptr);
auto OnLoadRequest(mozilla::jni::String::Param aUri, int32_t aWindowType,
int32_t aFlags, mozilla::jni::String::Param aTriggeringUri,
bool aHasUserGesture, bool aIsTopLevel) const
-> java::GeckoResult::LocalRef;
void PassExternalResponse(java::WebResponse::Param aResponse);
void AttachMediaSessionController(
const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aController, const int64_t aId);
void DetachMediaSessionController(
const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aController);
void OnWeakNonIntrusiveDetach(already_AddRefed aDisposer) {
RefPtr disposer(aDisposer);
disposer->Run();
}
};
} // namespace widget
} // namespace mozilla
Minimal test - lines (15, 15)
path: .spaces[0].metrics.nexits.average
old: 0.0
new: null
path: .spaces[0].metrics.halstead.N2
old: 459.0
new: 1.0
path: .spaces[0].metrics.halstead.length
old: 985.0
new: 1.0
path: .spaces[0].metrics.halstead.purity_ratio
old: 0.645273841791676
new: null
path: .spaces[0].metrics.halstead.N1
old: 526.0
new: 0.0
path: .spaces[0].metrics.halstead.n2
old: 87.0
new: 1.0
path: .spaces[0].metrics.halstead.time
old: 17446.040874825398
new: 0.0
path: .spaces[0].metrics.halstead.level
old: 0.021060275962236745
new: null
path: .spaces[0].metrics.halstead.bugs
old: 1.5400151944406462
new: 0.0
path: .spaces[0].metrics.halstead.n1
old: 18.0
new: 0.0
path: .spaces[0].metrics.halstead.vocabulary
old: 105.0
new: 1.0
path: .spaces[0].metrics.halstead.estimated_program_length
old: 635.5947341648009
new: null
path: .spaces[0].metrics.halstead.volume
old: 6613.53183490113
new: 0.0
path: .spaces[0].metrics.halstead.difficulty
old: 47.48275862068966
new: 0.0
path: .spaces[0].metrics.halstead.effort
old: 314028.7357468571
new: 0.0
path: .spaces[0].metrics.cognitive.average
old: 0.0
new: null
path: .spaces[0].metrics.nargs.average
old: 0.14285714285714285
new: null
path: .spaces[0].metrics.nargs.sum
old: 1.0
new: 0.0
path: .spaces[0].metrics.cyclomatic.sum
old: 9.0
new: 1.0
path: .spaces[0].metrics.cyclomatic.average
old: 1.125
new: 1.0
path: .spaces[0].metrics.loc.sloc
old: 176.0
new: 1.0
path: .spaces[0].metrics.loc.lloc
old: 57.0
new: 0.0
path: .spaces[0].metrics.loc.cloc
old: 24.0
new: 0.0
path: .spaces[0].metrics.loc.ploc
old: 141.0
new: 1.0
path: .spaces[0].metrics.loc.blank
old: 11.0
new: 0.0
path: .spaces[0].metrics.mi.mi_sei
old: 9.161939564433036
new: null
path: .spaces[0].metrics.mi.mi_original
old: 39.42441912357461
new: null
path: .spaces[0].metrics.mi.mi_visual_studio
old: 23.055215861739537
new: null
path: .spaces[0].metrics.nom.functions
old: 7.0
new: 0.0
path: .spaces[0].metrics.nom.total
old: 7.0
new: 0.0
Code
class nsWindow;
Minimal test - lines (18, 106)
path: .spaces[1].spaces[0].metrics.cyclomatic.average
old: 1.0
new: 1.1666666666666667
path: .spaces[1].spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 7.0
path: .spaces[1].spaces[0].metrics.nargs.average
old: 0.0
new: 1.25
path: .spaces[1].spaces[0].metrics.nargs.sum
old: 0.0
new: 5.0
path: .spaces[1].spaces[0].metrics.nom.functions
old: 1.0
new: 4.0
path: .spaces[1].spaces[0].metrics.nom.total
old: 1.0
new: 4.0
path: .spaces[1].spaces[0].metrics.halstead.time
old: 2.1834982727114696
new: 2037.7141933967755
path: .spaces[1].spaces[0].metrics.halstead.effort
old: 39.302968908806456
new: 36678.85548114196
path: .spaces[1].spaces[0].metrics.halstead.length
old: 7.0
new: 343.0
path: .spaces[1].spaces[0].metrics.halstead.vocabulary
old: 7.0
new: 81.0
path: .spaces[1].spaces[0].metrics.halstead.difficulty
old: 2.0
new: 16.8671875
path: .spaces[1].spaces[0].metrics.halstead.volume
old: 19.651484454403228
new: 2174.568550989426
path: .spaces[1].spaces[0].metrics.halstead.purity_ratio
old: 1.8221267860233523
new: 1.3221191495663434
path: .spaces[1].spaces[0].metrics.halstead.n1
old: 4.0
new: 17.0
path: .spaces[1].spaces[0].metrics.halstead.N1
old: 4.0
new: 216.0
path: .spaces[1].spaces[0].metrics.halstead.N2
old: 3.0
new: 127.0
path: .spaces[1].spaces[0].metrics.halstead.level
old: 0.5
new: 0.059286706808707734
path: .spaces[1].spaces[0].metrics.halstead.estimated_program_length
old: 12.754887502163468
new: 453.48686830125575
path: .spaces[1].spaces[0].metrics.halstead.n2
old: 3.0
new: 64.0
path: .spaces[1].spaces[0].metrics.halstead.bugs
old: 0.0038532659414573967
new: 0.36797862787341024
path: .spaces[1].spaces[0].metrics.nexits.average
old: 0.0
new: 0.25
path: .spaces[1].spaces[0].metrics.nexits.sum
old: 0.0
new: 1.0
path: .spaces[1].spaces[0].metrics.mi.mi_original
old: 155.2836050228807
new: 56.71424591662151
path: .spaces[1].spaces[0].metrics.mi.mi_sei
old: 148.4278547652622
new: 31.64647556520427
path: .spaces[1].spaces[0].metrics.mi.mi_visual_studio
old: 90.80912574437468
new: 33.1662256822348
path: .spaces[1].spaces[0].metrics.loc.lloc
old: 1.0
new: 3.0
path: .spaces[1].spaces[0].metrics.loc.sloc
old: 1.0
new: 89.0
path: .spaces[1].spaces[0].metrics.loc.blank
old: 0.0
new: 21.0
path: .spaces[1].spaces[0].metrics.loc.cloc
old: 0.0
new: 10.0
path: .spaces[1].spaces[0].metrics.loc.ploc
old: 1.0
new: 58.0
Code
namespace widget {
class GeckoViewSupport final
: public java::GeckoSession::Window::Natives {
RefPtr mWindow;
// We hold a WeakRef because we want to allow the
// GeckoSession.Window to be garbage collected.
// Callers need to create a LocalRef from this
// before calling methods.
java::GeckoSession::Window::WeakRef mGeckoViewWindow;
public:
typedef java::GeckoSession::Window::Natives Base;
template
static void OnNativeCall(Functor&& aCall) {
NS_DispatchToMainThread(new WindowEvent(std::move(aCall)));
}
GeckoViewSupport(nsWindow* aWindow,
const java::GeckoSession::Window::LocalRef& aInstance,
nsPIDOMWindowOuter* aDOMWindow)
: mWindow(aWindow), mGeckoViewWindow(aInstance), mDOMWindow(aDOMWindow) {}
~GeckoViewSupport();
nsWindow* GetNsWindow() const { return mWindow; }
using Base::DisposeNative;
/**
* GeckoView methods
*/
private:
nsCOMPtr mDOMWindow;
bool mIsReady{false};
public:
// Create and attach a window.
static void Open(const jni::Class::LocalRef& aCls,
java::GeckoSession::Window::Param aWindow,
jni::Object::Param aQueue, jni::Object::Param aCompositor,
jni::Object::Param aDispatcher,
jni::Object::Param aSessionAccessibility,
jni::Object::Param aInitData, jni::String::Param aId,
jni::String::Param aChromeURI, int32_t aScreenId,
bool aPrivateMode);
// Close and destroy the nsWindow.
void Close();
// Transfer this nsWindow to new GeckoSession objects.
void Transfer(const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aQueue, jni::Object::Param aCompositor,
jni::Object::Param aDispatcher,
jni::Object::Param aSessionAccessibility,
jni::Object::Param aInitData);
void AttachEditable(const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aEditableParent);
void AttachAccessibility(const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aSessionAccessibility);
void OnReady(jni::Object::Param aQueue = nullptr);
auto OnLoadRequest(mozilla::jni::String::Param aUri, int32_t aWindowType,
int32_t aFlags, mozilla::jni::String::Param aTriggeringUri,
bool aHasUserGesture, bool aIsTopLevel) const
-> java::GeckoResult::LocalRef;
void PassExternalResponse(java::WebResponse::Param aResponse);
void AttachMediaSessionController(
const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aController, const int64_t aId);
void DetachMediaSessionController(
const java::GeckoSession::Window::LocalRef& inst,
jni::Object::Param aController);
void OnWeakNonIntrusiveDetach(already_AddRefed aDisposer) {
RefPtr disposer(aDisposer);
disposer->Run();
}
};
} // namespace widget