Commit Graph

320 Commits

Author SHA1 Message Date
adazh
4e4b9bd0b1
Renamed the Driver API waitUntilFrameSync to waitUntilNoPendingFrame. (#36512) 2019-07-18 22:16:57 -07:00
adazh
dd51afd161
Added Driver API that waits until frame sync. (#36334) 2019-07-18 15:03:19 -07:00
liyuqian
180aa0c0b1
Fix flaky peer connection (#36089)
Fixes https://github.com/flutter/flutter/issues/36091.

Previously, a sendRequest will be sent even if the peer is closed during
a driver test. That will cause a time out without any error information.
Such issue is unreproducible on my Mac Book Pro, but 100% reproducible
on our new Mac mini (2018).

The closing issue is tracked in https://github.com/flutter/flutter/issues/36268

Additional to this fix, we should also patch the jason_rpc_2 so the peer
will throw exception if sendRequest is attempted while the connection is
closed.

**Test**:
tiles_scroll_perf_iphonexs__timeline_summary failed without this patch.
It will pass after this patch.

I'm not sure how to add a unit test for this. Please let me know if you have
some ideas.

This patch will generate the following warning log on the new Mac Mini
```
flutter: Observatory listening on http://127.0.0.1:50192/cZPDF4sW7MM=/  
Installing and launching...                                        10.2s
00:00 +0: scrolling performance test (setUpAll)
[info ] FlutterDriver: Connecting to Flutter application at http://127.0.0.1:1069/cZPDF4sW7MM=/
[trace] FlutterDriver: Isolate found with number: 3684677742843303
[trace] FlutterDriver: Isolate is paused at start.
[trace] FlutterDriver: Attempting to resume isolate
[trace] FlutterDriver: Waiting for service extension
[info ] FlutterDriver: Connected to Flutter application.
00:00 +0: scrolling performance test complex_layout_scroll_perf
[warning] FlutterDriver: Instance of '_WebSocketImpl' is closed with an unexpected code 1005
[warning] FlutterDriver: Peer connection is closed! Trying to restore the connection...
00:10 +1: scrolling performance test tiles_scroll_perf
[warning] FlutterDriver: Instance of '_WebSocketImpl' is closed with an unexpected code 1005
[warning] FlutterDriver: Peer connection is closed! Trying to restore the connection...
00:20 +2: scrolling performance test (tearDownAll)
00:20 +2: All tests passed!
Stopping application instance.
```
2019-07-16 08:30:26 -07:00
Siva
f496595773
Use the new service protocol message names (#35482)
* Use the new service protocol message names
  clearVMTimeline
  setVMTimelineFlags
  getVMTimeline
  getVMTimelineFlags

* Fix clearTimeline at another spot.
2019-07-02 16:10:04 -07:00
Michael Goderbauer
4f5d901395
Add Driver command to get diagnostics tree (#34440) 2019-06-18 18:31:21 -07:00
Michael Goderbauer
3c24c5bdcd
Document that offsets are returned in logical pixels (#33620) 2019-05-31 08:55:28 -07:00
Mehmet Fidanboylu
27bdb11030
Expose service client and app isolate in driver (#33431) 2019-05-29 09:29:24 -07:00
Todd Volkert
ceec48785a
Re-apply "Add assert that the root widget has been attached" (#33084)
This re-applies #32437 with a fix to the broken device lab test.
2019-05-21 11:21:57 -07:00
Todd Volkert
e2042bae6d
Revert "Add assert that the root widget has been attached. (#32437)" (#33068)
This reverts commit 069303d46f.
2019-05-20 13:30:41 -07:00
Sam Rawlins
c2a93bd545 Fix missing return statements on function literals (#33058) 2019-05-20 12:51:57 -07:00
Todd Volkert
069303d46f
Add assert that the root widget has been attached. (#32437) 2019-05-20 09:27:39 -07:00
Dan Field
6d4b0abfa8
Ignore some JSON RPC errors (#32710) 2019-05-14 16:04:04 -07:00
Michael Goderbauer
b37c3be0fa
Add ancestor and descendant finders to Driver (#32410) 2019-05-10 18:21:19 +02:00
Michael Goderbauer
8cf65526e7
everything const (#32380) 2019-05-10 13:29:03 +02:00
Michael Goderbauer
ff1dbcdeb6
Add geometry getters to Flutter Driver (#32302) 2019-05-09 09:50:02 +02:00
done
d53115ab2e fix FlutterDriver timeout (#31824) 2019-05-04 06:13:25 -07:00
Dan Field
a8504405a8
Revert "Handle notification errors (#31868)" (#31886)
This reverts commit c0d5fd23ab.
2019-04-30 23:27:30 -07:00
Dan Field
c0d5fd23ab
Handle notification errors (#31868) 2019-04-30 15:42:22 -07:00
Dan Field
eac2104bc6
remove assert for Flutter Driver (#31815) 2019-04-29 17:03:25 -07:00
Kent Boogaart
392d5b2c28 Fix typo (#31771) 2019-04-29 13:04:30 +02:00
Dan Field
1db5d66932
Capture JSON RPC errors that presently get swallowed (#31584)
* Update packages
* Capture JSON RPC errors that presently get swallowed
2019-04-25 08:27:00 -07:00
Ben Konyi
a009d71101
Updated flutter_driver to support auth codes (#31310) 2019-04-19 07:57:04 -07:00
liyuqian
eb30745faf
Print warning if flutter drive is run in debug (#30747)
## Description

Print actionable warnings if `flutter drive` (where most of our performance benchmarks come from) is run in debug mode and it tries to gather benchmarks using `traceAction`.

## Related Issues

https://github.com/flutter/flutter/issues/30625

## Tests

I added the following tests:
* drive_perf_debug_warning devicelab test
2019-04-09 18:55:42 -07:00
Alexandre Ardhuin
bfa1d25bf9
some formatting of map, parameters and spaces (#29760) 2019-03-23 00:02:21 +01:00
Dan Field
5e27ebbe8d
Add semantic label finders (#29342)
* Add semantic label finders
2019-03-18 20:32:03 -07:00
Alexandre Ardhuin
a0d1f93b07
fix block formatting (#29051) 2019-03-09 09:03:11 +01:00
Alexandre Ardhuin
440ce8fde6
Fix indentations of statements in BlockFunctionBody (#28933)
* fix indentof statements in BlockFunctionBody

* fix indentof statements in BlockFunctionBody in tests
2019-03-07 21:09:28 +01:00
Alexandre Ardhuin
387f885481
Add missing trailing commas (#28673)
* add trailing commas on list/map/parameters

* add trailing commas on Invocation with nb of arg>1

* add commas for widget containing widgets

* add trailing commas if instantiation contains trailing comma

* revert bad change
2019-03-01 08:17:55 +01:00
Alexandre Ardhuin
5169ab5974
format parameter list (#27261) 2019-02-21 09:27:07 +01:00
liyuqian
7390cc5cdb
Increase our build budget to 16ms (#27709)
Because we now have 2 separate GPU and UI threads.
2019-02-15 16:12:36 -08:00
Andrew Davies
7da989f2c6
[flutter_driver] Use async call to run SSH cmds. (#27577)
For `fuchsia_compat.dart` Instead of using `runSync`, use `run` to avoid
deadlock when attempting to access specific resources like the Hub in Fuchsia.

The specific example is that in Fuchsia, the `find` command is
attempting to explore `out` which hasn't yet been serviced, as `find` is
blocking on it, causing a deadlock.
2019-02-06 14:41:56 -08:00
Michael Goderbauer
6d20ff2446
Remove all obsolete "// ignore:" (#27271) 2019-01-30 08:56:12 -08:00
Alexandre Ardhuin
ef276ffea5
format initializer list of constructors (#27111) 2019-01-29 21:47:16 +01:00
Ian Hickson
31a9626c48
[O] Removing all timeouts (mark II) (#26736)
These are essentially self-inflicted race conditions. Instead of timeouts we're going to try a more verbose logging mechanism that points out when things are taking a long time.
2019-01-19 00:31:05 -08:00
Andrew Davies
bd6ac326f6
[flutter_driver] Move Fuchsia logging code. (#26266)
When setting the Fuchsia logging function, it should happen before any
initialization code, as init can still cause warning/error/info messages
to get printed to logs. Since the default stderr/stdout fd's aren't
correct, this can cause a program to crash for unclear reasons.
2019-01-09 14:47:35 -08:00
Alexandre Ardhuin
868ff42821
fix doc-comment snippets (#25579) 2019-01-07 21:44:16 +01:00
Ian Hickson
8426910a19
Revert "[O] Remove many timeouts. (#23531)" (#25646)
This reverts commit 76f70810e4.
2018-12-20 18:46:36 -08:00
Ian Hickson
76f70810e4
[O] Remove many timeouts. (#23531)
* Remove many timeouts.

These are essentially self-inflicted race conditions. Instead of timeouts we're going to try a more verbose logging mechanism that points out when things are taking a long time.

* Get the attach tests to pass.

* Apply review comments from Todd

* More review comment fixes

* Put back the extended timeouts here now that I know why we have them...
2018-12-20 17:10:40 -08:00
Zachary Anderson
b18a2b1794
[fuchsia] Get Dart VM service ports from The Hub (#25332) 2018-12-17 11:10:47 -08:00
Yegor
9c3754d92f
FlutterDriver: allow customizing timeouts using a multiplier (#24066)
FlutterDriver: allow customizing timeouts using a multiplier
2018-11-14 17:15:00 -08:00
Michael Goderbauer
9b5c780604
Force GC before GC-sensitive benchmark runs (#23289) 2018-10-21 15:58:19 +02:00
Alexandre Ardhuin
0fb84e96c7
Prefer void to null (#22977)
* Future<void> main

* Future<void>.delayed

* prefer_void_to_Null

* address review comments
2018-10-16 22:03:06 +02:00
Andrew Davies
9ceb9ab305
[flutter_driver] Adds fuchsia compat for connect() (#22633)
Adds a Fuchsia compatibility function that allows for connecting to a
specific Isolate by name when running Flutter Driver on a Fuchsia
device.  This will check over multiple Dart VM's in an attempt to find
an Isolate by its name.
2018-10-08 11:09:07 -07:00
Alexandre Ardhuin
2ea1d81cdc
sort_constructors_first (#22575) 2018-10-04 07:28:07 +02:00
Alexandre Ardhuin
5de96bb734
unnecessary this in field initializers (#22522) 2018-10-02 17:14:59 +02:00
Alexandre Ardhuin
f62afdcf57
add missing type parameter on methods (#22096) 2018-10-01 21:29:08 +02:00
xster
ac9dc5745e
Add support for material agnostic driver navigation (#22461) 2018-10-01 09:18:20 -07:00
liyuqian
872eba2d4c
Track 90th, 99th percentile instead of missed_frame_build_budget_count (#21754)
See https://github.com/flutter/flutter/pull/19121#issuecomment-419520765
2018-09-14 13:24:13 -07:00
Alexandre Ardhuin
a07d3719a1
enable lint prefer_generic_function_type_aliases (#21680) 2018-09-14 21:06:19 +02:00
Alexandre Ardhuin
d927c93310
Unnecessary new (#20138)
* enable lint unnecessary_new

* fix tests

* fix tests

* fix tests
2018-09-12 08:29:29 +02:00
Jonah Williams
e235ccd76f
Support disabled animations (#20354) 2018-08-23 11:50:04 -07:00
Ian Hickson
b7261586e5
Audit TODO syntax (#20837)
Fixes the pattern for some TODOs to match our style guide.

(Also, a couple of minor code order fixes.)
2018-08-21 14:02:11 -07:00
Ian Hickson
1993a67381
Performance test cleanup (#20652)
* Fix TODO syntax.
* Clarify messages for some timeouts, to aid debugging.
* Increase some other timeouts that were a needlessly short, to reduce sources of flakes.
* Remove some more timeouts that were mostly redundant, to remove complexity.
* Minor style cleanup.
* Remove some dangerous traps (specifically, hide the explicit start/end times in TimedEvent since they shouldn't matter).
2018-08-17 13:19:28 -07:00
Ian Hickson
872e88cec7
Reduce noise on the memory benchmarks (#19630) (#20163)
- Check memory usage in release builds, not profile.
- Use multiple runs and average the results.
2018-08-06 12:46:51 -07:00
Ian Hickson
a96fb44911
Increase the precision of the performance benchmarks. (#20159) 2018-08-03 16:41:06 -07:00
Ian Hickson
a2ca14d71e
Revert "Reduce noise on the memory benchmarks" (#20158)
* Revert "Add pub cache, artifacts, pkgs to Cirrus cache (#20080)"

This reverts commit 07e93b385c.

* Revert "Reduce noise on the memory benchmarks (#19630)"

This reverts commit 8eb5cb7dc0.
2018-08-02 13:56:44 -07:00
Ian Hickson
8eb5cb7dc0
Reduce noise on the memory benchmarks (#19630)
- Check memory usage in release builds, not profile.
- Use multiple runs and average the results.
2018-08-02 12:22:15 -07:00
Alexandre Ardhuin
eda03e2586
re-re-enable lint unnecessary_const (#20103) 2018-08-02 12:02:32 +02:00
Todd Volkert
00aac68e2d
Revert flutter/flutter#19592 (#19861)
It was causing problems rolling Flutter into Fuchsia
2018-07-27 08:44:39 -07:00
Alexandre Ardhuin
27018359d2
re-enable lint unnecessary_const (#19592)
* re-enable lint unnecessary_const

* remove trailling whitespaces

* remove unnecessary const (after merge)
2018-07-23 08:31:48 +02:00
Leaf Petersen
32f94443cc
Remove uses of deprecated constants and change int.parse to int.tryParse (#19575)
* Remove uses of deprecated constants
* Change int.parse to int.tryParse where appropriate
2018-07-20 15:07:24 -07:00
Greg Spencer
1cc036519c
Removes trailing whitespace from source files. (#19329) 2018-07-19 23:03:58 -07:00
Ian Hickson
f630f90d6d
Revert "enable lint unnecessary_const (#19342)" (#19423)
This reverts commit cc1cf13eec.
2018-07-16 13:30:27 -07:00
Alexandre Ardhuin
cc1cf13eec
enable lint unnecessary_const (#19342) 2018-07-16 21:43:48 +02:00
Jonah Williams
2f0b4158ab
Add option to silence driver extension errors (#19247) 2018-07-13 19:13:10 -07:00
Jonah Williams
7dd265ff18
Add getSemanticsId command to flutter_driver (#19047) 2018-07-09 15:22:59 -07:00
liyuqian
34da4a5ffd
Throw instead of return null if durations is empty (#18957)
See https://github.com/flutter/flutter/pull/18881#discussion_r199285256
2018-07-02 13:30:02 -07:00
liyuqian
35e8cd83d0
Add 90th and 99th percentile frame rasterize time for timeline_summary (#18881)
Our first step towards https://github.com/flutter/flutter/issues/18727
2018-06-28 11:27:22 -07:00
Chris Bracken
2ae48845a8
Revert elimination of Dart 1 (#18460)
fuchsia_tester.dart still assumes Dart 1. Previously, it ran tests directly
from source, flutter_platform.dart automatically runs a kernel compile when
operating in Dart 2 mode, but this assumes a functional Dart SDK is available
in the artifacts directly, and fuchsia_tester.dart mocks out the artifacts
directory with an empty temp dir.

Remaining work is:
1. Get the frontend server building as a dependency on Fuchsia.
2. Patch fuchsia_tester.dart to use a valid Dart SDK and frontend server.

This also reverts migration to Dart 2 typedef syntax.

This reverts commit 6c56bb2. (#18362)
This reverts commit 3daebd0. (#18316)
2018-06-13 12:46:39 -07:00
Greg Spencer
6c56bb2420
Update typedef syntax to use Function notation and turn on lint for old notation. (#18362)
Now that Dart 1 is turned off, reapplying my change to turn on the prefer_generic_function_type_aliases analysis option, and fix all the typedefs to Dart 2 preferred syntax.

Also eliminated the unused analysis_options_repo.yaml file and turned on public_member_api_docs in analysys_options.yaml.

No logic changes, just changing the typedef syntax for all typedefs, and updating analysis options.
2018-06-11 15:51:45 -07:00
Yegor
3983815de5
fix setTextEntryEmulation docs (#18298) 2018-06-07 22:01:59 -07:00
Alexandre Ardhuin
09276bea25
enable lint prefer_equal_for_default_values (#18156) 2018-06-05 08:50:40 +02:00
Greg Spencer
b921fdc58e
Revert "Update typedef syntax to use Function notation and turn on lint for old notation. (#18035)" (#18041)
This reverts commit 3258602073.
2018-05-30 13:51:14 -07:00
Greg Spencer
3258602073
Update typedef syntax to use Function notation and turn on lint for old notation. (#18035)
Fixes #18028

Just changes typedef declarations, no logic changes.
2018-05-30 12:13:58 -07:00
Greg Spencer
3c5a7a3005
Make non-global constants have consistent naming (with just _ instead of _k) (#17584)
Our style guide says the k's are not necessary, and it seems like a good idea to make all the code be consistent on this.

Only naming changes to private vars: no logic changes.
2018-05-17 23:04:41 -07:00
Chris Bracken
c36ec76002
Reduce odds of race in scrollUntilVisible (#17594)
In FlutterDriver.scrollUntilVisible, pause momentarily after we kick off
the waitFor() call, in order to give that call a chance to complete
before we start scrolling if the element is on-screen.
2018-05-15 14:23:44 -07:00
Todd Volkert
d820e5f3b1
Use deprecated io constants (#17278)
The new values are not ready for use yet inside Google
2018-05-03 22:27:29 -07:00
Yegor
b2c98f9a4e
Roll engine to e976be13c51448f89107d082ec81e2b6731671fa (#17266)
* Roll engine to e976be13c51448f89107d082ec81e2b6731671fa

* move away from deprecated constants
2018-05-03 19:24:48 -07:00
Andrew Davies
5d590afa7d
[frdp] Adds DartVM events/driver support. (#17170)
This change adds Dart VM event support (listening for when a VM starts/stops by using a periodic heartbeat).

This also adds support to connect to a specific `IsolateRef` through the flutter driver, so that when an application spawns, it can immediately be driven (as shown in included example code).
2018-05-03 14:51:52 -07:00
Mikkel Nygaard Ravn
776cf24764
Make flutter_driver work with sync-async (#16798) 2018-04-20 19:31:43 +02:00
Todd Volkert
9da0ec2736
Add a few timeouts to FlutterDriver.connect() (#16762)
We're seeing occasional test timeouts trying to call `FlutterDriver.connect()`.
Unfortunately, when the test is timed out at the test runner level, you don't
get a meaningful test failure or stack trace of where the timeout occurrred.
Your test harness also doesn't get to clean up, which can include things like
saving the device logs to see what was going on in the device.

Thus, this change adds timeouts in the places where we've most
commonly observed hangs during tests.
2018-04-19 15:09:07 -07:00
Hans Muller
a0099a9016
Make gallery tests more robust (#15957) 2018-03-27 13:39:30 -07:00
Jason Simmons
466d15433f
Use Dart 2 camel case constants (#15360) 2018-03-12 11:06:32 -07:00
Josh Soref
c5a5945e92 Spelling (#15229)
* spelling: accommodate

* spelling: allotted

* spelling: anonymous

* spelling: artificial

* spelling: associated

* spelling: asset

* spelling: button

* spelling: canvas

* spelling: compatibility

* spelling: coverage

* spelling: condition

* spelling: decoration

* spelling: deferring

* spelling: diameter

* spelling: direction

* spelling: displacement

* spelling: dropdown

* spelling: needing

* spelling: environment

* spelling: exited

* spelling: expansion

* spelling: explore

* spelling: families

* spelling: horizontal

* spelling: increment

* spelling: indices

* spelling: internationalization

* spelling: labrador

* spelling: localizations

* spelling: midflight

* spelling: milliseconds

* spelling: minimum

* spelling: multiple

* spelling: multiplication

* spelling: navigator

* spelling: overridden

* spelling: package

* spelling: performance

* spelling: platform

* spelling: porsche

* spelling: position

* spelling: preceded

* spelling: precede

* spelling: precedence

* spelling: print

* spelling: property

* spelling: readily

* spelling: reproducibility

* spelling: rounded

* spelling: scroll

* spelling: separate

* spelling: separator

* spelling: services

* spelling: specific

* spelling: specify

* spelling: synchronously

* spelling: through

* spelling: timeout

* spelling: triangle

* spelling: trivial

* spelling: unusual

* spelling: then

* spelling: vertically

* spelling: visible

* spelling: visited

* spelling: voice
2018-03-06 21:36:03 -08:00
Vyacheslav Egorov
aa7e9637ac
Fix several Dart 2 issues in the flutter_driver. (#14749)
* All lists produced by JSON parsing are List<dynamic>. If more
speficic type is required then they need to be explicitly cast, e.g.
using castFrom helper;
* Function of type (ByText) -> Finder is not a subtype of
(SerializableFinder) -> Finder because ByText is in the contravariant
position;
* In Dart 2 typed(any) should be used instead of any in mockito based
tests.
2018-02-16 18:01:54 +01:00
Alexandre Ardhuin
3c379aaf43
whitespace cleanup (#14458) 2018-02-05 22:20:21 +01:00
Alexandre Ardhuin
c02b6a8bcf
some whitespace cleanup (#14443) 2018-02-02 23:27:29 +01:00
Alexandre Ardhuin
10f721c8a5
use const instead of final with const declarations (#14253) 2018-01-25 19:28:22 +01:00
Ian Hickson
44e228eb9e
Move image logic from services/ to painting/. (#13409)
This allows the scheduler library to depend on the services library
and the painting library to depend on the scheduler library without
the services library having to depend on the scheduler library.

While I was at it I also cleaned up some of the binding logic: the
licenses logic can now be overridden (and the test library does so),
and the image cache can now be overridden as well.
2017-12-07 14:53:08 -08:00
Yegor
5f7ef89675
more setTextEntryEmulation docs; isRegistered check (#13420) 2017-12-07 12:08:52 -08:00
Yegor
d1e918fa10
support disabling text entry emulation (#13410) 2017-12-06 19:59:07 -08:00
Yegor
e27bcd0f9d
Emulate text entry in FlutterDriver (#13373)
* Emulate text entry in FlutterDriver

* document enterText behavior

* remove the unnecessary composint TextRange
2017-12-06 17:29:37 -08:00
Chris Bracken
cf37a4721a
Reorganise flutter driver implementation sources (#13163)
This patch reorganises flutter_driver's lib/src directory into three
subdirectories:

* driver: sources transitively imported/exported by flutter_driver.dart,
  which defines the API used by driver tests executed on the host machine.

* extension: sources transitively imported/exported by
  driver_extension.dart, which defines the API used to instrument a
  Flutter app running on the target device for use with a driver test.

* common: sources common to both driver and extension code.

This makes rolling Flutter into repositories that use Bazel (or
Bazel-like build systems) significantly more robust, due to the simpler
glob patterns involved.
2017-11-22 17:24:41 -08:00
Chris Bracken
d9bdb76fd2
Eliminate unused retry.dart from flutter_driver (#13161) 2017-11-22 16:54:19 -08:00
Chris Bracken
d5cb9781e1
Eliminate unused matcher_util in flutter_driver (#13159)
Use of this file was eliminated in e7657b9462.
2017-11-22 15:15:37 -08:00
Yegor
8c902ad479
clear timeline events prior to starting a new action (#12984)
* clear timeline events prior to starting a new action

* trailing commas
2017-11-22 15:08:09 -08:00
Chris Bracken
14b5cb047e
Use duration not threadDuration for frame duration (#13117)
1. We want to measure wall-clock duration for the benchmarks, as opposed
   to thread duration (e.g., waiting on a mutex should accrue time) and
   'dur' is the metric to use for that.

2. On Darwin-based systems (macOS and iOS) 'tdur' is the result of a
   mach syscall lookup to thread_info. This call returns unreliable data
   on iOS. Chromium, for example, disables thread time support entirely
   for iOS.
2017-11-20 17:37:14 -08:00
Greg Spencer
0259be90b8
Fix spelling errors in all the dartdocs. (#13061)
I got tired of drive-by spelling fixes, so I figured I'd just take care of them all at once.

This only corrects errors in the dartdocs, not regular comments, and I skipped any sample code in the dartdocs. It doesn't touch any identifiers in the dartdocs either. No code changes, just comments.
2017-11-17 10:05:21 -08:00
Alexandre Ardhuin
15601fe55c
Enable lint prefer asserts in initializer lists (#12903)
* enable lint prefer_asserts_in_initializer_lists

* enable --assert-initializer
2017-11-08 22:59:49 +01:00
Todd Volkert
16c363ac07
Clarify docs in FlutterDriver.requestData() (#12909) 2017-11-07 14:43:41 -08:00
Yegor
91bd9bc4f8
delay taking screenshot to allow GPU thread to render the frame (#12896)
* delay taking screenshot to allow GPU thread to render the frame

* address comments
2017-11-06 17:33:48 -08:00
Alexandre Ardhuin
1fce14a31c enable lint prefer_single_quotes (#12665) 2017-10-22 18:11:36 +02:00
Ian Hickson
efb45ea788 Trivial nit fixes (#12285) 2017-09-27 16:13:48 -07:00
Yegor
ba5b5e7f6f only tap on widgets reachable by hit testing (#11767)
* only tap on widgets reachable by hit testing

* use FractionalOffset

* added tests

* check finder finds correct widget

* undo unintentional changes

* address comments

* style fix

* add Directionality in test

* fix analysis warning
2017-09-11 09:46:42 -07:00
Carlo Bernaschina
a8aff38811 Add log to understand flakiness of commands_test (#11720)
The flakiness of commands_test is generally visible via:

```
drive:stdout:   Expected: 'log: paint'
drive:stdout:     Actual: ''
drive:stdout:      Which: is different. Both strings start the same, but the actual value is missing the following trailing characters: log: paint ...
```

By returning the name of the test we will be able to understand if
another test is running by reading the `Actual` value
2017-08-22 09:54:51 -07:00
Carlo Bernaschina
6643db0106 Add documentation to waitForServiceExtension (#11708)
Addresses
3b4687bf69 (r134325222)
2017-08-21 14:16:30 -07:00
Carlo Bernaschina
937b98e1b9 Fix flakiness of commands_test (#11705)
- Wait for full Hot Reload
- Wait for full Restart
- Fallback if checkHealth throws METHOD_NOT_FOUND.
  We try to wait for the service extensions to be registered and retry.
2017-08-21 13:21:00 -07:00
Ian Hickson
ae5c3d5f89 Revert "Revert "Always evaluate the finder in driver.waitFor*()" (#11451)" (#11462)
This reverts commit 5d9db106db.
2017-08-01 14:23:44 -07:00
Ian Hickson
5d9db106db Revert "Always evaluate the finder in driver.waitFor*()" (#11451)
* Revert "Make plugins add their repos to projects in the consuming app (#11447)"

This reverts commit abe1e2520b.

* Revert "Support for custom build types on Android (#11354)"

This reverts commit 87eec719e2.

* Revert "add a profile() method (#11443)"

This reverts commit 561d17a876.

* Revert "Fix documentation based on dartdoc's warnings (#11428)"

This reverts commit 6655074b37.

* Revert "Improve some docs around WillPopScope. (#11429)"

This reverts commit 58a28a2965.

* Revert "temporarily disable broken driver test in integration_ui (#11440)"

This reverts commit 764515ec78.

* Revert "style fix"

This reverts commit 00bfc86630.

* Revert "tests for waitFor/waitForAbsent"

This reverts commit 31d2ee9c0c.

* Revert "Always evaluate the finder in `driver.waitFor()` and `driver.waitForAbsent()`"

This reverts commit 11d7c79b99.
2017-08-01 10:39:08 -07:00
Ian Hickson
6655074b37 Fix documentation based on dartdoc's warnings (#11428) 2017-07-28 15:44:38 -07:00
Todd Volkert
11d7c79b99 Always evaluate the finder in driver.waitFor() and driver.waitForAbsent()
Fixes #11327
2017-07-28 13:10:03 -07:00
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
Ian Hickson
e1adc525d8 Option to enable the performance overlay from 'flutter run'. (#11288) 2017-07-19 12:57:22 -07:00
Ian Hickson
9adb4a78a6 Deep linking: automatically push the route hiearchy on load. (#10894)
The main purpose of this PR is to make it so that when you set the
initial route and it's a hierarchical route (e.g. `/a/b/c`), it
implies multiple pushes, one for each step of the route (so in that
case, `/`, `/a`, `/a/b`, and `/a/b/c`, in that order). If any of those
routes don't exist, it falls back to '/'.

As part of doing that, I:

 * Changed the default for MaterialApp.initialRoute to honor the
   actual initial route.

 * Added a MaterialApp.onUnknownRoute for handling bad routes.

 * Added a feature to flutter_driver that allows the host test script
   and the device test app to communicate.

 * Added a test to make sure `flutter drive --route` works.
   (Hopefully that will also prove `flutter run --route` works, though
   this isn't testing the `flutter` tool's side of that. My main
   concern is over whether the engine side works.)

 * Fixed `flutter drive` to output the right target file name.

 * Changed how the stocks app represents its data, so that we can
   show a page for a stock before we know if it exists.

 * Made it possible to show a stock page that doesn't exist. It shows
   a progress indicator if we're loading the data, or else shows a
   message saying it doesn't exist.

 * Changed the pathing structure of routes in stocks to work more
   sanely.

 * Made search in the stocks app actually work (before it only worked
   if we happened to accidentally trigger a rebuild). Added a test.

 * Replaced some custom code in the stocks app with a BackButton.

 * Added a "color" feature to BackButton to support the stocks use case.

 * Spaced out the ErrorWidget text a bit more.

 * Added `RouteSettings.copyWith`, which I ended up not using.

 * Improved the error messages around routing.

While I was in some files I made a few formatting fixes, fixed some
code health issues, and also removed `flaky: true` from some devicelab
tests that have been stable for a while. Also added some documentation
here and there.
2017-06-23 14:58:29 -07:00
Michael Goderbauer
8bf17192f6 Adding first semantics perf test (#10649)
* Adding first semantics perf test

* review commnts and analyzer fixes

* fix analyzer warning
2017-06-13 12:49:07 -07:00
Ian Hickson
0f1a703a6b More documentation (#10589) 2017-06-08 17:13:03 -07:00
Chris Bracken
a0ca48c35c Revert use of const asserts in flutter_driver (#10568)
Fixes bot breakage resulting from commit
7d71326363 (#10540).
2017-06-07 14:31:52 -07:00
Alexandre Ardhuin
7d71326363 apply prefer_asserts_in_initializer_list lint (#10540) 2017-06-07 21:39:47 +02:00
Ian Hickson
6f824bcec9 More documentation (#10519) 2017-06-05 22:44:49 -07:00
Yegor
f7d62aaa9e fix driver connection flakiness (#9968) 2017-05-10 15:16:45 -07:00
Ian Hickson
127545a353 More doc fixes. (#9848) 2017-05-06 15:08:14 -07:00
Yegor
7d6e5632d7 remove unused FlutterDriver methods (#9821) 2017-05-04 18:11:05 -07:00
Alexandre Ardhuin
26c7411d66 unnecessary_override (#9540) 2017-04-22 22:58:21 +02:00
Alexandre Ardhuin
35803c2297 comprehensive list of lints (#9330)
* comprehensive list of lints
* add comments to commented out lint
* fix unnecessary_this lints
* exclude prefer_final_fields
2017-04-20 09:38:57 +02:00
Yegor
75dc033613 cancel timeout when waiting for driver extension (#9354) 2017-04-13 10:04:08 -07:00
Ian Hickson
bf017b79b3 Move Point to Offset (#9277)
* Manually fix every use of Point.x and Point.y

Some of these were moved to dx/dy, but not all.

* Manually convert uses of the old gradient API

* Remove old reference to Point.

* Mechanical changes

I applied the following at the root of the Flutter repository:

git ls-files -z | xargs -0 sed -i 's/\bPoint[.]origin\b/Offset.zero/g'
git ls-files -z | xargs -0 sed -i 's/\bPoint[.]lerp\b/Offset.lerp/g'
git ls-files -z | xargs -0 sed -i 's/\bnew Point\b/new Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bconst Point\b/const Offset/g'
git ls-files -z | xargs -0 sed -i 's/\bstatic Point /static Offset /g'
git ls-files -z | xargs -0 sed -i 's/\bfinal Point /final Offset /g'
git ls-files -z | xargs -0 sed -i 's/^\( *\)Point /\1Offset /g'
git ls-files -z | xargs -0 sed -i 's/ui[.]Point\b/ui.Offset/g'
git ls-files -z | xargs -0 sed -i 's/(Point\b/(Offset/g'
git ls-files -z | xargs -0 sed -i 's/\([[{,]\) Point\b/\1 Offset/g'
git ls-files -z | xargs -0 sed -i 's/@required Point\b/@required Offset/g'
git ls-files -z | xargs -0 sed -i 's/<Point>/<Offset>/g'
git ls-files -z | xargs -0 sed -i 's/[.]toOffset()//g'
git ls-files -z | xargs -0 sed -i 's/[.]toPoint()//g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point, /show /g'
git ls-files -z | xargs -0 sed -i 's/\bshow Point;/show Offset;/g'

* Mechanical changes - dartdocs

I applied the following at the root of the Flutter repository:

git ls-files -z | xargs -0 sed -i 's/\ba \[Point\]/an [Offset]/g'
git ls-files -z | xargs -0 sed -i 's/\[Point\]/[Offset]/g'

* Further improvements and a test

* Fix minor errors from rebasing...

* Roll engine
2017-04-12 15:06:12 -07:00
xster
89a7fdfc56 Rename State.config to widget everywhere (#9273)
Rename State.config to State.widget
Rename State.didUpdateConfig to State.didUpdateWidget
Renamed all State subclasses' local variables named config to something else
2017-04-10 18:32:24 -07:00
Yegor
03f5793cda increase driver timeouts; also unify the values (#9228) 2017-04-05 14:01:33 -07:00
Alexandre Ardhuin
189028a958 Separate the 'if' expression from its statement (#9177) 2017-04-04 21:45:50 +02:00
Adam Barth
ae8994860e Rationalize text input widgets (#9119)
After this patch, there are three major text input widgets:

 * EditableText. This widget is a low-level editing control that
   interacts with the IME and displays a blinking cursor.

 * TextField. This widget is a Material Design text field, with all the
   bells and whistles. It is highly configurable and can be reduced down
   to a fairly simple control by setting its `decoration` property to
   null.

 * TextFormField. This widget is a FormField that wraps a TextField.

This patch also replaces the InputValue data model for these widgets
with a Listenable TextEditingController, which is much more flexible.

Fixes #7031
2017-04-01 17:30:21 -07:00
Alexandre Ardhuin
32d09a3a11 use_rethrow_when_possible (#8985) 2017-03-23 22:06:08 +01:00
Alexandre Ardhuin
2166ea5b7f apply partially the upcoming unnecessary_lambdas (#8810) 2017-03-15 23:09:58 +01:00
Alexandre Ardhuin
a9ba0e2f88 prefer_initializing_formals (#8797) 2017-03-15 18:30:55 +01:00
Yegor
d09591bf7d consistently accept timeout in driver API (#8667) 2017-03-09 16:31:48 -08:00
Chris Bracken
cdeb83cf59 Declare locals as final where not reassigned (flutter_driver) (#8567) 2017-03-03 18:31:21 -08:00
Alexandre Ardhuin
69b6bb87d1 prefer_is_empty and prefer_is_not_empty (#8474) 2017-03-01 22:17:30 -08:00
Yegor
5ce67b084a driver: remove obsolete TODO (#8494)
This TODO was fixed by the transition to `Finder` objects.
2017-03-01 10:10:39 -08:00
Yegor
bfef36f710 add waitUntilNoTransientCallbacks to driver API (#8475) 2017-02-28 15:58:28 -08:00
Alexandre Ardhuin
8c043d06de fix lints for directives_ordering rule (#8382) 2017-02-23 13:37:26 -08:00
Adam Barth
e0b12ca17e Two becomes one (#8253)
Rename all the "2" classes related to scrolling to remove the "2". Now that the
old scrolling code is gone, we don't need to use the suffix.
2017-02-17 14:06:15 -08:00
Adam Barth
90574b0478 Remove Scrollable1 (#8225)
All the clients have migrated to Scrollable2.
2017-02-16 16:41:24 -08:00
Adam Barth
be86554479 Switch benchmarks to thread duration (#8113)
For measuring the Dart thread, we care about thread duration (tdur) rather than
wall duration (dur) because we don't want to count the time when the Dart
thread is descheduled (e.g., in preference to the raster thread).

Prior to this change, these benchmarks were mostly measuring whether the OS
decided to finish the Dart thread's time slice or hand over the CPU to the
raster thread to complete the visual part of the frame. Now we actually measure
the work done on the Dart thread.
2017-02-13 16:07:07 -08:00
Alexandre Ardhuin
f16dea290b prefer const contructors in packages/flutter_driver (#8056) 2017-02-10 00:49:46 -08:00
Ian Hickson
36c63e7024 Align the flutter_gallery test to the middle for better results (#8015) 2017-02-08 19:45:41 -08:00
Adam Barth
d29a94c379 Deploy Scrollable2.ensureVisible (#7951)
Also, switch Stepper over to using sliver-based scrolling.
2017-02-07 22:18:25 -08:00
Jacob Richman
53fc96da9e Small Flutter strong mode cleanup fixes. (#7825)
* Small Flutter strong mode cleanup fixes.

These are cases where strong mode down cast composite errors
generally indicated cases that would performance or correctness
issues if Flutter code was run in a strong mode VM.

* Fix Command API so that it is always in terms of Map<String,String>.

* Fix typedef
2017-02-06 08:55:09 -08:00
Jason Simmons
8f7d0a45c8 Remove unnecessary type parameter (#7751) 2017-01-30 17:49:31 -08:00
Jason Simmons
8ef17e0a6a Create flutter_driver key finders using parameterized ValueKey types (#7749)
The finder will only match the widget's ValueKey if both have identical
runtime types
2017-01-30 16:52:59 -08:00
Ian Hickson
21434fcf1a Refactor 'flutter drive' to get the observatory port from the logs (#7695)
This remove a very brittle aspect of flutter drive, whereby it would
assume a known port instead of explicitly finding out what it was.

Fixes #7692 and hopefully fixes the devicelab tests.
2017-01-27 01:37:28 -08:00
Ian Hickson
15a7eb3b6c Move to real generic method syntax (#7235) 2017-01-21 20:58:44 -08:00