-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Shared Storage: Add methods to DevTools for deleting entries.
The standard DevTools Frontend storage items view has buttons to delete all entries and to delete selected entries. Thus, in order to have a similar interface for the Shared Storage items view, we need to add methods that hook into `SharedStorageManager::Clear()` and `SharedStorageManager::Delete()`. Bug: 1372007,1218540 Change-Id: Ie92efd58a31d8332077b6f54d16a2fcb9aedc0d7 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3991337 Reviewed-by: Danil Somsikov <dsv@chromium.org> Reviewed-by: Andrey Kosyakov <caseq@chromium.org> Reviewed-by: Philip Rogers <pdr@chromium.org> Commit-Queue: Cammie Smith Barnes <cammie@chromium.org> Cr-Commit-Position: refs/heads/main@{#1067323}
- Loading branch information
1 parent
cc36d28
commit f659a28
Showing
9 changed files
with
352 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 2 additions & 0 deletions
2
.../blink/web_tests/http/tests/inspector-protocol/storage/shared-storage-delete-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Tests shared storage item deletion & clearing via devtools. | ||
|
80 changes: 80 additions & 0 deletions
80
third_party/blink/web_tests/http/tests/inspector-protocol/storage/shared-storage-delete.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
(async function(testRunner) { | ||
const {dp, session, page} = await testRunner.startBlank( | ||
`Tests shared storage item deletion & clearing via devtools.`); | ||
|
||
if (typeof self.sharedStorage === 'undefined') { | ||
testRunner.completeTest(); | ||
return; | ||
} | ||
|
||
const baseOrigin = 'http://127.0.0.1:8000/'; | ||
|
||
async function getSharedStorageMetadata(dp, testRunner, origin) { | ||
const data = | ||
await dp.Storage.getSharedStorageMetadata({ownerOrigin: origin}); | ||
testRunner.log(data.result?.metadata, 'Metadata: ', ['creationTime']); | ||
} | ||
|
||
async function getSharedStorageEntries(dp, testRunner, origin) { | ||
const entriesResult = | ||
await dp.Storage.getSharedStorageEntries({ownerOrigin: baseOrigin}); | ||
testRunner.log(entriesResult.result?.entries, 'Entries:'); | ||
} | ||
|
||
async function getSharedStorageEvents(testRunner, events) { | ||
testRunner.log(events, 'Events: ', ['accessTime', 'mainFrameId']); | ||
} | ||
|
||
const events = []; | ||
let totalEventsSoFar = 0; | ||
|
||
async function getPromiseForEventCount(numEvents) { | ||
totalEventsSoFar += numEvents; | ||
return dp.Storage.onceSharedStorageAccessed(messageObject => { | ||
events.push(messageObject.params); | ||
return (events.length === totalEventsSoFar); | ||
}); | ||
} | ||
|
||
await dp.Storage.setSharedStorageTracking({enable: true}); | ||
|
||
eventPromise = getPromiseForEventCount(4); | ||
|
||
// The following calls should trigger events if shared storage is enabled, as | ||
// tracking is now enabled. | ||
// | ||
// Generates 4 events. | ||
await session.evaluateAsync(` | ||
sharedStorage.set('key0-set-from-document', 'value0'); | ||
sharedStorage.set('key1-set-from-document', 'value1'); | ||
sharedStorage.append('key1-set-from-document', 'value1'); | ||
sharedStorage.set('key2-set-from-document', 'value2'); | ||
`); | ||
|
||
// We wait to ensure that metadata and entries are done updating before we | ||
// retrieve them. | ||
await eventPromise; | ||
|
||
await getSharedStorageMetadata(dp, testRunner, baseOrigin); | ||
await getSharedStorageEntries(dp, testRunner, baseOrigin); | ||
|
||
testRunner.log(`Delete an existing entry via devtools`); | ||
await dp.Storage.deleteSharedStorageEntry( | ||
{ownerOrigin: baseOrigin, key: 'key2-set-from-document'}); | ||
|
||
testRunner.log(`Delete a non-existing entry via devtools`); | ||
await dp.Storage.deleteSharedStorageEntry( | ||
{ownerOrigin: baseOrigin, key: 'key3-set-from-document'}); | ||
|
||
await getSharedStorageMetadata(dp, testRunner, baseOrigin); | ||
await getSharedStorageEntries(dp, testRunner, baseOrigin); | ||
|
||
testRunner.log(`Clear entries via devtools`); | ||
await dp.Storage.clearSharedStorageEntries({ownerOrigin: baseOrigin}); | ||
|
||
await getSharedStorageMetadata(dp, testRunner, baseOrigin); | ||
await getSharedStorageEntries(dp, testRunner, baseOrigin); | ||
await getSharedStorageEvents(testRunner, events); | ||
|
||
testRunner.completeTest(); | ||
}) |
88 changes: 88 additions & 0 deletions
88
...ced-frame-mparch/http/tests/inspector-protocol/storage/shared-storage-delete-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
Tests shared storage item deletion & clearing via devtools. | ||
Metadata: { | ||
creationTime : <number> | ||
length : 3 | ||
remainingBudget : 12 | ||
} | ||
Entries:[ | ||
[0] : { | ||
key : key0-set-from-document | ||
value : value0 | ||
} | ||
[1] : { | ||
key : key1-set-from-document | ||
value : value1value1 | ||
} | ||
[2] : { | ||
key : key2-set-from-document | ||
value : value2 | ||
} | ||
] | ||
Delete an existing entry via devtools | ||
Delete a non-existing entry via devtools | ||
Metadata: { | ||
creationTime : <number> | ||
length : 2 | ||
remainingBudget : 12 | ||
} | ||
Entries:[ | ||
[0] : { | ||
key : key0-set-from-document | ||
value : value0 | ||
} | ||
[1] : { | ||
key : key1-set-from-document | ||
value : value1value1 | ||
} | ||
] | ||
Clear entries via devtools | ||
Metadata: { | ||
creationTime : <number> | ||
length : 0 | ||
remainingBudget : 12 | ||
} | ||
Entries:[ | ||
] | ||
Events: [ | ||
[0] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key0-set-from-document | ||
value : value0 | ||
} | ||
type : documentSet | ||
} | ||
[1] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key1-set-from-document | ||
value : value1 | ||
} | ||
type : documentSet | ||
} | ||
[2] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key1-set-from-document | ||
value : value1 | ||
} | ||
type : documentAppend | ||
} | ||
[3] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key2-set-from-document | ||
value : value2 | ||
} | ||
type : documentSet | ||
} | ||
] | ||
|
88 changes: 88 additions & 0 deletions
88
...frame-shadow-dom/http/tests/inspector-protocol/storage/shared-storage-delete-expected.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
Tests shared storage item deletion & clearing via devtools. | ||
Metadata: { | ||
creationTime : <number> | ||
length : 3 | ||
remainingBudget : 12 | ||
} | ||
Entries:[ | ||
[0] : { | ||
key : key0-set-from-document | ||
value : value0 | ||
} | ||
[1] : { | ||
key : key1-set-from-document | ||
value : value1value1 | ||
} | ||
[2] : { | ||
key : key2-set-from-document | ||
value : value2 | ||
} | ||
] | ||
Delete an existing entry via devtools | ||
Delete a non-existing entry via devtools | ||
Metadata: { | ||
creationTime : <number> | ||
length : 2 | ||
remainingBudget : 12 | ||
} | ||
Entries:[ | ||
[0] : { | ||
key : key0-set-from-document | ||
value : value0 | ||
} | ||
[1] : { | ||
key : key1-set-from-document | ||
value : value1value1 | ||
} | ||
] | ||
Clear entries via devtools | ||
Metadata: { | ||
creationTime : <number> | ||
length : 0 | ||
remainingBudget : 12 | ||
} | ||
Entries:[ | ||
] | ||
Events: [ | ||
[0] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key0-set-from-document | ||
value : value0 | ||
} | ||
type : documentSet | ||
} | ||
[1] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key1-set-from-document | ||
value : value1 | ||
} | ||
type : documentSet | ||
} | ||
[2] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key1-set-from-document | ||
value : value1 | ||
} | ||
type : documentAppend | ||
} | ||
[3] : { | ||
accessTime : <number> | ||
mainFrameId : <string> | ||
ownerOrigin : http://127.0.0.1:8000 | ||
params : { | ||
key : key2-set-from-document | ||
value : value2 | ||
} | ||
type : documentSet | ||
} | ||
] | ||
|