Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(602)

Unified Diff: third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h

Issue 2735973006: Bindings: Separate WorldIdConstants into WorldTypes and WorldId (Closed)
Patch Set: rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h
diff --git a/third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h b/third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h
index fa016a0520c313ce81bc4c0c4edefa97f843ffcd..fefb76de14bc9e01517963b239412b481cb2cb22 100644
--- a/third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h
+++ b/third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h
@@ -44,24 +44,44 @@
namespace blink {
class DOMDataStore;
-
-enum WorldIdConstants {
- MainWorldId = 0,
- // Embedder isolated worlds can use IDs in [1, 1<<29).
- EmbedderWorldIdLimit = (1 << 29),
- DocumentXMLTreeViewerWorldId,
- IsolatedWorldIdLimit,
- WorkerWorldId,
- TestingWorldId,
-};
-
class DOMObjectHolderBase;
-// This class represent a collection of DOM wrappers for a specific world.
+// This class represent a collection of DOM wrappers for a specific world. This
+// is identified by a world id that is a per-thread global identifier (see
+// WorldId enum).
class CORE_EXPORT DOMWrapperWorld : public RefCounted<DOMWrapperWorld> {
public:
- static PassRefPtr<DOMWrapperWorld> create(v8::Isolate*, int worldId = -1);
-
+ // Per-thread global identifiers for DOMWrapperWorld.
+ enum WorldId {
+ InvalidWorldId = -1,
+ MainWorldId = 0,
+
+ // Embedder isolated worlds can use IDs in [1, 1<<29).
+ EmbedderWorldIdLimit = (1 << 29),
+ DocumentXMLTreeViewerWorldId,
+ IsolatedWorldIdLimit,
+
+ // TODO(nhiroki): Dynamically allocate a world id for the following worlds
+ // instead of a fixed value (https://crbug.com/697622).
+ GarbageCollectorWorldId,
+ RegExpWorldId,
+ TestingWorldId,
+ WorkerWorldId,
+ };
+
+ enum class WorldType {
+ Main,
+ Isolated,
+ GarbageCollector,
+ RegExp,
+ Testing,
+ Worker,
+ };
+
+ // Creates a world other than IsolatedWorld.
+ static PassRefPtr<DOMWrapperWorld> create(v8::Isolate*, WorldType);
+
+ // Ensures an IsolatedWorld for |worldId|.
static PassRefPtr<DOMWrapperWorld> ensureIsolatedWorld(v8::Isolate*,
int worldId);
~DOMWrapperWorld();
@@ -108,11 +128,9 @@ class CORE_EXPORT DOMWrapperWorld : public RefCounted<DOMWrapperWorld> {
const String& policy);
bool isolatedWorldHasContentSecurityPolicy();
- bool isMainWorld() const { return m_worldId == MainWorldId; }
- bool isWorkerWorld() const { return m_worldId == WorkerWorldId; }
- bool isIsolatedWorld() const {
- return MainWorldId < m_worldId && m_worldId < IsolatedWorldIdLimit;
- }
+ bool isMainWorld() const { return m_worldType == WorldType::Main; }
+ bool isWorkerWorld() const { return m_worldType == WorldType::Worker; }
+ bool isIsolatedWorld() const { return m_worldType == WorldType::Isolated; }
int worldId() const { return m_worldId; }
DOMDataStore& domDataStore() const { return *m_domDataStore; }
@@ -122,7 +140,7 @@ class CORE_EXPORT DOMWrapperWorld : public RefCounted<DOMWrapperWorld> {
void registerDOMObjectHolder(v8::Isolate*, T*, v8::Local<v8::Value>);
private:
- DOMWrapperWorld(v8::Isolate*, int worldId);
+ DOMWrapperWorld(v8::Isolate*, WorldType, int worldId);
static void weakCallbackForDOMObjectHolder(
const v8::WeakCallbackInfo<DOMObjectHolderBase>&);
@@ -131,6 +149,12 @@ class CORE_EXPORT DOMWrapperWorld : public RefCounted<DOMWrapperWorld> {
static unsigned s_numberOfNonMainWorldsInMainThread;
+ // Returns an identifier for a given world type. This must not call for
+ // WorldType::IsolatedWorld because an identifier for the world is given from
+ // out of DOMWrapperWorld.
+ static int getWorldIdForType(WorldType);
+
+ const WorldType m_worldType;
const int m_worldId;
std::unique_ptr<DOMDataStore> m_domDataStore;
HashSet<std::unique_ptr<DOMObjectHolderBase>> m_domObjectHolders;
« no previous file with comments | « no previous file | third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698