Intent to Experiment: CSS Houdini Paint API Level 1

2017-01-05 Thread Jet Villegas
Spec: https://drafts.css-houdini.org/css-paint-api/

Summary: The CSS Paint API is the first of several Web Rendering proposals
from the CSS Houdini Task Force. The CSS Paint API allows Web authors to
define and register a custom Paint method to be executed by the Layout
engine as other elements are rendered.

Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1302328

Link to standard: https://drafts.css-houdini.org/css-paint-api/

Platform coverage: Android, Desktop

Estimated or target release: TBD

Preference behind which this will be implemented: TBD

DevTools bug: TBD

Tests - TBD

Implementation Details:

CSS Paint API depends on the implementation of the following features:
CSS Houdini Properties & Values - https://bugzilla.mozilla.org/
show_bug.cgi?id=1273706
Houdini "Worklets" - https://bugzilla.mozilla.org/show_bug.cgi?id=1290021

The planned implementation in Gecko builds upon the HTML5 Canvas2D API to
provide the rendering surface for CSS Paint.

Risks:

The experimental implementation has progressed enough to warrant this
public Intent to Implement. However, significant risks will need to be
mitigated by careful design and execution if these features are to pass the
experimental stage and ship in Firefox, including:

1. Use Cases. It's not clear that the use cases proposed in the
specification warrant the additional Rendering System complexity. Apart
from conical gradients, we haven't seen many author requests for the other
use cases. If the existing Canvas2D feature set is lacking, what are the
compelling use cases and maximally useful API for such use cases? It's not
clear that the proposed Canvas2D-based API is desirable over a different
API design (eg., WebGL) if most use cases need to directly manipulate
pixels.

2. Rendering Performance. The planned Canvas2D backing store approach may
be too slow for real-world usage of the API. In the future, we may replace
the Canvas2D approach to have the custom paint methods create Layout
(displayList) nodes for direct rendering by the Layout engine, bypassing
the need for a Canvas2D backing store. It's worth noting that the Paint API
isn't directly compatible with existing displayList nodes (e.g., support
for raw paths, funny shapes, & pixel manipulation.)

There may also be other performance issues that arise with the API's usage
in combination with existing CSS features (e.g., CSS Masking, Filters,
etc.) The displayList vs. canvas bitmap implementation would probably look
a good bit different in WebRender. It's also worth noting that multiple
implementations shipping a bitmap-based version can create dependencies
that prevent us from switching to a faster alternative version in the
future.

3. Integration with Gecko Architecture. The Quantum Project <
https://wiki.mozilla.org/Quantum> is a major overhaul of the Firefox
Rendering Engine. Implementing the CSS Paint API while that effort is in
progress may add significant impedance. However, a counter-argument is that
we should design Quantum to allow for such extensibility in the future.
Duplication of work ( writing code that would need to be rewritten for
Quantum ) is not desirable and should be avoided.

For WebRender/Quantum, we could initially push this through the same path
that SVG will go through (which will be rasterized on the CPU and then
cached in a GPU texture atlas). It does seem like Houdini Paint could
reduce the amount of acceleration we can do on the GPU (at least in the
short term), but we won't be any worse off than other browsers in that
regard.

4. Dependency on incomplete implementations/specifications. The dependency
creates a chicken/egg scenario where we can't sufficiently evaluate the
dependent specifications (e.g, Worklets, and Properties & Values) without
also implementing an initial key use case (e.g., CSS Paint or Worklets for
Web Audio.) This is somewhat mitigated by getting the implementation far
enough along to formulate informed opinions on all the specifications.

The Houdini Task Force is meeting next week in Seattle to discuss this and
other specifications.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Intent to implement: Payment Request API

2017-01-05 Thread Anders Rundgren
An external security review has been requested.  Here is my take on the matter:
https://lists.w3.org/Archives/Public/public-web-security/2017Jan/0004.html

Anders
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Some recent Treeherder improvements

2017-01-05 Thread William Lachance
Just wanted to highlight some recent Treeherder changes of interest to 
sheriffs and platform developers:


* As of today, we have a completely rewritten logviewer which (among
  other things) has vastly improved scrolling behaviour, making it
  much faster to diagnose the cause of a failing job. Many thanks to
  Eli Perelman and Hassan Ali from the Taskcluster team for generalizing
  the Taskcluster logviewer and integrating it into Treeherder. You can
  read more about this new logviewer in Hassan's blog post here:
  https://helfi92.github.io/2017/01/02/treeherder-new-logviewer.html

* The similar jobs panel is vastly faster than it was before
  (accessible after clicking a job). If you wanted to use this feature
  before (say, to determine whether a failure is highly intermittent)
  but avoided it due to the long waits, please give it another try.
  See https://bugzilla.mozilla.org/show_bug.cgi?id=1246196 for more
  details.

* The inaccurately-named-but-still-insanely-cool "one click loaner"
  feature, which lets you "check out" a test machine identical to the
  ones we use in automation, is now more discoverable. Instead of
  trawling through a bunch of mostly irrelevant links, you can now just
  click on the  "ellipsis" button on the job details panel (see attached
  screenshot) for any taskcluster job to get a set of taskcluster
  options, including this one. For more information on taskcluster
  interactive loaners, please see
  https://ahal.ca/blog/2016/taskcluster-interactive-loaner/ (note that
  post is a little old, so some of the limitations described
  there may no longer apply)

Happy treeherding!

Will
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: What are your use cases for the Touch Bar on the new MacBook Pro?

2017-01-05 Thread Nicolas B. Pierron

On 01/03/2017 08:50 PM, sev...@gmail.com wrote:

Off the top of my head ideas:

Quick-access to the back, forward, refresh, bookmark, share buttons could be a 
good. Tab bar might be handy too, so with a touch of my finger I can go to the 
tab I want quickly. The bar could change depending on your screen to. If you’re 
on YouTube/Netflix it could be player controls, or if on NewTab a row of 
highlights of some type?



On the same idea, we could allow to move buttons from the hamburger menu 
into this bar, so instead of choosing for the user, we let the user choose 
for them-self, such as the bookmark button and zoom widget.


Note, I am not a MacOS user, but this is what I would expect to see in a 
such short-cut bar.  Maybe even a bouncing rainbow unicorn.


--
Nicolas B. Pierron
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Introducing mozilla::Result for better error handling

2017-01-05 Thread Jan de Mooij
On Thu, Jan 5, 2017 at 7:31 AM, Xidorn Quan  wrote:

> Probably it can add a constructor which accepts T&& and Move it down the
> chain.
>

Agreed. We didn't do this initially to keep things simple and because we
didn't need it, but if there's a good use case we should add move
constructors.

Jan


> - Xidorn
> ___
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
>
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform