The FLX will contain a font manifest JSON file that maps font family names
to custom font assets. Flutter will provide a FontSelector that loads
fonts on demand and caches typeface and style data.
Currently, during application startup we:
* copy the FLX file to a Mojo pipe
* write the Mojo pipe contents back to a temporary file on disk
* unzip the FLX contents into cache storage
This contributes to startup latency and requires that we later clean up the
cache.
With this change, the assets will be extracted from the FLX archive
on demand with no writes to storage. Runtime cost should be minimal
given that most assets (except for the snapshot) are not compressed
in the archive.
Instead of providing a stream of mutations, we now provide a the client with
the complete state of the editing control to prevent the two from getting out
of sync.
As a side-effect, we can now move the cursor around when editing a text field.
KeyboardServiceImpl's setText method was dropping the new text on
the floor instead of passing it on to the KeyboardServiceState.
Then it was passing the selection indices through, so they were
out of range, which the Android runtime doesn't like.
Fixes#964.
If we have a layer with a picture where the cull rect computes down to an empty
rectangle attempting to rasterize it into a ganesh surface will fail in the
same manner that trying to ganesh rasterize an empty layer will. This teaches
LayerHost to check for this case and handle it like an empty layer.
Fixes#1337
Remove view manager from consideration for now.
Although we could also remove the dependency on surfaces, it makes
sense to keep it for a little while longer since the replacement
for view manager will likely depend on it or a similar compositor.
This updates to mojo commit d259eb58aa59 and limits the roll script to
only pull in the parts of //mojo that are currently being used. More
stuff will be dropped in the future.