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

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

Issue 2843603002: Move ScriptWrappable and dependencies to platform/bindings (Closed)
Patch Set: Rebase and try again Created 3 years, 8 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/V8PerIsolateData.h
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
index fd7bffaced51dc58b139144aa4b36bc4cd722f8f..7438b72f12029c54dbb9a6056838de5ca2285ae9 100644
--- a/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
+++ b/third_party/WebKit/Source/bindings/core/v8/V8PerIsolateData.h
@@ -23,253 +23,6 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef V8PerIsolateData_h
-#define V8PerIsolateData_h
-
-#include <memory>
-
-#include "bindings/core/v8/ScopedPersistent.h"
-#include "bindings/core/v8/ScriptState.h"
-#include "bindings/core/v8/ScriptWrappableVisitor.h"
-#include "bindings/core/v8/WrapperTypeInfo.h"
-#include "core/CoreExport.h"
-#include "gin/public/isolate_holder.h"
-#include "gin/public/v8_idle_task_runner.h"
-#include "platform/heap/Handle.h"
-#include "platform/wtf/HashMap.h"
-#include "platform/wtf/Noncopyable.h"
-#include "platform/wtf/Vector.h"
-#include "v8/include/v8.h"
-
-namespace blink {
-
-class ActiveScriptWrappableBase;
-class DOMDataStore;
-class StringCache;
-class V8PrivateProperty;
-class WebTaskRunner;
-struct WrapperTypeInfo;
-
-typedef WTF::Vector<DOMDataStore*> DOMDataStoreList;
-
-class CORE_EXPORT V8PerIsolateData {
- USING_FAST_MALLOC(V8PerIsolateData);
- WTF_MAKE_NONCOPYABLE(V8PerIsolateData);
-
- public:
- class EndOfScopeTask {
- USING_FAST_MALLOC(EndOfScopeTask);
-
- public:
- virtual ~EndOfScopeTask() {}
- virtual void Run() = 0;
- };
-
- // Disables the UseCounter.
- // UseCounter depends on the current context, but it's not available during
- // the initialization of v8::Context and the global object. So we need to
- // disable the UseCounter while the initialization of the context and global
- // object.
- // TODO(yukishiino): Come up with an idea to remove this hack.
- class UseCounterDisabledScope {
- STACK_ALLOCATED();
-
- public:
- explicit UseCounterDisabledScope(V8PerIsolateData* per_isolate_data)
- : per_isolate_data_(per_isolate_data),
- original_use_counter_disabled_(
- per_isolate_data_->use_counter_disabled_) {
- per_isolate_data_->use_counter_disabled_ = true;
- }
- ~UseCounterDisabledScope() {
- per_isolate_data_->use_counter_disabled_ = original_use_counter_disabled_;
- }
-
- private:
- V8PerIsolateData* per_isolate_data_;
- const bool original_use_counter_disabled_;
- };
-
- // Use this class to abstract away types of members that are pointers to core/
- // objects, which are simply owned and released by V8PerIsolateData (see
- // m_threadDebugger for an example).
- class CORE_EXPORT Data {
- public:
- virtual ~Data() = default;
- };
-
- static v8::Isolate* Initialize(WebTaskRunner*);
-
- static V8PerIsolateData* From(v8::Isolate* isolate) {
- DCHECK(isolate);
- DCHECK(isolate->GetData(gin::kEmbedderBlink));
- return static_cast<V8PerIsolateData*>(
- isolate->GetData(gin::kEmbedderBlink));
- }
-
- static void WillBeDestroyed(v8::Isolate*);
- static void Destroy(v8::Isolate*);
- static v8::Isolate* MainThreadIsolate();
-
- static void EnableIdleTasks(v8::Isolate*,
- std::unique_ptr<gin::V8IdleTaskRunner>);
-
- v8::Isolate* GetIsolate() { return isolate_holder_.isolate(); }
-
- StringCache* GetStringCache() { return string_cache_.get(); }
-
- v8::Persistent<v8::Value>& EnsureLiveRoot();
-
- bool IsHandlingRecursionLevelError() const {
- return is_handling_recursion_level_error_;
- }
- void SetIsHandlingRecursionLevelError(bool value) {
- is_handling_recursion_level_error_ = value;
- }
-
- bool IsReportingException() const { return is_reporting_exception_; }
- void SetReportingException(bool value) { is_reporting_exception_ = value; }
-
- bool IsUseCounterDisabled() const { return use_counter_disabled_; }
-
- V8PrivateProperty* PrivateProperty() { return private_property_.get(); }
-
- // Accessors to the cache of interface templates.
- v8::Local<v8::FunctionTemplate> FindInterfaceTemplate(const DOMWrapperWorld&,
- const void* key);
- void SetInterfaceTemplate(const DOMWrapperWorld&,
- const void* key,
- v8::Local<v8::FunctionTemplate>);
-
- // Accessor to the cache of cross-origin accessible operation's templates.
- // Created templates get automatically cached.
- v8::Local<v8::FunctionTemplate> FindOrCreateOperationTemplate(
- const DOMWrapperWorld&,
- const void* key,
- v8::FunctionCallback,
- v8::Local<v8::Value> data,
- v8::Local<v8::Signature>,
- int length);
-
- // Obtains a pointer to an array of names, given a lookup key. If it does not
- // yet exist, it is created from the given array of strings. Once created,
- // these live for as long as the isolate, so this is appropriate only for a
- // compile-time list of related names, such as IDL dictionary keys.
- const v8::Eternal<v8::Name>* FindOrCreateEternalNameCache(
- const void* lookup_key,
- const char* const names[],
- size_t count);
-
- bool HasInstance(const WrapperTypeInfo* untrusted, v8::Local<v8::Value>);
- v8::Local<v8::Object> FindInstanceInPrototypeChain(const WrapperTypeInfo*,
- v8::Local<v8::Value>);
-
- v8::Local<v8::Context> EnsureScriptRegexpContext();
- void ClearScriptRegexpContext();
-
- // EndOfScopeTasks are run when control is returning
- // to C++ from script, after executing a script task (e.g. callback,
- // event) or microtasks (e.g. promise). This is explicitly needed for
- // Indexed DB transactions per spec, but should in general be avoided.
- void AddEndOfScopeTask(std::unique_ptr<EndOfScopeTask>);
- void RunEndOfScopeTasks();
- void ClearEndOfScopeTasks();
-
- void SetThreadDebugger(std::unique_ptr<Data>);
- Data* ThreadDebugger();
-
- using ActiveScriptWrappableSet =
- HeapHashSet<WeakMember<ActiveScriptWrappableBase>>;
- void AddActiveScriptWrappable(ActiveScriptWrappableBase*);
- const ActiveScriptWrappableSet* ActiveScriptWrappables() const {
- return active_script_wrappables_.Get();
- }
-
- class CORE_EXPORT TemporaryScriptWrappableVisitorScope {
- WTF_MAKE_NONCOPYABLE(TemporaryScriptWrappableVisitorScope);
- STACK_ALLOCATED();
-
- public:
- TemporaryScriptWrappableVisitorScope(
- v8::Isolate* isolate,
- std::unique_ptr<ScriptWrappableVisitor> visitor)
- : isolate_(isolate), saved_visitor_(std::move(visitor)) {
- SwapWithV8PerIsolateDataVisitor(saved_visitor_);
- }
- ~TemporaryScriptWrappableVisitorScope() {
- SwapWithV8PerIsolateDataVisitor(saved_visitor_);
- }
-
- inline ScriptWrappableVisitor* CurrentVisitor() {
- return V8PerIsolateData::From(isolate_)->GetScriptWrappableVisitor();
- }
-
- private:
- void SwapWithV8PerIsolateDataVisitor(
- std::unique_ptr<ScriptWrappableVisitor>&);
-
- v8::Isolate* isolate_;
- std::unique_ptr<ScriptWrappableVisitor> saved_visitor_;
- };
-
- void SetScriptWrappableVisitor(
- std::unique_ptr<ScriptWrappableVisitor> visitor) {
- script_wrappable_visitor_ = std::move(visitor);
- }
- ScriptWrappableVisitor* GetScriptWrappableVisitor() {
- return script_wrappable_visitor_.get();
- }
-
- private:
- explicit V8PerIsolateData(WebTaskRunner*);
- ~V8PerIsolateData();
-
- typedef HashMap<const void*, v8::Eternal<v8::FunctionTemplate>>
- V8FunctionTemplateMap;
- V8FunctionTemplateMap& SelectInterfaceTemplateMap(const DOMWrapperWorld&);
- V8FunctionTemplateMap& SelectOperationTemplateMap(const DOMWrapperWorld&);
- bool HasInstance(const WrapperTypeInfo* untrusted,
- v8::Local<v8::Value>,
- V8FunctionTemplateMap&);
- v8::Local<v8::Object> FindInstanceInPrototypeChain(const WrapperTypeInfo*,
- v8::Local<v8::Value>,
- V8FunctionTemplateMap&);
-
- gin::IsolateHolder isolate_holder_;
-
- // m_interfaceTemplateMapFor{,Non}MainWorld holds function templates for
- // the inerface objects.
- V8FunctionTemplateMap interface_template_map_for_main_world_;
- V8FunctionTemplateMap interface_template_map_for_non_main_world_;
- // m_operationTemplateMapFor{,Non}MainWorld holds function templates for
- // the cross-origin accessible DOM operations.
- V8FunctionTemplateMap operation_template_map_for_main_world_;
- V8FunctionTemplateMap operation_template_map_for_non_main_world_;
-
- // Contains lists of eternal names, such as dictionary keys.
- HashMap<const void*, Vector<v8::Eternal<v8::Name>>> eternal_name_cache_;
-
- std::unique_ptr<StringCache> string_cache_;
- std::unique_ptr<V8PrivateProperty> private_property_;
- ScopedPersistent<v8::Value> live_root_;
- RefPtr<ScriptState> script_regexp_script_state_;
-
- bool constructor_mode_;
- friend class ConstructorMode;
-
- bool use_counter_disabled_;
- friend class UseCounterDisabledScope;
-
- bool is_handling_recursion_level_error_;
- bool is_reporting_exception_;
-
- Vector<std::unique_ptr<EndOfScopeTask>> end_of_scope_tasks_;
- std::unique_ptr<Data> thread_debugger_;
-
- Persistent<ActiveScriptWrappableSet> active_script_wrappables_;
- std::unique_ptr<ScriptWrappableVisitor> script_wrappable_visitor_;
-};
-
-} // namespace blink
-
-#endif // V8PerIsolateData_h
+// This file has been moved to platform/bindings/V8PerIsolateData.h.
+// TODO(adithyas): Remove this file.
+#include "platform/bindings/V8PerIsolateData.h"

Powered by Google App Engine
This is Rietveld 408576698