560 Commits

Author SHA1 Message Date
Francisco Magdaleno
cfa6c7c72b
[macos] Reland function refactor (#10189)
* [macos] Reland function refactor

* Fix bug
2019-07-31 10:57:02 -07:00
Dan Field
ed8e35c4cf
Remove get engine (#9747) 2019-07-30 17:11:04 -07:00
Francisco Magdaleno
330b0f023c
Revert "[macos] Revert check on FlutterCodecs and refactor message function] (#10009)" (#10141)
This reverts commit bd3870219a1a7f6e18c94430ead9e0f8375b03b1.
2019-07-25 13:47:29 -07:00
gaaclarke
0ecb793e1d
ios: Fixed the callback for the first frame so that it isn't predicated on having a splash screen. (#9952) 2019-07-25 12:37:38 -07:00
gaaclarke
aaf6bad4be
Fixed memory leak with engine registrars. (#10068) 2019-07-24 15:43:39 -07:00
Francisco Magdaleno
bd3870219a
[macos] Revert check on FlutterCodecs and refactor message function] (#10009)
* [macos] Revert check on FlutterCodecs and refactor message function]

* Remove duplicated code

* Move FlutterPlatformMessage initialization
2019-07-23 15:22:38 -07:00
stuartmorgan
7d320c45ab
Add a macro for prefixing embedder.h symbols (#9851)
embedder.h is a C API, so has no namespace, and only uses 'Flutter' as a
prefix for most symbol names. This creates potential collisions with
other code; for instance, FlutterEngine is the name of a type in
embedder.h, but also an ObjC class in the iOS Flutter API.

This adds a macro that can be set to prefix symbol names, allowing
clients (notably, the macOS embedding) to adjust the names used by the
embedding API internally without breaking ABI or API compatibility for
the standard engine build.

Currently the macro is only applied to FlutterEngine, since that's the
symbol that is currently at issue, but it can be expanded to other
symbols in the future.
2019-07-23 05:48:48 -07:00
Jason Simmons
be8819e2dc
Declare a copy of the enable_bitcode flag within the Flutter build scripts for use in Fuchsia builds (#10003)
enable_bitcode is defined in build/toolchain/clang.gni, which exists in the
Flutter buildroot but not in the Fuchsia source tree.
2019-07-22 12:06:16 -07:00
Francisco Magdaleno
6f3a2eb131
[macos] Add reply to binary messenger (#9953)
* Add reply to binary messenger

* Address comments

* Formatting

* Address comments
2019-07-22 11:08:08 -07:00
gaaclarke
3d7f93a2e7
Removed logic from FlutterAppDelegate into FlutterPluginAppLifeCycleDelegate (#9893)
Removed logic from FlutterAppDelegate into
FlutterPluginAppLifeCycleDelegate.  This is a better place for
add-to-app since it doesn't require them to use our app delegate.
2019-07-19 10:58:39 -07:00
gaaclarke
273f4cfe83
Split out lifecycle protocol (#9922)
Split out lifecycle calls to plugins to their own protocol to clean up
FlutterPlugin and make the API slightly closer to Android.
2019-07-19 10:17:48 -07:00
Chris Yang
53f620f45e
[platform view] do not make clipping view and interceptor view clipToBounds (#9937) 2019-07-19 09:00:43 -07:00
gaaclarke
cf40c243a0
Removed unused method. (#9919) 2019-07-18 11:28:41 -07:00
Dan Field
8f060b9954
Add clang version to Info.plist (#9873) 2019-07-17 12:14:07 -07:00
Francisco Magdaleno
cd321ee293
Assign missing headless execution variable (#9855) 2019-07-17 08:46:01 -07:00
gaaclarke
dcac8a9c98
Fixed error in generated xml Info.plist. (#9867) 2019-07-16 18:24:53 -07:00
gaaclarke
b7e5940e3b
Started adding the engine hash to frameworks' Info.plist. (#9847)
Started adding the engine hash to Flutter.framework's Info.plist.
2019-07-16 15:54:26 -07:00
Jason Simmons
3c9a22c778
Fall back to a fully qualified path to libapp.so if the library can not be loaded by name (#9762)
libapp.so contains compiled application Dart code.  On most Android systems,
this library can be loaded by calling dlopen("libapp.so"), which will search
Android's default library directories.

On some Android devices this does not work as expected.  As a workaround, this
patch provides a fallback path to libapp.so based on ApplicationInfo.nativeLibraryDir.

Fixes https://github.com/flutter/flutter/issues/35838
2019-07-11 12:39:42 -07:00
gaaclarke
3b944102a5
Un-deprecated FlutterViewController's binaryMessenger. (#9767)
Un-deprecated FlutterViewController's binaryMessenger.  Leaving it as
a valid convenience method and to help minimize a breaking change.
2019-07-11 10:04:26 -07:00
stuartmorgan
49445ce494
FLEViewController/Engine API changes (#9750)
Updates the way FLEViewController and FLEEngine interact,
making their APIs much more closely aligned with the iOS versions
of the classes.

As part of the change, removes the need for an explicit launch
call on FLEViewController. Also adds entrypoint support when
running an engine directly, matching iOS.

Breaking change for macOS runners.

Part of https://github.com/flutter/flutter/issues/31735
2019-07-10 19:54:41 -07:00
stuartmorgan
bc57291ff4
Make FLEViewController's view an internal detail (#9741)
Rather than clients needing to create an appropriate view in a XIB and
attach it to an FLEViewController, which is error-prone, have
FLEViewController create its own view programatically. The view is now
an internal detail, so calling setView: on an FLEViewController will no
longer work.

As a result of the view being internal, the public API surface is
simplified.

This is a breaking change for macOS Runners.
2019-07-10 13:45:53 -07:00
gaaclarke
9776043ea5
Synchronize main thread and gpu thread for first render frame (#9506)
Got rid of the black frame by synchronizing the main thread with the
gpu thread to make sure a frame is rendered before presenting the
view.
2019-07-10 13:14:07 -07:00
Chris Yang
802bd1518b
iOS platform view opacity (#9667) 2019-07-08 16:07:39 -07:00
stuartmorgan
e695a516f1
Add FLEDartProject for macOS embedding (#9672)
Adds an initial version of FLEDartProject, which contains the
configuration for running the engine. In the future this will align with
FlutterDartProject, and likely share a significant portion of the
implementation.

This is a breaking change for macOS runners.
2019-07-08 09:18:54 -07:00
stuartmorgan
8dac2e9796
Begin separating macOS engine from view controller (#9654)
Creates an initial, minimal FLEEngine that parallels the iOS
FlutterEngine, and moves engine launch, plugin registration, and binary
messenger functionality from FLEViewController to there. Uses the FLE
prefix since the current APIs will change to better match FlutterEngine;
the current APIs are intended to minimize conceptual changes relative to
the current FLEViewController APIs since it's already a substantial
change.

Further changes will move channels from FLEViewController to FLEEngine,
and further align the APIs and functionality with the iOS version.

Part of #32421
2019-07-03 13:45:30 -07:00
Chris Yang
cea2c3617f
Mutators Stack refactoring (#9663)
Rename methods in the MutatorsStack to Pascal case to match standard cpp style
Refactor the operator== for Mutator class
2019-07-03 11:18:14 -07:00
Kaushik Iska
791143f172
ExternalViewEmbedder can CancelFrame after pre-roll (#9660)
* 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
2019-07-03 08:38:19 -07:00
Kaushik Iska
d637f291a9
External view embedder can tell if embedded views have mutated (#9653)
* 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
2019-07-03 07:28:53 -07:00
Chris Yang
8306ee68c7 Move the mutators stack handling to preroll (#9651)
* refactoring to move the mutator stack handling to preroll

* more review fixes
2019-07-02 16:35:47 -07:00
Chris Yang
8deeb77f05
make EmbeddedViewParams a unique ptr (#9640) 2019-07-02 13:27:12 -07:00
Chris Yang
a9ee687ac9
iOS PlatformView clip path (#9478) 2019-07-02 10:56:59 -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
Qxyat
6f7700fc83 fix FlutterOverlayView doesn't remove from superview in some cases (#9532) 2019-06-27 09:07:52 -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
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
Chris Yang
ebb5b909fb
IOS Platform view transform/clipping (#9075) 2019-06-25 09:33:50 -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
Chris Yang
7fc828d1ae
Workaround fix the platform view dismiss crash related to gl (#9377) 2019-06-20 11:52:52 -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
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
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
gaaclarke
a0f85546f4
Removed an unused class definition for iOS code. (#9346) 2019-06-17 10:20:35 -07:00
Francisco Magdaleno
96a592b6e9
[macos] Adds clipboard string read/write support to macOS (#9313) 2019-06-13 15:15:20 -07:00
Jenn Magder
1caff8d073
Decorate UIApplicationDelegate wrappers with matching UIKit deprecation (#9304) 2019-06-13 10:16:42 -07:00