[webkit-changes] [WebKit/WebKit] 624a3d: Limit size of target string in serialized session ...

bnham noreply at github.com
Tue Jan 30 21:35:37 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 624a3d6250ec7342a98c1c213283d442573ebda1
      https://github.com/WebKit/WebKit/commit/624a3d6250ec7342a98c1c213283d442573ebda1
  Author: Ben Nham <nham at apple.com>
  Date:   2024-01-30 (Tue, 30 Jan 2024)

  Changed paths:
    M Source/WebKit/UIProcess/mac/LegacySessionStateCoding.cpp

  Log Message:
  -----------
  Limit size of target string in serialized session state
https://bugs.webkit.org/show_bug.cgi?id=268410
rdar://120213426

Reviewed by Brady Eidson.

We've seen some MobileSafari launches that take a long time during session restoration because the
_WKSessionState object contains a back/forward list item with an absurdly large target string (like
>500KB in size).

To fix this, we are going to:

- Arbitrarily limit the size of the persisted target string in the session state to 32KB (or 16K
  characters).
- Tweak our session state data limit policy. Previously, if an item caused us to trip over the data
  limit, we would still serialize that potentially huge item but then avoid serializing any
  subsequent item. Now, we also avoid serializing the potentially huge item that caused us to trip
  over the data limit.
- The first item is still exempted from the data limit on the presumption that we want session
  restoration of that item to have the maximum chance of success (e.g. in the case of a frontmost
  jetsam, we want that the first item in the restored tab to come back with as much state as
  possible).

* Source/WebKit/UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::encodeFrameStateNode):
(WebKit::encodeSessionHistory):

Canonical link: https://commits.webkit.org/273810@main




More information about the webkit-changes mailing list