We now only preserve the whitespace inside a <t> element inside
the parser. This removes the known n^2 from reattaching whitespace
which should make parsing and appending nodes faster. I also
removed the dead WhitespaceMode code from the parser, and made
the dom-seralizer.sky auto indent the markup so the test output
would be readable.
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/867963006
This CL switches Sky to a pointer events model that unifies mouse and touch
with a common event model. This implementation is just enough to make the
example widgets work. The rest of the design is in the specs, which we hope to
converge with over time.
R=ojan@chromium.org
Review URL: https://codereview.chromium.org/866213004
This CL removes a bunch of unused code from WebViewImpl. The bulk of the code
is to let C++ drive scroll flights, but we're going to implement that using
gesture events and having the scroll driven in script.
R=esprehn@chromium.org
Review URL: https://codereview.chromium.org/871683002
blink::EventHandler is really hairy and deals with a lot of complex cases that
don't matter for Sky. This CL starts a NewEventHandler and adds support for
PointerEvents there. The NewEventHandler will eventually replace EventHandler
once we've actually migrated over from Mouse+Touch events to PointerEvents.
R=esprehn@chromium.org, ojan@chromium.org, eseidel@chromium.org
Review URL: https://codereview.chromium.org/823873004
In Sky most elements with a ShadowRoot will have rare data since they'll
have elements inside them with more ShadowRoots which would increment
the m_childShadowRootCount field, or they'll contain a <content> element
which would increment m_descendantContentElementCount. Only leaf elements
that don't contain either will not get one, and everyone pays the price
for the rare data ptr.
This should be mostly net netural for memory usage and it makes the code
simpler. We can add it back later if we realize there's lots of leaf
widgets.
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/862183003
This removes the symmetrical nature of ServiceProvider and consistently
passes and uses a ServiceProvider + ServiceProvider& pair in places that
wish to bidirectionally expose services, such as the view manager.
The
view manager library now deals with InterfaceRequest<ServiceProvider>
and ServiceProviderPtr objects (i.e. c++ wrappers for handles) instead
of a concrete implementation of ServiceProvider to make it easier for
callers.
A number of places that were assuming a particular
ServiceProvider would always exist are updated to reflect the nullability
of the parameters in mojom and places that do not wish to ever look up
or provide services now pass nullptr instead of doomed pipe handles.
The JS application startup classes are reworked a bit to accomodate
exposing services on the third ConnectToApplication/AcceptConnection
parameter.
BUG=449432
R=abarth@chromium.org, sky@chromium.org
Review URL: https://codereview.chromium.org/858103002
Involves adding many //testing/test.gni imports, fixing one
SkSurface::NewRenderTarget invocation inside sky, and fixing up
base::Process usage in the shell.
Review URL: https://codereview.chromium.org/862133002
Instead lets just iterate the list of sheets and ask each one questions. This
shouldn't be much slower since most widgets only have one sheet anyway.
I also moved the media query matching to the sheet collection. We weren't
correctly matching them since we only guarded the feature set, not the
addition to the list of active sheets.
R=abarth@chromium.org, ojan@chromium.org
Review URL: https://codereview.chromium.org/858423002
Previously, if you had a generated background image and a translucent (or
rounded) border, we would draw the image nine times because we would inflate
the fill rect to draw behind the border. With no-repeat, we only draw the image
once.
This saves 4.5% of record time on flights-app.
R=esprehn@chromium.org
Review URL: https://codereview.chromium.org/844193009
After this CL, you can exchange services with the app loaded in the iframe by
calling takeServiceProvider() on the iframe element. That gives you the raw
handle, which you'll need to wrap in the appropriate mojom-generated interface.
R=hansmuller@google.com, sky@chromium.org
Review URL: https://codereview.chromium.org/862943004
Instead, always use InterpolationLow. In Skia, that boils down to bilinear,
which is fast on GPUs. We should eventually let authors control the
interpolation quality in case they want pixelation, etc.
This CL saves 6.3% on Layer::RecordPicture for flights-app.
R=esprehn@chromium.org
Review URL: https://codereview.chromium.org/860843006
This CL prepares us to expose the imported and exported service providers to
JavaScript. We can't quite do that yet becaues the API on mojo::View isn't
ready for us. However, we can get started by moving the call to Embed into
HTMLIFrameElement.
R=eseidel@chromium.org
Review URL: https://codereview.chromium.org/793393003
Just rebuild the sheets when the viewport changes sizes since that's
super rare in sky right now. This also causes a full document style
recalc, but we'll fix that later too. For now lets make the system
simpler.
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/848483003
Instead just use textContent() and teach HTMLStyleElement how to atomize
its children. I also added the optimization to Node::textContent so that
Text just returns its value instead of allocating a new buffer which
avoids malloc and copy when getting the textContent of text.
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/864613002
Moving WebInputEvent into public/platform lets us refer to it directly in core, which will let us remove the PlatformFooEvent classes.
The final pipeline will be:
1) mojo::InputEvent (IPC type, device pixels)
2) blink::WebInputEvent (platform abstraction, logical pixels)
3) blink::Event (DOM type, logical pixels)
If mojo::InputEvent used logical pixels, it would probably be easier to just
use mojo::InputEvent as the platform abstraction, but instead we use the
mojo-to-blink conversion to translate between device and logical pixels, like
we do everywhere else in Sky.
R=eseidel@google.com, eseidel@chromium.org
Review URL: https://codereview.chromium.org/860593003
I believe this doesn't change behavior, but it's hard
to know since we don't have spellchecking hooked up.
Also, delete setToolTip. This is for tooltips on spelling
markers. We don't support tooltips.
R=esprehn@chromium.org
Review URL: https://codereview.chromium.org/830273006
This removes the attributes sky doesn't intend to support. It
removes references to the attrs, but leaves behind a lot of
plumbing that will be cleaned up in the future. This at least
removes the API surface.
R=ojan@chromium.org
Review URL: https://codereview.chromium.org/855803002
This was used for quirky scrollbar behavior on the web related to
which element defined in the viewport (body, html, etc.). In Sky we plan to
allow multiple elements as direct children of the Document so we need to get
rid of checks like this. The good news is this already does nothing in sky
because the root never has scrollbars automatically.
R=ojan@chromium.org
Review URL: https://codereview.chromium.org/858713002