Skip to content

Commit 2344a24

Browse files
committed
fix org-dartlang-sdk path on browser
1 parent 31b276a commit 2344a24

5 files changed

Lines changed: 45 additions & 9 deletions

File tree

lib/src/base.dart

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ abstract class SentryClientBase {
7676
/// Used by sentry to differentiate browser from io environment
7777
final String _platform;
7878

79+
final String dartSdkVersion;
80+
7981
SentryClientBase({
8082
this.httpClient,
8183
dynamic clock,
@@ -84,9 +86,11 @@ abstract class SentryClientBase {
8486
this.environmentAttributes,
8587
String platform,
8688
this.origin,
89+
String dartSdkVersion,
8790
}) : _dsn = Dsn.parse(dsn),
8891
_uuidGenerator = uuidGenerator ?? _generateUuidV4WithoutDashes,
89-
_platform = platform ?? sdkPlatform {
92+
_platform = platform ?? sdkPlatform,
93+
dartSdkVersion = dartSdkVersion ?? 'stable' {
9094
if (clock == null) {
9195
_clock = _getUtcDateTime;
9296
} else {
@@ -125,7 +129,10 @@ abstract class SentryClientBase {
125129
}
126130

127131
// apply origin to event
128-
event = event.replace(origin: origin);
132+
event = event.replace(
133+
origin: origin,
134+
dartSdkVersion: dartSdkVersion,
135+
);
129136

130137
mergeAttributes(event.toJson(), into: data);
131138
mergeAttributes({'platform': _platform}, into: data);
@@ -263,13 +270,16 @@ class Event {
263270
this.fingerprint,
264271
this.userContext,
265272
this.origin,
273+
this.dartSdkVersion,
266274
});
267275

268276
/// path origin ot hte excepetion
269277
/// used in browser environment
270278
/// window.location.origin
271279
final String origin;
272280

281+
final String dartSdkVersion;
282+
273283
/// The logger that logged the event.
274284
final String loggerName;
275285

@@ -365,7 +375,11 @@ class Event {
365375

366376
if (stackTrace != null) {
367377
json['stacktrace'] = <String, dynamic>{
368-
'frames': encodeStackTrace(stackTrace, origin: origin),
378+
'frames': encodeStackTrace(
379+
stackTrace,
380+
origin: origin,
381+
dartSdkVersion: dartSdkVersion,
382+
),
369383
};
370384
}
371385

@@ -403,6 +417,7 @@ class Event {
403417
List<String> fingerprint,
404418
User userContext,
405419
String origin,
420+
String dartSdkVersion,
406421
}) =>
407422
new Event(
408423
loggerName: loggerName ?? this.loggerName,
@@ -419,6 +434,7 @@ class Event {
419434
userContext: userContext ?? this.userContext,
420435
level: level ?? this.level,
421436
origin: origin ?? this.origin,
437+
dartSdkVersion: dartSdkVersion ?? this.dartSdkVersion,
422438
);
423439
}
424440

lib/src/browser.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class SentryClientBrowser extends SentryClientBase {
4242
dynamic clock,
4343
UuidGenerator uuidGenerator,
4444
String origin,
45+
String dartSdkVersion,
4546
}) {
4647
httpClient ??= new BrowserClient();
4748
origin ??= '${window.location.origin}/';
@@ -54,6 +55,7 @@ class SentryClientBrowser extends SentryClientBase {
5455
dsn: dsn,
5556
origin: origin,
5657
platform: browserPlatform,
58+
dartSdkVersion: dartSdkVersion,
5759
);
5860
}
5961

@@ -65,6 +67,7 @@ class SentryClientBrowser extends SentryClientBase {
6567
String dsn,
6668
String platform,
6769
String origin,
70+
String dartSdkVersion,
6871
}) : super(
6972
httpClient: httpClient,
7073
clock: clock,
@@ -73,6 +76,7 @@ class SentryClientBrowser extends SentryClientBase {
7376
dsn: dsn,
7477
platform: platform,
7578
origin: origin,
79+
dartSdkVersion: dartSdkVersion,
7680
);
7781

7882
@override

lib/src/stack_trace.dart

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const Map<String, dynamic> asynchronousGapFrameJson = const <String, dynamic>{
1717
List<Map<String, dynamic>> encodeStackTrace(
1818
dynamic stackTrace, {
1919
String origin,
20+
String dartSdkVersion,
2021
}) {
2122
assert(stackTrace is String || stackTrace is StackTrace);
2223
final Chain chain = stackTrace is StackTrace
@@ -25,18 +26,32 @@ List<Map<String, dynamic>> encodeStackTrace(
2526

2627
final List<Map<String, dynamic>> frames = <Map<String, dynamic>>[];
2728
for (int t = 0; t < chain.traces.length; t += 1) {
28-
frames.addAll(chain.traces[t].frames
29-
.map((f) => encodeStackTraceFrame(f, origin: origin)));
29+
frames.addAll(chain.traces[t].frames.map((f) => encodeStackTraceFrame(
30+
f,
31+
origin: origin,
32+
dartSdkVersion: dartSdkVersion,
33+
)));
3034
if (t < chain.traces.length - 1) frames.add(asynchronousGapFrameJson);
3135
}
3236
return frames.reversed.toList();
3337
}
3438

35-
Map<String, dynamic> encodeStackTraceFrame(Frame frame, {String origin}) {
39+
Map<String, dynamic> encodeStackTraceFrame(
40+
Frame frame, {
41+
String origin,
42+
String dartSdkVersion,
43+
}) {
3644
origin ??= '';
3745

46+
final version = dartSdkVersion ?? 'stable';
47+
48+
final absPath = '$origin${_absolutePathForCrashReport(frame)}'.replaceFirst(
49+
'org-dartlang-sdk://',
50+
'https://raw.githubusercontent.com/dart-lang/sdk/$version',
51+
);
52+
3853
final Map<String, dynamic> json = <String, dynamic>{
39-
'abs_path': '$origin${_absolutePathForCrashReport(frame)}',
54+
'abs_path': absPath,
4055
'function': frame.member,
4156
'lineno': frame.line,
4257
'colno': frame.column,

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ dev_dependencies:
1717
args: ">=0.13.0 <2.0.0"
1818
test: ">=0.12.0 <2.0.0"
1919
yaml: ">=2.1.0 <3.0.0"
20-
mockito: ">=2.0.0 <3.0.0"
20+
mockito: "^3.0.0"

test/test_utils.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ void testHeaders(
3737
'sentry_secret=secret';
3838
}
3939

40-
if (withUserAgent) expectedHeaders['User-Agent'] = '$sdkName/$sdkVersion';
40+
if (withUserAgent)
41+
expectedHeaders['User-Agent'] = '$sdkName/$sdkVersion';
4142

4243
if (compressPayload) expectedHeaders['Content-Encoding'] = 'gzip';
4344

0 commit comments

Comments
 (0)