-
Notifications
You must be signed in to change notification settings - Fork 29.7k
[ios][secure_paste]show menu item based on info sent from framework #161103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ios][secure_paste]show menu item based on info sent from framework #161103
Conversation
4456e1f to
d00e4ed
Compare
justinmc
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tentative LGTM while I double check some last things on the framework side in #159013.
I was able to get these changes to work with my framework changes by merging this branch into my branch. Maybe not the best way to do that but I think it will work. If you merge this PR first, then I'll update my branch with master and I should end up with zero changes from you, and I'll be able to merge my PR.
Sounds good! I'm ok with either way. Sounds like it's easier to close this one since you already merged this to your branch? |
I was struggling to get the engine to compile now that it's under the flutter/flutter monorepo, and I noticed that the wiki docs have not been updated since the monorepo migration completed. This PR attempts to update them to give a process that works with the new setup. I've gone ahead and updated all of the links in the "Engine repo" section of [the wiki](https://github.com/flutter/flutter/wiki) to point to the flutter/flutter copies of these docs since they were previously pointing to the flutter/engine copies. I tested these instructions by following them myself and successfully getting the engine changes in #161103 to work with the framework changes in #159013 on iOS compiling with `et`.
I was struggling to get the engine to compile now that it's under the flutter/flutter monorepo, and I noticed that the wiki docs have not been updated since the monorepo migration completed. This PR attempts to update them to give a process that works with the new setup. I've gone ahead and updated all of the links in the "Engine repo" section of [the wiki](https://github.com/flutter/flutter/wiki) to point to the flutter/flutter copies of these docs since they were previously pointing to the flutter/engine copies. I tested these instructions by following them myself and successfully getting the engine changes in flutter#161103 to work with the framework changes in flutter#159013 on iOS compiling with `et`.
|
Not sure why the google testing is always failing. looking into it |
|
Triage: Any updates on the failing test? |
It looks like the google test has passed. But let's keep this engine PR open, until @justinmc is done exploring with the framework part (in case any changes needed). Thanks |
justinmc
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 👍, but it's probably a good idea to have someone more familiar with the iOS embedder take a look too.
My framework PR (#159013) is awaiting final review. I've removed all of the engine code from that PR. I think this PR can land whenever it's ready now.
| myInputView.frame = CGRectMake(10, 20, 30, 40); | ||
| NSDictionary<NSString*, NSNumber*>* encodedTargetRect = | ||
| @{@"x" : @(100), @"y" : @(200), @"width" : @(300), @"height" : @(400)}; | ||
| // No items provided from framework. Show the suggested items by default. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We discussed offline a bit and I summarized in #159013 (comment) that items should be required, and since that would be a breaking change, we have to support both use cases for now while I deprecate the old API.
Are there any changes you want to make in this PR to prepare for that future? Is it possible to add deprecation notices in the engine? Or at least here and other places where it comes up, explain in a comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since nothing has changed about the framework <-> engine communication, I think we are good for now. The deprecation happens in dart API only.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good. When we do remove the deprecated show method, we should also tighten up the engine API to require items to be present and not empty.
@cbracken could you also help take a look? Thanks! |
|
Ah all green! I am gonna dismiss the request @cbracken, I think 1 review should be good to go as we have tested it so many times. Thanks! |
Roll Flutter from 892f9c1 to e8f34a9 (71 revisions) flutter/flutter@892f9c1...e8f34a9 2025-02-12 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Roll Skia from f31c733c86c4 to 25937c31f153 (2 revisions) (#163127)" (flutter/flutter#163133) 2025-02-12 [email protected] Roll Skia from f31c733c86c4 to 25937c31f153 (2 revisions) (flutter/flutter#163127) 2025-02-12 [email protected] Update .ci.yaml to support Fuchsia cherrypick branches (flutter/flutter#163000) 2025-02-12 [email protected] Roll Skia from 6f17f2ebb2e5 to f31c733c86c4 (1 revision) (flutter/flutter#163112) 2025-02-12 [email protected] Roll Skia from a9dbb2479c26 to 6f17f2ebb2e5 (2 revisions) (flutter/flutter#163109) 2025-02-12 [email protected] [devicelab] dont strip symbols in platform views layout test. (flutter/flutter#163101) 2025-02-12 [email protected] [Impeller] mirror tile mode requires highp for Adreno. (flutter/flutter#163066) 2025-02-12 [email protected] Roll Skia from 5b56d9a91633 to a9dbb2479c26 (6 revisions) (flutter/flutter#163100) 2025-02-12 [email protected] Roll Dart SDK from d9d7f103b6b7 to fcef25f18e4d (3 revisions) (flutter/flutter#163098) 2025-02-12 [email protected] Generate a correct `.flutter-plugin-dependencies` file for iOS/macOS projects (flutter/flutter#162834) 2025-02-12 [email protected] Remove unsound artifacts, remove `*Sound` qualifier. (flutter/flutter#163015) 2025-02-12 [email protected] [Impeller] libImpeller: Add support for Metal and Vulkan rendering. (flutter/flutter#161547) 2025-02-11 [email protected] Marks Mac_benchmark basic_material_app_macos__compile to be flaky (flutter/flutter#162365) 2025-02-11 [email protected] Roll pub packages (flutter/flutter#163083) 2025-02-11 [email protected] Adds hasSelectedState parameter to matchesSemantics for migration (flutter/flutter#163014) 2025-02-11 [email protected] fix: Dispose codec after completing frame creation (flutter/flutter#159945) 2025-02-11 [email protected] [ios][secure_paste]show menu item based on info sent from framework (flutter/flutter#161103) 2025-02-11 [email protected] Update conductor to support monorepos (flutter/flutter#161704) 2025-02-11 [email protected] [Android] fix hcpp tapping, again, and add test. (flutter/flutter#163035) 2025-02-11 [email protected] Add new builder for experiment with dynamic modules. (flutter/flutter#162855) 2025-02-11 [email protected] Roll vulkan-deps to 9edf248c597b (flutter/flutter#162549) 2025-02-11 [email protected] Adds dialog and alertdialog role (flutter/flutter#162692) 2025-02-11 [email protected] Roll Dart SDK from 99789828cc95 to d9d7f103b6b7 (12 revisions) (flutter/flutter#163060) 2025-02-11 [email protected] [ Widget Preview ] Cleanup PreviewDetector code (flutter/flutter#163050) 2025-02-11 [email protected] Fix `SkiaException` -> `TestFailure`, add tests. (flutter/flutter#163054) 2025-02-11 [email protected] [Android] fix hcpp overlay layer intersection. (flutter/flutter#163024) 2025-02-11 [email protected] [ Widget Preview ] Update generated scaffold project to include early preview rendering (flutter/flutter#162847) 2025-02-11 [email protected] [Embedder] Implement merged platform and UI thread (flutter/flutter#162944) 2025-02-11 [email protected] [Android] Remove overlay when platform views are removed from screen. (flutter/flutter#162908) 2025-02-11 [email protected] Roll Dart to 3.8.0-76.0.dev (flutter/flutter#162913) 2025-02-11 [email protected] [Android] add HCPP platform views benchmark and integration test. (flutter/flutter#163018) 2025-02-11 [email protected] Roll Skia from 8c377e8bedd2 to 5b56d9a91633 (9 revisions) (flutter/flutter#163021) 2025-02-11 [email protected] Try golden-testing on a Mokey (`bringup: true`), retry on an emulator (flutter/flutter#163029) 2025-02-11 [email protected] Fix Linux keyboard support for AltGr (flutter/flutter#162495) 2025-02-11 [email protected] Update gen_keycodes output to new engine location. (flutter/flutter#162479) 2025-02-10 [email protected] [Android] add runtime flag to determine if HCPP is supported. (flutter/flutter#163004) 2025-02-10 [email protected] [iOS][Engine] Fix view removal process for AutofillContextAction.cancel (flutter/flutter#160653) 2025-02-10 [email protected] Re-land #162644: Remove `--verbose` from devicelab task executions. (flutter/flutter#163017) 2025-02-10 [email protected] Include device lab version for how to run test (flutter/flutter#163010) 2025-02-10 [email protected] Change the default optimization level to `-O2` for wasm in release mode. (flutter/flutter#162917) 2025-02-10 [email protected] [web] robustify safaridriver launch sequence (flutter/flutter#162919) 2025-02-10 [email protected] Return more eagerly when toggling service extensions (flutter/flutter#162774) 2025-02-10 [email protected] Fix doc reference typos (flutter/flutter#162893) 2025-02-10 [email protected] Roll Skia from 180ed4fc263d to 8c377e8bedd2 (4 revisions) (flutter/flutter#162998) 2025-02-10 [email protected] FYI matanlurey (does not require review, but probably should) on dev/test infra. (flutter/flutter#162642) 2025-02-10 [email protected] [Impeller] rrect_blur: scale max radius clamp by transform (flutter/flutter#161238) ...
Implements the framework side of secure paste milestone 2, where the iOS system context menu items can be customized. Depends on PR #161103. Currently I've merged that PR into this one for testing, but I think that PR should merge separately first. ### Widget API (most users) ```dart TextField( contextMenuBuilder: (BuildContext context, EditableTextState editableTextState) { return SystemContextMenu.editableText( editableTextState: editableTextState, // items is optional items: <IOSSystemContextMenuItem>[ const IOSSystemContextMenuItemCut(), constIOS SystemContextMenuItemCopy(), const IOSSystemContextMenuItemPaste(), const IOSSystemContextMenuItemSelectAll(), const IOSSystemContextMenuItemSearchWeb( title: 'Search!', // title is optional for this button, defaults to localized string ), // Milestone 3: IOSSystemContextMenuItemCustom( // title and onPressed are required title: 'custom button', onPressed: () { print('pressed the custom button.'); } ), ], ); }, ), ``` ### Raw Controller API ```dart _systemContextMenuController.show( widget.anchor, <IOSSystemContextMenuItemData>[ // Notice these are different classes than those used for the widget. That's // mainly because I can't provide localized defaults here, so the titles are // required in the classes that have titles. const IOSSystemContextMenuItemDataCut(), const IOSSystemContextMenuItemDataCopy(), const IOSSystemContextMenuItemDataPaste(), const IOSSystemContextMenuItemDataSelectAll(), const IOSSystemContextMenuItemDataSearchWeb( title: 'Search!', // title is required. ), // Milestone 3: IOSSystemContextMenuItemDataCustom( // title and onPressed are required as before. title: 'custom button', onPressed: () { print('pressed the custom button.'); } ), ], ); ``` <details> <summary>Json format</summary> ```dart return _channel.invokeMethod<Map<String, dynamic>>( 'ContextMenu.showSystemContextMenu', <String, dynamic>{ 'targetRect': <String, double>{ 'x': targetRect.left, 'y': targetRect.top, 'width': targetRect.width, 'height': targetRect.height, }, 'items': <dynamic>[ <String, dynamic>{ 'type': 'default', 'action': 'paste', }, <String, dynamic>{ 'type': 'default', 'action': 'copy', }, <String, dynamic>{ 'type': 'default', 'title': 'Crazy Title', 'action': 'share', }, ], }, ); ``` </summary> </details> ### Localization changes This change requires the SystemContextMenu widget in the widgets library to be able to look up the default localized label for several context menu buttons like "Copy", etc. Those strings previously resided in MaterialLocalizations and CupertinoLocalizations, but not in WidgetsLocalizations, so I have copied the necessary strings into WidgetsLocalizations. --------- Co-authored-by: Huan Lin <[email protected]>
Roll Flutter from 892f9c1 to e8f34a9 (71 revisions) flutter/flutter@892f9c1...e8f34a9 2025-02-12 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Roll Skia from f31c733c86c4 to 25937c31f153 (2 revisions) (#163127)" (flutter/flutter#163133) 2025-02-12 [email protected] Roll Skia from f31c733c86c4 to 25937c31f153 (2 revisions) (flutter/flutter#163127) 2025-02-12 [email protected] Update .ci.yaml to support Fuchsia cherrypick branches (flutter/flutter#163000) 2025-02-12 [email protected] Roll Skia from 6f17f2ebb2e5 to f31c733c86c4 (1 revision) (flutter/flutter#163112) 2025-02-12 [email protected] Roll Skia from a9dbb2479c26 to 6f17f2ebb2e5 (2 revisions) (flutter/flutter#163109) 2025-02-12 [email protected] [devicelab] dont strip symbols in platform views layout test. (flutter/flutter#163101) 2025-02-12 [email protected] [Impeller] mirror tile mode requires highp for Adreno. (flutter/flutter#163066) 2025-02-12 [email protected] Roll Skia from 5b56d9a91633 to a9dbb2479c26 (6 revisions) (flutter/flutter#163100) 2025-02-12 [email protected] Roll Dart SDK from d9d7f103b6b7 to fcef25f18e4d (3 revisions) (flutter/flutter#163098) 2025-02-12 [email protected] Generate a correct `.flutter-plugin-dependencies` file for iOS/macOS projects (flutter/flutter#162834) 2025-02-12 [email protected] Remove unsound artifacts, remove `*Sound` qualifier. (flutter/flutter#163015) 2025-02-12 [email protected] [Impeller] libImpeller: Add support for Metal and Vulkan rendering. (flutter/flutter#161547) 2025-02-11 [email protected] Marks Mac_benchmark basic_material_app_macos__compile to be flaky (flutter/flutter#162365) 2025-02-11 [email protected] Roll pub packages (flutter/flutter#163083) 2025-02-11 [email protected] Adds hasSelectedState parameter to matchesSemantics for migration (flutter/flutter#163014) 2025-02-11 [email protected] fix: Dispose codec after completing frame creation (flutter/flutter#159945) 2025-02-11 [email protected] [ios][secure_paste]show menu item based on info sent from framework (flutter/flutter#161103) 2025-02-11 [email protected] Update conductor to support monorepos (flutter/flutter#161704) 2025-02-11 [email protected] [Android] fix hcpp tapping, again, and add test. (flutter/flutter#163035) 2025-02-11 [email protected] Add new builder for experiment with dynamic modules. (flutter/flutter#162855) 2025-02-11 [email protected] Roll vulkan-deps to 9edf248c597b (flutter/flutter#162549) 2025-02-11 [email protected] Adds dialog and alertdialog role (flutter/flutter#162692) 2025-02-11 [email protected] Roll Dart SDK from 99789828cc95 to d9d7f103b6b7 (12 revisions) (flutter/flutter#163060) 2025-02-11 [email protected] [ Widget Preview ] Cleanup PreviewDetector code (flutter/flutter#163050) 2025-02-11 [email protected] Fix `SkiaException` -> `TestFailure`, add tests. (flutter/flutter#163054) 2025-02-11 [email protected] [Android] fix hcpp overlay layer intersection. (flutter/flutter#163024) 2025-02-11 [email protected] [ Widget Preview ] Update generated scaffold project to include early preview rendering (flutter/flutter#162847) 2025-02-11 [email protected] [Embedder] Implement merged platform and UI thread (flutter/flutter#162944) 2025-02-11 [email protected] [Android] Remove overlay when platform views are removed from screen. (flutter/flutter#162908) 2025-02-11 [email protected] Roll Dart to 3.8.0-76.0.dev (flutter/flutter#162913) 2025-02-11 [email protected] [Android] add HCPP platform views benchmark and integration test. (flutter/flutter#163018) 2025-02-11 [email protected] Roll Skia from 8c377e8bedd2 to 5b56d9a91633 (9 revisions) (flutter/flutter#163021) 2025-02-11 [email protected] Try golden-testing on a Mokey (`bringup: true`), retry on an emulator (flutter/flutter#163029) 2025-02-11 [email protected] Fix Linux keyboard support for AltGr (flutter/flutter#162495) 2025-02-11 [email protected] Update gen_keycodes output to new engine location. (flutter/flutter#162479) 2025-02-10 [email protected] [Android] add runtime flag to determine if HCPP is supported. (flutter/flutter#163004) 2025-02-10 [email protected] [iOS][Engine] Fix view removal process for AutofillContextAction.cancel (flutter/flutter#160653) 2025-02-10 [email protected] Re-land #162644: Remove `--verbose` from devicelab task executions. (flutter/flutter#163017) 2025-02-10 [email protected] Include device lab version for how to run test (flutter/flutter#163010) 2025-02-10 [email protected] Change the default optimization level to `-O2` for wasm in release mode. (flutter/flutter#162917) 2025-02-10 [email protected] [web] robustify safaridriver launch sequence (flutter/flutter#162919) 2025-02-10 [email protected] Return more eagerly when toggling service extensions (flutter/flutter#162774) 2025-02-10 [email protected] Fix doc reference typos (flutter/flutter#162893) 2025-02-10 [email protected] Roll Skia from 180ed4fc263d to 8c377e8bedd2 (4 revisions) (flutter/flutter#162998) 2025-02-10 [email protected] FYI matanlurey (does not require review, but probably should) on dev/test infra. (flutter/flutter#162642) 2025-02-10 [email protected] [Impeller] rrect_blur: scale max radius clamp by transform (flutter/flutter#161238) ...
Roll Flutter from 892f9c1 to e8f34a9 (71 revisions) flutter/flutter@892f9c1...e8f34a9 2025-02-12 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Roll Skia from f31c733c86c4 to 25937c31f153 (2 revisions) (#163127)" (flutter/flutter#163133) 2025-02-12 [email protected] Roll Skia from f31c733c86c4 to 25937c31f153 (2 revisions) (flutter/flutter#163127) 2025-02-12 [email protected] Update .ci.yaml to support Fuchsia cherrypick branches (flutter/flutter#163000) 2025-02-12 [email protected] Roll Skia from 6f17f2ebb2e5 to f31c733c86c4 (1 revision) (flutter/flutter#163112) 2025-02-12 [email protected] Roll Skia from a9dbb2479c26 to 6f17f2ebb2e5 (2 revisions) (flutter/flutter#163109) 2025-02-12 [email protected] [devicelab] dont strip symbols in platform views layout test. (flutter/flutter#163101) 2025-02-12 [email protected] [Impeller] mirror tile mode requires highp for Adreno. (flutter/flutter#163066) 2025-02-12 [email protected] Roll Skia from 5b56d9a91633 to a9dbb2479c26 (6 revisions) (flutter/flutter#163100) 2025-02-12 [email protected] Roll Dart SDK from d9d7f103b6b7 to fcef25f18e4d (3 revisions) (flutter/flutter#163098) 2025-02-12 [email protected] Generate a correct `.flutter-plugin-dependencies` file for iOS/macOS projects (flutter/flutter#162834) 2025-02-12 [email protected] Remove unsound artifacts, remove `*Sound` qualifier. (flutter/flutter#163015) 2025-02-12 [email protected] [Impeller] libImpeller: Add support for Metal and Vulkan rendering. (flutter/flutter#161547) 2025-02-11 [email protected] Marks Mac_benchmark basic_material_app_macos__compile to be flaky (flutter/flutter#162365) 2025-02-11 [email protected] Roll pub packages (flutter/flutter#163083) 2025-02-11 [email protected] Adds hasSelectedState parameter to matchesSemantics for migration (flutter/flutter#163014) 2025-02-11 [email protected] fix: Dispose codec after completing frame creation (flutter/flutter#159945) 2025-02-11 [email protected] [ios][secure_paste]show menu item based on info sent from framework (flutter/flutter#161103) 2025-02-11 [email protected] Update conductor to support monorepos (flutter/flutter#161704) 2025-02-11 [email protected] [Android] fix hcpp tapping, again, and add test. (flutter/flutter#163035) 2025-02-11 [email protected] Add new builder for experiment with dynamic modules. (flutter/flutter#162855) 2025-02-11 [email protected] Roll vulkan-deps to 9edf248c597b (flutter/flutter#162549) 2025-02-11 [email protected] Adds dialog and alertdialog role (flutter/flutter#162692) 2025-02-11 [email protected] Roll Dart SDK from 99789828cc95 to d9d7f103b6b7 (12 revisions) (flutter/flutter#163060) 2025-02-11 [email protected] [ Widget Preview ] Cleanup PreviewDetector code (flutter/flutter#163050) 2025-02-11 [email protected] Fix `SkiaException` -> `TestFailure`, add tests. (flutter/flutter#163054) 2025-02-11 [email protected] [Android] fix hcpp overlay layer intersection. (flutter/flutter#163024) 2025-02-11 [email protected] [ Widget Preview ] Update generated scaffold project to include early preview rendering (flutter/flutter#162847) 2025-02-11 [email protected] [Embedder] Implement merged platform and UI thread (flutter/flutter#162944) 2025-02-11 [email protected] [Android] Remove overlay when platform views are removed from screen. (flutter/flutter#162908) 2025-02-11 [email protected] Roll Dart to 3.8.0-76.0.dev (flutter/flutter#162913) 2025-02-11 [email protected] [Android] add HCPP platform views benchmark and integration test. (flutter/flutter#163018) 2025-02-11 [email protected] Roll Skia from 8c377e8bedd2 to 5b56d9a91633 (9 revisions) (flutter/flutter#163021) 2025-02-11 [email protected] Try golden-testing on a Mokey (`bringup: true`), retry on an emulator (flutter/flutter#163029) 2025-02-11 [email protected] Fix Linux keyboard support for AltGr (flutter/flutter#162495) 2025-02-11 [email protected] Update gen_keycodes output to new engine location. (flutter/flutter#162479) 2025-02-10 [email protected] [Android] add runtime flag to determine if HCPP is supported. (flutter/flutter#163004) 2025-02-10 [email protected] [iOS][Engine] Fix view removal process for AutofillContextAction.cancel (flutter/flutter#160653) 2025-02-10 [email protected] Re-land #162644: Remove `--verbose` from devicelab task executions. (flutter/flutter#163017) 2025-02-10 [email protected] Include device lab version for how to run test (flutter/flutter#163010) 2025-02-10 [email protected] Change the default optimization level to `-O2` for wasm in release mode. (flutter/flutter#162917) 2025-02-10 [email protected] [web] robustify safaridriver launch sequence (flutter/flutter#162919) 2025-02-10 [email protected] Return more eagerly when toggling service extensions (flutter/flutter#162774) 2025-02-10 [email protected] Fix doc reference typos (flutter/flutter#162893) 2025-02-10 [email protected] Roll Skia from 180ed4fc263d to 8c377e8bedd2 (4 revisions) (flutter/flutter#162998) 2025-02-10 [email protected] FYI matanlurey (does not require review, but probably should) on dev/test infra. (flutter/flutter#162642) 2025-02-10 [email protected] [Impeller] rrect_blur: scale max radius clamp by transform (flutter/flutter#161238) ...
This is moved from flutter/engine#56362
List which issues are fixed by this PR. You must list at least one issue. An issue is not required if the PR fixes something trivial like a typo.
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.