# Global Metrics

path: .metrics.cyclomatic.average
old: 1.4090909090909092
new: 1.0
path: .metrics.cyclomatic.sum
old: 31.0
new: 6.0
path: .metrics.halstead.N2
old: 249.0
new: 143.0
path: .metrics.halstead.vocabulary
old: 138.0
new: 93.0
path: .metrics.halstead.level
old: 0.03815261044176707
new: 0.08606777837547068
path: .metrics.halstead.estimated_program_length
old: 888.9885616320882
new: 553.8599639268232
path: .metrics.halstead.volume
old: 4336.199918634683
new: 2033.6783902545976
path: .metrics.halstead.n1
old: 24.0
new: 13.0
path: .metrics.halstead.purity_ratio
old: 1.4573582977575217
new: 1.780900205552486
path: .metrics.halstead.N1
old: 361.0
new: 168.0
path: .metrics.halstead.time
old: 6314.1156709943625
new: 1312.711155376145
path: .metrics.halstead.length
old: 610.0
new: 311.0
path: .metrics.halstead.bugs
old: 0.7821116790287715
new: 0.2744773629700805
path: .metrics.halstead.effort
old: 113654.08207789852
new: 23628.800796770607
path: .metrics.halstead.n2
old: 114.0
new: 80.0
path: .metrics.halstead.difficulty
old: 26.210526315789473
new: 11.61875
path: .metrics.nexits.average
old: 1.0952380952380951
new: 0.0
path: .metrics.nexits.sum
old: 23.0
new: 0.0
path: .metrics.nom.functions
old: 21.0
new: 1.0
path: .metrics.nom.total
old: 21.0
new: 1.0
path: .metrics.mi.mi_visual_studio
old: 20.958667691941464
new: 31.671313798267896
path: .metrics.mi.mi_original
old: 35.839321753219906
new: 54.1579465950381
path: .metrics.mi.mi_sei
old: -5.959781610931708
new: 20.89786254430325
path: .metrics.loc.sloc
old: 184.0
new: 108.0
path: .metrics.loc.blank
old: 39.0
new: 19.0
path: .metrics.loc.lloc
old: 55.0
new: 0.0
path: .metrics.loc.cloc
old: 7.0
new: 6.0
path: .metrics.loc.ploc
old: 138.0
new: 83.0
path: .metrics.cognitive.average
old: 0.3333333333333333
new: 0.0
path: .metrics.cognitive.sum
old: 7.0
new: 0.0
path: .metrics.nargs.sum
old: 32.0
new: 8.0
path: .metrics.nargs.average
old: 1.5238095238095235
new: 8.0

# Spaces Data

## Minimal test - lines (18, 106)

path: .spaces[0].metrics.mi.mi_original
old: 120.23754699949156
new: 57.71802216163934
path: .spaces[0].metrics.mi.mi_sei
old: 97.86708065221184
new: 16.251607584085797
path: .spaces[0].metrics.mi.mi_visual_studio
old: 70.3143549704629
new: 33.75322933429201
path: .spaces[0].metrics.nexits.average
old: 1.0
new: 0.0
path: .spaces[0].metrics.nexits.sum
old: 1.0
new: 0.0
path: .spaces[0].metrics.nargs.average
old: 1.0
new: 8.0
path: .spaces[0].metrics.nargs.sum
old: 1.0
new: 8.0
path: .spaces[0].metrics.cyclomatic.sum
old: 1.0
new: 5.0
path: .spaces[0].metrics.loc.cloc
old: 0.0
new: 1.0
path: .spaces[0].metrics.loc.lloc
old: 3.0
new: 0.0
path: .spaces[0].metrics.loc.blank
old: 0.0
new: 16.0
path: .spaces[0].metrics.loc.ploc
old: 5.0
new: 72.0
path: .spaces[0].metrics.loc.sloc
old: 5.0
new: 89.0
path: .spaces[0].metrics.halstead.time
old: 29.97472750250249
new: 1299.8880355108136
path: .spaces[0].metrics.halstead.volume
old: 110.36149671375917
new: 1958.6548227380133
path: .spaces[0].metrics.halstead.N2
old: 11.0
new: 136.0
path: .spaces[0].metrics.halstead.N1
old: 16.0
new: 168.0
path: .spaces[0].metrics.halstead.purity_ratio
old: 1.945530556036326
new: 1.6697541624749228
path: .spaces[0].metrics.halstead.n2
old: 9.0
new: 74.0
path: .spaces[0].metrics.halstead.bugs
old: 0.022091773291324876
new: 0.2726869658563649
path: .spaces[0].metrics.halstead.difficulty
old: 4.888888888888889
new: 11.945945945945946
path: .spaces[0].metrics.halstead.estimated_program_length
old: 52.529325012980806
new: 507.6052653923765
path: .spaces[0].metrics.halstead.n1
old: 8.0
new: 13.0
path: .spaces[0].metrics.halstead.level
old: 0.20454545454545453
new: 0.08371040723981901
path: .spaces[0].metrics.halstead.vocabulary
old: 17.0
new: 87.0
path: .spaces[0].metrics.halstead.length
old: 27.0
new: 304.0
path: .spaces[0].metrics.halstead.effort
old: 539.5450950450448
new: 23397.984639194645

### Code

    namespace mozilla {
    namespace widget {

    class ToastNotification;

    class ToastNotificationHandler final
        : public nsIAlertNotificationImageListener {
     public:
      NS_DECL_ISUPPORTS
      NS_DECL_NSIALERTNOTIFICATIONIMAGELISTENER

      ToastNotificationHandler(ToastNotification* backend,
                               nsIObserver* aAlertListener, const nsAString& aName,
                               const nsAString& aCookie, const nsAString& aTitle,
                               const nsAString& aMsg, const nsAString& aHostPort,
                               bool aClickable)
          : mBackend(backend),
            mHasImage(false),
            mAlertListener(aAlertListener),
            mName(aName),
            mCookie(aCookie),
            mTitle(aTitle),
            mMsg(aMsg),
            mHostPort(aHostPort),
            mClickable(aClickable),
            mSentFinished(!aAlertListener) {}

      nsresult InitAlertAsync(nsIAlertNotification* aAlert);

      void OnWriteBitmapFinished(nsresult rv);

      void UnregisterHandler();

     protected:
      virtual ~ToastNotificationHandler();

      typedef ABI::Windows::Data::Xml::Dom::IXmlDocument IXmlDocument;
      typedef ABI::Windows::UI::Notifications::IToastNotifier IToastNotifier;
      typedef ABI::Windows::UI::Notifications::IToastNotification
          IToastNotification;
      typedef ABI::Windows::UI::Notifications::IToastDismissedEventArgs
          IToastDismissedEventArgs;
      typedef ABI::Windows::UI::Notifications::IToastFailedEventArgs
          IToastFailedEventArgs;
      typedef ABI::Windows::UI::Notifications::ToastTemplateType ToastTemplateType;

      Microsoft::WRL::ComPtr mNotification;
      Microsoft::WRL::ComPtr mNotifier;

      RefPtr mBackend;

      nsCOMPtr mImageRequest;
      nsCOMPtr mImageFile;
      nsString mImageUri;
      bool mHasImage;

      EventRegistrationToken mActivatedToken;
      EventRegistrationToken mDismissedToken;
      EventRegistrationToken mFailedToken;

      nsCOMPtr mAlertListener;
      nsString mName;
      nsString mCookie;
      nsString mTitle;
      nsString mMsg;
      nsString mHostPort;
      bool mClickable;
      bool mSentFinished;

      nsresult TryShowAlert();
      bool ShowAlert();
      nsresult AsyncSaveImage(imgIRequest* aRequest);
      nsresult OnWriteBitmapSuccess();
      void SendFinished();

      bool CreateWindowsNotificationFromXml(IXmlDocument* aToastXml);
      Microsoft::WRL::ComPtr InitializeXmlForTemplate(
          ToastTemplateType templateType);

      HRESULT OnActivate(IToastNotification* notification,
                         IInspectable* inspectable);
      HRESULT OnDismiss(IToastNotification* notification,
                        IToastDismissedEventArgs* aArgs);
      HRESULT OnFail(IToastNotification* notification,
                     IToastFailedEventArgs* aArgs);
    };

    }  // namespace widget
    }  // namespace mozilla