| Index: third_party/WebKit/Source/bindings/core/v8/V8DOMWrapper.h
|
| diff --git a/third_party/WebKit/Source/bindings/core/v8/V8DOMWrapper.h b/third_party/WebKit/Source/bindings/core/v8/V8DOMWrapper.h
|
| index a3dec3ed47c3877b018eb5e94e2b95d9b3af6710..37a1810590030e21bd189ecd5ec4273e15582d29 100644
|
| --- a/third_party/WebKit/Source/bindings/core/v8/V8DOMWrapper.h
|
| +++ b/third_party/WebKit/Source/bindings/core/v8/V8DOMWrapper.h
|
| @@ -28,168 +28,6 @@
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
|
|
| -#ifndef V8DOMWrapper_h
|
| -#define V8DOMWrapper_h
|
| -
|
| -#include "bindings/core/v8/DOMDataStore.h"
|
| -#include "bindings/core/v8/ScriptWrappable.h"
|
| -#include "bindings/core/v8/V8Binding.h"
|
| -#include "bindings/core/v8/WrapperCreationSecurityCheck.h"
|
| -#include "core/CoreExport.h"
|
| -#include "platform/wtf/Compiler.h"
|
| -#include "platform/wtf/text/AtomicString.h"
|
| -#include "v8/include/v8.h"
|
| -
|
| -namespace blink {
|
| -
|
| -struct WrapperTypeInfo;
|
| -
|
| -class V8DOMWrapper {
|
| - STATIC_ONLY(V8DOMWrapper);
|
| -
|
| - public:
|
| - static v8::Local<v8::Object> CreateWrapper(
|
| - v8::Isolate*,
|
| - v8::Local<v8::Object> creation_context,
|
| - const WrapperTypeInfo*);
|
| - static bool IsWrapper(v8::Isolate*, v8::Local<v8::Value>);
|
| -
|
| - // Associates the given ScriptWrappable with the given |wrapper| if the
|
| - // ScriptWrappable is not yet associated with any wrapper. Returns the
|
| - // wrapper already associated or |wrapper| if not yet associated.
|
| - // The caller should always use the returned value rather than |wrapper|.
|
| - WARN_UNUSED_RESULT static v8::Local<v8::Object> AssociateObjectWithWrapper(
|
| - v8::Isolate*,
|
| - ScriptWrappable*,
|
| - const WrapperTypeInfo*,
|
| - v8::Local<v8::Object> wrapper);
|
| - static void SetNativeInfo(v8::Isolate*,
|
| - v8::Local<v8::Object>,
|
| - const WrapperTypeInfo*,
|
| - ScriptWrappable*);
|
| - static void ClearNativeInfo(v8::Isolate*, v8::Local<v8::Object>);
|
| -
|
| - // hasInternalFieldsSet only checks if the value has the internal fields for
|
| - // wrapper obejct and type, and does not check if it's valid or not. The
|
| - // value may not be a Blink's wrapper object. In order to make sure of it,
|
| - // Use isWrapper function instead.
|
| - CORE_EXPORT static bool HasInternalFieldsSet(v8::Local<v8::Value>);
|
| -};
|
| -
|
| -inline void V8DOMWrapper::SetNativeInfo(
|
| - v8::Isolate* isolate,
|
| - v8::Local<v8::Object> wrapper,
|
| - const WrapperTypeInfo* wrapper_type_info,
|
| - ScriptWrappable* script_wrappable) {
|
| - DCHECK_GE(wrapper->InternalFieldCount(), 2);
|
| - DCHECK(script_wrappable);
|
| - DCHECK(wrapper_type_info);
|
| - int indices[] = {kV8DOMWrapperObjectIndex, kV8DOMWrapperTypeIndex};
|
| - void* values[] = {script_wrappable,
|
| - const_cast<WrapperTypeInfo*>(wrapper_type_info)};
|
| - wrapper->SetAlignedPointerInInternalFields(WTF_ARRAY_LENGTH(indices), indices,
|
| - values);
|
| - auto per_isolate_data = V8PerIsolateData::From(isolate);
|
| - // We notify ScriptWrappableVisitor about the new wrapper association,
|
| - // so the visitor can make sure to trace the association (in case it is
|
| - // currently tracing). Because of some optimizations, V8 will not
|
| - // necessarily detect wrappers created during its incremental marking.
|
| - per_isolate_data->GetScriptWrappableVisitor()->RegisterV8Reference(
|
| - std::make_pair(const_cast<WrapperTypeInfo*>(wrapper_type_info),
|
| - script_wrappable));
|
| -}
|
| -
|
| -inline void V8DOMWrapper::ClearNativeInfo(v8::Isolate* isolate,
|
| - v8::Local<v8::Object> wrapper) {
|
| - int indices[] = {kV8DOMWrapperObjectIndex, kV8DOMWrapperTypeIndex};
|
| - void* values[] = {nullptr, nullptr};
|
| - wrapper->SetAlignedPointerInInternalFields(WTF_ARRAY_LENGTH(indices), indices,
|
| - values);
|
| -}
|
| -
|
| -inline v8::Local<v8::Object> V8DOMWrapper::AssociateObjectWithWrapper(
|
| - v8::Isolate* isolate,
|
| - ScriptWrappable* impl,
|
| - const WrapperTypeInfo* wrapper_type_info,
|
| - v8::Local<v8::Object> wrapper) {
|
| - if (DOMDataStore::SetWrapper(isolate, impl, wrapper_type_info, wrapper)) {
|
| - WrapperTypeInfo::WrapperCreated();
|
| - SetNativeInfo(isolate, wrapper, wrapper_type_info, impl);
|
| - DCHECK(HasInternalFieldsSet(wrapper));
|
| - }
|
| - SECURITY_CHECK(ToScriptWrappable(wrapper) == impl);
|
| - return wrapper;
|
| -}
|
| -
|
| -class V8WrapperInstantiationScope {
|
| - STACK_ALLOCATED();
|
| -
|
| - public:
|
| - V8WrapperInstantiationScope(v8::Local<v8::Object> creation_context,
|
| - v8::Isolate* isolate,
|
| - const WrapperTypeInfo* type)
|
| - : did_enter_context_(false),
|
| - context_(isolate->GetCurrentContext()),
|
| - try_catch_(isolate),
|
| - type_(type),
|
| - access_check_failed_(false) {
|
| - // creationContext should not be empty. Because if we have an
|
| - // empty creationContext, we will end up creating
|
| - // a new object in the context currently entered. This is wrong.
|
| - CHECK(!creation_context.IsEmpty());
|
| - v8::Local<v8::Context> context_for_wrapper =
|
| - creation_context->CreationContext();
|
| -
|
| - // For performance, we enter the context only if the currently running
|
| - // context is different from the context that we are about to enter.
|
| - if (context_for_wrapper == context_)
|
| - return;
|
| -
|
| - context_ = context_for_wrapper;
|
| -
|
| - if (!WrapperCreationSecurityCheck::VerifyContextAccess(context_, type_)) {
|
| - DCHECK(try_catch_.HasCaught());
|
| - try_catch_.ReThrow();
|
| - access_check_failed_ = true;
|
| - return;
|
| - }
|
| -
|
| - did_enter_context_ = true;
|
| - context_->Enter();
|
| - }
|
| -
|
| - ~V8WrapperInstantiationScope() {
|
| - if (!did_enter_context_) {
|
| - try_catch_.ReThrow();
|
| - return;
|
| - }
|
| - context_->Exit();
|
| -
|
| - if (access_check_failed_ || !try_catch_.HasCaught())
|
| - return;
|
| -
|
| - // Any exception caught here is a cross context exception and it may not be
|
| - // safe to directly rethrow the exception in the current context (without
|
| - // converting it). rethrowCrossContextException converts the exception in
|
| - // such a scenario.
|
| - v8::Local<v8::Value> caught_exception = try_catch_.Exception();
|
| - try_catch_.Reset();
|
| - WrapperCreationSecurityCheck::RethrowCrossContextException(
|
| - context_, type_, caught_exception);
|
| - try_catch_.ReThrow();
|
| - }
|
| -
|
| - v8::Local<v8::Context> GetContext() const { return context_; }
|
| - bool AccessCheckFailed() const { return access_check_failed_; }
|
| -
|
| - private:
|
| - bool did_enter_context_;
|
| - v8::Local<v8::Context> context_;
|
| - v8::TryCatch try_catch_;
|
| - const WrapperTypeInfo* type_;
|
| - bool access_check_failed_;
|
| -};
|
| -
|
| -} // namespace blink
|
| -
|
| -#endif // V8DOMWrapper_h
|
| +// This file has been moved to platform/bindings/V8DOMWrapper.h.
|
| +// TODO(adithyas): Remove this file.
|
| +#include "platform/bindings/V8DOMWrapper.h"
|
|
|