// Copyright 2023 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_ISOLATED_WORLD_MANAGER_H_ #define EXTENSIONS_RENDERER_ISOLATED_WORLD_MANAGER_H_ #include <map> #include <optional> #include <string> #include "base/sequence_checker.h" #include "extensions/common/mojom/execution_world.mojom.h" #include "url/gurl.h" class InjectionHost; namespace extensions { // A class responsible for managing the creation and maintenance of isolated // worlds related to extensions APIs. // // There is a single instance of this class (per renderer), retrieved via // `IsolatedWorldManager::GetInstance()`. // // This class is *not* thread-safe and is only designed to be accessed from the // main renderer thread; this is not an issue because all // script-injection-related functionality happens on the main thread (e.g., // there is no situation in which an extension service worker directly accesses // isolated worlds). // // A note on Host IDs: Host IDs are unique identifiers for the entity causing // the injection. This is *usually* an extension, but can also be WebUI in the // case of WebUI injecting into an embedded <webview>. The Host ID for an // extension is the extension's ID. class IsolatedWorldManager { … }; } // namespace extensions #endif // EXTENSIONS_RENDERER_ISOLATED_WORLD_MANAGER_H_