Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fe7e1f64e14ecf2830f1a88c03276cbf25821cbf
      
https://github.com/WebKit/WebKit/commit/fe7e1f64e14ecf2830f1a88c03276cbf25821cbf
  Author: Timothy Hatcher <timo...@apple.com>
  Date:   2024-04-02 (Tue, 02 Apr 2024)

  Changed paths:
    M Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm

  Log Message:
  -----------
  Web Extension objects should return the same JS wrapper (Bitwarden popup 
never loads).
https://webkit.org/b/272006
rdar://125633239

Reviewed by Brian Weinstein.

Make a cache per global context that we use to return the same wrapper for the 
JSWebExtensionWrappable
objects, that way equality checks in JavaScript will succeed.

This was breaking Bitwarden because they are doing a switch on the storage 
objects to get the
name, and since equality wasn't true, the switch would fail.

    switch (e) {
    case chrome.storage.local:
        return "local";
    case chrome.storage.sync:
        return "sync";
    case chrome.storage.session:
        return "session";
    default:
        throw new Error("Unknown storage location")
    }

* Source/WebKit/WebProcess/Extensions/Bindings/JSWebExtensionWrapper.cpp:
(WebKit::wrapperCache): Added.
(WebKit::cacheMapDestroyed): Added.
(WebKit::wrapperCacheMap): Added.
(WebKit::getCachedWrapper): Added.
(WebKit::JSWebExtensionWrapper::wrap): Lookup and add the wrapper to the cache.
(WebKit::JSWebExtensionWrapper::finalize): Set private to nullptr.
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebExtensionAPINamespace.mm:
(TestWebKitAPI::TEST(WKWebExtensionAPINamespace, ObjectEquality)):

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to