This does way more than a single CL should do, sorry.
- Fixed a bunch of logging/error reporting during loads.
- Made it possible for --package-root to be absolute.
- Fixed (hypothetically) parts of iOS build to be clang-plugin-compliant.
- Made all tests pass in sky_shell
- Removed a bunch of layout_tests including windows support.
I'll remove all the mojo test harness stuff in a follow-up patch.
R=abarth@chromium.org, abarth@google.com
Review URL: https://codereview.chromium.org/1215953006.
The initial fix was updating Image to NetworkImage, which is the new
name for the Widget that takes a URL to an image.
However, this exposed an underlying bug: slots given to
MultiChildRenderObjectWrapper children were not getting updated in the
initial build. Initially, we don't have a next sibling for any of the
children's roots, since we haven't yet synced anyone after the one
we're syncing. So we pass null. However, as soon as we build the next
one, the previous one now has an out of date slot: null means
"append", but it needs to be "insert before the newly inserted root of
the next child". So now we update the slot after each insertion.
This returned the spinning_mixed demo to its original state, but that
state was buggy: the image would expand to fit the button and push the
text out of the button. To resolve that, this patch changes how
RenderImage sizes an image that has no desired dimensions but has some
constraints that make it impossible to show the image at full size:
now, we try to maintain the aspect ratio and honour the constraints
all at the same time.
Also, if the constraints are tight we skip all that logic, because
it'd be a waste of time.
To help with the slot issue above, I needed to see the widget tree and
the render tree and compare them (to see where the nodes were getting
out of order), so I also extended Widget.toString() to dump a deep
tree of the widget hierarchy.
Also, while debugging all this I noticed we sometimes walk the tree
into nodes that are null, which causes crashes. So to avoid that I
added null-checks to certain walkChildren() functions.
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/1212943007.
This:
- Adds asserts all over the place to make sure things are working
right with respect to the parent pointer.
- Fixes the bugs those asserts uncovered. It turns out we were failing
to update the parent pointer in a couple of cases: when the child
hadn't changed (but the parent had), and when the node was replaced.
- Remove the operator[] nonsense in scaffold.
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/1218183009.
This is done by the following steps:
- Make Inherited classes notify their descendants when their state
changes.
- Make Components track which Inherited classes they looked at.
- Make Components handle being notified of state changes by rebuilding
if the changed ancestor is of a type we've looked at.
- Refactor setState() and scheduleBuild().
- Make the "buildDirtyComponents" phase support incrementally building
more components as each one finds it needs to update itself.
The way this works is that when the menu item updates its color, it
does so by changing a DefaultTextStyle (Inherited) node in its tree.
That node then notifies its ancestors, which include in particular the
Text component, which uses DefaultTextStyle. The notification is
received, and, even though we're already in the rebuild phase, the
Text queues itself up to be rebuilt as well. Since we now support
adding people to the rebuild phase while it's active, it gets rebuilt
as well, and all is well.
This CL depends on the fix in https://codereview.chromium.org/1218183009R=abarth@chromium.org
Review URL: https://codereview.chromium.org/1222823004.
Rather than hardcoding the size and presence of the notification area in Dart,
we now expose padding values on the view. These values are set to non-zero
values when there are UI elements that overlap the view. We currently respect
only the top padding, but this CL paves the way to respect padding in other
directions.
We still hardcode the size of the notification area in Java. A future CL will
retrieve this value from the Android framework.
Fixes#257R=ianh@google.com
Review URL: https://codereview.chromium.org/1220353002.
This CL removes all references to sky/engine/core/fetch from outside that
directory. All these references appear to be dead code. Also, remove a few
"loader" classes that were also dead code.
TBR=eseidel@chromium.org
Review URL: https://codereview.chromium.org/1214513003.
This CL removes the ability to load remote font faces using CSS. This CL is
part of a series to remove the network dependency from Sky engine. We'll likely
add the ability to load custom fonts in the future, but we'll base the API on
mojo::DataPipe, similar to how we load images over mojo::DataPipes today.
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1223843003.
There were two problems:
1) We didn't update the demo's use of RenderImage when we switched RenderImage
to take a sky.Image rather than a URL.
2) Scheduling a layout no longer ensured a visual update, which meant we'd
never actually flushLayout unless something else ensured a visual update.
TBR=jackson@google.com
Review URL: https://codereview.chromium.org/1221273002.
This CL factors the skyx build logic out of sky/apk/rules.gni so that we can
build skyx bundles without building entire APKs. This change makes it possible
to build skyx bundles for all the examples (except game).
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1222673003.
This CL adds a build-time flag for building skyx packages, which make our
example Sky applications work offline. We can't enable this flag by default yet
because our build bots lack a few Dart packages, but landing this flag will let
folks experiment with this feature locally.
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1221203002.
This CL switches SkyDemo over to using explicit intents for deciding which Sky
apps to run. This change lets us get rid of the hacky "sky" URI scheme.
Instead, we use normal URLs but we require the sender of the intent to be
explicit in directing the VIEW intent to us.
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1221123003.
This CL adds the concept of a root asset bundle to Sky. If the Sky app was
launched from a bundle, the root bundle is that bundle.
This CL teaches icon.dart to default to loading icons out of the root bundle,
if a root bundle exists. The next result is that Stocks has icons when run
offline because the icons are present in stock's skyx bundle.
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1208273003.
This CL teaches Stocks.apk how to start from a skyx bundle name |app.skyx| in
the APK's asset collection.
Stocks.apk still actually starts from |snapshot_blob.bin| because we can't yet
produce skyx files as part of the build process.
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1221033006.
These functions used to support testing, but they're no longer used by any
tests now that we've deleted the DOM-based world.
Really we should merge dart:sky.internals into dart:sky, but that's a CL for
another day.
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1221163002.
Rather than require Sky developers to have a Python environment, we should
write our tooling for Sky in Dart. This CL converts skyx.py into skyx.dart and
makes skyx.py into a wrapper for skyx.dart. We still need the Python wrapper
because gn requires that build actions are written in Python.
This code isn't wired into the main build yet. We'll need to add some more pub
packages to our buildbot environment first.
TBR=eseidel@google.com
Review URL: https://codereview.chromium.org/1213213003.