Ian Hickson 8f56f6fdd1 Add documentation and clean up code. (#11330)
Mainly, this adds documentation to members that were previously
lacking documentation.

It also adds a big block of documentation about improving performance
of widgets.

This also removes some references to package:collection and adds
global setEquals and listEquals methods in foundation that we can use.
(setEquals in particular should be much faster than the
package:collection equivalent, though both should be faster as they
avoid allocating new objects.) All remaining references now qualify
the import so we know what our remaining dependencies are.

Also lots of code reordering in Flutter driver to make the code
consistent and apply the style guide more thoroughly.
2017-07-21 16:39:04 -07:00

116 lines
3.5 KiB
Dart

// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'find.dart';
import 'message.dart';
/// A Flutter Driver command that taps on a target widget located by [finder].
class Tap extends CommandWithTarget {
/// Creates a tap command to tap on a widget located by [finder].
Tap(SerializableFinder finder, { Duration timeout }) : super(finder, timeout: timeout);
/// Deserializes this command from the value generated by [serialize].
Tap.deserialize(Map<String, String> json) : super.deserialize(json);
@override
final String kind = 'tap';
}
/// The result of a [Tap] command.
class TapResult extends Result {
/// Deserializes this result from JSON.
static TapResult fromJson(Map<String, dynamic> json) {
return new TapResult();
}
@override
Map<String, dynamic> toJson() => <String, dynamic>{};
}
/// A Flutter Driver command that commands the driver to perform a scrolling action.
class Scroll extends CommandWithTarget {
/// Creates a scroll command that will attempt to scroll a scrollable view by
/// dragging a widget located by the given [finder].
Scroll(
SerializableFinder finder,
this.dx,
this.dy,
this.duration,
this.frequency, {
Duration timeout,
}) : super(finder, timeout: timeout);
/// Deserializes this command from the value generated by [serialize].
Scroll.deserialize(Map<String, String> json)
: this.dx = double.parse(json['dx']),
this.dy = double.parse(json['dy']),
this.duration = new Duration(microseconds: int.parse(json['duration'])),
this.frequency = int.parse(json['frequency']),
super.deserialize(json);
/// Delta X offset per move event.
final double dx;
/// Delta Y offset per move event.
final double dy;
/// The duration of the scrolling action
final Duration duration;
/// The frequency in Hz of the generated move events.
final int frequency;
@override
final String kind = 'scroll';
@override
Map<String, String> serialize() => super.serialize()..addAll(<String, String>{
'dx': '$dx',
'dy': '$dy',
'duration': '${duration.inMicroseconds}',
'frequency': '$frequency',
});
}
/// The result of a [Scroll] command.
class ScrollResult extends Result {
/// Deserializes this result from JSON.
static ScrollResult fromJson(Map<String, dynamic> json) {
return new ScrollResult();
}
@override
Map<String, dynamic> toJson() => <String, dynamic>{};
}
/// A Flutter Driver command that commands the driver to ensure that the element
/// represented by [finder] has been scrolled completely into view.
class ScrollIntoView extends CommandWithTarget {
/// Creates this command given a [finder] used to locate the widget to be
/// scrolled into view.
ScrollIntoView(SerializableFinder finder, { this.alignment: 0.0, Duration timeout }) : super(finder, timeout: timeout);
/// Deserializes this command from the value generated by [serialize].
ScrollIntoView.deserialize(Map<String, String> json)
: this.alignment = double.parse(json['alignment']),
super.deserialize(json);
/// How the widget should be aligned.
///
/// This value is passed to [Scrollable.ensureVisible] as the value of its
/// argument of the same name.
///
/// Defaults to 0.0.
final double alignment;
@override
final String kind = 'scrollIntoView';
@override
Map<String, String> serialize() => super.serialize()..addAll(<String, String>{
'alignment': '$alignment',
});
}