55 Commits

Author SHA1 Message Date
xster
265d0d3c29
Add more haptic feedback varieties (#14829)
* Add more haptic feedback varieties

* tests

* un-meta-ify the test
2018-02-28 16:20:27 -08:00
Alexandre Ardhuin
3c379aaf43
whitespace cleanup (#14458) 2018-02-05 22:20:21 +01:00
Alexandre Ardhuin
841d5d7bd5
prefer_const_declarations on local variables (#14358) 2018-02-01 07:51:26 +01:00
Alexander Markov
54052048f2
Roll engine with Dart 2.0 fixed-size integers (#13856)
* Roll engine to 37789650cb1254199426e5de5cc66c2ba63cbaf2
* Fix large integer literals in packages/flutter/test/services/message_codecs_test.dart
2018-01-02 17:22:46 -08: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
amirh
78e044f5ec
Cancel the animated image stream timer if all listeners were removed. (#13158)
This is a bug in my previous CL: instead of cancelling the timer if
there are no more listeners, I canceled it if there were listeners (I
can claim I just missed a not :) ).

Not cancelling the timer when removing the last listener was not that bad, as
the timer callback is guarded by a check to see if there are listeners.
So the animation will not continue.

But in the case there were multiple listeners on the same stream, and
one of them is removed, this bug will stop the animation for all other
listeners.
I added a test case for this scenario.
2017-11-22 15:27:26 -08:00
amirh
155a4cab18
Don't keep image stream listeners when TickerMode is disabled. (#13106)
This makes sure that we don't decode frames when we don't need to run
the animation.

For example, prior to this CL: an animated image in a page that is not
currently at the top of the page stack (it is covered by another page),
will keep the the image stream listener, and thus frames will still be
decoded.
2017-11-22 13:45:55 -08:00
amirh
c1d742b29f
Implement MultiFrameImageStreamCompleter - handles scheduling for animated image frames (#12955)
* Implement MultiFrameImageStreamCompleter

* only decode frames while there are active listeners

* review comments followup

* multiply animation frame timer duration by time dilation

* lint
2017-11-10 14:55:59 -08:00
Mikkel Nygaard Ravn
7298f9ca0b
Expose isMethodCall matcher in flutter_test (#12942) 2017-11-10 08:09:14 +01:00
Mikkel Nygaard Ravn
177e99b382
Support unpacking platform error events (#12938) 2017-11-09 17:16:48 +01:00
Chris Bracken
4e2e69797a
Eliminate MethodCall hashCode and equals (#12277)
Since MethodCall equality checks are limited to test scenarios, this
patch replaces them with an equivalent test matcher. At present
MethodCalls are always used in scenarios where indentity-based
equality/hashing is appropriate.

This change avoids an assertion failure when MethodCall args are
Iterable (possible since args are of type dyanmic), and hashValue() from
dart:ui asserts that its input is not an Iterable.

The alternative of implementing support for deep equality in dart:ui was
rejected on the basis that if we're to encourage performant code,
expensive checks should be obviously-expensive to the author.
2017-11-06 09:52:57 -08:00
Hans Muller
bd3e91ed98 AssetImage.obtainKey handles devicePixelRatio == null (#12564) 2017-10-17 09:27:04 -07:00
Ian Hickson
953dabc70b Fix some typos (#12233) 2017-09-24 01:40:42 -07:00
Alexandre Ardhuin
bb4f4070f9 Prefer const constructors (#11853)
* upgrade to linter-0.1.35

* re-enable lint prefer_const_constructors

* address review comments
2017-08-31 08:55:21 +02:00
Yegor
89d06450e1 FadeInImage: shows a placeholder while loading then fades in (#11371)
* FadeInImage: shows a placeholder while loading then fades in

* fix dartdoc quotes

* license headers; imports

* use ImageProvider; docs; constructors

* _resolveImage when placeholder changes

* address comments

* docs re ImageProvider changes; unsubscribe from placeholder

* rebase

* address comments
2017-08-02 09:44:27 -07:00
Jason Simmons
71c374af7c Add a flag that controls autocorrect on text fields (#11180)
See https://github.com/flutter/flutter/issues/11168
2017-07-17 17:49:03 -07:00
Jason Simmons
6965312822 Align doubles to 8 bytes in the StandardMessageCodec (#10758)
See https://github.com/flutter/flutter/issues/10701
2017-06-16 10:05:18 -07:00
Alexandre Ardhuin
1eaefe1837 more const for immutables (#10563) 2017-06-08 22:04:18 +02:00
Ian Hickson
51ba6b377b Fix DecorationImage.centerSlice (#10257)
...and rearrange a bunch of code so that all these arguments/members
are always in the same order.
2017-05-24 10:45:28 -07:00
Chris Bracken
9935b3075c Use boolean json representation for obscureText (#9927)
Corrects type from string introduced in
21712a49a76af0fab63246a9acbe61f3e1928070.
2017-05-09 13:48:11 -07:00
Sarah Zakarias
d6b1ad5456 Remove url_lancher and path_provider from services (#9916) 2017-05-09 15:13:05 +02:00
Chris Bracken
21712a49a7 Add obscureText field to TextInputConfiguration (#9908)
Provides a cue to the engine to disable auto-correct/suggest.
2017-05-08 17:38:22 -07:00
Adam Barth
a4ba761bea Document remaining non-scrolling symbols (#9667)
This patch finishes documenting all the symbols except for those related to
scrolling.
2017-04-28 16:01:14 -07:00
Mikkel Nygaard Ravn
70ff50f929 Integration test for channel communication (#9621) 2017-04-27 08:44:28 +02:00
Todd Volkert
9558ac7d55 Assert that url is non-null in NetworkImage (#9626) 2017-04-26 21:35:58 -07:00
Mikkel Nygaard Ravn
945cfc3ee2 Make naming consistent across channel APIs (#9270) 2017-04-18 15:23:15 +02:00
Jason Simmons
c12c019bcc Throw an exception with the asset key if a string asset load fails (#9325)
Fixes https://github.com/flutter/flutter/issues/7715
2017-04-11 13:48:04 -07:00
Mikkel Nygaard Ravn
471c97df30 Platform channel API cleanup (#9048) 2017-03-30 08:27:13 +02:00
Adam Barth
e836a84e30 Add Image.memory for making images from typed data (#8877)
Fixes #7503
Fixes #8870
2017-03-20 11:14:41 -07:00
Adam Barth
ef43d00045 Ignore some missing plugins. (#8852)
Fixes #8850
2017-03-17 09:40:58 -07:00
Mikkel Nygaard Ravn
dce4bf8599 Remove old platform messaging API (#8837)
Breaking change: removed deprecated methods of PlatformMessages, leaving only binary messaging there. All other use of platform communication now goes through PlatformMessageChannel and PlatformMethodChannels. Retained use of String and JSON codecs for now.

Companion engine PR: flutter/engine#3482
2017-03-17 11:56:50 +01:00
Alexandre Ardhuin
90aa2957fe replace const Duration() with Duration.ZERO (#8835) 2017-03-17 08:04:48 +01:00
Mikkel Nygaard Ravn
789c2f1f7a Fixed endianness unit test (#8753) 2017-03-14 01:01:49 +01:00
Chris Bracken
46291903e0 Declare locals final where not reassigned (tests) (#8566) 2017-03-03 17:43:22 -08:00
Mikkel Nygaard Ravn
ddaba8992f PlatformMessageChannel: code cleanup, bugfixes, and unit tests (#8509) 2017-03-02 07:24:18 +01:00
Mikkel Nygaard Ravn
390993d070 PlatformXxxChannel concepts added to support Flutter/platform interop (#8394)
New concepts: PlatformMessageChannel (basic message send/receive superseding some existing  PlatformMessages methods), PlatformMethodChannel (method invocation and event streams), pluggable codecs for messages and method calls: unencoded binary, string, json, and 'standard' flutter binary encoding.
2017-03-01 14:35:41 +01:00
Alexandre Ardhuin
8c043d06de fix lints for directives_ordering rule (#8382) 2017-02-23 13:37:26 -08:00
Todd Volkert
54f79e5aad Roll engine to 8218674d4af35b94cd9844aad3487dcffcdf6423 (#8208)
Fixes #8200
2017-02-15 16:34:54 -08:00
Todd Volkert
6795c4ab96 Skip image_decoder_test to unbreak build bots (#8199) 2017-02-15 13:28:07 -08:00
Alexandre Ardhuin
d1d1c50cbe prefer const constructors (#8024) 2017-02-09 00:57:38 -08:00
Adam Barth
4955eef8a7 Refactor IconThemeData.fallback (#7490)
Now IconThemeData.fallback is a factory constructor and IconThemeData.of() does
the work of computing the fallback for its clients.

Also, add tests for ImageIcon and ListItems.
2017-01-13 14:44:47 -08:00
Adam Barth
709cc0034e Improve test coverage again (#7458)
This patch adds tests for radio buttons, the date picker, as well as a
number of other classes.
2017-01-12 13:14:09 -08:00
Adam Barth
5a2bf18488 Improve test coverage and fix bugs (#7410)
This patch improves test coverage for a number of files that had low
coverage. This patch also fixes a few minor bugs found by these tests.
2017-01-10 10:15:33 -08:00
Alexandre Ardhuin
c8447c91a9 prefer_const_constructor in packages/flutter/test (#7181) 2016-12-09 15:20:27 -08:00
Adam Barth
3f19b2db98 Switch to using PlatformPlugin instead of mojom (#6292)
* Switch to using PlatformPlugin instead of mojom

* Update engine.version
2016-10-13 02:10:32 -07:00
James Robinson
a95c9fdb58 Isolate imports of generated Dart code from generated path (#5960)
This rewrites imports of various mojom.dart files from the Flutter
engine repo to instead import normal-looking dart files from the
(new) flutter_services package. This package handles exporting the
correct symbols from generated code wherever that may live.

Includes an engine roll to 3551e7a48e2e336777b15c7637af92fd7605b6c5
which contains the new flutter_services package.
2016-09-21 14:00:29 -07:00
Jason Simmons
39be1c3747 Tell image listeners if they are being called synchronously by the ImageStream (#5161)
Image listeners installed in paint handlers need to know whether the listener
is being called during the paint.

Fixes https://github.com/flutter/flutter/issues/4937
2016-08-02 16:07:21 -07:00
Todd Volkert
2e48c1a1bb Simplify SystemChrome.setSystemUIOverlayStyle() (#4653)
* Only schedule overlay style update microtask if needed

* Simplify API
2016-06-21 08:28:29 -07:00
Ian Hickson
2dfdc840b1 Refactor everything to do with images (#4583)
Overview
========

This patch refactors images to achieve the following goals:

* it allows references to unresolved assets to be passed
  around (previously, almost every layer of the system had to know about
  whether an image came from an asset bundle or the network or
  elsewhere, and had to manually interact with the image cache).

* it allows decorations to use the same API for declaring images as the
  widget tree.

It requires some minor changes to call sites that use images, as
discussed below.

Widgets
-------

Change this:

```dart
      child: new AssetImage(
        name: 'my_asset.png',
        ...
      )
```

...to this:

```dart
      child: new Image(
        image: new AssetImage('my_asset.png'),
        ...
      )
```

Decorations
-----------

Change this:

```dart
      child: new DecoratedBox(
        decoration: new BoxDecoration(
          backgroundImage: new BackgroundImage(
            image: DefaultAssetBundle.of(context).loadImage('my_asset.png'),
            ...
          ),
          ...
        ),
        child: ...
      )
```

...to this:

```dart
      child: new DecoratedBox(
        decoration: new BoxDecoration(
          backgroundImage: new BackgroundImage(
            image: new AssetImage('my_asset.png'),
            ...
          ),
          ...
        ),
        child: ...
      )
```

DETAILED CHANGE LOG
===================

The following APIs have been replaced in this patch:

* The `AssetImage` and `NetworkImage` widgets have been split in two,
  with identically-named `ImageProvider` subclasses providing the
  image-loading logic, and a single `Image` widget providing all the
  widget tree logic.

* `ImageResource` is now `ImageStream`. Rather than configuring it with
  a `Future<ImageInfo>`, you complete it with an `ImageStreamCompleter`.

* `ImageCache.load` and `ImageCache.loadProvider` are replaced by
  `ImageCache.putIfAbsent`.

The following APIs have changed in this patch:

* `ImageCache` works in terms of arbitrary keys and caches
  `ImageStreamCompleter` objects using those keys. With the new model,
  you should never need to interact with the cache directly.

* `Decoration` can now be `const`. The state has moved to the
  `BoxPainter` class. Instead of a list of listeners, there's now just a
  single callback and a `dispose()` method on the painter. The callback
  is passed in to the `createBoxPainter()` method. When invoked, you
  should repaint the painter.

The following new APIs are introduced:

* `AssetBundle.loadStructuredData`.

* `SynchronousFuture`, a variant of `Future` that calls the `then`
  callback synchronously. This enables the asynchronous and
  synchronous (in-the-cache) code paths to look identical yet for the
  latter to avoid returning to the event loop mid-paint.

* `ExactAssetImage`, a variant of `AssetImage` that doesn't do anything clever.

* `ImageConfiguration`, a class that describes parameters that configure
  the `AssetImage` resolver.

The following APIs are entirely removed by this patch:

* `AssetBundle.loadImage` is gone. Use an `AssetImage` instead.

* `AssetVendor` is gone. `AssetImage` handles everything `AssetVendor`
  used to handle.

* `RawImageResource` and `AsyncImage` are gone.

The following code-level changes are performed:

* `Image`, which replaces `AsyncImage`, `NetworkImage`, `AssetImage`,
  and `RawResourceImage`, lives in `image.dart`.

* `DecoratedBox` and `Container` live in their own file now,
  `container.dart` (they reference `image.dart`).

DIRECTIONS FOR FUTURE RESEARCH
==============================

* The `ImageConfiguration` fields are mostly aspirational. Right now
  only `devicePixelRatio` and `bundle` are implemented. `locale` isn't
  even plumbed through, it will require work on the localisation logic.

* We should go through and make `BoxDecoration`, `AssetImage`, and
  `NetworkImage` objects `const` where possible.

* This patch makes supporting animated GIFs much easier.

* This patch makes it possible to create an abstract concept of an
  "Icon" that could be either an image or a font-based glyph (using
  `IconData` or similar). (see
  https://github.com/flutter/flutter/issues/4494)

RELATED ISSUES
==============

Fixes https://github.com/flutter/flutter/issues/4500
Fixes https://github.com/flutter/flutter/issues/4495
Obsoletes https://github.com/flutter/flutter/issues/4496
2016-06-16 09:49:48 -07:00
Ian Hickson
ea04c910e7 Replace use of LruMap with a pure LinkedHashMap
...so that we can shed the quiver dependency in flutter's framework.
2016-03-22 23:01:31 -07:00