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

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

Issue 2690943002: Revert of binding: Changes the association among global-proxy/global/window-instance. (Closed)
Patch Set: Created 3 years, 10 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
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 2f6db85055108ee4785b83fea0230388f30a7ddf..fdbaa431aa9c2ce9b513e25cc71a0e5f398814ad 100644
--- a/third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h
+++ b/third_party/WebKit/Source/bindings/core/v8/DOMWrapperWorld.h
@@ -43,7 +43,6 @@
namespace blink {
class DOMDataStore;
-class DOMObjectHolderBase;
enum WorldIdConstants {
MainWorldId = 0,
@@ -54,6 +53,8 @@
WorkerWorldId,
TestingWorldId,
};
+
+class DOMObjectHolderBase;
// This class represent a collection of DOM wrappers for a specific world.
class CORE_EXPORT DOMWrapperWorld : public RefCounted<DOMWrapperWorld> {
@@ -113,6 +114,7 @@
int worldId() const { return m_worldId; }
DOMDataStore& domDataStore() const { return *m_domDataStore; }
+ public:
template <typename T>
void registerDOMObjectHolder(v8::Isolate*, T*, v8::Local<v8::Value>);
@@ -124,29 +126,6 @@
void registerDOMObjectHolderInternal(std::unique_ptr<DOMObjectHolderBase>);
void unregisterDOMObjectHolder(DOMObjectHolderBase*);
- // Dissociates all wrappers in all worlds associated with |scriptWrappable|.
- //
- // Do not use this function except for DOMWindow. Only DOMWindow needs to
- // dissociate wrappers from the ScriptWrappable because of the following two
- // reasons.
- //
- // Reason 1) Case of the main world
- // A DOMWindow may be collected by Blink GC *before* V8 GC collects the
- // wrapper because the wrapper object associated with a DOMWindow is a global
- // proxy object, which remains after navigations. We don't want V8 GC
- // to reset the weak persistent handle within the DOMWindow *after* Blink GC
- // collects the DOMWindow because it's use-after-free. Thus, we need to
- // dissociate the wrapper in advance.
- //
- // Reason 2) Case of isolated worlds
- // As same, a DOMWindow may be collected before the wrapper gets collected.
- // A DOMWrapperMap supports mapping from ScriptWrappable* to v8::Global<T>,
- // and we don't want to leave an entry of an already-dead DOMWindow* to the
- // persistent handle for the global proxy object, especially considering that
- // the address to the already-dead DOMWindow* may be re-used.
- friend class DOMWindow;
- static void dissociateDOMWindowWrappersInAllWorlds(ScriptWrappable*);
-
static unsigned isolatedWorldCount;
const int m_worldId;

Powered by Google App Engine
This is Rietveld 408576698