Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Extract WideToUTF16String/UTF16StringToWide to FML #39020

Merged
merged 1 commit into from
Jan 20, 2023

Conversation

cbracken
Copy link
Member

In third_party/accessibility, for string conversion, we use a mix of:

  • FML
  • third_party/accessibility base string utility functions
  • static functions local to the translation unit itself

This moves all conversions between UTF16 and wide strings to FML. Note that this implementation is only safe on platforms where:

  • the size of wchar_t and char16_t are the same
  • the encoding of wchar_t and char16_t are both UTF-16 which is the case for Windows, hence why these functions are implemented in a Windows-specific translation unit (wstring_conversion).

This is a reland of #39006 which was reverted due to unlucky timing of two approved patches landing in sequence, one of which removed WideToUTF16 and the other of which added a new usage.

Issue: flutter/flutter#118811

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or Hixie said the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

In third_party/accessibility, for string conversion, we use a mix of:
* FML
* third_party/accessibility base string utility functions
* static functions local to the translation unit itself

This moves all conversions between UTF16 and wide strings to FML. Note
that this implementation is only safe on platforms where:
  * the size of wchar_t and char16_t are the same
  * the encoding of wchar_t and char16_t are both UTF-16
which is the case for Windows, hence why these functions are implemented
in a Windows-specific translation unit (wstring_conversion).

Issue: flutter/flutter#118811
@cbracken cbracken added the autosubmit Merge PR when tree becomes green via auto submit App label Jan 20, 2023
@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jan 20, 2023
@auto-submit
Copy link
Contributor

auto-submit bot commented Jan 20, 2023

auto label is removed for flutter/engine, pr: 39020, due to - The status or check suite Mac Unopt has failed. Please fix the issues identified (or deflake) before re-applying this label.

@cbracken cbracken merged commit d2436a5 into flutter:main Jan 20, 2023
@cbracken cbracken deleted the WideToUTF16 branch January 20, 2023 06:55
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Jan 20, 2023
sourcegraph-bot pushed a commit to sgtest/megarepo that referenced this pull request Jan 20, 2023
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 20, 2023
* 030288d Revert "[macos] add flavor options to commands in the `flutter_tool` (#118421)" (flutter/flutter#118858)

* 9acf34d Roll Flutter Engine from 26b6609c603b to 7d40e77d0035 (2 revisions) (flutter/flutter#118852)

* ec51d32 Remove unnecessary null checks in ‘dev/conductor’ (flutter/flutter#118843)

* 54217bd Remove unnecessary null checks in `dev/benchmarks` (flutter/flutter#118840)

* 98c18ca Remove unnecessary null checks in examples/ (flutter/flutter#118848)

* 99b5262 Remove unnecessary null checks in dev/tools (flutter/flutter#118845)

* 52d1205 Roll Flutter Engine from 7d40e77d0035 to 730e88fb6787 (3 revisions) (flutter/flutter#118869)

* ee9c9b6 3876320cb Roll Skia from aedfc8695954 to 1b3aa8b6e1cc (43 revisions) (flutter/engine#39024) (flutter/flutter#118871)

* 589f2eb d2436a536 Extract WideToUTF16String/UTF16StringToWide to FML (flutter/engine#39020) (flutter/flutter#118873)

* 74645b4 Fix `NavigationBar` indicator ripple doesn't account for label height (flutter/flutter#117473)

* f78b1f3 dfe67f4c7 Roll Skia from 1b3aa8b6e1cc to f6a5c806294d (11 revisions) (flutter/engine#39027) (flutter/flutter#118874)

* 572f0a1 66e177a3d Roll Dart SDK from ddf70a598f27 to fbbfc122dba6 (9 revisions) (flutter/engine#39029) (flutter/flutter#118878)

* 26472b5 ccccee513 [macos] Synthesize modifier keys events on pointer events (flutter/engine#37870) (flutter/flutter#118880)

* 095b1ab Checkbox borderSide lerp bug fix (flutter/flutter#118728)
auto-submit bot pushed a commit to flutter/plugins that referenced this pull request Jan 20, 2023
* 3348987 Add new macos target configured for flavors (flutter/flutter#117352)

* 6277520 Roll Plugins from 4e5cf2d to 11361d0 (4 revisions) (flutter/flutter#118682)

* 997d436 Fix applyBoxFit's handling of fitWidth and fitHeight. (flutter/flutter#117185)

* 8a58ec5 Roll Flutter Engine from f79030440948 to c52b290813bd (29 revisions) (flutter/flutter#118720)

* 374f09e [flutter_tools] No more implicit --no-sound-null-safety (flutter/flutter#118491)

* ae1cc18 remove single-view assumption from `paintImage` (flutter/flutter#118721)

* bb8b96a Fix path for require.js (flutter/flutter#118722)

* c83a698 update uikit view documentation (flutter/flutter#118715)

* 2b3ca0d Bump github/codeql-action from 2.1.38 to 2.1.39 (flutter/flutter#118735)

* 666dccc [macOS] bringup new e2e_summary devicelab test (flutter/flutter#118717)

* d07b88e Docs fix an=>a (flutter/flutter#118652)

* 11d21e0 Add @pragma('vm:entry-point') to RestorableRouteBuilder arguments (flutter/flutter#118738)

* 7d9eaab Appbar iconTheme override fix (flutter/flutter#118681)

* 6f70830 Roll Flutter Engine from c52b290813bd to 290636c1cb6b (2 revisions) (flutter/flutter#118743)

* b3059d2 Bump activesupport from 6.1.5 to 6.1.7.1 in /dev/ci/mac (flutter/flutter#118745)

* ffcf63a Add verbose flag to plugin_dependencies_test to debug flake (flutter/flutter#118755)

* 2609212 2a11023c7 [ios_platform_view] more precision when determine if a clip rrect is necessary (flutter/engine#38965) (flutter/flutter#118751)

* 21fb443 8ed6790b5 Bump chrome_and_driver version to 110. (flutter/engine#38986) (flutter/flutter#118758)

* e5c9d06 Forgot to remove emulator flag. (flutter/flutter#118762)

* 6a9b2db 95b0c151f Roll Dart SDK from 645fd748e79e to ddf70a598f27 (14 revisions) (flutter/engine#38990) (flutter/flutter#118763)

* 0bbb5ec 40f7f0f09 Roll Fuchsia Mac SDK from P5QcCJU8I71xVXuMT... to tlYMsnCv86Fjt5LfF... (flutter/engine#38994) (flutter/flutter#118771)

* d53cc4a [macOS] New e2e_summary benchmark fails without Cocoapods. (flutter/flutter#118754)

* 3e71e0c Updated `ListTile` documentation, add Material 3 example and other `ListTile` examples fixes. (flutter/flutter#118705)

* 213b3cb Check whether slider is mounted before interaction, no-op if unmounted (flutter/flutter#113556)

* 06909cc Update packages + fix tests for javascript mime change (flutter/flutter#118617)

* 46c7fd1 88e61d8bd Remove references to Observatory (flutter/engine#38919) (flutter/flutter#118793)

* b9ab640 Remove incorrect statement in documentation (flutter/flutter#118636)

* ea36b3a Add focus detector to CupertinoSwitch (flutter/flutter#118345)

* 9b5ea30 Switching over from iOS-15 to iOS-16 in .ci.yaml. (flutter/flutter#118807)

* 67ffaef 29a0582a1 Roll Fuchsia Mac SDK from tlYMsnCv86Fjt5LfF... to 6oiZwMyNsjucSxTHJ... (flutter/engine#39004) (flutter/flutter#118817)

* 5cd2d4c Support iOS wireless debugging (flutter/flutter#118104)

* cbf2e16 Revert "Support iOS wireless debugging (#118104)" (flutter/flutter#118826)

* 2258590 Do not run Mac_arm64_ios run_debug_test_macos in presubmit during iPhone 11 migration (flutter/flutter#118828)

* 1dd7f45 Add `build macos --config-only` option. (flutter/flutter#118649)

* 22520f5 [macOS] Add timeline summary benchmarks (flutter/flutter#118748)

* 99e4ca5 Roll Flutter Engine from 29a0582a1d5f to 78bbea005d27 (2 revisions) (flutter/flutter#118829)

* c5ceff1 [flutter_tools] Ensure service worker starts caching assets since first load  (flutter/flutter#116833)

* 818bb4e Roll Flutter Engine from 78bbea005d27 to 26b6609c603b (3 revisions) (flutter/flutter#118839)

* 09bd0f6 Support logging 'flutter run' communication to DAP clients (flutter/flutter#118674)

* 73096fd [macos] add flavor options to commands in the `flutter_tool` (flutter/flutter#118421)

* 030288d Revert "[macos] add flavor options to commands in the `flutter_tool` (#118421)" (flutter/flutter#118858)

* 9acf34d Roll Flutter Engine from 26b6609c603b to 7d40e77d0035 (2 revisions) (flutter/flutter#118852)

* ec51d32 Remove unnecessary null checks in ‘dev/conductor’ (flutter/flutter#118843)

* 54217bd Remove unnecessary null checks in `dev/benchmarks` (flutter/flutter#118840)

* 98c18ca Remove unnecessary null checks in examples/ (flutter/flutter#118848)

* 99b5262 Remove unnecessary null checks in dev/tools (flutter/flutter#118845)

* 52d1205 Roll Flutter Engine from 7d40e77d0035 to 730e88fb6787 (3 revisions) (flutter/flutter#118869)

* ee9c9b6 3876320cb Roll Skia from aedfc8695954 to 1b3aa8b6e1cc (43 revisions) (flutter/engine#39024) (flutter/flutter#118871)

* 589f2eb d2436a536 Extract WideToUTF16String/UTF16StringToWide to FML (flutter/engine#39020) (flutter/flutter#118873)

* 74645b4 Fix `NavigationBar` indicator ripple doesn't account for label height (flutter/flutter#117473)

* f78b1f3 dfe67f4c7 Roll Skia from 1b3aa8b6e1cc to f6a5c806294d (11 revisions) (flutter/engine#39027) (flutter/flutter#118874)

* 572f0a1 66e177a3d Roll Dart SDK from ddf70a598f27 to fbbfc122dba6 (9 revisions) (flutter/engine#39029) (flutter/flutter#118878)

* 26472b5 ccccee513 [macos] Synthesize modifier keys events on pointer events (flutter/engine#37870) (flutter/flutter#118880)

* 095b1ab Checkbox borderSide lerp bug fix (flutter/flutter#118728)

* ec6ff90 Roll Flutter Engine from ccccee513fb2 to d84b3dc74c9f (2 revisions) (flutter/flutter#118893)

* 492d572 Cleanup obsolete --compact-async compiler option (flutter/flutter#118894)

* f291eb3 Remove unnecessary null checks in integration_test (flutter/flutter#118861)

* ab3c822 Remove unnecessary null checks in dev/devicelab (flutter/flutter#118842)

* bf72f5e 58eb1061e Revert "Remove references to Observatory (#38919)" (flutter/engine#39035) (flutter/flutter#118899)

* a07e8a6 [reland] Support wireless debugging (flutter/flutter#118895)
ricardoamador pushed a commit to ricardoamador/engine that referenced this pull request Jan 25, 2023
mauricioluz pushed a commit to mauricioluz/plugins that referenced this pull request Jan 26, 2023
* 3348987 Add new macos target configured for flavors (flutter/flutter#117352)

* 6277520 Roll Plugins from 4e5cf2d to 11361d0 (4 revisions) (flutter/flutter#118682)

* 997d436 Fix applyBoxFit's handling of fitWidth and fitHeight. (flutter/flutter#117185)

* 8a58ec5 Roll Flutter Engine from f79030440948 to c52b290813bd (29 revisions) (flutter/flutter#118720)

* 374f09e [flutter_tools] No more implicit --no-sound-null-safety (flutter/flutter#118491)

* ae1cc18 remove single-view assumption from `paintImage` (flutter/flutter#118721)

* bb8b96a Fix path for require.js (flutter/flutter#118722)

* c83a698 update uikit view documentation (flutter/flutter#118715)

* 2b3ca0d Bump github/codeql-action from 2.1.38 to 2.1.39 (flutter/flutter#118735)

* 666dccc [macOS] bringup new e2e_summary devicelab test (flutter/flutter#118717)

* d07b88e Docs fix an=>a (flutter/flutter#118652)

* 11d21e0 Add @pragma('vm:entry-point') to RestorableRouteBuilder arguments (flutter/flutter#118738)

* 7d9eaab Appbar iconTheme override fix (flutter/flutter#118681)

* 6f70830 Roll Flutter Engine from c52b290813bd to 290636c1cb6b (2 revisions) (flutter/flutter#118743)

* b3059d2 Bump activesupport from 6.1.5 to 6.1.7.1 in /dev/ci/mac (flutter/flutter#118745)

* ffcf63a Add verbose flag to plugin_dependencies_test to debug flake (flutter/flutter#118755)

* 2609212 2a11023c7 [ios_platform_view] more precision when determine if a clip rrect is necessary (flutter/engine#38965) (flutter/flutter#118751)

* 21fb443 8ed6790b5 Bump chrome_and_driver version to 110. (flutter/engine#38986) (flutter/flutter#118758)

* e5c9d06 Forgot to remove emulator flag. (flutter/flutter#118762)

* 6a9b2db 95b0c151f Roll Dart SDK from 645fd748e79e to ddf70a598f27 (14 revisions) (flutter/engine#38990) (flutter/flutter#118763)

* 0bbb5ec 40f7f0f09 Roll Fuchsia Mac SDK from P5QcCJU8I71xVXuMT... to tlYMsnCv86Fjt5LfF... (flutter/engine#38994) (flutter/flutter#118771)

* d53cc4a [macOS] New e2e_summary benchmark fails without Cocoapods. (flutter/flutter#118754)

* 3e71e0c Updated `ListTile` documentation, add Material 3 example and other `ListTile` examples fixes. (flutter/flutter#118705)

* 213b3cb Check whether slider is mounted before interaction, no-op if unmounted (flutter/flutter#113556)

* 06909cc Update packages + fix tests for javascript mime change (flutter/flutter#118617)

* 46c7fd1 88e61d8bd Remove references to Observatory (flutter/engine#38919) (flutter/flutter#118793)

* b9ab640 Remove incorrect statement in documentation (flutter/flutter#118636)

* ea36b3a Add focus detector to CupertinoSwitch (flutter/flutter#118345)

* 9b5ea30 Switching over from iOS-15 to iOS-16 in .ci.yaml. (flutter/flutter#118807)

* 67ffaef 29a0582a1 Roll Fuchsia Mac SDK from tlYMsnCv86Fjt5LfF... to 6oiZwMyNsjucSxTHJ... (flutter/engine#39004) (flutter/flutter#118817)

* 5cd2d4c Support iOS wireless debugging (flutter/flutter#118104)

* cbf2e16 Revert "Support iOS wireless debugging (#118104)" (flutter/flutter#118826)

* 2258590 Do not run Mac_arm64_ios run_debug_test_macos in presubmit during iPhone 11 migration (flutter/flutter#118828)

* 1dd7f45 Add `build macos --config-only` option. (flutter/flutter#118649)

* 22520f5 [macOS] Add timeline summary benchmarks (flutter/flutter#118748)

* 99e4ca5 Roll Flutter Engine from 29a0582a1d5f to 78bbea005d27 (2 revisions) (flutter/flutter#118829)

* c5ceff1 [flutter_tools] Ensure service worker starts caching assets since first load  (flutter/flutter#116833)

* 818bb4e Roll Flutter Engine from 78bbea005d27 to 26b6609c603b (3 revisions) (flutter/flutter#118839)

* 09bd0f6 Support logging 'flutter run' communication to DAP clients (flutter/flutter#118674)

* 73096fd [macos] add flavor options to commands in the `flutter_tool` (flutter/flutter#118421)

* 030288d Revert "[macos] add flavor options to commands in the `flutter_tool` (#118421)" (flutter/flutter#118858)

* 9acf34d Roll Flutter Engine from 26b6609c603b to 7d40e77d0035 (2 revisions) (flutter/flutter#118852)

* ec51d32 Remove unnecessary null checks in ‘dev/conductor’ (flutter/flutter#118843)

* 54217bd Remove unnecessary null checks in `dev/benchmarks` (flutter/flutter#118840)

* 98c18ca Remove unnecessary null checks in examples/ (flutter/flutter#118848)

* 99b5262 Remove unnecessary null checks in dev/tools (flutter/flutter#118845)

* 52d1205 Roll Flutter Engine from 7d40e77d0035 to 730e88fb6787 (3 revisions) (flutter/flutter#118869)

* ee9c9b6 3876320cb Roll Skia from aedfc8695954 to 1b3aa8b6e1cc (43 revisions) (flutter/engine#39024) (flutter/flutter#118871)

* 589f2eb d2436a536 Extract WideToUTF16String/UTF16StringToWide to FML (flutter/engine#39020) (flutter/flutter#118873)

* 74645b4 Fix `NavigationBar` indicator ripple doesn't account for label height (flutter/flutter#117473)

* f78b1f3 dfe67f4c7 Roll Skia from 1b3aa8b6e1cc to f6a5c806294d (11 revisions) (flutter/engine#39027) (flutter/flutter#118874)

* 572f0a1 66e177a3d Roll Dart SDK from ddf70a598f27 to fbbfc122dba6 (9 revisions) (flutter/engine#39029) (flutter/flutter#118878)

* 26472b5 ccccee513 [macos] Synthesize modifier keys events on pointer events (flutter/engine#37870) (flutter/flutter#118880)

* 095b1ab Checkbox borderSide lerp bug fix (flutter/flutter#118728)

* ec6ff90 Roll Flutter Engine from ccccee513fb2 to d84b3dc74c9f (2 revisions) (flutter/flutter#118893)

* 492d572 Cleanup obsolete --compact-async compiler option (flutter/flutter#118894)

* f291eb3 Remove unnecessary null checks in integration_test (flutter/flutter#118861)

* ab3c822 Remove unnecessary null checks in dev/devicelab (flutter/flutter#118842)

* bf72f5e 58eb1061e Revert "Remove references to Observatory (#38919)" (flutter/engine#39035) (flutter/flutter#118899)

* a07e8a6 [reland] Support wireless debugging (flutter/flutter#118895)
Maatteogekko pushed a commit to Maatteogekko/packages that referenced this pull request Feb 4, 2023
* 030288d Revert "[macos] add flavor options to commands in the `flutter_tool` (#118421)" (flutter/flutter#118858)

* 9acf34d Roll Flutter Engine from 26b6609c603b to 7d40e77d0035 (2 revisions) (flutter/flutter#118852)

* ec51d32 Remove unnecessary null checks in ‘dev/conductor’ (flutter/flutter#118843)

* 54217bd Remove unnecessary null checks in `dev/benchmarks` (flutter/flutter#118840)

* 98c18ca Remove unnecessary null checks in examples/ (flutter/flutter#118848)

* 99b5262 Remove unnecessary null checks in dev/tools (flutter/flutter#118845)

* 52d1205 Roll Flutter Engine from 7d40e77d0035 to 730e88fb6787 (3 revisions) (flutter/flutter#118869)

* ee9c9b6 3876320cb Roll Skia from aedfc8695954 to 1b3aa8b6e1cc (43 revisions) (flutter/engine#39024) (flutter/flutter#118871)

* 589f2eb d2436a536 Extract WideToUTF16String/UTF16StringToWide to FML (flutter/engine#39020) (flutter/flutter#118873)

* 74645b4 Fix `NavigationBar` indicator ripple doesn't account for label height (flutter/flutter#117473)

* f78b1f3 dfe67f4c7 Roll Skia from 1b3aa8b6e1cc to f6a5c806294d (11 revisions) (flutter/engine#39027) (flutter/flutter#118874)

* 572f0a1 66e177a3d Roll Dart SDK from ddf70a598f27 to fbbfc122dba6 (9 revisions) (flutter/engine#39029) (flutter/flutter#118878)

* 26472b5 ccccee513 [macos] Synthesize modifier keys events on pointer events (flutter/engine#37870) (flutter/flutter#118880)

* 095b1ab Checkbox borderSide lerp bug fix (flutter/flutter#118728)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants