Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1245)

Unified Diff: third_party/mojo/src/mojo/public/dart/src/message.dart

Issue 901843003: Update mojo sdk to rev 8d45c89c30b230843c5bd6dd0693a555750946c0 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Partial revert of https://codereview.chromium.org/899993002/ Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/mojo/src/mojo/public/dart/src/message.dart
diff --git a/third_party/mojo/src/mojo/public/dart/src/message.dart b/third_party/mojo/src/mojo/public/dart/src/message.dart
index 2cdda8adb1f8ee29011baf173192d66bc309f593..918d2190ed046c1cf72e4cfcfb605a4ab7196269 100644
--- a/third_party/mojo/src/mojo/public/dart/src/message.dart
+++ b/third_party/mojo/src/mojo/public/dart/src/message.dart
@@ -35,12 +35,18 @@ class MessageHeader {
MessageHeader.fromMessage(Message message) {
var decoder = new Decoder(message);
_header = decoder.decodeDataHeader();
+ if (_header.size < kSimpleMessageSize) {
+ throw new MojoCodecError(
+ 'Incorrect message size. Got: ${_header.size} '
+ 'wanted $kSimpleMessageSize');
+ }
type = decoder.decodeUint32(kMessageTypeOffset);
flags = decoder.decodeUint32(kMessageFlagsOffset);
if (mustHaveRequestId(flags)) {
if (_header.size < kMessageWithRequestIdSize) {
- throw 'Incorrect message size. Got: ${_header.size} ' +
- 'wanted $kMessageWithRequestIdSize';
+ throw new MojoCodecError(
+ 'Incorrect message size. Got: ${_header.size} '
+ 'wanted $kMessageWithRequestIdSize');
}
requestId = decoder.decodeUint64(kMessageRequestIdOffset);
} else {
@@ -63,6 +69,35 @@ class MessageHeader {
ServiceMessage get serviceMessage => new ServiceMessage(this);
String toString() => "MessageHeader($_header, $type, $flags, $requestId)";
+
+ bool validateHeaderFlags(expectedFlags) =>
+ (flags & (kMessageExpectsResponse | kMessageIsResponse)) == expectedFlags;
+
+ bool validateHeader(int expectedType, int expectedFlags) =>
+ (type == expectedType) && validateHeaderFlags(expectedFlags);
+
+ static void _validateDataHeader(DataHeader dataHeader) {
+ if (dataHeader.numFields < kSimpleMessageNumFields) {
+ throw 'Incorrect number of fields, expecting at least '
+ '$kSimpleMessageNumFields, but got: ${dataHeader.numFields}.';
+ }
+ if (dataHeader.size < kSimpleMessageSize) {
+ throw 'Incorrect message size, expecting at least $kSimpleMessageSize, '
+ 'but got: ${dataHeader.size}';
+ }
+ if ((dataHeader.numFields == kSimpleMessageSize) &&
+ (dataHeader.size != kSimpleMessageSize)) {
+ throw 'Incorrect message size for a message with $kSimpleMessageNumFields'
+ ' fields, expecting $kSimpleMessageSize, '
+ 'but got ${dataHeader.size}';
+ }
+ if ((dataHeader.numFields == kMessageWithRequestIdNumFields) &&
+ (dataHeader.size != kMessageWithRequestIdSize)) {
+ throw 'Incorrect message size for a message with '
+ '$kMessageWithRequestIdNumFields fields, expecting '
+ '$kMessageWithRequestIdSize, but got ${dataHeader.size}';
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698