// Copyright 2024 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_JS_INJECTION_BROWSER_NAVIGATION_WEB_MESSAGE_SENDER_H_ #define COMPONENTS_JS_INJECTION_BROWSER_NAVIGATION_WEB_MESSAGE_SENDER_H_ #include <string> #include "base/values.h" #include "content/public/browser/page_user_data.h" #include "content/public/browser/web_contents_observer.h" namespace content { class NavigationHandle; class Page; } // namespace content features // namespace features namespace js_injection { class EmptyReplyProxy; class WebMessageHost; class WebMessageHostFactory; struct WebMessage; // A special interceptor for "navigation listener" WebMessageListeners where // instead of establishing a connection with the renderer, a navigation observer // is created on the browser, to inject navigation-related notification // messages to the embedder. // // The NavigationWebMessageSender is 1:1 with Page, and navigation messages // related to a certain Page will be sent by the NavigationWebMessageSender // associated with that Page. // See https://crbug.com/332809183 on why this is needed. class NavigationWebMessageSender : public content::PageUserData<NavigationWebMessageSender>, public content::WebContentsObserver { … }; } // namespace js_injection #endif // COMPONENTS_JS_INJECTION_BROWSER_NAVIGATION_WEB_MESSAGE_SENDER_H_