Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4590ce7d98b4a3761aba90e33a04c73fa51c37ca
      
https://github.com/WebKit/WebKit/commit/4590ce7d98b4a3761aba90e33a04c73fa51c37ca
  Author: Sihui Liu <sihui_...@apple.com>
  Date:   2023-01-30 (Mon, 30 Jan 2023)

  Changed paths:
    M LayoutTests/platform/ios/TestExpectations
    M Source/WebKit/NetworkProcess/storage/SQLiteStorageArea.cpp

  Log Message:
  -----------
  REGRESSION (256863@main): [ iOS ] 
imported/w3c/web-platform-tests/webstorage/storage_local_window_open.window.html
 is a consistent timeout
https://bugs.webkit.org/show_bug.cgi?id=250922
rdar://104498135

Reviewed by Chris Dumez.

Currently quota check of LocalStorage is performed in both web process 
(StorageAreaMap) and network process
(SQLiteStorageArea). Web process only sends a setting item request to network 
process when the local quota check passes.
The issue they calculate usage differently: web process calculates usage based 
on size of string (WebCore::StorageMap)
and network process uses database file size. Also network process stores 
upconverted characters in database
(SQLiteStorageArea stores value as blob and SQLiteStatement::bindBlob 
upconverts characters). The result is web process
may send more requests to network process than it is supposed to.

For example, in the failing test, web process can send about 5000 setItem 
requests to network process, and network
process will start return error after finishing about 2500 requests. Since 
256863@main, network process will include all
stored items in the request reply when a request fails, so that web process can 
sync its local cache and two processes
have a consistent view of data. The reason the test starts to fail is reading 
all items takes time, and there are too
many failed requests.

To fix this issue, this patch increases database size limit to 10MB (double of 
quota), which should make quota check
results in different processes to be more closer.

* LayoutTests/platform/ios/TestExpectations:
* Source/WebKit/NetworkProcess/storage/SQLiteStorageArea.cpp:
(WebKit::SQLiteStorageArea::prepareDatabase):

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to