
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}
48 lines
1.5 KiB
C++
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_
|