#include "bindings/core/v8/V8Window.h"
#include "core/frame/LocalFrame.h"
#include "core/frame/csp/ContentSecurityPolicy.h"
+#include "core/html/DocumentNameCollection.h"
#include "core/html/HTMLCollection.h"
#include "core/html/HTMLIFrameElement.h"
#include "core/inspector/InspectorInstrumentation.h"
static void checkDocumentWrapper(v8::Handle<v8::Object> wrapper, Document* document)
{
- ASSERT(V8Document::toNative(wrapper) == document);
- ASSERT(!document->isHTMLDocument() || (V8Document::toNative(v8::Handle<v8::Object>::Cast(wrapper->GetPrototype())) == document));
+ ASSERT(V8Document::toImpl(wrapper) == document);
+ ASSERT(!document->isHTMLDocument() || (V8Document::toImpl(v8::Handle<v8::Object>::Cast(wrapper->GetPrototype())) == document));
}
PassOwnPtr<WindowProxy> WindowProxy::create(LocalFrame* frame, DOMWrapperWorld& world, v8::Isolate* isolate)
m_frame->loader().client()->willReleaseScriptContext(context, m_world->worldId());
if (behavior == DetachGlobal)
- context->DetachGlobal();
+ m_scriptState->detachGlobalObject();
m_scriptState->disposePerContextData();
bool WindowProxy::installDOMWindow()
{
LocalDOMWindow* window = m_frame->domWindow();
- v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(m_isolate, m_scriptState->perContextData()->constructorForType(&V8Window::wrapperTypeInfo));
+ const WrapperTypeInfo* wrapperTypeInfo = window->wrapperTypeInfo();
+ v8::Local<v8::Object> windowWrapper = V8ObjectConstructor::newInstance(m_isolate, m_scriptState->perContextData()->constructorForType(wrapperTypeInfo));
if (windowWrapper.IsEmpty())
return false;
- V8DOMWrapper::setNativeInfoForHiddenWrapper(v8::Handle<v8::Object>::Cast(windowWrapper->GetPrototype()), &V8Window::wrapperTypeInfo, V8Window::toInternalPointer(window));
+ V8DOMWrapper::setNativeInfoForHiddenWrapper(v8::Handle<v8::Object>::Cast(windowWrapper->GetPrototype()), wrapperTypeInfo, window->toScriptWrappableBase());
// Install the windowWrapper as the prototype of the innerGlobalObject.
// The full structure of the global object is as follows:
// views of the LocalDOMWindow will die together once that wrapper clears the persistent
// reference.
v8::Handle<v8::Object> innerGlobalObject = toInnerGlobalObject(m_scriptState->context());
- V8DOMWrapper::setNativeInfoForHiddenWrapper(innerGlobalObject, &V8Window::wrapperTypeInfo, V8Window::toInternalPointer(window));
+ V8DOMWrapper::setNativeInfoForHiddenWrapper(innerGlobalObject, wrapperTypeInfo, window->toScriptWrappableBase());
innerGlobalObject->SetPrototype(windowWrapper);
- V8DOMWrapper::associateObjectWithWrapper<V8Window>(PassRefPtrWillBeRawPtr<LocalDOMWindow>(window), &V8Window::wrapperTypeInfo, windowWrapper, m_isolate, WrapperConfiguration::Dependent);
- V8Window::installConditionallyEnabledProperties(windowWrapper, m_isolate);
+ V8DOMWrapper::associateObjectWithWrapperNonTemplate(window, wrapperTypeInfo, windowWrapper, m_isolate);
+ wrapperTypeInfo->installConditionallyEnabledProperties(windowWrapper, m_isolate);
return true;
}
if (!htmlDocument->hasNamedItem(key) && !htmlDocument->hasExtraNamedItem(key))
return v8Undefined();
- RefPtrWillBeRawPtr<HTMLCollection> items = htmlDocument->documentNamedItems(key);
+ RefPtrWillBeRawPtr<DocumentNameCollection> items = htmlDocument->documentNamedItems(key);
if (items->isEmpty())
return v8Undefined();
if (items->hasExactlyOneItem()) {
- Element* element = items->item(0);
+ HTMLElement* element = items->item(0);
ASSERT(element);
Frame* frame = isHTMLIFrameElement(*element) ? toHTMLIFrameElement(*element).contentFrame() : 0;
if (frame)
return toV8(frame->domWindow(), creationContext, isolate);
return toV8(element, creationContext, isolate);
}
- return toV8(items.release(), creationContext, isolate);
+ return toV8(PassRefPtrWillBeRawPtr<HTMLCollection>(items.release()), creationContext, isolate);
}
static void getter(v8::Local<v8::String> property, const v8::PropertyCallbackInfo<v8::Value>& info)
{
// FIXME: Consider passing StringImpl directly.
AtomicString name = toCoreAtomicString(property);
- HTMLDocument* htmlDocument = V8HTMLDocument::toNative(info.Holder());
+ HTMLDocument* htmlDocument = V8HTMLDocument::toImpl(info.Holder());
ASSERT(htmlDocument);
v8::Handle<v8::Value> result = getNamedProperty(htmlDocument, name, info.Holder(), info.GetIsolate());
if (!result.IsEmpty()) {