186 Commits

Author SHA1 Message Date
Michael Goderbauer
e44cd55fc4
Manually given hint,value,label,trait has precedence for TextFields on iOS (#4777) 2018-03-12 17:56:08 -07:00
Chinmay Garde
5bffdefbbf
Use weak pointers to the accesibility bridge from objects vended to the UIKit accessibility framework. (#4761) 2018-03-08 17:23:01 -08:00
Michael Goderbauer
7f7634fa17
Add SemanticsFlag for Header (#4752) 2018-03-06 15:43:13 -08:00
Chris Bracken
269bab73b6
Add nil check for country code and language code (#4732)
NSLocale objectForKey: may return nil for NSLocaleLanguageCode and
NSLocateCountryCode in certain cases.

This adds a defensive nil check for such cases.
2018-03-01 13:46:22 -08:00
Sarah Zakarias
4d7065af2d
remove unavailabe API from FlutterDartProject.mm (#4724) 2018-02-28 14:04:14 +01:00
xster
ba98f2634b
Add more haptic feedback varieties (#4699)
* Add more haptic feedback varieties

* Make the specific feedback types do nothing on <iOS 10
2018-02-27 14:55:18 -08:00
Yegor
3bbc71df69
fix naming of static function intToComparisonResult (#4685) 2018-02-22 11:24:51 -07:00
Yegor
503f86d54c
iOS a11y: Implement strong down weak up reference management (#4602)
* fix iOS crash in a11y mode when used too fast

* clang-format
2018-02-15 16:33:05 -08:00
Chris Bracken
439edca287
Fix unguarded availability warnings for iOS (#4664)
Place all iOS code that relies on APIs introduced in iOS versions later
than our base SDK version (iOS 8) behind @available checks. This allows
us to enable the -Wunguarded-availability compiler flag for iOS builds
in the buildroot repo.
2018-02-13 11:49:43 -08:00
Michael Goderbauer
a00f94582b
Add accessibilityFocus and loseAccessibilityFocus as a11y actions (#4655) 2018-02-09 17:47:52 -08:00
Michael Goderbauer
8ac6f6efa1
Encode scrolling status into tree (#4647) 2018-02-09 15:39:58 -08:00
Yegor
6dd49f0695
iOS a11y text entry (~70% of it) (#4575)
* implement iOS text field editing in a11y mode

* address Chinmay's comments

* replace node in child list when changing type
2018-02-05 15:14:13 -08:00
Chris Bracken
dbc071aa62
Use @available checks for iOS 11 features (#4619)
Use @available checks for iOS 11 features
2018-01-30 09:36:21 -08:00
Chris Bracken
521c73ded8
Revert "Use @available checks for iOS 11 features (#4596)" (#4597)
This reverts commit 89b6d435205d9bcdf8dde965dd1b0432482407c5.

Apparently the clang toolchain is still hitting issues. Will give this
another go after the next clang toolchain update.
2018-01-26 16:08:18 -08:00
Chris Bracken
89b6d43520
Use @available checks for iOS 11 features (#4596)
Guard code that deals with iOS safe area insets behind an @available
check.

This cleans up some old TODOs from before out clang toolchain supported
@available.
2018-01-26 15:51:00 -08:00
Chris Bracken
f937d93138
Extract common iOS asset path lookup code (#4594)
Consolidates the asset path lookup logic from FlutterDartProject and FlutterMain().
2018-01-26 14:27:46 -08:00
Alexander Aprelev
6921873c71
Lookup FTLAssetsPath when deducing assets path on ios (#4593)
* Lookup FTLAssetsPath when deducing assets path on ios

* WS

* Proper fix

* Another whitespace fix
2018-01-26 13:45:04 -08:00
Yegor
2fe8b648ed
use Human Interface Guidelines for a11y and non-a11y text sizes (#4586) 2018-01-24 15:46:35 -08:00
Alexander Aprelev
cdf869bcd7
When running on iOS deduce bundle path during engine initialization. (#4532) 2018-01-10 17:40:47 -08:00
Mikkel Nygaard Ravn
84fc920fde
Deprecate support for big integers in standard message codec (#4528) 2018-01-09 23:58:45 +01:00
Michael Goderbauer
12e0e38a8b
Split SemanticsFlags.isDisabled into two (#4517) 2018-01-04 15:15:54 -08:00
Michael Goderbauer
26010cf483
Add SemanticsFlag.isDisabled (#4503) 2018-01-02 15:57:52 -08:00
Michael Goderbauer
937bde8f98
A11y nodes with only value or hint are focusable (#4481) 2017-12-20 11:15:10 -08:00
Sarah Zakarias
4cbe26dd37
Handle Flutter assets outside FLX (#4343) 2017-12-13 10:55:24 +01:00
Michael Goderbauer
e07eafae1d
Roll forward: Parameters for SemanticActions; a11y text selection (#4452)
Reverts the revert in #4448 with fixes to pass on the bot.

This change will require framework changes in flutter/flutter#13490.
2017-12-12 14:25:45 -08:00
najeira
4ea7075c1d Map iOS touches to Flutter view coordinate system (#4425)
This change ensures that touches are mapped to the Flutter view
co-ordinate system. In the case of a Flutter view that doesn't share the
same origin and orientation as the screen co-ordinate system, touches
were appled in the wrong location. This bug affected Flutter views whose
origin was not the screen origin and Flutter apps running with the
in-call status bar on iPhones other than the iPhone X.
2017-12-12 13:22:53 -08:00
Chris Bracken
edb0201fa2
Support iOS scroll-to-top tap on iPhone X (#4436)
This adds support for scrolling the primary scroll view to the top on
status bar touches, on the iPhone X.

Notes:
1. The iPhone X status bar doesn't change height when in in-call/etc.
   mode, and unlike other iPhones, does scroll to top when in in-call mode.
2. No matter which model of iOS device, the top safe area inset doesn't
   change when in in-call mode. In in-call mode, the OS reduces the app
   view height by 20px off the top, and the double-height 'in-call' status
   bar covers this new inset (outside the view) and there continues to be a
   20px safe area in the app.

On iOS 11, rather than comparing status bar height to a hardcoded 20px
'standard height' we now compare to the top safe area inset (which is
always the standard status bar height, regardless of device). On iOS
versions prior to iOS 11, we use the previous logic.

Fixes flutter/flutter#13439
2017-12-08 19:36:53 -08:00
Chris Bracken
8e39760168
Expose keyboard height as view inset on iOS (#4428)
Keyboard height is now treated as a view inset, which could be used to
shrink the content area of the app as is done in the Material Scaffold,
rather than padding, which is used to indicate content areas where user
interaction should be avoided.
2017-12-07 18:37:46 -08:00
Chris Bracken
a94e88200a
Set window.viewInsets.bottom to keyboard height on iOS (#4420)
This allows for us to start migrating framework classes (notably
Scaffold) to use window.viewInsets.bottom to get the keyboard height.
Once framework updates have landed, we will land an engine patch to
expose the iOS bottom safe area inset as padding.

This change is already landed for Android.

Related issue: flutter/flutter#12098
2017-12-06 15:06:12 -08:00
Chris Bracken
033daf152d
Update the iOS mark region on setTextInputState (#4418)
Previously, we failed to clear/update the mark text range on updates
from the framework. This resulted in a crash if the incoming text value
was shorter than the current mark range when iOS attempts to extract the
mark range substring from the text.

Fixes flutter/flutter#12585
2017-12-06 11:30:14 -08:00
xster
22e63c3d05
Block image decoding on iOS in the background (#4384)
* Add synchronization to ResourceContext usage

* debug

* Use unique ptr factory

* formatting

* left more notes for future readers
2017-12-01 12:09:00 -08:00
Chris Bracken
93648ef0ed
Expose Window.viewInsets in dart:ui (#4403)
Window.viewInsets is the set of window-relative insets that describe the
area of the window that an application may want to treat as effectively
reducing the size of the content. Typically this is due to system UI
that fully obscures underlying content, such as the keyboard.

This area differs from padding in that padding is the set of insets that
describe the area of the window that may be partially (or fully)
obscured by system UI or physical intrusions into the view area (e.g.
iPhone X sensor housing, status bar, or the iPhone X home indicator
widget).

This patch does not yet enable the iOS bottom edge safe area. Once the
framework has been updated to use viewInsets for bottom-edge occlusions
(today, the keyboard), the bottom safe area will be enabled and
framework patches that depend on it, landed.
2017-11-29 16:27:15 -08:00
Mikkel Nygaard Ravn
1f0c959189
Align iOS event channel semantics to Android counterpart (#4353) 2017-11-13 15:34:29 +01:00
Chris Bracken
bc2acf7bdd
Revert "Roll Fuchsia buildtools to 85907c59e97527d79bbfdfd849d8e85c24959cc5 (#4331)" (#4340)
With the update to HEAD of the Fuchsia buildtools repo, the new clang
toolchain picked up caused link-time breakage in android x86_64
libFlutter.so builds.

Sample log:
https://build.chromium.org/p/client.flutter/builders/Linux%20Engine/builds/1974/steps/build%20android_debug_x64/logs/stdio

Sample failure:
FAILED: libflutter.so libflutter.so.TOC lib.stripped/libflutter.so
../../third_party/android_tools/ndk/toolchains/x86_64-4.9/prebuilt/linux-x86_64/lib/gcc/x86_64-linux-android/4.9.x/../../../../x86_64-linux-android/bin/ld.gold: error: obj/flutter/shell/platform/android/libflutter/android_context_gl.o: unsupported reloc 42 against global symbol std::__ndk1::num_put<char, std::__ndk1::ostreambuf_iterator<char, std::__ndk1::char_traits<char> > >::id

This reverts commit 8ad42f0dae3cb1267c2b9ab99db80e4696ddbc3d.
2017-11-08 16:48:00 -08:00
Chris Bracken
8ad42f0dae
Roll Fuchsia buildtools to 85907c59e97527d79bbfdfd849d8e85c24959cc5 (#4331)
* Roll Fuchsia buildtools to 85907c59e97527d79bbfdfd849d8e85c24959cc5

This also updates Flutter buildroot to a6e52dbb776c45cc8c57d7143b8eb8b2e762fdfb
which disables -Wtautological-constant-compare temporarily until
https://reviews.llvm.org/D39462 lands in clang. This is in line with
Fuchsia's compiler options.

* Apply clang-format diffs

No logical changes. This applies clang-format from the latest Fuchsia
buildtools to the engine codebase.
2017-11-08 11:18:17 -08:00
Chris Bracken
dd6585bb9a
Respond to safe area inset changes (#4330)
On iOS 11 and above, update viewport padding and notify the framework
when changes to safe area insets occur.
2017-11-07 18:26:59 -08:00
Chris Bracken
e059cc0258
Temporaribly disable bottom safe area padding on iOS (#4322)
There are two different sets of view insets that applications may want
to track in order to avoid unwanted interaction with system UI:

1. OS UI that effectively shrinks the Flutter view from a UX point of
   view: e.g., when the keyboard opens, it occludes the bottom of the
   screen and the view should be adjusted such that the bottom, for the
   purposes of scrolling is just above the keyboard.
2. OS UI that is overlaid over the application, but into which the
   application should draw. e.g., the Home indicator on the iPhone X
   typically appears near the bottom of the screen, overlaid over app
   content. Content should be rendered within this 'safe area' but apps
   should avoid requiring user interaction there. For example, list
   views may want to include some small amount of additional padding to
   ensure the last list item can scroll above this area.

Since Flutter does not currently distinguish between these two cases,
this patch disables the bottom safe area inset until API is added to
support these separately.
2017-11-03 14:20:46 -07:00
Chris Bracken
3021e8f6c3
Correct behaviour for rangeForCharacterAtIndex (#4319)
Previously it always fell through to a zero-length character range at
the specified position.
2017-11-02 15:16:06 -07:00
xster
8d8203ccb6
Make the text selection code more defensive (#4291)
* Make the text selection code more defensive

* format

* Move validation to a method

* Fix math

* rename
2017-11-02 03:36:52 -07:00
Chinmay Garde
9a960f82f5 Add texture support (eg video, camera) (#4159) 2017-11-02 10:57:29 +01:00
Zachary Anderson
6c73503923
[ios] Adds an API for running Dart code without a PlatformViewIOS (#4294) 2017-11-01 12:16:51 -07:00
Chris Bracken
ddd51597d0
Use safe area padding on hide keyboard on iOS (#4304)
On hide keyboard, reset the bottom padding to the safe area inset on
devices running iOS 11 or higher.
2017-10-31 17:17:38 -07:00
Chinmay Garde
19e690e84b
Add fml::WeakPtr and update users in Shell. (#4296) 2017-10-31 16:55:36 -07:00
Chinmay Garde
ac16530074
Ensure that public framework headers can be cleanly imported from outside the engine root. (#4303) 2017-10-31 16:25:02 -07:00
Chris Bracken
277bfe66f0
Support iPhone X safe area insets (#4302)
This change exposes the view safe area insets (introduced in iOS 11) to
the framework via MediaQuery.of(context).padding. Safe area insets are
the view insets (padding) inside of which content can be relied on to
display without truncation/clipping, as would occur with e.g. the iPhone
X sensor notch.

As this API was added in iOS 11, we place it behind a runtime guard
checking OS level.

Until the runtime support for @avialable lands in the next Fuchsia
buildtools rev, ignore -Wunguarded-availability-new around the safe area
insets check and use an FML runtime check instead.
2017-10-31 14:30:07 -07:00
Chinmay Garde
fe92a5120c
Fix iOS build to account for Shell rasterizer registration updates. (#4295) 2017-10-30 13:54:41 -07:00
Michael Goderbauer
4a9e6782a7 Announce the correct new value after increase/decrease has been performed on iOS (#4282) 2017-10-25 16:02:43 -07:00
Michael Goderbauer
6665645a0f Only post UIAccessibilityLayoutChangedNotification if layout changed (#4279)
* Only post UIAccessibilityLayoutChangedNotification if layout actually changed

* ++

* review comment
2017-10-25 14:07:41 -07:00
Michael Goderbauer
65e4deba15 Revert "Move channel and codec related files to common (#4262)" (#4277)
This reverts commit a48b5f6d25c7371d05d6d8290e385b83d58f0b72.
2017-10-25 13:01:24 -07:00
krisgiesing
a48b5f6d25 Move channel and codec related files to common (#4262)
Refactoring related to use of the embedder APIs on macOS
host builds.
2017-10-24 20:36:18 -07:00