#include "components/js_injection/browser/js_communication_host.h"
#include "base/functional/bind.h"
#include "base/functional/function_ref.h"
#include "base/strings/utf_string_conversions.h"
#include "components/js_injection/browser/js_to_browser_messaging.h"
#include "components/js_injection/browser/navigation_web_message_sender.h"
#include "components/js_injection/browser/web_message_host.h"
#include "components/js_injection/browser/web_message_host_factory.h"
#include "components/js_injection/common/origin_matcher.h"
#include "components/js_injection/common/origin_matcher_mojom_traits.h"
#include "content/public/browser/back_forward_cache.h"
#include "content/public/browser/page.h"
#include "content/public/browser/web_contents.h"
#include "mojo/public/cpp/bindings/pending_associated_remote.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h"
namespace js_injection {
namespace {
std::string ConvertToNativeAllowedOriginRulesWithSanityCheck(
const std::vector<std::string>& allowed_origin_rules_strings,
OriginMatcher& allowed_origin_rules) { … }
void ForEachRenderFrameHostWithinSameWebContents(
content::RenderFrameHost* render_frame_host,
base::FunctionRef<void(content::RenderFrameHost*)> func_ref) { … }
}
struct JsObject { … };
DocumentStartJavaScript::DocumentStartJavaScript(
std::u16string script,
OriginMatcher allowed_origin_rules,
int32_t script_id)
: … { … }
JsCommunicationHost::AddScriptResult::AddScriptResult() = default;
JsCommunicationHost::AddScriptResult::AddScriptResult(
const JsCommunicationHost::AddScriptResult&) = default;
JsCommunicationHost::AddScriptResult&
JsCommunicationHost::AddScriptResult::operator=(
const JsCommunicationHost::AddScriptResult&) = default;
JsCommunicationHost::AddScriptResult::~AddScriptResult() = default;
class JsCommunicationHost::JsToBrowserMessagingList
: public mojom::JsObjectsClient { … };
JsCommunicationHost::JsCommunicationHost(content::WebContents* web_contents)
: … { … }
JsCommunicationHost::~JsCommunicationHost() = default;
JsCommunicationHost::AddScriptResult
JsCommunicationHost::AddDocumentStartJavaScript(
const std::u16string& script,
const std::vector<std::string>& allowed_origin_rules) { … }
bool JsCommunicationHost::RemoveDocumentStartJavaScript(int script_id) { … }
const std::vector<DocumentStartJavaScript>&
JsCommunicationHost::GetDocumentStartJavascripts() const { … }
std::u16string JsCommunicationHost::AddWebMessageHostFactory(
std::unique_ptr<WebMessageHostFactory> factory,
const std::u16string& js_object_name,
const std::vector<std::string>& allowed_origin_rules) { … }
void JsCommunicationHost::RemoveWebMessageHostFactory(
const std::u16string& js_object_name) { … }
std::vector<JsCommunicationHost::RegisteredFactory>
JsCommunicationHost::GetWebMessageHostFactories() { … }
void JsCommunicationHost::RenderFrameCreated(
content::RenderFrameHost* render_frame_host) { … }
void JsCommunicationHost::RenderFrameDeleted(
content::RenderFrameHost* render_frame_host) { … }
void JsCommunicationHost::RenderFrameHostStateChanged(
content::RenderFrameHost* render_frame_host,
content::RenderFrameHost::LifecycleState old_state,
content::RenderFrameHost::LifecycleState new_state) { … }
void JsCommunicationHost::NotifyFrameForAllDocumentStartJavaScripts(
content::RenderFrameHost* render_frame_host) { … }
void JsCommunicationHost::NotifyFrameForWebMessageListener(
content::RenderFrameHost* render_frame_host) { … }
void JsCommunicationHost::PrimaryPageChanged(content::Page& page) { … }
void JsCommunicationHost::NotifyFrameForAddDocumentStartJavaScript(
const DocumentStartJavaScript* script,
content::RenderFrameHost* render_frame_host) { … }
void JsCommunicationHost::NotifyFrameForRemoveDocumentStartJavaScript(
int32_t script_id,
content::RenderFrameHost* render_frame_host) { … }
}