[webkit-reviews] review denied: [Bug 195777] Web Inspector: provide a way to reset all settings : [Attachment 364754] Patch

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Mar 15 11:54:09 PDT 2019


Joseph Pecoraro <joepeck at webkit.org> has denied Devin Rousso
<drousso at apple.com>'s request for review:
Bug 195777: Web Inspector: provide a way to reset all settings
https://bugs.webkit.org/show_bug.cgi?id=195777

Attachment 364754: Patch

https://bugs.webkit.org/attachment.cgi?id=364754&action=review




--- Comment #6 from Joseph Pecoraro <joepeck at webkit.org> ---
Comment on attachment 364754
  --> https://bugs.webkit.org/attachment.cgi?id=364754
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=364754&action=review

> Source/WebInspectorUI/UserInterface/Views/SettingsTabContentView.js:281
> +			   for (let i = 0; i < window.localStorage.length; ++i)
{
> +			       let key = window.localStorage.key(i);
> +			       if (key.startsWith(prefix))
> +				   window.localStorage.removeItem(key);
> +			   }

Doesn't this miss every other item?

    localStorage.clear()
    localStorage.a = 1;
    localStorage.b = 2;
    localStorage.c = 3;

    for (let i = 0; i < window.localStorage.length; ++i) {
	let key = window.localStorage.key(i);
	window.localStorage.removeItem(key);
    }

    console.log(localStorage.length); // => 1

You are mutating the thing that you are iterating over.

A safer way would be to get a list of keys to remove and then remove them:

    localStorage.clear()
    localStorage.a = 1;
    localStorage.b = 2;
    localStorage.c = 3;

    let keysToRemove = [];
    for (let i = 0; i < window.localStorage.length; ++i) {
	let key = window.localStorage.key(i);
	keysToRemove.push(key)
    }

    for (let key of keysToRemove)
	window.localStorage.removeItem(key);

    console.log(localStorage.length); // => 0


More information about the webkit-reviews mailing list