Add asserts to semantics.dart (flutter/engine#8846)

This commit is contained in:
Dan Field 2019-05-04 07:47:22 -07:00 committed by GitHub
parent 99e7daa6bc
commit 712fc0f99e
2 changed files with 12 additions and 2 deletions

View File

@ -654,8 +654,11 @@ class SemanticsUpdateBuilder extends NativeFieldWrapperClass2 {
Int32List childrenInHitTestOrder,
Int32List additionalActions,
}) {
if (transform.length != 16)
throw new ArgumentError('transform argument must have 16 entries.');
assert(_matrix4IsValid(transform));
assert(
scrollChildren == 0 || (scrollChildren > 0 && childrenInHitTestOrder != null),
'If a node has scrollChildren, it must have childrenInHitTestOrder',
);
_updateNode(
id,
flags,

View File

@ -4,6 +4,7 @@
#include "flutter/lib/ui/semantics/semantics_update_builder.h"
#include "third_party/skia/include/core/SkScalar.h"
#include "third_party/tonic/converter/dart_converter.h"
#include "third_party/tonic/dart_args.h"
#include "third_party/tonic/dart_binding_macros.h"
@ -63,6 +64,12 @@ void SemanticsUpdateBuilder::updateNode(
const tonic::Int32List& childrenInTraversalOrder,
const tonic::Int32List& childrenInHitTestOrder,
const tonic::Int32List& localContextActions) {
FML_CHECK(transform.data() && SkScalarsAreFinite(*transform.data(), 9))
<< "Semantics update transform was not set or not finite.";
FML_CHECK(scrollChildren == 0 ||
(scrollChildren > 0 && childrenInHitTestOrder.data()))
<< "Semantics update contained scrollChildren but did not have "
"childrenInHitTestOrder";
SemanticsNode node;
node.id = id;
node.flags = flags;