92 Commits

Author SHA1 Message Date
liyuqian
e97ed36e58
Add a BroadcastStream to FrameTiming (#11041)
Without this, developers have to override `onReportTimings` to listen for `FrameTiming`.
That can potentially break previous `onReportTimings` listeners if they forget to call
the old listener in their new callback.

This PR replaces the similar RP in the framework: https://github.com/flutter/flutter/pull/38574

Once this PR landed, we'll have to create another framework PR to use the stream to replace
`onReportTimings` usages.

Once that's done, we can then propose the breaking change of removing the deprecated
`onReportTimings`.
2019-08-19 10:52:16 -07:00
Shi-Hao Hong
014ab76ad0
Pass Android Q insets.systemGestureInsets to Window (#10413)
* Pass Android Q system gesture inset information from insets.systemGestureInsets to Window.systemGestureInsets
2019-08-16 13:42:56 -04:00
Dan Field
63b253d907
expose max depth on Window (#10414) 2019-08-02 20:37:24 -07:00
Jason Simmons
8fda1c99b1
Fix return type of assert function in gradient_test (#9961) 2019-07-19 18:55:48 -07:00
Jason Simmons
736c28b359
Update Dart engine tests to check for assertion failures only when running in debug mode (#9959) 2019-07-19 18:27:16 -07:00
Jason Simmons
48b1340ad7
Fix the geometry test to reflect that OffsetBase comparison operators are a partial ordering (#9925) 2019-07-19 12:59:27 -07:00
Jason Simmons
9e0477643e
Update the exception thrown for invalid data in the codec test (#9929) 2019-07-18 15:54:32 -07:00
Jason Simmons
f20e9350d2
Fix failure of the onReportTimings window hook test (#9923) 2019-07-18 14:42:33 -07:00
gaaclarke
78a8ca0f62
Made Picture::toImage happen on the IO thread with no need for an onscreen surface. (#9813)
Made Picture::toImage happen on the IO thread with no need for a surface.
2019-07-15 17:16:20 -07:00
Dan Field
d1dcd18486
Remove breaking asserts (#9797) 2019-07-11 16:46:54 -07:00
Dan Field
56885f79b8
Let pushColorFilter accept all types of ColorFilters (#9641) 2019-07-10 12:06:58 -07:00
Dan Field
887e052333
Refactor ColorFilter to have a native wrapper (#9668) 2019-07-08 15:36:16 -07:00
Yegor
94bb7a7ff2
Adds API for retaining intermediate engine layers (#9461)
Add new optional named oldLayer arguments to all push* methods of the SceneBuilder class.

When not null oldLayer signals to the engine that the intent is to update a layer rendered in a previous frame. The engine may optionally use that signal to reuse the resources allocated for that layer in the previous frame. For example, on the Web we can reuse existing DOM nodes and some of their properties and move fewer nodes around the tree.

The return type of each push method has been tightened up. Instead of having all methods return the same EngineLayer type, each method has its own unique layer type, e.g. OffsetEngineLayer. oldLayer parameters match the returned type. This prevents the framework (and other developers using dart:ui directly) from accidentally supplying an engine layer of the wrong type.
2019-06-28 12:56:03 -07:00
Shi-Hao Hong
f76d664e5c
Test cleanup geometry_test.dart (#9458)
* Refactor and clean up geometry_tests.dart

* Refactor and clean up stub_ui geometry_tests.dart
2019-06-24 21:52:09 -07:00
Shi-Hao Hong
297cbd4b15
Convert RRect.scaleRadii to public method (#9452)
* convert RRect.scaleRadii to public method

* Add scaleRadii tests
2019-06-24 11:20:25 -07:00
liyuqian
9f088c65ee
Add onReportTimings and FrameRasterizedCallback API (#8983)
Using it, a Flutter app can monitor missing frames in the release mode, and a custom Flutter runner (e.g., Fuchsia) can add a custom FrameRasterizedCallback.

Related issues:
https://github.com/flutter/flutter/issues/26154
https://github.com/flutter/flutter/issues/31444
https://github.com/flutter/flutter/issues/32447

Need review as soon as possible so we can merge this before the end of May to catch the milestone.

Tests added:
* NoNeedToReportTimingsByDefault
* NeedsReportTimingsIsSetWithCallback
* ReportTimingsIsCalled
* FrameRasterizedCallbackIsCalled
* FrameTimingSetsAndGetsProperly
* onReportTimings preserves callback zone
* FrameTiming.toString has the correct format

This will need a manual engine roll as the TestWindow defined in the framework needs to implement onReportTimings.
2019-06-06 10:42:48 -07:00
Dan Field
79c6ce19a1
Preserve safe area (#8848)
Preserve safe area on Window regardless of insets.
2019-05-31 09:24:38 -07:00
Michael Klimushyn
14c82d9969
Only cache required frames (#8837)
Remove the extra `decodedCacheRatioCap` parameter, and the
`_frameBitmaps` member from `Codec`. This means that small looped images
will consume more CPU but prevents us from hitting OOM exceptions based
on trying to render multiple larger images.

Also switch to fDisposalMethod for caching frames.

Previously we looped over every single SkCodec::FrameInfo, tracked its
`fRequiredFrame`, and then saved any frames matching those indeces.
Doing this instead avoids that initialization loop and extra data
structure.
2019-05-13 11:18:20 -07:00
Kaushik Iska
e7e6689b7f
Expose API to decode images to specified dimensions (#8596)
* Dart side resize primitives exposed

* Write the codec side changes

* return un-scaled image if we can not allocate bitmap

* Format _instantiateImageCodec calls to be single lined

Move null check for size to be inner

* Address CR comments and make image resize dimensions container

* Round not trunc, also format

* Add tests, remove ImageResizeDims from api surface

* Make placeholder value public

* Make the api side changes

* Add a feature to resize pixels and also add tests

* Fix grammar and add more info
2019-05-08 13:57:35 -07:00
Dan Field
2b1f9925e4
new lints (#8849)
Dart lints added:
* Avoid optional new
* Avoid optional const
* Prefer single quotes
* Prefer default assignment `=`
2019-05-07 16:10:21 -07:00
liyuqian
50de4692a5
Check the matrix in pushTransform (#8758)
Fixes flutter/flutter#31650
2019-04-26 14:09:53 -07:00
Todd Volkert
0c9c293b56
Add Rect.fromCenter() constructor (#8716) 2019-04-25 14:40:29 -07:00
Dan Field
3e47b4bb39
Reland const Rect/RRect (#8695) 2019-04-23 11:21:03 -07:00
Dan Field
0523870e0b
Add tests from framework (#8692) 2019-04-22 16:39:00 -07:00
Dan Field
4f2fd84cbc
Revert Rect/RRect 64 bit (#8690)
* Revert "fix toString (#8688)"

This reverts commit 9fa7336784b56ef70fd3580ac54d2939d1faa5a0.

* Revert "Make Rect and RRect use 64 bit doubles, and make them const-able (#8565)"

This reverts commit c12315273f6344175dae748ec1f23e15b4e7d59e.
2019-04-22 15:45:59 -07:00
Dan Field
9fa7336784
fix toString (#8688) 2019-04-22 14:12:31 -07:00
Dan Field
c12315273f
Make Rect and RRect use 64 bit doubles, and make them const-able (#8565)
* Make Rect and RRect 64bit and const-able
2019-04-22 12:58:48 -07:00
Kaushik Iska
7292d62ef8
Revert Versions API (#7828)
* Revert "Fix versions implementation (#7726)"

This reverts commit 3c38dd342f53d39603d1c5b138b5e4d36d93720f.

* Revert "Expose the Flutter engine, Dart and Skia versions to Dart. (#7634)"

This reverts commit b94e759b256819fb33cb9d2b41565fc137cac733.

* remove namespace shell stuff

* fix format

* fix licenses
2019-04-12 14:23:13 -07:00
Hugo
78bd318c96 Add Locale.toLanguageTag() (#8421)
Adds `Locale.toLanguageTag()`, which returns a valid Unicode Locale Identifier
using underscores as separator that can be reliably parsed.
2019-04-08 11:21:19 -07:00
Dan Field
e10d46421d
Improve path metrics tests and docs (#7851)
* Improve path metrics tests and docs
2019-04-05 13:58:46 -07:00
MH Johnson
3796d98918
[ui] Add null check in FontWeight.lerp (#8274)
* Add null check in FontWeight.lerp

* Add Unit tests for FontWeight.lerp
2019-04-01 21:56:19 -04:00
Jonah Williams
146646d1b9
Correct greater than or equal logic in offset base (#8210) 2019-03-19 13:41:47 -07:00
Dan Field
816921b9e4
Use newer Skia API for PathMeasure (#7809) 2019-02-13 11:15:19 -08:00
Dan Field
3c38dd342f
Fix versions implementation (#7726) 2019-02-07 08:53:31 -08:00
Matt Carroll
cc27cafb84
Implemented Dark Mode for Android (#25525) (#7488) 2019-02-04 19:30:15 -08:00
Kaushik Iska
b94e759b25
Expose the Flutter engine, Dart and Skia versions to Dart. (#7634)
- Moved versions from shell to common
- versions singleton contains all the required versions.
2019-01-30 16:22:45 -08:00
Dan Field
78e145d056
Improve PathMetrics (#7621)
* Improve PathMetrics

* Use index instead of dirty

* revert unintended change

* space
2019-01-29 12:40:48 -08:00
Dan Field
43fa420b04
Make IOManager own resource context (#7272)
* Make IOManager own resource context
2019-01-14 13:46:38 -08:00
Dan Field
6179ac6377
fix up analysis for Dart in Engine (#7404)
* fix up analysis for Dart in Engine, particularly for tests
2019-01-11 13:50:58 -08:00
Dan Field
4036b260aa
Reset ParagraphBuilder after build() (#7401)
* Reset ParagraphBuilder after build()
2019-01-07 16:10:53 -08:00
Ben Konyi
b35f021a8e
Update GetCallbackHandle to use Dart_IsTearOff instead of a string comparison (#7324)
* Update GetCallbackHandle to use Dart_IsTearOff instead of a string
comparison to determine whether or not a closure was provided as an
argument to PluginUtilities.GetCallbackHandle.

Fixes #24394
2019-01-04 14:41:56 -08:00
Ian Hickson
17789249d7
Offset.fromDirection and Size.aspectRatio (#6805) 2018-12-15 08:31:59 -08:00
Dan Field
396402f5bd
Flush UserSettings to window (#6850) 2018-11-13 23:41:56 -08:00
Michael Goderbauer
70a1106b50
Unify copyright lines (#6757) 2018-11-07 12:24:35 -08:00
Gary Qian
7be0217d67
Roll back _countryCode assert - breaking change (#6693)
* Roll back _countryCode assert - breaking change

* Add tests back in
2018-10-29 17:27:12 -07:00
hugovdm
2b2fbf0f64 Add Locale.fromSubtags and support for scriptCode. (#6518)
* Add Locale.fromComponents.

* Change toString from underscores to dashes. Expand the unit tests.

* Rename 'fromComponents' to 'create'. Change variants from String to List<String>.

* Use default for language parameter. Use hashCode/hashList.

* Have toString() stick with old (underscore) behaviour.

* Demonstrate empty-list bug in assert code.

* Fix empty-list assert bug.

* Add ignores for lint issues. Unsure about 71340 though.

* Fix operator== via _listEquals.

* Remove length-checking asserts: we're anyway not checking characters in fields.

* Documentation update.

* Change reasoning for ignore:prefer_initializing_formals.

* Try 'fromSubtags' as new constructor name.

* Documentation improvements based on Pull Request review.

* Assert-fail for invalid-length subtags and drop bad subtags in production code.

* Revert "Assert-fail for invalid-length subtags and drop bad subtags in production code."

This reverts commit d6f06f5e7b3537d60000c47641580475ef16abbe.

* Re-fix Locale.toString() for variants=[].

* Tear out variants, in case we want to have one fewer pointer in the future.

* Make named parameters' names consistent with member names.

* Also remove _listEquals: no longer in use.

* Lint fix.

* Fix code review nits.

* Lint fix for assert, and a couple more not-zero-length-string asserts.

* Code Review: two of three nits addressed...

* Review fix: change 'should' to 'must' for subtag prescriptions.

* Assert-check that countryCode is never ''.
2018-10-29 14:48:59 -07:00
Gary Qian
35340ceaf0
Pass full locale list with script and variant codes to framework (#6557)
* Locale Passing

* Pass full locale list and script and variant codes to framework

* Working Android locale list passing and fallback
2018-10-17 10:53:01 -07:00
Gary Qian
61cf4c01fd
Pass scriptcode and variantcode to dart:ui Window. (#6493) 2018-10-10 17:22:59 -07:00
Michael Klimushyn
7afbcd974c
Add a ratio cap to decoded animated image frames (#6310)
Provide a relative, per-image limit to the amount of memory
that's used to cache decoded image frames. Adds an overridable default
that developers can set to control how much memory images are allowed
to use decoded vs undecoded. The cap is set in flutter/flutter#22452.

Note that required frames are always cached regardless of the ratio cap,
because they're currently necessary for the GIF to animate. Previously
cached unessential frames are not cleared in response to the cache
hitting or exceeding the cap.

Addresses #20998 and #14344.
2018-10-09 17:07:46 -07:00
Michael Klimushyn
7ecc879ffd
Fix failing test on Cirrus (#6469)
Updates the tests to use the `--use-test-fonts` argument.

Fixes flutter/flutter#22682
2018-10-08 15:47:53 -07:00