0
Files
src/extensions/renderer/script_context_set_iterable.h
Chase Phillips 703c50d712 extensions: Update Extensions events to use HostID rather than Extension Id
This CL updates EventDispatcher, EventRouter, ScriptContext, and related
classes to create, pass, and consume a HostID rather than Extension Id.
In normal extension codepaths when an extension is present, the change
is a no-op. Some extensions APIs are used by WebView / Controlled Frame
owning contexts, however, and this change allows those events to be
correctly evaluated against the targeted contexts.

Bug: 1233993, b/315342874
Change-Id: I1c8d1a4f73369470f945a9f585924e953a8f8766
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5090744
Auto-Submit: Chase Phillips <cmp@chromium.org>
Commit-Queue: Chase Phillips <cmp@chromium.org>
Reviewed-by: Kevin McNee <mcnee@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1246664}
2024-01-12 21:10:09 +00:00

48 lines
1.5 KiB
C++

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_RENDERER_SCRIPT_CONTEXT_SET_ITERABLE_H_
#define EXTENSIONS_RENDERER_SCRIPT_CONTEXT_SET_ITERABLE_H_
#include "base/functional/callback_forward.h"
namespace content {
class RenderFrame;
} // namespace content
namespace extensions {
class ScriptContext;
namespace mojom {
class HostID;
} // namespace mojom
// Iterable base class to iterate over a ScriptContextSet.
class ScriptContextSetIterable {
public:
// Synchronously runs |callback| with each ScriptContext that belongs to
// |host_id| in |render_frame|.
//
// An empty |host_id.id| will match all extensions, and a null
// |render_frame| will match all render views, but try to use the inline
// variants of these methods instead.
virtual void ForEach(
const mojom::HostID& host_id,
content::RenderFrame* render_frame,
const base::RepeatingCallback<void(ScriptContext*)>& callback) = 0;
// ForEach which matches all extensions.
void ForEach(content::RenderFrame* render_frame,
const base::RepeatingCallback<void(ScriptContext*)>& callback);
// ForEach which matches all render views.
void ForEach(const mojom::HostID& host_id,
const base::RepeatingCallback<void(ScriptContext*)>& callback);
virtual ~ScriptContextSetIterable() {}
};
} // namespace extensions
#endif // EXTENSIONS_RENDERER_SCRIPT_CONTEXT_SET_ITERABLE_H_