blob: 6f2e5ed4776d72d87370ee7d123bbdf0edd76207 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// 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 <string>
#include "base/callback_forward.h"
namespace content {
class RenderFrame;
}
namespace extensions {
class ScriptContext;
// Iterable base class to iterate over a ScriptContextSet.
class ScriptContextSetIterable {
public:
// Synchronously runs |callback| with each ScriptContext that belongs to
// |extension_id| in |render_frame|.
//
// An empty |extension_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 std::string& extension_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 std::string& extension_id,
const base::RepeatingCallback<void(ScriptContext*)>& callback);
virtual ~ScriptContextSetIterable() {}
};
} // namespace extensions
#endif // EXTENSIONS_RENDERER_SCRIPT_CONTEXT_SET_ITERABLE_H_