| // Copyright 2025 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_BROWSER_RENDERER_HOST_COOKIE_ACCESS_OBSERVERS_H_ |
| #define CONTENT_BROWSER_RENDERER_HOST_COOKIE_ACCESS_OBSERVERS_H_ |
| |
| #include "content/common/content_export.h" |
| #include "content/public/browser/cookie_access_details.h" |
| #include "mojo/public/cpp/bindings/receiver_set.h" |
| #include "services/network/public/mojom/cookie_access_observer.mojom-forward.h" |
| #include "services/network/public/mojom/cookie_access_observer.mojom.h" |
| |
| namespace content { |
| |
| // A thin wrapper around ReceiverSet that inherits from |
| // mojom::CookieAccessObserver. Directly subclassing mojom::CookieAccessObserver |
| // would force classes to have a public OnCookiesAccessed() method that doesn't |
| // take a CookieAccessDetails::Source, and we don't want to expose that. If |
| // other classes call OnCookiesAccessed() they need to pass a Source. |
| class CONTENT_EXPORT CookieAccessObservers |
| : public network::mojom::CookieAccessObserver { |
| public: |
| using NotifyCookiesAccessedCallback = base::RepeatingCallback<void( |
| std::vector<network::mojom::CookieAccessDetailsPtr>, |
| CookieAccessDetails::Source)>; |
| |
| explicit CookieAccessObservers(NotifyCookiesAccessedCallback callback); |
| |
| CookieAccessObservers(const CookieAccessObservers&) = delete; |
| CookieAccessObservers& operator=(const CookieAccessObservers&) = delete; |
| |
| ~CookieAccessObservers() override; |
| |
| virtual void Add( |
| mojo::PendingReceiver<network::mojom::CookieAccessObserver> receiver, |
| CookieAccessDetails::Source source); |
| |
| using PendingObserversWithContext = std::vector< |
| std::pair<mojo::PendingReceiver<network::mojom::CookieAccessObserver>, |
| CookieAccessDetails::Source>>; |
| virtual PendingObserversWithContext TakeReceiversWithContext(); |
| |
| // network::mojom::CookieAccessObserver |
| void OnCookiesAccessed(std::vector<network::mojom::CookieAccessDetailsPtr> |
| details_vector) override; |
| void Clone(mojo::PendingReceiver<network::mojom::CookieAccessObserver> |
| observer) override; |
| |
| private: |
| NotifyCookiesAccessedCallback callback_; |
| |
| mojo::ReceiverSet<network::mojom::CookieAccessObserver, |
| CookieAccessDetails::Source> |
| cookie_observer_set_; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_BROWSER_RENDERER_HOST_COOKIE_ACCESS_OBSERVERS_H_ |