Testing locally, event.source seems always to be null when using Broadcast
Channel. This seems to align with the spec which doesn't mention setting
source at all for the MessageEvent:
https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts
and the chrome code which doesn't set it:
https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/modules/broadcastchannel/broadcast_channel.cc;drc=8e78783dc1f7007bad46d657c9f332614e240fd8;l=173

It looks like storing the ArrayBuffer as a Blob (
https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL_static)
and sharing the resulting URL via BroadcastChannel or other means may work,
but I'm unsure about the efficiency of such an approach.

~ Ari Chivukula (Their/There/They're)


On Tue, Nov 28, 2023 at 5:35 PM Jesper van den Ende <jesperthe...@gmail.com>
wrote:

> Awesome, thanks for the info!
>
> A broadcast channel doesn't work for my use case unfortunately.
> I'd like to create a MessageChannel
> <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel> and
> then transfer the two MessagePorts to both tabs.
> Since a broadcast channel doesn't allow transferring objects
> <https://github.com/whatwg/html/issues/7088#issuecomment-922529073>,
> there's no way for me to send messages to both tabs without it also being
> sent to all other tabs.
> And with no way to transfer things such as ArrayBuffers, I reckon this
> would also be pretty inefficient for some operations.
> But maybe I'm missing something? One thing that comes to mind is using the
> MessageEvent.source to get access to the window of another tab and then
> send a message to it directly. But I'm not sure if that would work.
>
> On Tuesday, November 28, 2023 at 10:44:54 PM UTC+1 Ari Chivukula wrote:
>
>> Thanks for letting us know about your use case. Yes, Chrome has decided
>> not to pursue Shared Worker access via the handle returned by
>> requestStorageAccess given it would allow access to SameSite=Strict cookies
>> to a third-party iframe via that shared worker. We are examining an
>> alternate option where requestStorageAccess will be available in workers:
>> https://github.com/privacycg/storage-access/issues/157
>>
>> Either way, this change will probably require switching from using a
>> (shared) Shared Worker for tab discovery to something like Broadcast
>> Channel
>> <https://developer.mozilla.org/en-US/docs/Web/API/Broadcast_Channel_API>which
>> would allow for cross-tab messaging without the need to be online.
>>
>> ~ Ari Chivukula (Their/There/They're)
>>
>>
>> On Tue, Nov 28, 2023 at 4:35 PM Jesper van den Ende <jesper...@gmail.com>
>> wrote:
>>
>>> Hi all,
>>>
>>> I noticed the TODOs for shared workers were removed.
>>> My application relies on cross origin shared workers and to be honest
>>> this was the main part of the proposal I was looking forward to haha.
>>> I'm currently relying on the origin trial for disabling third party
>>> storage partitioning.
>>> Are there any plans for the shared worker use case? I'm not sure what to
>>> do once the origin trial expires. And as far as I can tell there is no good
>>> alternative for what I'm trying to achieve.
>>> Specifically, I'd like to be able to discover other tabs (that are also
>>> broadcasting their existence using the same shared worker) and then
>>> initiate a connection to them.
>>> One alternative I could think of was using WebRTC for this, but ideally
>>> I'd like this to work while the user is offline, which is not possible with
>>> WebRTC.
>>>
>>> Is there any discussion about the plan to remove shared workers from the
>>> proposal? I couldn't find anything about SameSite=Strict cookies anywhere
>>> other than the commit that removed the TODOs.
>>>
>>> Cheers,
>>> Jesper
>>>
>> On Monday, October 2, 2023 at 3:44:05 PM UTC+2 Ari Chivukula wrote:
>>>
>>>> Contact emails
>>>>
>>>> ari...@chromium.org, wande...@chromium.org, joha...@chromium.org,
>>>> hel...@google.com
>>>>
>>>> Specification
>>>>
>>>> https://arichiv.github.io/saa-non-cookie-storage/
>>>>
>>>> Summary
>>>>
>>>> We propose an extension of the Storage Access API
>>>> <https://webkit.org/blog/8124/introducing-storage-access-api/>
>>>> (backwards compatible) to allow access to unpartitioned (cookie and
>>>> non-cookie) storage in a third-party context, and imagine the API mechanics
>>>> to be roughly like this (JS running in an embedded iframe):
>>>>
>>>>
>>>> // Request a new storage handle via rSA (this should prompt the user)
>>>>
>>>> let handle = await document.requestStorageAccess({all: true});
>>>>
>>>> // Write some cross-site localstorage
>>>>
>>>> handle.localStorage.setItem("userid", "1234");
>>>>
>>>> // Open or create an indexedDB that is shared with the 1P context
>>>>
>>>> let messageDB = handle.defaultBucket.indexedDB.open("messages");
>>>>
>>>>
>>>> The same flow would be used by iframes to get a storage handle when
>>>> their top-level ancestor successfully called rSAFor
>>>> <https://github.com/privacycg/requestStorageAccessFor>, just that in
>>>> this case the storage-access permission was already granted and thus the
>>>> rSA call would not require a user gesture or show a prompt, allowing for
>>>> “hidden” iframes accessing storage.
>>>>
>>>>
>>>> Browsers currently shipping the Storage Access API apply varying
>>>> methods of when or how to ask the user for permission to grant 3p cookie
>>>> access to a site. Given that this proposal involves extending the existing
>>>> Storage Access API, while maintaining largely the same implications (from a
>>>> privacy/security perspective) to the user, a consistent prompt for cookie
>>>> and non-cookie access is preferred. No prompt is needed when the origins
>>>> are RWS (Related Website Sets, the new name for First Party Sets).
>>>>
>>>>
>>>> Blink component
>>>>
>>>> Blink>Storage
>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EStorage>
>>>>
>>>>
>>>> Motivation
>>>>
>>>> There has been increasing developer
>>>> <https://github.com/GoogleChromeLabs/privacy-sandbox-dev-support/issues/124>
>>>> and implementer
>>>> <https://github.com/privacycg/storage-access/issues/102> interest in
>>>> first-party DOM Storage
>>>> <https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API> and 
>>>> Quota
>>>> Managed Storage
>>>> <https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API> being
>>>> available in third-party contexts the same way that Cookies already
>>>> can be <https://github.com/privacycg/storage-access>. In the absence
>>>> of such a solution, we would in effect be pushing developers to migrate to
>>>> Cookies from other storage mechanisms. There are significant tradeoffs
>>>> between Cookie and non-Cookie storage (size, flexibility, server exposure,
>>>> network request size, etc.) that could cause a detriment in user experience
>>>> from a privacy, security and performance perspective. To prevent
>>>> sub-optimal use of cookies and to preserve context, we propose a solution
>>>> for developers to regain 3p access to unpartitioned storage in select
>>>> instances to avoid user-facing breakage in browsers shipping storage
>>>> partitioning.
>>>>
>>>> TAG review
>>>>
>>>> https://github.com/w3ctag/design-reviews/issues/906
>>>>
>>>> Compatibility
>>>>
>>>> The Storage Access API is already implemented in Safari, Firefox, and
>>>> Chrome <https://caniuse.com/mdn-api_document_requeststorageaccess>,
>>>> but the proposed API shape would not change existing behavior without new
>>>> arguments added.
>>>>
>>>>
>>>> Interoperability
>>>>
>>>> Gecko: https://github.com/mozilla/standards-positions/issues/898
>>>>
>>>> WebKit: https://github.com/WebKit/standards-positions/issues/262
>>>>
>>>> Web developers: Positive
>>>> <https://github.com/GoogleChromeLabs/privacy-sandbox-dev-support/issues/124>
>>>>
>>>> Debuggability
>>>>
>>>> Storage written can be examined in devtools.
>>>>
>>>> Is this feature fully tested by web-platform-tests?
>>>>
>>>> Tests will be added.
>>>>
>>>> Tracking bug
>>>>
>>>> https://crbug.com/1484966
>>>>
>>>> Link to entry on the Chrome Platform Status
>>>>
>>>> https://chromestatus.com/feature/5175585823522816
>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGpy5DLOowybXAEK_PHrMs-1M_nmC9b_k9eu3e4-nG2rKOEemg%40mail.gmail.com.

Reply via email to