1122 Commits

Author SHA1 Message Date
Hixie
40f162c096 Specs: define how importing element registrations works, move built-in elements to a separate module so dart:sky can be a simple library
Review URL: https://codereview.chromium.org/944873007
2015-02-20 16:40:07 -08:00
Adam Barth
7d00bd5e06 Implement Custom Elements
This CL implements custom elements. The design is as follows:

1) Authors subclass Element and call registerElement.
2) When we create C++ elements for custom elements, we call the author's
   constructor synchronously.
3) The attach/detach/attributeChanged callbacks are called either:
   a) when exiting the current custom element callback scoped (e.g., before
      returning from appendChild), or
   b) when draining the microtask queue.

The implementation in this CL is a bit fragile because we don't detect name
registration conflicts and we let you create custom elements with the same name
as built-in elements. Also, not every part of the engine is prepared to execute
script synchronously below createElement. We'll need to iron out these issues
over time, but this CL is a start.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/943013002
2015-02-20 16:15:42 -08:00
Eric Seidel
2a0ee4976a Fix touch-demo after recent api changes.
TBR=abarth@chromium.org

Review URL: https://codereview.chromium.org/950503002
2015-02-20 15:23:09 -08:00
Hans Muller
3663c45619 Added Sky Mojo embedder singleton, restored network test
Currently the embedder is just an encapsulation of the Mojo shell. Exposing an ApplicationConnection that encapsulates the ViewManager Embed SPs is next.

R=abarth@chromium.org, zra@google.com

Review URL: https://codereview.chromium.org/948463003
2015-02-20 15:07:29 -08:00
Ojan Vafai
8ba8641a1d Remove LayoutState.
The only bit that was still used was the
containingBlockLogicalWidthChanged check in
RenderBlock::widthAvailableToChildrenHasChanged.
a4f1e657ff
is the patch that added that code. I added a
test to confirm we still pass the test case
that code was added for.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/945003002
2015-02-20 14:02:42 -08:00
Hixie
01bec1736f Specs: pass the current <script> to the module library init()
function, rename it _init(), plumb that through AutomaticMetadata, and
move @tagname and Element.tagname to a new frameworks.md file that has
stuff that wouldn't actually be part of core Sky

Review URL: https://codereview.chromium.org/946513006
2015-02-20 13:55:52 -08:00
Adam Barth
484c581d71 Update HACKING.md 2015-02-20 13:55:37 -08:00
Adam Barth
491df36523 Update HACKING.md 2015-02-20 13:54:37 -08:00
Hixie
afea90b7ce Specs: make the change callbacks all be consistently past tense ('changed')
Review URL: https://codereview.chromium.org/932783004
2015-02-20 13:20:41 -08:00
Adam Barth
5efcc9a6d8 Add support for |any| to Sky's code generator
We now expand |any| to DartValue (which exists) as opposed to ScriptValue
(which does not).

Also, fill in a few missing pieces in tonic that will be used by custom
elements.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/942993002
2015-02-20 12:19:54 -08:00
Adam Barth
178be1d89d Remove almost all clients of isHTMLElement
This CL is progress towards deleting the concept of an HTMLElement entirely. We
won't actually get all the way there in this CL series, but we're getting
closer. This CL also will let us make custom elements just be Elements instead
of HTMLElements.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/942933003
2015-02-20 12:06:15 -08:00
Ojan Vafai
a42e249b69 Remove dead position:relative code.
There are some cases in this patch where it's not
obvious that the code only applies to position:relative,
but the code asserts that it does. In those cases,
I trusted the asserts and deleted the code.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/938193004
2015-02-20 11:37:17 -08:00
Eric Seidel
c78cea7e54 Allow multiple dart <script> tags in .sky files
This does several things:
1.  Teaches sky about asynchronous script execution. Previously once all imports
were loaded and the script text was available, we executed a script and assumed
it completed synchronously.  We left the parser loop to do so, but that was fine
as the next chunk from the background thread would resume the parser.  In this
change scripts now load and execute separately.  The "load" step may trigger
further dart import loads which may cause the execution to happen asynchronously
which required teaching both the DartController and the HTMLScriptRunner to
take callbacks to allow HTMLDocumentParser to know to continue parsing after
the Dart script has resolved its imports and executed.

This required re-working some of how the parser executes scripts and I
re-purposed isWaitingForScripts to include "is the parser blocked" where
as before it was limited only to "does the treebuilder have a script", even
though the imports system may have had pending scripts as well.

I made HTMLScriptRunner live only as long as the script it was executing
since it only contained per-script state at this point.

2.  Fixed an error reporting bug whereby we would not show errors when "init"
failed to execute, only "main".  This required using the dart_mirrors_api.h
which required adding an include path to the core build. :(

3.  Made it possible for a single sky file to contain multiple dart <script>
tags.  Each <script> is a separate library and executes as
soon as </script> is seen.  main or init is called for each.  This required
mangling "urls" for these script blocks since Dart unique's libraries by urls.
Before this change it may have been possible to do <import 'foo.sky'> and then
<script>import 'foo.sky'</script> and have it work!?

R=abarth@chromium.org
BUG=

Review URL: https://codereview.chromium.org/938623005
2015-02-20 11:08:28 -08:00
Eric Seidel
5733fd3703 Fix spinning-square to spin again.
TBR=abarth@chromium.org

Review URL: https://codereview.chromium.org/942923002
2015-02-20 10:28:03 -08:00
Adam Barth
e89f321945 Remove CustomEvent from Sky
There's no point in CustomEvent anymore because authors can just subclass Event
themselves.

R=esprehn@chromium.org, ojan@chromium.org

Review URL: https://codereview.chromium.org/941243002
2015-02-19 23:24:05 -08:00
Adam Barth
0a6bdfed49 Make it possible to create reasonable subclasses of Event
After this CL, authors can create custom subclasses of Event that actually work
in a reasonable way, including being able to dispatch.

R=hansmuller@google.com, hansmuller@chromium.org

Review URL: https://codereview.chromium.org/938003004
2015-02-19 23:19:06 -08:00
Adam Barth
f562073fe2 Make it possible to inherit from any constructable host object
This CL makes it possible for authors to extend any host object (e.g., DOM
objects) and to use those objects in all the usual places they can be used in
the API.

R=esprehn@chromium.org

Review URL: https://codereview.chromium.org/936193005
2015-02-19 23:09:51 -08:00
Ojan Vafai
74290d5007 Move hit testing out of RenderLayer into RenderBox.
Change hit testing to walk over the render tree instead of
the RenderLayer tree. This is a step in the direction of
removing the RenderLayer tree entirely.

For now, there's a few calls back into RenderLayer that
will be removed in a followup patch. This patch also
breaks hit testing on transformed inlines. I'll be
removing the ability to transform inlines in a
followup patch anyways, so it's ok for hit testing
to give the wrong result temporarily here.

Almost all of this patch is just moving code from
RenderLayer to RenderBox. The primary substantive change
is in RenderBox::hitTestLayer. Instead of having
hitTestChildren calls, we call collectSelfPaintingLayers,
reverse sort by z-index (so we start at the top),
and then iterate over the result.

The test-case also exposes that we don't correctly hit
transformed elements inside inline-blocks. I went back as
far as 4153b8a515d54275934d4244aaf2d5a7a8fe3333 and the
bug still happened.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/945693002
2015-02-19 21:31:42 -08:00
Adam Barth
ec0a8e615c Sky should expose services provided to/by embedder
These now appear on internals as takeServicesProvidedToEmbedder and
takeServicesProvidedByEmbedder. When you call these functions, you get back the
raw int that represents the handle. We'll need to wrap them up inside the Dart
VM with the appropriate types. We can create a nice wrapper for that in a
future CL.

R=hansmuller@google.com, hansmuller@chromium.org

Review URL: https://codereview.chromium.org/944733002
2015-02-19 21:16:04 -08:00
Adam Barth
89db30494d Remove two more uses of NodeList
We now use List<Node> instead, which is more idiomatic.

R=ojan@chromium.org

Review URL: https://codereview.chromium.org/941913002
2015-02-19 21:10:20 -08:00
Hixie
2175f32677 Specs: fix a raft of syntax errors caught by actually running a syntax checker...
Review URL: https://codereview.chromium.org/943843002
2015-02-19 16:00:32 -08:00
Hans Muller
9226084b80 Dart version of the Sky color chooser
I haven't removed the JS color picker code yet.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/940233002
2015-02-19 15:08:20 -08:00
Hixie
1ca5d64228 Specs: remove previousSibling/nextSibling arguments to parentChangeCallback() since their purpose is not documented
Review URL: https://codereview.chromium.org/943453004
2015-02-19 14:32:31 -08:00
Hixie
a93b70ab08 Specs: forgot return type for registerElement()
Review URL: https://codereview.chromium.org/944613002
2015-02-19 14:29:15 -08:00
Hixie
40f16b096b Specs: move needsShadow to an annotation
R=abarth@chromium.org

Review URL: https://codereview.chromium.org/938183002
2015-02-19 14:27:26 -08:00
Hixie
4591cace16 Specs: remove vestiges of 'with ChildNode'
Review URL: https://codereview.chromium.org/945533002
2015-02-19 14:11:11 -08:00
Adam Barth
b0ef81ac95 Make element.style["color"] work in Sky
This CL makes CSSStyleDeclaration a bit less painful to use by replacing the
crazy Java-style APIs with overloading operator[] and operator[]=.

R=esprehn@chromium.org, ojan@chromium.org

Review URL: https://codereview.chromium.org/942553002
2015-02-19 13:06:01 -08:00
Hixie
128ae1023b Specs: fix copypasta in the WheelEvent constructor
Review URL: https://codereview.chromium.org/939043004
2015-02-19 11:16:27 -08:00
Hixie
df6ded3b0d Specs: add warning to style.md since we're going to rework all that
Review URL: https://codereview.chromium.org/928083004
2015-02-19 10:50:56 -08:00
Adam Barth
a033a3261b Add back Element#getBoundingClient rect
Hans is using this in Modular and we don't have a great replacement at the
moment.

R=hansmuller@google.com, hansmuller@chromium.org

Review URL: https://codereview.chromium.org/942543002
2015-02-19 10:02:16 -08:00
Adam Barth
0c35024cef querySelectorAll should return List<Element>
... instead of NodeList.

R=eseidel@chromium.org, ojan@chromium.org

Review URL: https://codereview.chromium.org/943433002
2015-02-19 09:39:59 -08:00
Etienne Membrives
8076312a7d Fix Sky tests
R=qsr@chromium.org

Review URL: https://codereview.chromium.org/940983002
2015-02-19 18:14:13 +01:00
Etienne Membrives
3ec2270eb2 Update from https://crrev.com/316786
List of manually-modified files:
gpu/command_buffer/service/in_process_command_buffer.cc
examples/sample_app/BUILD.gn
examples/sample_app/spinning_cube.cc
mojo/android/javatests/src/org/chromium/mojo/MojoTestCase.java
mojo/cc/context_provider_mojo.cc
mojo/cc/context_provider_mojo.h
mojo/common/trace_controller_impl.cc
mojo/gles2/command_buffer_client_impl.cc
mojo/gles2/command_buffer_client_impl.h
services/gles2/gpu_impl.cc
shell/android/apk/src/org/chromium/mojo/shell/MojoShellApplication.java
sky/engine/core/dom/Node.cpp
sky/shell/apk/src/org/domokit/sky/shell/SkyShellApplication.java
ui/events/latency_info.cc
ui/gfx/transform.cc
ui/gfx/transform.h
ui/gfx/transform_util.cc
ui/gfx/transform_util.h

Review URL: https://codereview.chromium.org/935333002
2015-02-19 17:27:12 +01:00
Ojan Vafai
3edb147679 Change the return value of RenderLayer::hitTestLayer.
All the code only cares about whether we hit, not
which layer we hit.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/939793003
2015-02-18 19:52:16 -08:00
Ojan Vafai
bd8d560b7a Merge RenderLayer::hitTest into RenderView::hitTest.
Only RenderView calls this method. The actual tree walk
happens in RenderLayer::hitTestLayer, which a followup
patch will move into RenderBox.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/939483005
2015-02-18 19:29:30 -08:00
Ojan Vafai
6b07257fb6 Merge hitTestLayerByApplyingTransform into hitTestLayer.
This makes hitTestLayer a bit larger at the benefit of making
the code a bit easier to follow and getting rid of the confusing
recursive call to hitTestLayer and the appliedTransform bool.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/937023002
2015-02-18 18:40:20 -08:00
James Robinson
174ea9f08e Remove last uses of InterfaceImpl<> in Sky C++ code
This switches to using StrongBinding<>s in sky's ContentHandlerImpl
and TestHarnessImpl implementations.

These are the last uses of the deprecated InterfaceImpl<> helper in
the mojo repo (more uses exist in other repos).

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/934403002
2015-02-18 18:17:50 -08:00
Adam Barth
8bdad9784d Port touch-demo.sky to Dart and make it work in SkyShell
We still don't quite handle multitouch correctly, but single touches work now.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/932283002
2015-02-18 16:57:32 -08:00
Adam Barth
cf2f7afb9f Add an implementation of url_loader.mojom using OkHttp
This CL is the beginnings of an implementation of url_loader.mojom using the
OkHttp library. OkHttp is a relatively simple HTTP client library for Android
that implements HTTP/1.1 and HTTP/2.0. We might want to use OkHttp to bootstrap
into a more full-featured network_service implementation based on //net.

R=jamesr@chromium.org

Review URL: https://codereview.chromium.org/930673002
2015-02-18 16:53:04 -08:00
Ojan Vafai
f9ddb1cabd Increase code coverage for RenderLayer::hitTestLayer.
Add tests for the NormalFlowChildren and transforms code paths.

R=abarth@chromium.org

Review URL: https://codereview.chromium.org/926823004
2015-02-18 16:07:35 -08:00
Hixie
89632f4d8e Specs: add that we assume library.declarations to be in source order to the list of (currently unwarranted) assumptions we are making
Review URL: https://codereview.chromium.org/935113002
2015-02-18 15:00:18 -08:00
Hixie
1cf4ba94b1 Dispatcher tests (tests the code in events.md)
R=abarth@chromium.org

Review URL: https://codereview.chromium.org/936973002
2015-02-18 14:34:31 -08:00
Hans Muller
63dd3c3f5a Dart Bindings: ApplicationConnection
Replaced the Dart ServiceProvider class with a version
of ApplicationConnection that can both provide services
and connect to (request) them. ApplicationConnection
objects are returned by the Application ConnectToApplication()
method and they're passed to the Application AcceptConnection()
method.

R=zra@google.com

Review URL: https://codereview.chromium.org/934253003
2015-02-18 14:17:54 -08:00
Hixie
24bf744c91 Specs: We should rename insertBefore(), but anyone got a suggestion for a better-sounding name?
Review URL: https://codereview.chromium.org/940743002
2015-02-18 13:26:02 -08:00
Adam Barth
d86eedd1aa Connect Sky and Ganesh in SkyShell
This CL contains enough plumbing for Sky to render content to the screen using
Ganesh in SkyShell. We're still missing the ability to load data off the
network.

R=eseidel@chromium.org, ojan@chromium.org

Review URL: https://codereview.chromium.org/936883002
2015-02-18 13:15:36 -08:00
Adam Barth
3d8ffb7f52 Make it possible to load a WebFrame from a URL
Previously, the WebFrame need to be created with a data pipe consumer handle.
This CL makes it possible to create a WebFrame with a URL and have the engine
issue the network request.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/940703002
2015-02-18 12:57:51 -08:00
Hixie
65382428a8 Specs: strip @nonnull annotations since they're too verbose
Review URL: https://codereview.chromium.org/924393004
2015-02-18 12:50:08 -08:00
Hixie
4b2b8f0621 Specs: clean up the last remaining mentions of documents
Review URL: https://codereview.chromium.org/940593003
2015-02-18 12:35:42 -08:00
Hixie
efc921ad18 Specs: write up what we've discussed about fonts, just so that it's written down somewhere (this is just a sketch for now)
Review URL: https://codereview.chromium.org/933373002
2015-02-18 12:18:40 -08:00
Hixie
8eed30936f Specs: rename 'paint' queue to 'frame' queue, add some bits and priorities, make them mutable
Review URL: https://codereview.chromium.org/939743002
2015-02-18 12:10:27 -08:00