1393 Commits

Author SHA1 Message Date
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
Dan Field
7c4f6a6830
Wire intent args for observatory port (#9378) 2019-06-19 13:13:13 -07:00
gaaclarke
54f88ab5da
Revert "Surrogate binary messenger (#9347)" (#9375)
This reverts commit 2f36285bc8d486a584e0ea917fae90245f2c5168.

This was crashing the integration test `- (void)testDualFlutterView`.
2019-06-19 12:29:08 -07:00
chunhtai
9ab6550b45
Introduce read only text field semantics (#9281) 2019-06-19 09:42:23 -07:00
Jason Simmons
c764a7628f Do not remove the DartServiceIsolate status callback during FlutterMain destruction (#9368)
FlutterMain and the DartServiceIsolate callback list are both globals, and the
callback list state may have already been destructed when FlutterMain's
destructor runs.
2019-06-18 22:34:04 -07:00
Amir Hardon
4c9fa49408
request FlutterView focus when setting a platform view text client (#9366) 2019-06-18 19:05:36 -07:00
gaaclarke
2f36285bc8
Surrogate binary messenger (#9347)
Created FlutterSurrogateBinaryMessenger to make sure that channels are
holding onto engines and not viewcontrollers.  This doesn't change the
public API but makes clients do what we want them to be doing, using
Engine for FlutterBinaryMessenger.
2019-06-18 17:58:45 -07:00
Francisco Magdaleno
0ca0a41614
[glfw] Implement clipboard support from GLFW api (#9361) 2019-06-18 16:57:01 -07:00
Matt Carroll
66db3d58e3
Add APIs for querying FlutterView for a FlutterEngine and listening for attachment/detachment (#29114). (#9356) 2019-06-18 16:34:30 -07:00
Matt Carroll
f2e76a8922
Android Embedding Refactor PR32: Clean up logs in new embedding (#33544, #33102). (#9351) 2019-06-18 15:52:22 -07:00
Matt Carroll
36f18b0ae4
Android Embedding Refactor PR33: Clean up FlutterJNI (#25533). (#9354) 2019-06-18 15:35:22 -07:00
liyuqian
92cb11d075
Fix test name typo (#9362)
Had change locally but forgot to `git commit -a` before `git push`...
2019-06-18 12:38:26 -07:00
ojhunt
05c034e5bb Update component manifests for ambient replace-as-executable (#9350)
Bug: SEC-314

dding this feature all fuchsia components as a pre-flight step
as we restrict the ability for arbitrary processes to make
VMOs executable.
2019-06-17 18:48:13 -07:00
Jason Simmons
fcff2d619c
Use the DartServiceIsolate status callback to publish the observatory URI to the Android embedder (#9337)
The Android embedder had been using a JNI call to get the observatory URI from
DartServiceIsolate.  This call was not thread safe and was redundant with the
server status callback mechanism used on iOS.
2019-06-17 16:17:29 -07:00
Jason Simmons
ea7ca9804a
Send the isolate service ID from the engine to the embedder (#9324)
Applications can use an embedder API to obtain the isolate ID and then use it
in calls to the Dart service protocol.
2019-06-17 16:02:26 -07:00
Gary Qian
675033fc05
Check for invalid indexes when performing InputAdpator backspace. (#9322) 2019-06-17 15:13:30 -07:00
stuartmorgan
e00ac47f49
Reorganize darwin for shared ios/macOS (#9255)
When the macOS framework was initially landed, it included some iOS code
using a localized hack. This reorganizes the code structure to clearly
indicate which files are shared between iOS and macOS, vs. those that
are platform-specific.
2019-06-17 11:24:41 -07:00
XieRan.sai
9da409c0e5 Fix crash on Huawei device with AndroidView (#9192)
Fixes a rare NullPointerException on Huawei devices:
```
Stacktrace:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.DisplayAdjustments android.view.Display.getDisplayAdjustments()' on a null object reference
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1793)
...
```
2019-06-17 11:06:27 -07:00
gaaclarke
a0f85546f4
Removed an unused class definition for iOS code. (#9346) 2019-06-17 10:20:35 -07:00
Chinmay Garde
96a1a843cb
Replace lock_guard with scoped_lock and use class template argument deduction. (#9338) 2019-06-17 10:08:45 -07:00
Jason Simmons
7283ae3a7e
Handle one-way platform messages in the embedder library (#9331)
Messages sent to the embedder host may be one-way messages with no response
handler.  If the host calls FlutterEngineSendPlatformMessageResponse on a
one-way message, then just delete the message response handle.

Also update the documentation to indicate that
FlutterEngineSendPlatformMessageResponse must be called for all messages.
Previously the docs implied that some FlutterPlatformMessage objects may
have a null response_handle.  The embedder will now set a response_handle for
every message (even if the sender does not expect a response).
2019-06-14 13:58:09 -07:00
Michael Klimushyn
6d5aaa090a
Fix a11y in embedded Android views post O (#9321)
This patch works around Android's limitations on reflection. With it embedded
platform views that use virtual node hierarchy trees should be accessible on all
Android versions to date.

The workarounds in this PR are brittle. Ideally the methods would be made public
in Android instead so we wouldn't need to employ tactics like these to work
around the missing methods.

`AccessibilityNodeInfo#getChildId` is blocked from any type of reflection
access, but the underlying private member that the getter accesses,
`mChildNodeIds`, can still be reflected on. On Android versions where we can't
access the getter, this patch falls back on reflectively accessing the field
instead. Unfortunately this field is a
[`LongArray`](https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/LongArray.java),
a utility data class private to Android. So in this case we're reflecting to
both access the member and actually read data from it, since we need to use
reflection to call `LongArray.get(index)`.

`AccessibilityNodeInfo#getParent()` doesn't have any lucky available underlying
members. However, `AccessibilityNodeInfo` itself is `Parcelable`, and
`mParentNodeId` is one of the pieces of data that's written to a parcel via
`AccessibilityNodeInfo#writeToParcel`. So the fallback for that is to write the
node to a parcel and then read the parcel for the ID in question. This will
break if the implementation details of `AccessibilityNodeInfo#writeToParcel`
ever change. The details have already changed enough in the past to require two
sets of logic for reading from the parcel.
2019-06-14 11:43:41 -07:00
Todd Volkert
ace5d59072
Fix rawTypes errors in Android embedding classes (#9326) 2019-06-14 00:27:06 -07:00
Jason Simmons
6aaf5b38df
Build the GLFW shell on Linux host builds but not target builds (#9320)
Linux targets building the embedder library may be targeting environments
that do not support GLFW and GTK.
2019-06-13 16:22:33 -07:00
gaaclarke
1121fda40a
Added class docstrings for classes inside of shell/common. (#9303)
Added class docstrings for classes inside of shell/common.
2019-06-13 16:15:10 -07:00
Francisco Magdaleno
96a592b6e9
[macos] Adds clipboard string read/write support to macOS (#9313) 2019-06-13 15:15:20 -07:00
Jason Simmons
031c2dc987
Only build embedder unit tests for host builds (#9315)
Linux target builds for non-x86/x64 platforms were failing due to the
dependency on SwiftShader
2019-06-13 12:49:10 -07:00
Jenn Magder
1caff8d073
Decorate UIApplicationDelegate wrappers with matching UIKit deprecation (#9304) 2019-06-13 10:16:42 -07:00
Jason Simmons
209250da1b
When running in AOT modes create a flutter_assets directory that can be used as the bundle path (#9306)
The engine RunBundleAndSnapshotFromLibrary API expects a bundle path directory
containing the application's assets.  If the Android embedding is using
AOT ELF library packaging and does not need to extract assets, then create an
empty directory at the bundle path.

Fixes https://github.com/flutter/flutter/issues/34287
2019-06-12 17:34:02 -07:00
Chinmay Garde
7bb5b9aea5
Wire up Swiftshader based OpenGL ES unit-tests on hosts. (#9264)
Currently, all our host unit-tests that have rendering concerns use the software backend because of OpenGL ES availability and stability issues on the various platforms where we run host tests. Unfortunately, entire subsystems are disabled (and not tested) when rendering with the software backend. This patch pulls in SwiftShader and via pending patches in the buildroot, configures the host unit-tests to optionally use OpenGL ES in a stable manner without relying on the OpenGL drivers being present (and functional).

I have wired up the embedder test fixture in this patch to use the SwiftShader based OpenGL ES driver. I will update the shell and runtime unittests in a subsequent patch as well. The on and offscreen surfaces are configured as 1x1 pbuffer surface because we should be able to write pixel tests using OpenGL directly wihout having to deal with surfaces.
2019-06-12 12:32:09 -07:00
Zachary Anderson
0a2e28d797
Revert tracing changes (#9296)
* Revert "[fuchsia] Fix alignment of Fuchsia/non-Fuchsia tracing (#9289)"

This reverts commit f80ac5f571479053b134e60bca77603269b2ce2a.

* Revert "Align fuchsia and non-fuchsia tracing (#9199)"

This reverts commit 78265484623037c6544dfd5380367bca29fa27b0.
2019-06-12 10:25:49 -07:00
Dan Field
9baf589d19
[iOS] [a11y] Don't allow scroll views to grab a11y focus (#9282) 2019-06-11 18:02:47 -07:00
Matt Carroll
4fc95ebb29
Fixed memory leaks within FlutterFragment and FlutterView (#34268, #34269, #34270). (#9288) 2019-06-11 17:01:20 -07:00
liyuqian
de350c4cbb
Report timings faster (100ms) in profile/debug (#9287)
This should satisfy the low-latency need of DevTools.

Test added:
* ReportTimingsIsCalledSoonerInNonReleaseMode
* ReportTimingsIsCalledLaterInReleaseMode
2019-06-11 16:51:20 -07:00
stuartmorgan
6dc4d6ca09
Add refresh callback to GLFW shell (#9280)
In some cases, the window needs to be redrawn without a resize. This
adds a callback for that case to trigger a repaint.

Since there's no embedding API for repainting, trigger it with a window
metrics event using the current window size.

Fixes https://github.com/flutter/flutter/issues/30731
2019-06-11 16:16:14 -07:00
Matt Carroll
2d2cfc0884
Expose a hasRenderedFirstFrame() method in FlutterView (#34275). (#9285) 2019-06-11 15:47:04 -07:00
Matt Carroll
8040117420
Fix TextInputPlugin NPE caused by PlatformViewsController ref in new embedding (#34283). (#9283) 2019-06-11 15:21:55 -07:00
stuartmorgan
95f9b3db6e
Fix crash on minimize with GLFW shell (#9278)
Fixes a divide-by-zero in pixel density computation.
2019-06-11 11:50:19 -07:00
Jason Simmons
4d6847466d
Load AOT compiled Dart assets only from ELF libraries (#9260)
Previously AOT compiled Dart code would be packaged as a group of assets
within the APK.  This has been replaced by a single ELF library containing
the same data.
2019-06-11 10:10:45 -07:00
Chinmay Garde
3e9ffe1137
Whitelist the —enable_mirrors flag to fix regression in existing embedder. (#9266) 2019-06-11 10:09:16 -07:00
Dan Field
7cde42cc17
Unbreak internal rolls (#9270)
Adds back constructor for Rasterizer temporarily
2019-06-11 08:52:41 -07:00