Skip to content
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

Limit start value on ordered lists #47362

Closed
wants to merge 3 commits into from
Closed

Limit start value on ordered lists #47362

wants to merge 3 commits into from

Conversation

jhnstn
Copy link
Contributor

@jhnstn jhnstn commented Jan 23, 2023

What?

Limits the start value for ordered lists to fit in a 32 bit integer: 2147483647.
This also limits the start value passed to the react native <RichText> component.

Why?

This fixes #39727
The mobile editor on Android is crashing when the start value is larger than an 32 bit integer. iOS can handle the larger values but the UI becomes unstable when the start value is over a 64 bit integer.

How?

I've added two Math.min(start, MAX_INT) calls where the ol start value is handled in the ol list settings and in the props list that is passed to the native <RichText> component

Testing Instructions

  1. Open the mobile editor on Android
  2. Insert an list block configured as an ordered list
  3. Open the list block settings and enter a start value of 2147483647
  4. Verify that the value is allowed
  5. Enable 'Reverse list numbering' in the ordered list settings
  6. Close the options and verify that the ordered list starts at 2147483647
  7. Open the block settings and enter a value larger than 2147483647
  8. Notice that the value resets back to 2147483647
  9. Close the block setting and verify that the editor does not crash

Screenshots or screencast

Testing Instructions for Keyboard

Screenshots or screencast

@github-actions
Copy link

github-actions bot commented Jan 23, 2023

Size Change: +5.17 kB (0%)

Total Size: 1.34 MB

Filename Size Change
build/block-directory/index.min.js 7.2 kB +41 B (+1%)
build/block-editor/content-rtl.css 4.11 kB +442 B (+12%) ⚠️
build/block-editor/content.css 4.1 kB +442 B (+12%) ⚠️
build/block-editor/index.min.js 197 kB +6.34 kB (+3%)
build/block-editor/style-rtl.css 14.4 kB +128 B (+1%)
build/block-editor/style.css 14.4 kB +132 B (+1%)
build/block-library/blocks/avatar/style-rtl.css 91 B +7 B (+8%) 🔍
build/block-library/blocks/avatar/style.css 91 B +7 B (+8%) 🔍
build/block-library/blocks/button/editor-rtl.css 587 B +102 B (+21%) 🚨
build/block-library/blocks/button/editor.css 587 B +102 B (+21%) 🚨
build/block-library/blocks/button/style-rtl.css 628 B +96 B (+18%) ⚠️
build/block-library/blocks/button/style.css 627 B +95 B (+18%) ⚠️
build/block-library/blocks/file/style-rtl.css 265 B +12 B (+5%) 🔍
build/block-library/blocks/file/style.css 265 B +11 B (+4%)
build/block-library/blocks/image/editor-rtl.css 830 B +1 B (0%)
build/block-library/blocks/image/editor.css 829 B +1 B (0%)
build/block-library/blocks/image/style-rtl.css 652 B +25 B (+4%)
build/block-library/blocks/image/style.css 652 B +22 B (+3%)
build/block-library/blocks/latest-comments/style-rtl.css 357 B +59 B (+20%) 🚨
build/block-library/blocks/latest-comments/style.css 357 B +59 B (+20%) 🚨
build/block-library/blocks/navigation/editor-rtl.css 2.13 kB -1 B (0%)
build/block-library/blocks/navigation/editor.css 2.14 kB -1 B (0%)
build/block-library/blocks/page-list/editor-rtl.css 401 B +25 B (+7%) 🔍
build/block-library/blocks/page-list/editor.css 401 B +25 B (+7%) 🔍
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B -2 B (-3%)
build/block-library/blocks/post-excerpt/editor.css 71 B -2 B (-3%)
build/block-library/blocks/post-excerpt/style-rtl.css 134 B +65 B (+94%) 🆘
build/block-library/blocks/post-excerpt/style.css 134 B +65 B (+94%) 🆘
build/block-library/blocks/post-featured-image/style-rtl.css 322 B +4 B (+1%)
build/block-library/blocks/post-featured-image/style.css 322 B +4 B (+1%)
build/block-library/blocks/query/editor-rtl.css 463 B +23 B (+5%) 🔍
build/block-library/blocks/query/editor.css 463 B +23 B (+5%) 🔍
build/block-library/blocks/quote/style-rtl.css 222 B +9 B (+4%)
build/block-library/blocks/quote/style.css 222 B +9 B (+4%)
build/block-library/blocks/site-logo/editor-rtl.css 489 B -1 B (0%)
build/block-library/blocks/site-logo/editor.css 489 B -1 B (0%)
build/block-library/blocks/video/editor-rtl.css 552 B -139 B (-20%) 🎉
build/block-library/blocks/video/editor.css 555 B -139 B (-20%) 🎉
build/block-library/classic-rtl.css 179 B +17 B (+10%) ⚠️
build/block-library/classic.css 179 B +17 B (+10%) ⚠️
build/block-library/common-rtl.css 1.11 kB +61 B (+6%) 🔍
build/block-library/common.css 1.11 kB +62 B (+6%) 🔍
build/block-library/editor-rtl.css 11.6 kB -15 B (0%)
build/block-library/editor.css 11.6 kB -11 B (0%)
build/block-library/index.min.js 201 kB +1.49 kB (+1%)
build/block-library/style-rtl.css 12.7 kB +266 B (+2%)
build/block-library/style.css 12.7 kB +265 B (+2%)
build/blocks/index.min.js 51 kB +623 B (+1%)
build/components/index.min.js 208 kB +5.03 kB (+2%)
build/components/style-rtl.css 11.7 kB +32 B (0%)
build/components/style.css 11.7 kB +33 B (0%)
build/compose/index.min.js 12.4 kB +90 B (+1%)
build/core-data/index.min.js 16.2 kB +321 B (+2%)
build/customize-widgets/index.min.js 12.2 kB +544 B (+5%) 🔍
build/data/index.min.js 8.58 kB +624 B (+8%) 🔍
build/date/index.min.js 40.4 kB +8.38 kB (+26%) 🚨
build/dom/index.min.js 4.72 kB +7 B (0%)
build/edit-navigation/index.min.js 0 B -16.2 kB (removed) 🏆
build/edit-navigation/style-rtl.css 0 B -4.14 kB (removed) 🏆
build/edit-navigation/style.css 0 B -4.15 kB (removed) 🏆
build/edit-post/index.min.js 34.8 kB +475 B (+1%)
build/edit-post/style-rtl.css 7.53 kB +68 B (+1%)
build/edit-post/style.css 7.52 kB +68 B (+1%)
build/edit-site/index.min.js 64.9 kB +1.71 kB (+3%)
build/edit-site/style-rtl.css 10.1 kB +578 B (+6%) 🔍
build/edit-site/style.css 10.1 kB +569 B (+6%) 🔍
build/edit-widgets/index.min.js 17.3 kB +535 B (+3%)
build/edit-widgets/style-rtl.css 4.55 kB +60 B (+1%)
build/edit-widgets/style.css 4.55 kB +59 B (+1%)
build/editor/index.min.js 45.8 kB +562 B (+1%)
build/editor/style-rtl.css 3.54 kB -141 B (-4%)
build/editor/style.css 3.53 kB -138 B (-4%)
build/element/index.min.js 4.95 kB +11 B (0%)
build/experiments/index.min.js 0 B -870 B (removed) 🏆
build/format-library/index.min.js 7.26 kB +60 B (+1%)
build/format-library/style-rtl.css 557 B -41 B (-7%)
build/format-library/style.css 556 B -41 B (-7%)
build/keycodes/index.min.js 1.94 kB +64 B (+3%)
build/list-reusable-blocks/index.min.js 2.14 kB +3 B (0%)
build/priority-queue/index.min.js 1.52 kB -68 B (-4%)
build/reusable-blocks/index.min.js 2.26 kB -10 B (0%)
build/rich-text/index.min.js 11 kB +227 B (+2%)
build/style-engine/index.min.js 1.53 kB +3 B (0%)
build/url/index.min.js 3.74 kB +44 B (+1%)
build/widgets/index.min.js 7.3 kB -10 B (0%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 993 B
build/annotations/index.min.js 2.78 kB
build/api-fetch/index.min.js 2.27 kB
build/autop/index.min.js 2.15 kB
build/blob/index.min.js 483 B
build/block-directory/style-rtl.css 1.04 kB
build/block-directory/style.css 1.04 kB
build/block-editor/default-editor-styles-rtl.css 403 B
build/block-editor/default-editor-styles.css 403 B
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 138 B
build/block-library/blocks/audio/theme.css 138 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/block/editor-rtl.css 305 B
build/block-library/blocks/block/editor.css 305 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 84 B
build/block-library/blocks/categories/editor.css 83 B
build/block-library/blocks/categories/style-rtl.css 100 B
build/block-library/blocks/categories/style.css 100 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 406 B
build/block-library/blocks/columns/style.css 406 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 612 B
build/block-library/blocks/cover/editor.css 613 B
build/block-library/blocks/cover/style-rtl.css 1.57 kB
build/block-library/blocks/cover/style.css 1.56 kB
build/block-library/blocks/embed/editor-rtl.css 293 B
build/block-library/blocks/embed/editor.css 293 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 138 B
build/block-library/blocks/embed/theme.css 138 B
build/block-library/blocks/file/editor-rtl.css 300 B
build/block-library/blocks/file/editor.css 300 B
build/block-library/blocks/file/view.min.js 353 B
build/block-library/blocks/freeform/editor-rtl.css 2.44 kB
build/block-library/blocks/freeform/editor.css 2.44 kB
build/block-library/blocks/gallery/editor-rtl.css 984 B
build/block-library/blocks/gallery/editor.css 988 B
build/block-library/blocks/gallery/style-rtl.css 1.55 kB
build/block-library/blocks/gallery/style.css 1.55 kB
build/block-library/blocks/gallery/theme-rtl.css 122 B
build/block-library/blocks/gallery/theme.css 122 B
build/block-library/blocks/group/editor-rtl.css 654 B
build/block-library/blocks/group/editor.css 654 B
build/block-library/blocks/group/style-rtl.css 57 B
build/block-library/blocks/group/style.css 57 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 76 B
build/block-library/blocks/heading/style.css 76 B
build/block-library/blocks/html/editor-rtl.css 332 B
build/block-library/blocks/html/editor.css 333 B
build/block-library/blocks/image/theme-rtl.css 137 B
build/block-library/blocks/image/theme.css 137 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 478 B
build/block-library/blocks/latest-posts/style.css 478 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 266 B
build/block-library/blocks/media-text/editor.css 263 B
build/block-library/blocks/media-text/style-rtl.css 507 B
build/block-library/blocks/media-text/style.css 505 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 716 B
build/block-library/blocks/navigation-link/editor.css 715 B
build/block-library/blocks/navigation-link/style-rtl.css 115 B
build/block-library/blocks/navigation-link/style.css 115 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 299 B
build/block-library/blocks/navigation-submenu/editor.css 299 B
build/block-library/blocks/navigation/style-rtl.css 2.22 kB
build/block-library/blocks/navigation/style.css 2.2 kB
build/block-library/blocks/navigation/view-modal.min.js 2.81 kB
build/block-library/blocks/navigation/view.min.js 447 B
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 174 B
build/block-library/blocks/paragraph/editor.css 174 B
build/block-library/blocks/paragraph/style-rtl.css 279 B
build/block-library/blocks/paragraph/style.css 281 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 501 B
build/block-library/blocks/post-comments-form/style.css 501 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-featured-image/editor-rtl.css 586 B
build/block-library/blocks/post-featured-image/editor.css 584 B
build/block-library/blocks/post-navigation-link/style-rtl.css 153 B
build/block-library/blocks/post-navigation-link/style.css 153 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 282 B
build/block-library/blocks/post-template/style.css 282 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 103 B
build/block-library/blocks/preformatted/style.css 103 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 326 B
build/block-library/blocks/pullquote/style.css 325 B
build/block-library/blocks/pullquote/theme-rtl.css 167 B
build/block-library/blocks/pullquote/theme.css 167 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/quote/theme-rtl.css 223 B
build/block-library/blocks/quote/theme.css 226 B
build/block-library/blocks/read-more/style-rtl.css 132 B
build/block-library/blocks/read-more/style.css 132 B
build/block-library/blocks/rss/editor-rtl.css 149 B
build/block-library/blocks/rss/editor.css 149 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 165 B
build/block-library/blocks/search/editor.css 165 B
build/block-library/blocks/search/style-rtl.css 409 B
build/block-library/blocks/search/style.css 406 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 234 B
build/block-library/blocks/separator/style.css 234 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 474 B
build/block-library/blocks/shortcode/editor.css 474 B
build/block-library/blocks/site-logo/style-rtl.css 203 B
build/block-library/blocks/site-logo/style.css 203 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 184 B
build/block-library/blocks/social-link/editor.css 184 B
build/block-library/blocks/social-links/editor-rtl.css 674 B
build/block-library/blocks/social-links/editor.css 673 B
build/block-library/blocks/social-links/style-rtl.css 1.4 kB
build/block-library/blocks/social-links/style.css 1.39 kB
build/block-library/blocks/spacer/editor-rtl.css 332 B
build/block-library/blocks/spacer/editor.css 332 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 433 B
build/block-library/blocks/table/editor.css 433 B
build/block-library/blocks/table/style-rtl.css 651 B
build/block-library/blocks/table/style.css 650 B
build/block-library/blocks/table/theme-rtl.css 157 B
build/block-library/blocks/table/theme.css 157 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 404 B
build/block-library/blocks/template-part/editor.css 404 B
build/block-library/blocks/template-part/theme-rtl.css 101 B
build/block-library/blocks/template-part/theme.css 101 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/style-rtl.css 179 B
build/block-library/blocks/video/style.css 179 B
build/block-library/blocks/video/theme-rtl.css 139 B
build/block-library/blocks/video/theme.css 139 B
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/reset-rtl.css 478 B
build/block-library/reset.css 478 B
build/block-library/theme-rtl.css 698 B
build/block-library/theme.css 703 B
build/block-serialization-default-parser/index.min.js 1.13 kB
build/block-serialization-spec-parser/index.min.js 2.83 kB
build/customize-widgets/style-rtl.css 1.41 kB
build/customize-widgets/style.css 1.41 kB
build/data-controls/index.min.js 663 B
build/deprecated/index.min.js 518 B
build/dom-ready/index.min.js 336 B
build/edit-post/classic-rtl.css 571 B
build/edit-post/classic.css 571 B
build/escape-html/index.min.js 548 B
build/hooks/index.min.js 1.66 kB
build/html-entities/index.min.js 454 B
build/i18n/index.min.js 3.79 kB
build/is-shallow-equal/index.min.js 535 B
build/keyboard-shortcuts/index.min.js 1.79 kB
build/list-reusable-blocks/style-rtl.css 865 B
build/list-reusable-blocks/style.css 865 B
build/media-utils/index.min.js 2.99 kB
build/notices/index.min.js 977 B
build/plugins/index.min.js 1.95 kB
build/preferences-persistence/index.min.js 2.23 kB
build/preferences/index.min.js 1.35 kB
build/primitives/index.min.js 960 B
build/private-apis/index.min.js 937 B
build/react-i18n/index.min.js 702 B
build/react-refresh-entry/index.min.js 8.44 kB
build/react-refresh-runtime/index.min.js 7.31 kB
build/redux-routine/index.min.js 2.75 kB
build/reusable-blocks/style-rtl.css 265 B
build/reusable-blocks/style.css 265 B
build/server-side-render/index.min.js 2.09 kB
build/shortcode/index.min.js 1.52 kB
build/token-list/index.min.js 650 B
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.8 kB
build/vendors/react.min.js 4.02 kB
build/viewport/index.min.js 1.09 kB
build/warning/index.min.js 280 B
build/widgets/style-rtl.css 1.18 kB
build/widgets/style.css 1.18 kB
build/wordcount/index.min.js 1.06 kB

compressed-size-action

@jhnstn jhnstn requested a review from twstokes March 7, 2023 20:30
@twstokes
Copy link
Contributor

👋 Hey @jhnstn, I'm experiencing erratic input when testing this PR. Do you have the same issue? I checked out trunk on Gutenberg (42ebb6c8c65806ae2e34ae6334f0b8f9d3aae2e4) and that worked OK. It's possible it's something on my end since it's been a while. Thanks!

Simulator.Screen.Recording.-.iPhone.13.-.2023-03-09.at.19.37.38.mp4
Copy link
Contributor

@twstokes twstokes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @jhnstn! 👋 It's been a while since reviewing JS so bear with me. 😄 I added some comments that are optional IMO.

I'm only currently blocked by the issue mentioned here, which may be on my end.

}
const int32bit = Math.pow( 2, 31 );
return Math.min(
Math.max( parseInt( value, 10 ), -1 * ( int32bit - 1 ) ),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could the const int be reused here instead of parsing the value again?

import { InspectorControls } from '@wordpress/block-editor';
import { TextControl, PanelBody, ToggleControl } from '@wordpress/components';

function limitIntegerValue( value ) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we're not taking in a min / max and it's specific to signed 32-bit integers, should we make the function name more specific, or add a comment describing what it does?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had a different name for the function in an earlier PR a bit more specific and it was suggested that it be named limitValue. I thought that it was too generic so opted for limitIntegerValue to imply that the max min limits were integer limits. But I see your point about the 32 bit integer assumption which is not explicit in the function name. Perhaps a comment is enough?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO a comment is fine if we're keeping it local to these files.

@jhnstn
Copy link
Contributor Author

jhnstn commented Mar 10, 2023

👋 Hey @jhnstn, I'm experiencing erratic input when testing this PR. Do you have the same issue? I checked out trunk on Gutenberg (42ebb6c8c65806ae2e34ae6334f0b8f9d3aae2e4) and that worked OK. It's possible it's something on my end since it's been a while. Thanks!

hmm, I don't remember running into this when I was testing but I'll check again.

@jhnstn
Copy link
Contributor Author

jhnstn commented Mar 10, 2023

Thanks for reviewing @twstokes !

While looking into the typing jitter issue you found I noticed that the original issue might be resolved without these changes ?

I wonder if it has to do with the upgrade to Android 12 ? I've upgraded my OS from Android 12 to 13 but it's the same device that I used to test the original issue ( I have pixel 6 that supports 64 bit ). Now the behavior on trunk looks fine, no more crashing and overflows reset to 1 ( same as how Gutenberg Web handles overflows. )

I'm not sure we need these changes but could be a problem with folks using 32 bit devices. I did revert the change to the rich text component that I suspect was causing the issue you were seeing. I believe that was added as a preventative measure in the event the rich text component encountered a cursor start value greater than a 32-bit integer. That seems highly unlikely as I think about it now.

Keeping the change in the ordered list settings would prevent issues with 32-bit devices and I don't suspect it would be a problem for folks with 64-bit devices. I doubt preventing someone from starting an ordered list at 2147483648 would cause frustration.

@twstokes
Copy link
Contributor

Thanks for reviewing @twstokes !

While looking into the typing jitter issue you found I noticed that the original issue might be resolved without these changes ?

I wonder if it has to do with the upgrade to Android 12 ? I've upgraded my OS from Android 12 to 13 but it's the same device that I used to test the original issue ( I have pixel 6 that supports 64 bit ). Now the behavior looks fine, no more crashing and overflows reset to 1 ( same as how Gutenberg Web handles overflows. )

I failed to bring this up and noticed that as well in my testing. Same scenario - the physical device is the same but it's since been upgraded from 12 to 13.

I'm not sure we need these changes but could be a problem with folks using 32 bit devices. I did revert the change to the rich text component that I suspect was causing the issue you were seeing. I believe that was added as a preventative measure in the event the rich text component encountered a cursor start value greater than a 32-bit integer. That seems highly unlikely as I think about it now.

Keeping the change in the ordered list settings would prevent issues with 32-bit devices and I don't suspect it would be a problem for folks with 64-bit devices. I doubt preventing someone from starting an ordered list at 2147483648 would cause frustration.

Yeah, the number we support is quite unrealistic IMO.

Do you propose we keep things as is? I'd at least like to test on an Android 12 device and see if we can still cause a crash. If so, it feels like a responsible thing to do here is to sanitize input to prevent crashing. What are your thoughts?

@jhnstn
Copy link
Contributor Author

jhnstn commented Mar 10, 2023

Do you propose we keep things as is? I'd at least like to test on an Android 12 device and see if we can still cause a crash. If so, it feels like a responsible thing to do here is to sanitize input to prevent crashing. What are your thoughts?

I agree on testing for crashes on older versions of Android. I don't have a physical device but I try on an emulator. I think if it's still crashing on older OSs then I think we should ship the change to the ordered list. I don't think we need the change to the rich text component ( which has already been reverted in be5a839 )

@jhnstn
Copy link
Contributor Author

jhnstn commented Mar 10, 2023

Ok, I just tested on a emulated pixel 3 running Android 11, no crashes. I think it's safe to abandon these changes.

@twstokes
Copy link
Contributor

Ok, I just tested on a emulated pixel 3 running Android 11, no crashes. I think it's safe to abandon these changes.

Very nice! 🥳

@jhnstn jhnstn closed this Mar 13, 2023
@jhnstn jhnstn deleted the fix/large-start-list branch March 17, 2023 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants