Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
9e162cb3
Unverified
Commit
9e162cb3
authored
4 years ago
by
Jonah Williams
Committed by
GitHub
4 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Add native stacktrace field for PlatformException (#63502)" (#63705)
This reverts commit
c67eafa8
.
parent
c67eafa8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
13 additions
and
112 deletions
+13
-112
message_codec.dart
packages/flutter/lib/src/services/message_codec.dart
+4
-16
message_codecs.dart
packages/flutter/lib/src/services/message_codecs.dart
+4
-16
message_codecs_test.dart
packages/flutter/test/services/message_codecs_test.dart
+5
-78
platform_channel_test.dart
packages/flutter/test/services/platform_channel_test.dart
+0
-2
No files found.
packages/flutter/lib/src/services/message_codec.dart
View file @
9e162cb3
...
...
@@ -80,10 +80,9 @@ abstract class MethodCodec {
/// Encodes an error result into a binary envelope.
///
/// The specified error [code], human-readable error [message], error
/// [details] correspond to the fields of [PlatformException] and error
/// [stacktrace] correspond to stacktrace from native platforms.
ByteData
encodeErrorEnvelope
({
required
String
code
,
String
?
message
,
dynamic
details
,
String
?
stacktrace
});
/// The specified error [code], human-readable error [message], and error
/// [details] correspond to the fields of [PlatformException].
ByteData
encodeErrorEnvelope
({
required
String
code
,
String
?
message
,
dynamic
details
});
}
...
...
@@ -108,7 +107,6 @@ class PlatformException implements Exception {
required
this
.
code
,
this
.
message
,
this
.
details
,
this
.
stacktrace
,
})
:
assert
(
code
!=
null
);
/// An error code.
...
...
@@ -120,18 +118,8 @@ class PlatformException implements Exception {
/// Error details, possibly null.
final
dynamic
details
;
/// Native stacktrace for the error, possibly null.
/// This is strictly for native platform stacktrace.
/// The stacktrace info on dart platform can be found within the try-catch block for example:
/// try {
/// ...
/// } catch (e, stacktrace) {
/// print(stacktrace);
/// }
final
String
?
stacktrace
;
@override
String
toString
()
=>
'PlatformException(
$code
,
$message
,
$details
,
$stacktrace
)'
;
String
toString
()
=>
'PlatformException(
$code
,
$message
,
$details
)'
;
}
/// Thrown to indicate that a platform interaction failed to find a handling
...
...
This diff is collapsed.
Click to expand it.
packages/flutter/lib/src/services/message_codecs.dart
View file @
9e162cb3
...
...
@@ -152,16 +152,6 @@ class JSONMethodCodec implements MethodCodec {
message:
decoded
[
1
]
as
String
,
details:
decoded
[
2
],
);
if
(
decoded
.
length
==
4
&&
decoded
[
0
]
is
String
&&
(
decoded
[
1
]
==
null
||
decoded
[
1
]
is
String
)
&&
(
decoded
[
3
]
==
null
||
decoded
[
3
]
is
String
))
throw
PlatformException
(
code:
decoded
[
0
]
as
String
,
message:
decoded
[
1
]
as
String
,
details:
decoded
[
2
],
stacktrace:
decoded
[
3
]
as
String
,
);
throw
FormatException
(
'Invalid envelope:
$decoded
'
);
}
...
...
@@ -171,9 +161,9 @@ class JSONMethodCodec implements MethodCodec {
}
@override
ByteData
encodeErrorEnvelope
({
required
String
code
,
String
?
message
,
dynamic
details
,
String
?
stacktrace
})
{
ByteData
encodeErrorEnvelope
({
required
String
code
,
String
?
message
,
dynamic
details
})
{
assert
(
code
!=
null
);
return
const
JSONMessageCodec
().
encodeMessage
(<
dynamic
>[
code
,
message
,
details
,
stacktrace
])!;
return
const
JSONMessageCodec
().
encodeMessage
(<
dynamic
>[
code
,
message
,
details
])!;
}
}
...
...
@@ -557,13 +547,12 @@ class StandardMethodCodec implements MethodCodec {
}
@override
ByteData
encodeErrorEnvelope
({
required
String
code
,
String
?
message
,
dynamic
details
,
String
?
stacktrace
})
{
ByteData
encodeErrorEnvelope
({
required
String
code
,
String
?
message
,
dynamic
details
})
{
final
WriteBuffer
buffer
=
WriteBuffer
();
buffer
.
putUint8
(
1
);
messageCodec
.
writeValue
(
buffer
,
code
);
messageCodec
.
writeValue
(
buffer
,
message
);
messageCodec
.
writeValue
(
buffer
,
details
);
messageCodec
.
writeValue
(
buffer
,
stacktrace
);
return
buffer
.
done
();
}
...
...
@@ -578,9 +567,8 @@ class StandardMethodCodec implements MethodCodec {
final
dynamic
errorCode
=
messageCodec
.
readValue
(
buffer
);
final
dynamic
errorMessage
=
messageCodec
.
readValue
(
buffer
);
final
dynamic
errorDetails
=
messageCodec
.
readValue
(
buffer
);
final
String
?
errorStacktrace
=
(
buffer
.
hasRemaining
)
?
messageCodec
.
readValue
(
buffer
)
as
String
:
null
;
if
(
errorCode
is
String
&&
(
errorMessage
==
null
||
errorMessage
is
String
)
&&
!
buffer
.
hasRemaining
)
throw
PlatformException
(
code:
errorCode
,
message:
errorMessage
as
String
,
details:
errorDetails
,
stacktrace:
errorStacktrace
);
throw
PlatformException
(
code:
errorCode
,
message:
errorMessage
as
String
,
details:
errorDetails
);
else
throw
const
FormatException
(
'Invalid envelope'
);
}
...
...
This diff is collapsed.
Click to expand it.
packages/flutter/test/services/message_codecs_test.dart
View file @
9e162cb3
...
...
@@ -10,7 +10,6 @@
import
'dart:typed_data'
;
import
'package:flutter/services.dart'
;
import
'package:matcher/matcher.dart'
;
import
'../flutter_test_alternative.dart'
;
import
'message_codecs_testing.dart'
;
...
...
@@ -37,72 +36,14 @@ void main() {
final
ByteData
helloByteData
=
string
.
encodeMessage
(
'hello'
);
final
ByteData
offsetByteData
=
ByteData
.
view
(
helloWorldByteData
.
buffer
,
helloByteData
.
lengthInBytes
,
helloWorldByteData
.
lengthInBytes
-
helloByteData
.
lengthInBytes
,
helloWorldByteData
.
buffer
,
helloByteData
.
lengthInBytes
,
helloWorldByteData
.
lengthInBytes
-
helloByteData
.
lengthInBytes
,
);
expect
(
string
.
decodeMessage
(
offsetByteData
),
' world'
);
});
});
group
(
'Standard method codec'
,
()
{
const
MethodCodec
method
=
StandardMethodCodec
();
test
(
'should decode error envelope without native stacktrace'
,
()
{
final
ByteData
errorData
=
method
.
encodeErrorEnvelope
(
code:
'errorCode'
,
message:
'errorMessage'
,
details:
'errorDetails'
,
);
expect
(
()
=>
method
.
decodeEnvelope
(
errorData
),
throwsA
(
predicate
((
PlatformException
e
)
=>
e
is
PlatformException
&&
e
.
code
==
'errorCode'
&&
e
.
message
==
'errorMessage'
&&
e
.
details
==
'errorDetails'
)));
});
test
(
'should decode error envelope with native stacktrace.'
,
()
{
final
ByteData
errorData
=
method
.
encodeErrorEnvelope
(
code:
'errorCode'
,
message:
'errorMessage'
,
details:
'errorDetails'
,
stacktrace:
'errorStacktrace'
,
);
expect
(
()
=>
method
.
decodeEnvelope
(
errorData
),
throwsA
(
predicate
((
PlatformException
e
)
=>
e
is
PlatformException
&&
e
.
stacktrace
==
'errorStacktrace'
)));
});
});
group
(
'Json method codec'
,
()
{
const
JSONMethodCodec
json
=
JSONMethodCodec
();
test
(
'should decode error envelope without native stacktrace'
,
()
{
final
ByteData
errorData
=
json
.
encodeErrorEnvelope
(
code:
'errorCode'
,
message:
'errorMessage'
,
details:
'errorDetails'
,
);
expect
(
()
=>
json
.
decodeEnvelope
(
errorData
),
throwsA
(
predicate
((
PlatformException
e
)
=>
e
is
PlatformException
&&
e
.
code
==
'errorCode'
&&
e
.
message
==
'errorMessage'
&&
e
.
details
==
'errorDetails'
)));
});
test
(
'should decode error envelope with native stacktrace.'
,
()
{
final
ByteData
errorData
=
json
.
encodeErrorEnvelope
(
code:
'errorCode'
,
message:
'errorMessage'
,
details:
'errorDetails'
,
stacktrace:
'errorStacktrace'
,
);
expect
(
()
=>
json
.
decodeEnvelope
(
errorData
),
throwsA
(
predicate
((
PlatformException
e
)
=>
e
is
PlatformException
&&
e
.
stacktrace
==
'errorStacktrace'
)));
});
});
group
(
'JSON message codec'
,
()
{
const
MessageCodec
<
dynamic
>
json
=
JSONMessageCodec
();
test
(
'should encode and decode simple messages'
,
()
{
...
...
@@ -210,22 +151,8 @@ void main() {
standard
,
1.0
,
<
int
>[
6
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0xf0
,
0x3f
,
6
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
0xf0
,
0x3f
,
],
);
});
...
...
This diff is collapsed.
Click to expand it.
packages/flutter/test/services/platform_channel_test.dart
View file @
9e162cb3
...
...
@@ -131,7 +131,6 @@ void main() {
'bad'
,
'Something happened'
,
<
String
,
dynamic
>{
'a'
:
42
,
'b'
:
3.14
},
'errorStacktrace'
,
]);
},
);
...
...
@@ -142,7 +141,6 @@ void main() {
expect
(
e
.
code
,
equals
(
'bad'
));
expect
(
e
.
message
,
equals
(
'Something happened'
));
expect
(
e
.
details
,
equals
(<
String
,
dynamic
>{
'a'
:
42
,
'b'
:
3.14
}));
expect
(
e
.
stacktrace
,
equals
(
'errorStacktrace'
));
}
catch
(
e
)
{
fail
(
'PlatformException expected'
);
}
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment