| commit | 7fb3ea73f2dedcfdf1e65278203c5cd97463ebfb | [log] [tgz] |
|---|---|---|
| author | Samuel Huang <huangs@chromium.org> | Thu May 08 19:22:22 2025 |
| committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu May 08 19:22:22 2025 |
| tree | c628bd1ec0d5c2ccb76e193e49c444f1cd6d23af | |
| parent | 85a1e41b50cb8d7ee6b610722b33f76d6f1bf4b6 [diff] |
[MVT Customization] Improve Name and URL input validation.
This CL introduces additional validation to the Name and URL inputs for
Clank MVT Customization (context menu and "Edit / Add shortcut" dialog):
* Limit Name length to 50 characters.
* Enforced by EditText limit and truncation (on "Pin this shortcut"
and fallback-to-URL when empty Name field is given).
* Limit URL length to 2083 characters (matching traditional IE limit).
* Much less than UrlConstants.MAX_URL_CHARS = 2 MiB.
* Enforced by EditText limit and rejection (since truncating a URL
is unsound).
* Rejection: Includes hiding "Pin this shortcut" on Top Sites Tiles.
* Limit URL scheme with an allowlist.
* Currently: http, https, ftp, file, chrome, chrome-native.
* Note that e.g., chrome://flags or chrome-native://recent-tabs are
allowed!
* Specifically, block "javascript:" URLs to avoid potential exploits.
Details:
* SuggestionsConfig: Define MAX_CUSTOM_TILES_{NAME,URL}_LENGTH.
* TileUtils:
* Add formatCustomTileName() for fallback-to-URL and truncation.
* Add isValidCustomTileName() and isValidCustomTileUrl().
* Name truncation is applied at:
* CustomTileModificationDelegateImpl.convert() for
"Pin this shortcut".
* CustomTileEditMediator.onSave() for "Edit / Add shortcut" submit.
* Limiting Name and URL lengths:
* CustomTileEditView.onFinishInflate(): Programmatically enforce
(instead of changing dialog XML) so SuggestionsConfig constants can
be used.
* CustomTileModificationDelegateImpl.
{add,assign}CustomLinkAndUpdateOnSuccess(): Reject for both Name and
URL (assumes any Name truncation is done by caller).
* ContextMenuManager.shouldShowItem(): Test whether a Top Sites Tile's
URL passes isValidCustomTileUrl(), and shows / hides
"Pin this shortcut" item only if pass.
Testing:
* Add TileUtilsUnitTest with 3 tests.
Bug: 416506288, 388782412
Change-Id: Ia0d3e37461a0028a178d88d7d8adfcb567befc5c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6525307
Commit-Queue: Samuel Huang <huangs@chromium.org>
Reviewed-by: Calder Kitagawa <ckitagawa@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1457764}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.