internal ErrorReport(AndroidErrorReport androidReport)
        {
            Id           = androidReport.Id;
            AppStartTime = DateTimeOffset.FromUnixTimeMilliseconds(androidReport.AppStartTime.Time);
            AppErrorTime = DateTimeOffset.FromUnixTimeMilliseconds(androidReport.AppErrorTime.Time);
            Device       = androidReport.Device == null ? null : new Device(androidReport.Device);
            object androidThrowable;

            try
            {
                androidThrowable = androidReport.Throwable;
            }
            catch (Exception e)
            {
                AppCenterLog.Debug(Crashes.LogTag, "Cannot read throwable from java point of view, probably a .NET exception", e);
                androidThrowable = null;
            }
            AndroidDetails = new AndroidErrorDetails(androidThrowable, androidReport.ThreadName);
            iOSDetails     = null;
            byte[] exceptionBytes = AndroidExceptionDataManager.LoadWrapperExceptionData(Java.Util.UUID.FromString(Id));
            if (exceptionBytes != null)
            {
                StackTrace = CrashesUtils.DeserializeException(exceptionBytes);
            }
        }
            public bool ShouldProcess(AndroidErrorReport androidReport)
            {
                if (ShouldProcessErrorReport == null)
                {
                    return(true);
                }
                var report = ErrorReportCache.GetErrorReport(androidReport);

                return(ShouldProcessErrorReport(report));
            }
        public void OnSendingSucceeded(AndroidErrorReport androidReport)
        {
            if (_owner.SentErrorReport == null)
            {
                return;
            }
            var report = ErrorReportCache.GetErrorReport(androidReport);
            var e      = new SentErrorReportEventArgs();

            e.Report = report;
            _owner.SentErrorReport(null, e);
        }
        public void OnSendingFailed(AndroidErrorReport androidReport, Exception exception)
        {
            if (_owner.FailedToSendErrorReport == null)
            {
                return;
            }
            var report = ErrorReportCache.GetErrorReport(androidReport);
            var e      = new FailedToSendErrorReportEventArgs();

            e.Report    = report;
            e.Exception = exception;
            _owner.FailedToSendErrorReport(null, e);
        }
            public void OnBeforeSending(AndroidErrorReport androidReport)
            {
                if (SendingErrorReport == null)
                {
                    return;
                }
                var report = ErrorReportCache.GetErrorReport(androidReport);
                var e      = new SendingErrorReportEventArgs
                {
                    Report = report
                };

                SendingErrorReport(null, e);
            }
            public void OnSendingFailed(AndroidErrorReport androidReport, Java.Lang.Exception exception)
            {
                if (FailedToSendErrorReport == null)
                {
                    return;
                }
                var report = ErrorReportCache.GetErrorReport(androidReport);
                var e      = new FailedToSendErrorReportEventArgs
                {
                    Report    = report,
                    Exception = exception
                };

                FailedToSendErrorReport(null, e);
            }
Beispiel #7
0
        internal static ErrorReport GetErrorReport(AndroidErrorReport androidReport)
        {
            lock (cachedReports)
            {
                ErrorReport cachedReport;
                if (cachedReports.TryGetValue(androidReport.Id, out cachedReport))
                {
                    return(cachedReport);
                }

                var newErrorReport = new ErrorReport(androidReport);
                cachedReports[androidReport.Id] = newErrorReport;
                return(newErrorReport);
            }
        }
        internal ErrorReport(AndroidErrorReport androidReport)
        {
            Id           = androidReport.Id;
            AppStartTime = DateTimeOffset.FromUnixTimeMilliseconds(androidReport.AppStartTime.Time);
            AppErrorTime = DateTimeOffset.FromUnixTimeMilliseconds(androidReport.AppErrorTime.Time);
            Device       = androidReport.Device == null ? null : new Device(androidReport.Device);
            var androidStackTrace = androidReport.StackTrace;

            AndroidDetails = new AndroidErrorDetails(androidStackTrace, androidReport.ThreadName);
            iOSDetails     = null;
            string exceptionString = AndroidExceptionDataManager.LoadWrapperExceptionData(Java.Util.UUID.FromString(Id));

            if (exceptionString != null)
            {
                StackTrace = exceptionString;
            }
        }
#pragma warning disable RECS0146 // Member hides static member from outer class
            public IIterable GetErrorAttachments(AndroidErrorReport androidReport)
#pragma warning restore RECS0146 // Member hides static member from outer class
            {
                if (Crashes.GetErrorAttachments == null)
                {
                    return(null);
                }
                var report      = ErrorReportCache.GetErrorReport(androidReport);
                var attachments = Crashes.GetErrorAttachments(report);

                if (attachments != null)
                {
                    var attachmentList = new ArrayList();
                    foreach (var attachment in attachments)
                    {
                        /* Let Java SDK warn against null. */
                        attachmentList.Add(attachment?.internalAttachment);
                    }
                    return(attachmentList);
                }
                return(null);
            }
        public IIterable GetErrorAttachments(AndroidErrorReport androidReport)
        {
            if (_owner.GetErrorAttachments == null)
            {
                return(null);
            }

            var report      = ErrorReportCache.GetErrorReport(androidReport);
            var attachments = _owner.GetErrorAttachments(report);

            if (attachments != null)
            {
                var attachmentList = new ArrayList();
                foreach (var attachment in attachments)
                {
                    /* Let Java SDK warn against null. */
                    attachmentList.Add(attachment?.internalAttachment);
                }
                return(attachmentList);
            }

            return(null);
        }
Beispiel #11
0
 public void OnResult(Java.Lang.Object result)
 {
     _result = result as AndroidErrorReport;
     Result.Start();
 }