David Iglesias 0b4da98cf6 [web] Render in custom target (flutter/engine#37738)
* Introduce FullScreenApplicationDom, and wire it to meta viewport, event handlers and hot restart.

* Move internal stylesheet to HostNode from ViewEmbedder.

* Add setHostStyles and Attribute to ApplicationDom. Use it in the embedder.

* Move HotRestartCacheHandler to its own file.

* Remove Safari hack for visualViewport.

* No need to keep a ref to the viewport meta in full-screen.

* Add applicationDom.attachGlassPane and use it in the Embedder.

* Remove empty method bodies.

* Add attachResourcesHost and use it from the embedder.

* Removed some unused code.

* Some more cleanup.

* Add ResizeObserver JS interop API.

* Add the CustomElementApplicationDom and wire it to the ViewEmbedder.

* Add the DimensionsProvider classes.

* Reimplement engine.window using the DimensionsProvider.

* Delegate window metrics to engine window in html scene object.

* Wire DimensionsProvider into engine.window.

* Moved ApplicationDom into its own subdir.

* Make DimensionsProvider also an Observer. Expose onResize Stream.

* Delegate onResize and dpr from window to DimensionsObserver object.

* Remove or make most ApplicationDom methods private. Expose single initializeHost.

* Hook the new API.

* dart format

* ApplicationDom -> EmbeddingStrategy.

* Attach pointer move events to glassPaneElement

* Use offset positions for mouse events (relative to host element) rather than client (relative to viewport)

* Update TouchAdapter to understand scrolling (simulate offsetX/Y)

* Remove locale change handling from the embedding strategy.

Also, remove DomSubscription handling from the
hot_restart_cache_handler, now that it is not needed.

* Move locale handling from the embedder to the platform dispatcher

* Move some styles from host to glassPane so we are more friendly with external CSS.

* Make analyzer fixes

* Ensure DimensionsProvider is available in tests.

* Initialize the view DimensionsProvider next to where the EmbeddingStrategy is decided (more logical)

* Bring back the logic to support Firefox 83.

* Fix pointer_binding test for new anchor point in the DOM.

* Fix pointer_binding_test in Firefox.

* Add an iterable way of accessing 'rules'

From a CSSStyleSheet object.

Also add the cssText getter for a CSSRule so we can parse it later.

* Merge latest changes to host_node stylesheet.

* Add an id to the StyleSheet element that we add, so it can be selected
  later (in tests).
* Use the methods coming from browser_detection.dart to determine the
  browser runtime, instead of re-implementing them within the method.
* Merge the Edge stylesheet into the general one.
* Update tests so they can look at the CSS Rules that were added.

* Format test

* Try to use insertRule for -ms-reveal, and fallback in tests.

* Test hot_restart_cache_handler

Simplify API a little bit, make clear method private.

* Test dimensions_provider.

* Test full_page_dimensions_provider

* Test custom_element_dimensions_provider

* Test embedding_strategy. Make getDomCache util public.

* Fixes and tests for *_embedding_strategy.

* Move default text colors to our innermost style inside host_node (apply only to flt-scene-host). Remove code from the embedding strategies, and adjust tests.

* Safari expands shorthand properties in CSSOM.

Check individually for both font-family and font-size in Safari, rather
than font in the host_node_test.

* Add computeEventOffsetToTarget function, and use it.

* Address PR comments.

* Update licenses_flutter.

* Remove DomCSSRuleList class and instead use Iterable of DomCSSRule

* Make the embeddingStrategy final instead of late

* Attach mouse/pointermove events to domWindow.

* Rename DimensionsProvider.onHotRestart to .close, and slightly improve docs.

* Fix compute physicalX/Y for TalkBack events.

Extracted compute function to a helper file.

* Clarify what does (and does not) support 3D transforms in the event_position_helper file.

* Update licenses file
2022-12-22 01:15:06 +00:00
..