Skip to content

Commit

Permalink
fix: reject task append to JumpList when description exceeds 260 char…
Browse files Browse the repository at this point in the history
…acters (#28524)

* fix: reject task when description exceeds 260 characters

* Switched out wcslen() for size() [linear -> constant time]

* Included comment describing the need for the additional check

* Added information about character limit to documentation

* Added newline character to end of jump-list-category.md

Co-authored-by: SushiJackal <weingaben@gmail.com>
  • Loading branch information
trop[bot] and HiMyNameIsBennet committed Apr 6, 2021
1 parent 0ae6039 commit 932aef2
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 1 deletion.
4 changes: 4 additions & 0 deletions docs/api/app.md
Original file line number Diff line number Diff line change
Expand Up @@ -924,6 +924,10 @@ re-add a removed item to a custom category earlier than that will result in the
entire custom category being omitted from the Jump List. The list of removed
items can be obtained using `app.getJumpListSettings()`.

**Note:** The maximum length of a Jump List item's `description` property is
260 characters. Beyond this limit, the item will not be added to the Jump
List, nor will it be displayed.

Here's a very simple example of creating a custom Jump List:

```javascript
Expand Down
4 changes: 4 additions & 0 deletions docs/api/structures/jump-list-category.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,7 @@
property set then its `type` is assumed to be `tasks`. If the `name` property
is set but the `type` property is omitted then the `type` is assumed to be
`custom`.

**Note:** The maximum length of a Jump List item's `description` property is
260 characters. Beyond this limit, the item will not be added to the Jump
List, nor will it be displayed.
2 changes: 1 addition & 1 deletion docs/api/structures/jump-list-item.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* `title` String (optional) - The text to be displayed for the item in the Jump List.
Should only be set if `type` is `task`.
* `description` String (optional) - Description of the task (displayed in a tooltip).
Should only be set if `type` is `task`.
Should only be set if `type` is `task`. Maximum length 260 characters.
* `iconPath` String (optional) - The absolute path to an icon to be displayed in a
Jump List, which can be an arbitrary resource file that contains an icon
(e.g. `.ico`, `.exe`, `.dll`). You can usually specify `process.execPath` to
Expand Down
7 changes: 7 additions & 0 deletions shell/browser/ui/win/jump_list.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@ bool AppendTask(const JumpListItem& item, IObjectCollection* collection) {
FAILED(link->SetDescription(item.description.c_str())))
return false;

// SetDescription limits the size of the parameter to INFOTIPSIZE (1024),
// which suggests rejection when exceeding that limit, but experimentation
// has shown that descriptions longer than 260 characters cause a silent
// failure, despite SetDescription returning the success code S_OK.
if (item.description.size() > 260)
return false;

if (!item.icon_path.empty() &&
FAILED(link->SetIconLocation(item.icon_path.value().c_str(),
item.icon_index)))
Expand Down

0 comments on commit 932aef2

Please sign in to comment.