67 Commits

Author SHA1 Message Date
stuartmorgan
2bc0bfdab4
Send locale information in the macOS embedding (#20461)
Queries the system list of user-preferred languages, and sends it to the
engine just after starting it up, as well as after any OS locale change.

macOS portion of https://github.com/flutter/flutter/issues/45152
2020-08-12 19:31:22 -07:00
Kaushik Iska
43067ed4fc
engineCallbackOnPresent should return false if glContext is invalid (#20337)
Co-authored-by: Kaushik Iska <kaushikiska@google.com>
2020-08-10 16:44:20 -07:00
Siva
b955e15ee9
Manual roll of Dart from 24c7666def...40fd1c456e (#20092)
* Manual roll of Dart from 24c7666def...40fd1c456e

dart-lang/sdk@40fd1c456e Revert "[dart:io] Add Abort() on HttpClientRequest"
dart-lang/sdk@17d7296a42 [vm/nnbd/bytecode] Fix reuse of type arguments in bytecode
dart-lang/sdk@58b6f40c73 Issue 42797. Understand in legacy libraries that a function returning Never (in Null Safety library) never returns. (reland)
dart-lang/sdk@fc8a6d9f9b [VM/compiler] Dereference TypeRef literal when propagating constants.
dart-lang/sdk@0689ec527a Move "test.dart" (well, most of its contents) into pkg/test_runner.
dart-lang/sdk@1094b3c61d Prepare static error test updater tool to handle web tests.
dart-lang/sdk@b258585f2f [observatory] Migrate from deprecated isInstanceOf to isA.
dart-lang/sdk@dfe1d9b682 Disable OverrideContributor for Cider.
dart-lang/sdk@aea99b2f5c scope debug property assist to Diagnosticables
dart-lang/sdk@4b96f20a79 [dart:io] Add Abort() on HttpClientRequest
dart-lang/sdk@1b1a39708c [build] Use frameworks instead of libs
dart-lang/sdk@3fef522496 Revert "Reland "[vm] Replaces fuchsia.deprecatedtimezone""
dart-lang/sdk@8c664d4f3f Revert "Issue 42797. Understand in legacy libraries that a function returning Never (in Null Safety library) never returns."
dart-lang/sdk@2efb5bebc7 [ dart:_http ] Fix typo in HTTP response timeline event
dart-lang/sdk@0884dae36c Revert "Fix the #include path for ICU headers"
dart-lang/sdk@5171534e81 Scope tweaks. Report REFERENCED_BEFORE_DECLARATION in more places.
dart-lang/sdk@6bba75079a Issue 42797. Understand in legacy libraries that a function returning Never (in Null Safety library) never returns.
dart-lang/sdk@b4ebbb7f5c [build] Update gn to match Fuchsia
dart-lang/sdk@cb428a7a02 [dart2js] Remove old bug work around in collector.
dart-lang/sdk@08663c20ab Change flutter patch to match existing DEPS on master branch
dart-lang/sdk@146ad014d9 update js/meta for the 2.10 dev sdk
dart-lang/sdk@488c718793 [co19] Roll co19 to d79951e06e443213243e54c2c32694b79a221b65
dart-lang/sdk@ba20edd7be Add patch for flutter-engine when changing to version 2.10

* Rev buildroot to latest version.

* Update license.

* update.

* Update gn revision.

* Format BUILD.gn files as the gn revision has been updated.
2020-07-29 13:10:15 -07:00
Todd Volkert
48f90888a6
Add support for playing alert sound on MacOS (#19970)
flutter/flutter#62143
2020-07-23 14:00:13 -07:00
gaaclarke
21efd7325e
Made the linter print out more information in its output and fixed bugs (#19895) 2020-07-22 15:38:09 -07:00
Tong Mu
fbef051f5c
Add all system cursors (engine) (#19550)
* Support all system cursors in WIn, Linux, mac, Web and Android.
2020-07-15 15:37:18 -07:00
Andy Weiss
015f2ea765
Use the main bundle if the App bundle is not found (#18749)
It looks like half the code in this function was updated to use the
main bundle but this one line was still only using the _dartBundle. I am
pretty sure that is a mistake and instead we want to use the mainBundle
as a backup both to find the plist and to find the assets.
2020-07-11 21:08:27 -07:00
gaaclarke
41c503cc23
Changed iOS channels to start cleaning up the accessibility handler when the bridge is deleted (#19556)
Started cleaning up the accessibility handler when the bridge is
deleted and made nilling out channels safer by making sure they don't
overwrite newly setup handlers.
2020-07-08 13:26:29 -07:00
Todd Volkert
7e6c856ea0
Add support for horizontalDoubleArrow and verticalDoubleArrow cursors (#18916) 2020-06-10 07:17:11 -07:00
stuartmorgan
a95882ba70
Don't export embedder API in desktop embeddings (#18735)
The embedder.h API layer is an implementation detail of the desktop
embeddings, not part of the public API surface, so should not be part of
the public symbol list for those libraries.
2020-06-03 18:13:59 -07:00
Tong Mu
69d0a8e710
System mouse cursor: macOS (#18131)
* Untested macOS impl

* Workable mac

* Modernize

* Simplify

* Address comments

* Refactor with FlutterPlugin

* Cached dict

* Update per comments

* format

* Remove device arg

* Format

* Update license

* Update licences

* Doc update
2020-05-20 16:27:25 -07:00
stuartmorgan
2fe73589fb
Use the right constant for macOS event timestamps (#17713)
The NSEvent->Flutter event conversion code for pointer events was
multiplying seconds by nanoseconds per milliseconds. While this does end
up giving the right number of microseconds, it's a very confusing way to
write it.
2020-04-15 14:33:00 -07:00
stuartmorgan
33a21d1ff8
Add DartProject for Windows embedding API (#17210)
This is a step toward aligning the API with macOS, and will make it easier to add the precompiled library later for release mode (since it can just be added to the project directory, without any code changes required for wrapper clients).

At the C API, uses a struct instead of individual arguments, mirroring a change that was already made on the Linux side to make the C API cleaner.

Functional changes in addition to the restructuring:

adds relative path support, as was recently added for GLFW
Uses wstring, rather than string, for paths; the conversion to UTF-8 is actually a potential problem on Windows, so pushing it into the embedding allows us the possibility of removing it later (if we can figure out a good solution at the embedder.h layer) without API breakage.
The old APIs used by the standard runner are left in place for now to avoid breaking the template on an engine roll. Once the framework template has been updated, the old API paths will be removed.
2020-03-23 10:46:10 -07:00
Ryan Macnak
930a80ac86
Fix some compiler warnings in newer versions of Clang. (#16733) 2020-02-21 12:57:06 -08:00
stuartmorgan
44f24bd980
Fix delete of entire selection in macOS text input (#16276)
Fixes a bug where deleteBackward was checking for being at the start of
the text before checking for a non-empty selection, breaking deletion
when the entire text field was selected.

Also removes an (incorrect) post-deletion position update that was
redundant with code in insertText:replacementRange:, and thus having no
effect.

Fixes https://github.com/flutter/flutter/issues/46150
2020-02-03 15:22:44 -08:00
Dan Field
447b022ae5
Change NSLog to FML_DLOG (#16331) 2020-02-03 10:07:59 -08:00
Chinmay Garde
f7b78e001d
Remove all uses of the redundant flutter_root variable. (#16311)
This was only necessary when the Engine had to build in multiple buildroots
where the sources where checked out at different paths relative to the
buildroot. This is no longer the case and there are already cases GN rules
have been written that mix and match variable usage with the direct
specification of the path to the Flutter sources relative to the sole buildroot.
2020-01-31 21:49:48 -08:00
stuartmorgan
063efce92b Report backing store changes in the macOS view (#13933) 2019-12-02 16:33:04 -08:00
Francisco Magdaleno
a68805bcf8
Listen to keyUp event on meta modified keys (#13984) 2019-12-02 16:17:19 -08:00
Francisco Magdaleno
c0db9aa11f
Remove device independent mask (#14010) 2019-11-25 14:55:12 -08:00
Greg Spencer
572e3d16c0
Fix editing selection and deletion on macOS (#13702)
This fixes the selection and deletion during text editing on macOS so that it can handle selections that have a base (selection start) that is after the extent (selection end) in the string.

Apparently the insertText:replacementRange on macOS can supply an NSRange object that has negative values for the length (even though the length is an unsigned NSUInteger). This change checks for that case, and fixes the range of characters replaced in the text to have the right bounds.

Also, I added an additional updateEditState after the state is set from the framework, since there is a timing problem: when the delete key is pressed, it sends an insertText message, which updates the framework state after the framework has already sent its state update to delete the selected region. This additional updateEditState puts the engine and framework back in sync again. Ideally, we would just avoid sending the insertText message, but there's really no way for the engine to know if the pressed key is part of an edit sequence or not.
2019-11-05 19:17:52 -08:00
Dan Field
90771188f8
Set the install name at link time for darwin dylibs (#13428) 2019-10-29 20:30:13 -07:00
Chinmay Garde
e3c5f4827d
Switch the MacOS Desktop embedder to using a thread configuration where the platform and render task runners are the same. (#13300)
Also creates a new test harness for the desktop embedder framework target and adds a test that launches a headless engine in this new thread configuration.

Fixes https://github.com/flutter/flutter/issues/17579
2019-10-28 12:47:05 -07:00
Francisco Magdaleno
ef32890466
Send flag modified events to the framework (#13269) 2019-10-22 19:01:00 -07:00
Chinmay Garde
97f5ad4a90
Avoid accessing the Cocoa view on the GPU or IO task runners. (#13295)
The view was being accessed from a background thread so its OpenGL context could be accessed. This tripped thread safety assertions in Cocoa. Now the OpenGL context is stashed in the FlutterEngine instance itself.
2019-10-22 14:21:49 -07:00
CloudWebRTC
0f9d88c7b6 Add texture support for macOS shell. (#8507) 2019-10-09 20:35:09 -07:00
Francisco Magdaleno
07d4cd919a
[macos] Stops keeping track of text input models (#12267) 2019-09-13 14:30:20 -07:00
stuartmorgan
ca4c3f6df3
Add an initial macOS version of FlutterAppDelegate (#12230)
Creates a starting point for an app delegate. For now it just
incorporates the menu and window renaming functionality that's currently
in the FDE example, but in the future this will also do forwarding of
application lifecycle events to plugins.

Fixes https://github.com/flutter/flutter/issues/32419
2019-09-12 16:03:18 -07:00
Chris Bracken
92c63e848a
Ensure trailing newline before EOF in C++ sources (#11489)
In generated text fixture location lookup code:
When the second argument to write_file() is a list, it is written one
item per line to the path specified by the first argument. This ensures
that we emit a trailing newline at EOF to comply with -Wnewline-eof.

Elsewhere:
Lack of a newline at EOF was undefined behaviour prior to C++11. The
Fuchsia tree sets -Wnewline-eof in its buildroot, so we plan to do the
same. This cleans up remaining first-party C++ sources that don't
include a trailing newline.
2019-08-27 00:13:00 -07:00
stuartmorgan
5f03c7e35d
Use of App.framework in macOS FlutterDartProject (#11380)
Adds initial use of App.framework in the macOS project configuration,
using that rather than the main bundle as the default Dart bundle, and
expecting flutter_resources to be located there.

This is an incremental step toward aligning with the behvaior of the iOS
version of this class.

Fixes https://github.com/flutter/flutter/issues/38363
2019-08-22 10:40:18 -07:00
stuartmorgan
a9b47638a7
Fix change_install_name.py to be GN-friendly (#11309)
change_install_name.py was operating on framework library files
in-place, which breaks GN's timestamp analysis handling since a file
can't be both an input and output of an action. As a result no-op builds
on macOS were not actually no-ops.

This changes the script to operate on an output copy, both fixing the
no-op build issue, and simplifying the GN framework construction scripts
by combining the copy step and the install-name step.

Fixes https://github.com/flutter/flutter/issues/33465
2019-08-20 21:15:42 -07:00
stuartmorgan
f310ec580e
Set FlutterMacOS podspec min version to 10.11 (#11306)
The framework is built using 10.11 as the deployment version; update the
podspec accordingly.

See https://github.com/flutter/flutter/issues/33200
2019-08-20 14:51:16 -07:00
stuartmorgan
c3e9c14586
Rename macOS FLE* classes to Flutter* (#11010)
Renames all FLE* classes in the macOS embedding to Flutter*. With the exception
of -[FlutterDartProject engineSwitches], which is very clearly called out in the
comment, the APIs should be stable at this point, so the marker prefix is no
longer needed.

This is a breaking change for macOS embedders, but going forward breaking
changes at the source level for the macOS API should now be rare.

Some of these classes will likely merge with the iOS versions in the future (e.g.,
FlutterDartProject), but that will be an implementation detail that will not affect
clients.

Fixes flutter/flutter#31735
2019-08-14 15:53:17 -07:00
James Clarke
ff484d4f69 [Windows] Alternative Windows shell platform implementation (#9835)
Start work on flutter/flutter#30726 by adding an alternative win32 shell platform implementation for Windows that is not based on GLFW and that uses LIBANGLE for rendering and native win32 windowing and input. This change does not replace the GLFW implementation but rather runs side by side with it producing a secondary flutter_windows_win32.dll artifact. The following items must be added to attain parity with the GLFW implementation:
- Custom task scheduling
- Support for keyboard modifier keys
- Async texture uploads
- Correct high DPI handling on Windows versions < 1703
and will be added in subsequent changes.
2019-08-14 15:52:52 -07:00
Francisco Magdaleno
cfa6c7c72b
[macos] Reland function refactor (#10189)
* [macos] Reland function refactor

* Fix bug
2019-07-31 10:57:02 -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
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
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
Francisco Magdaleno
cd321ee293
Assign missing headless execution variable (#9855) 2019-07-17 08:46:01 -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
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
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
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
Francisco Magdaleno
96a592b6e9
[macos] Adds clipboard string read/write support to macOS (#9313) 2019-06-13 15:15:20 -07:00
stuartmorgan
4c6253cdd6
Copy the macOS podspec during builds (#9158)
The podspec must be copied to the build output root, otherwise
--local-engine won't work in projects containing plugins.

Mirrors the iOS podspec copy rule.
2019-05-31 17:22:09 -07:00
stuartmorgan
2404cdc901
Rename macOS FLEPlugin* to FlutterPlugin* (#9074)
As another step toward aligning the macOS plugin API with the iOS plugin
API, and with its final form, rename the plugin-related classes from
FLEPlugin* to FlutterPlugin*. This makes the names of the clasess the
same between iOS and macOS. Eventually they should actually merge, with
annotations/ifdefs for platform differences, but for now since the macOS
version uses the same method names and is simply a subset of the iOS
APIs (with one to-be-stabilized method that is macOS-specific) doing the
merge later won't be a breaking change.

Doing this now allows for building out plugin tooling and plugin
implementations on macOS without creating a growing body of code that
will experience a breaking change later.

See:
https://github.com/flutter/flutter/issues/31735
https://github.com/flutter/flutter/issues/32718
2019-05-25 20:45:00 -04:00
Chris Bracken
0f1ff3bdb3
Correct typos, adopt US spellings (#9081)
Corects a bnuch of typeos throughout teh engien codebsae. Also makes
a couple minor Commonwealth -> US spelling adjustments for consistency
with the rest of Flutter's codebase.

Made use of `misspell` tool:
https://github.com/client9/misspell
2019-05-25 13:14:46 -07:00