1433 Commits

Author SHA1 Message Date
Tamir Duberstein
e7f8ca1de9 [all] add fuchsia.{net.NameLookup,posix.socket.Provider} (#9546)
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.
2019-06-30 13:07:41 -07:00
Jason Simmons
b3fe3e95d4 Fix a race in the embedder accessibility unit test (#9585) 2019-06-30 12:50:44 -07:00
Chinmay Garde
4e344e6cd2
Wire up custom event loop interop for the GLFW embedder. (#9089) 2019-06-29 19:35:22 -07:00
Chinmay Garde
6f1a748aed
Document various classes in //flutter/shell/common. (#9591) 2019-06-29 14:08:02 -07:00
Chris Bracken
6c6a0d7534
[trace clients] Remove fuchsia.tracelink.Registry (#9593)
... replaced by fuchsia.tracing.provider.Registry.

PT-127

Change-Id: I8e1243e28292a2442c1ceb3b685a79979bd0bd42

This is a followup to 98f55f0e6115847c1f389c0e816d8e2d2a1555ff.
Ported from the Topaz tree.
2019-06-29 00:58:15 -07:00
Chris Bracken
131085ecad [crash] switch to async crash analysis
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.
2019-06-28 17:40:00 -07:00
Chris Bracken
0ea826d720 [dart/flutter_runner] Copy package.resolved_url for TRACE_DURATION
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.
2019-06-28 17:40:00 -07:00
Chris Bracken
c13374b9e8 [meta] add fuchsia.{net.NameLookup,posix.socket.Provider}
These protocols will replace fuchsia.net.SocketProvider.

Change-Id: I1425aa8b32c82e68f6176f5ffd8d8a9149b52de6

Ported from Topaz tree.
2019-06-28 17:40:00 -07:00
Chris Bracken
97eb094aac [flutter] Re-enable unhandled error reporting
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.
2019-06-28 17:40:00 -07:00
Chris Bracken
a48c21a731 [flutter_runner] Rename outgoing 'public' to 'svc'.
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.
2019-06-28 17:40:00 -07:00
Chris Bracken
98f55f0e61 [trace clients] Remove fuchsia.tracelink.Registry
... replaced by fuchsia.tracing.provider.Registry.

PT-127

Change-Id: I8e1243e28292a2442c1ceb3b685a79979bd0bd42

Ported from Topaz tree.
2019-06-28 17:40:00 -07:00
Chris Bracken
38b3827268 [flutter_runner] use external image create info
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.
2019-06-28 17:40:00 -07:00
Chris Bracken
366c881748 [trace clients] Add fuchsia.tracing.provider.Registry to cmx files
... 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.
2019-06-28 17:40:00 -07:00
Chris Bracken
06b29ae838 [trace clients] Replace trace-provider with trace-provider-with-fdio
PT-63

Change-Id: I9acd5aeba5f82e6d58ec324f0f64bf109a413410

Ported from Topaz tree.
2019-06-28 17:40:00 -07:00
Amir Hardon
fc1d86b758
Revert "Avoid a full screen overlay within virtual displays (#9343)" (#9581)
This reverts commit 0c874c62d0ad596484a83afaa5a6c546d96679fc.
2019-06-28 13:43:23 -07:00
gaaclarke
7a0bbf9355
Fixed memory leak by way of accidental retain on implicit self (#9329)
Fixed memory leak by way of accidental retain on implicit self.
2019-06-28 10:22:51 -07:00
gaaclarke
4e48fc47c4
Switched preprocessor logic for exporting symbols for testing. (NDEBUG (#9562)
wasn't working for Luci builds).
2019-06-27 18:03:59 -07:00
gaaclarke
50a8e73615
Has a binary messenger (#9419)
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.
2019-06-27 17:25:32 -07:00
Chinmay Garde
7483665e6c
Re-enable embedder_unittests. (#9482)
This was disabled in https://github.com/flutter/engine/pull/6798 waiting for
a Dart SDK patch to land e6d3a45b6a
which has long since been addressed.
2019-06-27 16:49:22 -07:00
Chinmay Garde
7b9f59efd6
Run benchmarks on try jobs. (#9493)
Fixes https://github.com/flutter/flutter/issues/35089.

These runs only ensure that the benchmark harnesses are valid. No information should be collected on the trybots because the environments are not consistent and the builds are not optimized.
2019-06-27 14:11:02 -07:00
Qxyat
6f7700fc83 fix FlutterOverlayView doesn't remove from superview in some cases (#9532) 2019-06-27 09:07:52 -07:00
Chris Bracken
a83fe3e562
Roll Fuchsia SDK to latest (#9509)
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()`.
2019-06-26 17:16:16 -07:00
Dan Field
63c2c3316d
Improve caching limits for Skia (#9503) 2019-06-26 16:21:46 -07:00
Kaushik Iska
3aff2e3556
[android] External textures must be rescaled to fill the canvas (#9501)
* [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.
2019-06-26 13:51:14 -07:00
Dan Field
da82361dad
Purge caches on low memory on iOS (#9491) 2019-06-25 20:47:55 -07:00
Chris Yang
2f1d4f03b5
fix build breakage on PlatformViews.mm (#9495) 2019-06-25 18:26:31 -07:00
Chris Yang
1ab99fb355
fix a bug where the platform view's transform is not reset before set frame (#9490) 2019-06-25 17:43:21 -07:00
Chris Yang
aa9b3a180a
Reland "IOS Platform view transform/clipping (#9075)" and fix the breakage. (#9483)
* Revert "Revert "IOS Platform view transform/clipping (#9075)" (#9480)"

This reverts commit 00d929f7f6088375b006746718a65b84678d01c0.

* fix fuschia buid
2019-06-25 15:29:47 -07:00
Jason Simmons
3f4f606105
Simplify loading of app bundles on Android (#9360)
* 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
2019-06-25 14:17:50 -07:00
Chris Bracken
107fe82343
Add --observatory-host switch (#9485)
Adds --observatory-host, which allows callers to specify the localhost
IP binding directly. Allows users to set 0.0.0.0 or the host IP address
as is possible in the standalone VM, rather than restricting users to
loopback.

We retain the default behaviour of binding to loopback since the vast
majority of observatory use-cases involve local access (e.g. host tests
on flutter_tester) or port-forwarded local access (e.g. flutter driver
device tests). However, some scenarios, such as QA test labs, may
benefit from binding to a publicly-accessible IP address.
2019-06-25 13:20:39 -07:00
Chris Bracken
00d929f7f6
Revert "IOS Platform view transform/clipping (#9075)" (#9480)
This reverts commit ebb5b909fbb10dad2275acd4fc8ec1d9744a0bf6.

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};
                                   ^~~~~
```
2019-06-25 10:48:37 -07:00
Amir Hardon
3390019225
fix NPE when a touch event is sent to an unknown Android platform view (#9476) 2019-06-25 09:45:20 -07:00
Chris Yang
ebb5b909fb
IOS Platform view transform/clipping (#9075) 2019-06-25 09:33:50 -07:00
Matt Carroll
ae8e6d9f46
Removed unused imports in new embedding. (#9463) 2019-06-25 01:59:33 -07:00
Matt Carroll
2a7a355f12
Fixed logLevel filter bug so that filter now works as expected. (#9460) 2019-06-24 23:03:42 -07:00
Amir Hardon
56954457a5
Don't hang to a platform view's input connection after it's disposed (#9423)
Addresses the crash reported in https://github.com/flutter/flutter/issues/19718#issuecomment-504174596
2019-06-24 13:13:00 -07:00
liyuqian
45ef6c8cf8
Remove unused/unimplemented shell constructor (#9459) 2019-06-24 12:59:54 -07:00
liyuqian
a184037971
Send timings of the first frame without batching (#9424)
For https://github.com/flutter/flutter/issues/34867

Test added:
* ReportTimingsIsCalledImmediatelyAfterTheFirstFrame
2019-06-24 12:40:38 -07:00
Chris Bracken
14d2954a52
Eliminate unused import in FlutterView (#9439)
Eliminates an unused import in FlutterView.java. Fixes import ordering.
2019-06-24 11:17:18 -07:00
liyuqian
ccb5034d54
Generate weak pointers only in the platform thread (#9431) 2019-06-24 10:33:34 -07:00
Matt Carroll
6d2d9c88fc
Resolves embedding log chattyness by gating verbose, debug, and info logs by level (#34876). (#9425) 2019-06-21 16:40:32 -07:00
Amir Hardon
3757f19923
delegate checkInputConnectionProxy to the relevant platform view (#9426)
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.
2019-06-21 14:30:58 -07:00
gaaclarke
cd973f8aae
Added unit tests for the ios code. (#9388)
* 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
2019-06-20 17:37:03 -07:00
Matt Carroll
a2db2ea6f1
Android Embedding Refactor PR35: Ensure all JNI methods are in FlutterJNI (#34751). (#9391) 2019-06-20 17:13:58 -07:00
Simon Lightfoot
0c874c62d0 Avoid a full screen overlay within virtual displays (#9343)
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
```
2019-06-20 16:46:26 -07:00
Jason Simmons
7a5ec8d792
Remove build flags for dynamic patching (#9394) 2019-06-20 15:25:04 -07:00
Chris Yang
7fc828d1ae
Workaround fix the platform view dismiss crash related to gl (#9377) 2019-06-20 11:52:52 -07:00
Francisco Magdaleno
e6d3552216
[glfw] Implement SystemNavigator.pop (#9365)
* [glfw] Implement SystemNavigator.pop

* Exit the program

* Add success result
2019-06-20 09:55:12 -07:00
Matt Carroll
3bcd6a8f7b
Android Embedding Refactor PR34: Fill in missing nullability annotations. (#9384) 2019-06-19 23:44:15 -07:00
Chinmay Garde
ece4f59377
Update Metal backend to account for Skia updates. (#9383)
Also makes it so that folks don't have to patch the buildroot manually when
building for Metal.
2019-06-19 15:24:26 -07:00