* ExternalViewEmbedder can CancelFrame after pre-roll
- Resets the state so next pre-roll can be successful.
- Commit any pending `CATransaction` so we don't create
nested transactions.
* Update flow/embedded_views.h
* refactoring to move the mutator stack handling to preroll
* more review fixes
* Add support for external view embedded to know if it has changed
* remove the need to reset
* address comments
* Rename to HasPendingViewOperations
These services will replace fuchsia.net.SocketProvider.
Note that dart_{aot,jit}_product_runner.cmx were invalid before this
change. I'm not sure how that was allowed to happen.
... replaced by fuchsia.tracing.provider.Registry.
PT-127
Change-Id: I8e1243e28292a2442c1ceb3b685a79979bd0bd42
This is a followup to 76599141095069c12160b0c079d1dddf9809552c.
Ported from the Topaz tree.
with the synchronous call, this actually blocks the Flutter component
from serving its out/directory and prevents the Inspect synchronous
discovery
DX-1568 #done #comment
TESTED=`fx shell run fuchsia-pkg://fuchsia.com/crasher_dart#meta/crasher_dart.cmx` (report id 0b59643af026bc37)
TESTED=`fx shell sessionctl add_mod fuchsia-pkg://fuchsia.com/crasher_flutter#meta/crasher_flutter.cmx` then clicked on "Th
Change-Id: I8b0abd1034dba66cd7bb1d6768322cab36ed453b
Ported from Topaz tree.
Ensure that the string data backing package.resolved_url is not modified
or moved by making a copy to pass as the argument value for
TRACE_DURATION.
PT-169 #comment
Change-Id: I1ef6ab9b1ecf350e82134d1d616a841611ac19c6
Ported from Topaz tree.
This re-enables unhandled Dart error handling in Flutter applications,
which was removed in a76b958.
The error handling as originally landed was unsafe. Specifically, in the
case where the unhandled error handler was triggered during shutdown,
there was a race condition which could cause a crash in the following
scenario:
1. Runner::OnApplicationTerminate() is triggered, which posts a task to
the application's platform thread will free the Application instance
and terminate the platform thread.
2. Before that task is serviced, the unhandled error handler is called
(by hooks.dart -> window.cc -> ui_dart_state.cc) on the UI thread.
3. The kill task is serviced and the Application dtor and Thread::Quit()
are called, terminating the platform thread.
4. The unhandled error handler attempts to post a task to the platform
thread, whose thread was killed in step 3. This triggers a crash.
Fixing this requires a mechanism for the message loop to know that the
associated thread has been terminated out from under it.
This patch adds mitigation for this scenario, but remains
non-threadsafe/racy. We pass the unhandled error handler a weak pointer
to the Application and check it before posting a task to the platform
thread. This has two issues:
1. WeakPtr isn't threadsafe, and assumes that all operations occur on a
single thread. We're checking its value (which is mutated on the
platform thread) on the UI thread without synchronization.
2. Even with a guarantee that the WeakPtr state were synchronized,
there's a window between when we check the weak pointer and when we
post to the platform thread in which application shutdown and thread
destruction may occur.
This unsafe mitigation is being landed in order to unblock a high
priority bug (FL-256) on a short schedule, and a proper refactoring will
be required to make this properly threadsafe.
Change-Id: If60d1d3ca5799d82597f8a3acc4ddd3871058972
Ported from Topaz tree.
This is the topaz counterpart to
https://fuchsia-review.googlesource.com/c/fuchsia/+/277254.
This is a backwards-incompatible ABI change that will be landed together
with that CL. All clients have been migrated to be compatible with the
new ABI.
Change-Id: I07bb460ce3c6971eb671874db1f90e8c4906e656
Ported from Topaz tree.
DX-939 #progress
MA-394 #progress
This informs the vulkan driver that we're creating an image
that will be backed by external memory. The driver driver can
decide to use different memory requirements based on the if
memory for the image can be exported or not.
No change in behavior. Existing tests (modular_tests,
scenic_tests, etc.) are sufficient and regressions will be
prevented by running these tests on aemu.
Test: fx shell run fuchsia-pkg://fuchsia.com/basemgr#meta/basemgr.cmx --base_shell=fuchsia-pkg://fuchsia.com/spinning_cube#
Change-Id: I489318c2e31f752f76c80a81245e203861d44d94
Ported from Topaz tree.
... being renamed from fuchsia.tracelink.Register.
fuchsia.tracelink.Registry will be removed after change lands in fuchsia.
PT-127
Change-Id: Ie876228cf9d1e6fb052877e65b47918fdd0b9696
Ported from Topaz tree.
Made the engine and the view controllers have BinaryMessengers, not be
BinaryMessengers. This allows us to break retain cycles and makes the
leaking channels we have not less dire.
This rolls to CIPD package versions:
macOS SDK: pWygawI3vBzP9dYloEvKka8r1p0NpLLZzZQ-yMYI1UIC
Linux SDK: L_ORUWXyDEC29pSiSyKIwGqcFMQFsV91E3h_wPbUIUkC
Applies two breaking changes from the SDK:
* `zx_clock_get_new()` has been eliminated and replaced with
`zx_clock_get()`. See:
https://fuchsia-review.googlesource.com/c/fuchsia/+/293688
* Scenic `Metrics` no longer supports operator==; instead we use
`fidl::Equals()`.
* [android] External textures must be rescaled to fill the canvas
- After composition, we have a tight box that we need to fill.
- Video decoders typically operate using output buffers that are a whole
number of blocks (vertically and horizontally). This fixes
https://github.com/flutter/flutter/issues/34641 where the decoded
dimensions are rounded up.
- The cropping information for the current frame arrives in the form of
`SurfaceTexture.getTransformMatrix`. When we apply this transform we
need to account for the fact that we have already composited. This
means that in cases where the scaleX, scaleY are less than 1, we need
to rescale the image. We do this while preserving the aspect ratio.
* Remove deprecated runBundle APIs
* Remove code related to dynamic patching (including support for multiple
bundle paths)
* Change FlutterRunArugments.bundlePath to be the Android AssetManager path
where the app's assets are located
This reverts commit 5625d01b324f5a0d94aaa916d9e08fd038e363b3.
Seeing the following breakage on host build:
```
../../flutter/flow/scene_update_context.cc:205:36: error: non-const lvalue reference to type 'flutter::MutatorsStack' cannot bind to a value of unrelated type 'const flutter::Stopwatch'
frame.context().raster_time(),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../flutter/flow/scene_update_context.cc:207:36: error: no viable conversion from 'flutter::TextureRegistry' to 'const flutter::Stopwatch'
frame.context().texture_registry(),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../flutter/flow/instrumentation.h:55:32: note: candidate constructor not viable: no known conversion from 'flutter::TextureRegistry' to 'const flutter::Stopwatch &' for 1st argument
FML_DISALLOW_COPY_AND_ASSIGN(Stopwatch);
^
../../flutter/fml/macros.h:28:3: note: expanded from macro 'FML_DISALLOW_COPY_AND_ASSIGN'
TypeName(const TypeName&) = delete; \
^
../../flutter/flow/scene_update_context.cc:208:36: error: non-const lvalue reference to type 'flutter::TextureRegistry' cannot bind to a temporary of type 'flutter::RasterCache *'
&frame.context().raster_cache(),
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../flutter/flow/scene_update_context.cc:209:36: error: cannot initialize a member subobject of type 'const flutter::RasterCache *' with an rvalue of type 'bool'
false};
^~~~~
```
The previous logic allowed proxying for any view that belonged to one of the platform views' virtual displays which may lead to us allowing proxying for a view that the platform view isn't allowing proxying for, previous logic also didn't account for unattached views.
This change instead delegates the decision to the platform view.
We use the fact that each virtual display has its unique context to associate any view with its relevant virtual display.
A nice side effect of calling the platform view's checkInputConnectionProxy for webviews is that the plugin now has a way to get a handle to the ThreadedInputConnectionProxyView, which may be useful for getting keyboard working on webview's prior to Android N.
* Added unit tests for the ios code.
* Moved the tests to live next to the source.
* Added mocking library.
* Fixed formatting and removed third_party from the format check.
* fixed formatting 2
* Removed ocmock from third_party.
* Added ocmock to third_party, compile from source.
* removed ocmock from license checking
* updated licenses_flutter
* updated tool_signature
Add views that are added directly to a platform view's window as siblings to the platform view's container view, rather than as children of a full screen container.
This prevents a false-negative for a visibility check from a specific ads SDK (Teads), which [reported the following warning](https://github.com/flutter/flutter/issues/12114#issuecomment-500906158):
```
W/teads#Visibility(17978): The Teads AdView is visible at 0%, hidded by 1 View(s):
W/teads#Visibility(17978): - View of class io.flutter.plugin.platform.SingleViewPresentation$FakeWindowViewGroup, with id: -1, with contentDescription: null, with a size of: [width: 1050, height: 875] is hidding 100% of the ad
```