WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Patch
bug-85078-20120510101521.patch (text/plain), 62.10 KB, created by
Erik Arvidsson
on 2012-05-10 10:15:22 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Erik Arvidsson
Created:
2012-05-10 10:15:22 PDT
Size:
62.10 KB
patch
obsolete
>Subversion Revision: 116649 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index ab78085f2d9d25b97ed66356796678a7a12a5bfe..0e089e99f14f5ff1448040ee0d451f75b06cc175 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,28 @@ >+2012-05-10 Erik Arvidsson <arv@chromium.org> >+ >+ Make DOM Exceptions Errors >+ https://bugs.webkit.org/show_bug.cgi?id=85078 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ WebIDL mandates that exceptions should have Error.prototype on its prototype chain. >+ >+ For JSC we have access to the Error.prototype (and Array.prototype) from the binding code. >+ >+ For V8 we set a field in the WrapperTypeInfo and when the constructor function is created we >+ set the prototype as needed. >+ >+ This patch also adds support for [ArrayClass] since that code is almost identical. It does not >+ however use [ArrayClass] in any places yet. >+ >+ * JavaScriptCore.xcodeproj/project.pbxproj: >+ * runtime/JSGlobalObject.cpp: >+ (JSC::JSGlobalObject::reset): >+ * runtime/JSGlobalObject.h: >+ (JSC): >+ (JSGlobalObject): >+ (JSC::JSGlobalObject::errorPrototype): >+ > 2012-05-09 Filip Pizlo <fpizlo@apple.com> > > JIT memory allocator is not returning memory to the OS on Darwin >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 9be0c2f726989c933ed97fd932d099a808fa8143..5300e51a7f181cb476d6d9b26da4611714a2ef23 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,88 @@ >+2012-05-10 Erik Arvidsson <arv@chromium.org> >+ >+ Make DOM Exceptions Errors >+ https://bugs.webkit.org/show_bug.cgi?id=85078 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ WebIDL mandates that exceptions should have Error.prototype on its prototype chain. >+ >+ For JSC we have access to the Error.prototype (and Array.prototype) from the binding code. >+ >+ For V8 we set a field in the WrapperTypeInfo and when the constructor function is created we >+ set the prototype as needed. >+ >+ This patch also adds support for [ArrayClass] since that code is almost identical. It does not >+ however use [ArrayClass] in any places yet. >+ >+ Updated test: fast/dom/DOMException/prototype-object.html >+ >+ * ForwardingHeaders/runtime/ErrorPrototype.h: Added. >+ * bindings/scripts/CodeGeneratorJS.pm: >+ (GenerateHeader): >+ (GenerateImplementation): >+ * bindings/scripts/CodeGeneratorV8.pm: >+ (GenerateNamedConstructorCallback): >+ (GenerateImplementation): >+ * bindings/scripts/IDLAttributes.txt: >+ * bindings/scripts/test/JS/JSFloat64Array.h: >+ * bindings/scripts/test/JS/JSTestEventTarget.cpp: >+ (WebCore::jsTestEventTargetPrototypeFunctionAddEventListener): >+ (WebCore::jsTestEventTargetPrototypeFunctionRemoveEventListener): >+ * bindings/scripts/test/JS/JSTestException.cpp: >+ (WebCore::JSTestException::createPrototype): >+ * bindings/scripts/test/JS/JSTestException.h: >+ * bindings/scripts/test/JS/JSTestNode.h: >+ * bindings/scripts/test/JS/JSTestObj.cpp: >+ (WebCore::JSTestObj::createPrototype): >+ (WebCore::jsTestObjPrototypeFunctionAddEventListener): >+ (WebCore::jsTestObjPrototypeFunctionRemoveEventListener): >+ * bindings/scripts/test/JS/JSTestObj.h: >+ * bindings/scripts/test/TestObj.idl: >+ * bindings/scripts/test/V8/V8Float64Array.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestActiveDOMObject.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestEventConstructor.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestEventTarget.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestException.cpp: >+ (WebCore): >+ (WebCore::V8TestException::wrapSlow): >+ * bindings/scripts/test/V8/V8TestException.h: >+ (WebCore::V8TestException::wrap): >+ * bindings/scripts/test/V8/V8TestInterface.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestNamedConstructor.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestNode.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestObj.cpp: >+ (WebCore): >+ * bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp: >+ (WebCore): >+ * bindings/v8/NPV8Object.cpp: >+ (WebCore::npObjectTypeInfo): >+ * bindings/v8/V8BindingPerContextData.cpp: >+ (WebCore): >+ (WebCore::V8BindingPerContextData::init): >+ (WebCore::V8BindingPerContextData::createWrapperFromCacheSlowCase): >+ (WebCore::V8BindingPerContextData::constructorForTypeSlowCase): >+ * bindings/v8/V8BindingPerContextData.h: >+ (V8BindingPerContextData): >+ * bindings/v8/V8HiddenPropertyName.h: >+ (WebCore): >+ * bindings/v8/WrapperTypeInfo.h: >+ (WebCore): >+ (WrapperTypeInfo): >+ * bindings/v8/custom/V8HTMLImageElementConstructor.cpp: >+ (WebCore): >+ > 2012-05-10 Konrad Piascik <kpiascik@rim.com> > > Fix typo in filename >diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >index d5cf8dedc09c8f014a17e3c25c402252ea2b116b..67ba2ed7ed2d9284651f2289e33535700a1d65ab 100644 >--- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >+++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj >@@ -505,10 +505,10 @@ > A7FB61001040C38B0017A286 /* PropertyDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; }; > A8A4748E151A8306004123FF /* libWTF.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A8A4748D151A8306004123FF /* libWTF.a */; }; > BC02E90D0E1839DB000F9297 /* ErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9050E1839DB000F9297 /* ErrorConstructor.h */; }; >- BC02E90F0E1839DB000F9297 /* ErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9070E1839DB000F9297 /* ErrorPrototype.h */; }; >+ BC02E90F0E1839DB000F9297 /* ErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9070E1839DB000F9297 /* ErrorPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; }; > BC02E9110E1839DB000F9297 /* NativeErrorConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */; }; > BC02E9130E1839DB000F9297 /* NativeErrorPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E90B0E1839DB000F9297 /* NativeErrorPrototype.h */; }; >- BC02E98D0E183E38000F9297 /* ErrorInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E98B0E183E38000F9297 /* ErrorInstance.h */; }; >+ BC02E98D0E183E38000F9297 /* ErrorInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02E98B0E183E38000F9297 /* ErrorInstance.h */; settings = {ATTRIBUTES = (Private, ); }; }; > BC1166020E1997B4008066DD /* DateInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1166010E1997B1008066DD /* DateInstance.h */; settings = {ATTRIBUTES = (Private, ); }; }; > BC11667B0E199C05008066DD /* InternalFunction.h in Headers */ = {isa = PBXBuildFile; fileRef = BC11667A0E199C05008066DD /* InternalFunction.h */; settings = {ATTRIBUTES = (Private, ); }; }; > BC1167DA0E19BCC9008066DD /* JSCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BC1167D80E19BCC9008066DD /* JSCell.h */; settings = {ATTRIBUTES = (Private, ); }; }; >diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >index 0f74a806153076ce768967ce28dbde59a3da6f2d..08c41214e2d6fd355680b2b64091e83b8aa0a928 100644 >--- a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp >@@ -241,8 +241,8 @@ void JSGlobalObject::reset(JSValue prototype) > > m_methodCallDummy.set(exec->globalData(), this, constructEmptyObject(exec)); > >- ErrorPrototype* errorPrototype = ErrorPrototype::create(exec, this, ErrorPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())); >- m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), this, errorPrototype)); >+ m_errorPrototype.set(exec->globalData(), this, ErrorPrototype::create(exec, this, ErrorPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get()))); >+ m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), this, m_errorPrototype.get())); > > // Constructors > >@@ -256,9 +256,9 @@ void JSGlobalObject::reset(JSValue prototype) > > m_regExpConstructor.set(exec->globalData(), this, RegExpConstructor::create(exec, this, RegExpConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_regExpPrototype.get())); > >- m_errorConstructor.set(exec->globalData(), this, ErrorConstructor::create(exec, this, ErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), errorPrototype)); >+ m_errorConstructor.set(exec->globalData(), this, ErrorConstructor::create(exec, this, ErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_errorPrototype.get())); > >- Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(exec->globalData(), this, errorPrototype); >+ Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(exec->globalData(), this, m_errorPrototype.get()); > Structure* nativeErrorStructure = NativeErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()); > m_evalErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "EvalError")); > m_rangeErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "RangeError")); >@@ -275,7 +275,7 @@ void JSGlobalObject::reset(JSValue prototype) > m_numberPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, numberConstructor, DontEnum); > m_datePrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, dateConstructor, DontEnum); > m_regExpPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, m_regExpConstructor.get(), DontEnum); >- errorPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, m_errorConstructor.get(), DontEnum); >+ m_errorPrototype->putDirectWithoutTransition(exec->globalData(), exec->propertyNames().constructor, m_errorConstructor.get(), DontEnum); > > putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Object"), objectConstructor, DontEnum); > putDirectWithoutTransition(exec->globalData(), Identifier(exec, "Function"), functionConstructor, DontEnum); >diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.h b/Source/JavaScriptCore/runtime/JSGlobalObject.h >index d9fc81dc400948ce37f36341af08a6b10b67b1da..1250dcd46a49cbcfb0f845929efe1b2d014e62c7 100644 >--- a/Source/JavaScriptCore/runtime/JSGlobalObject.h >+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.h >@@ -41,6 +41,7 @@ namespace JSC { > class DatePrototype; > class Debugger; > class ErrorConstructor; >+ class ErrorPrototype; > class FunctionPrototype; > class GetterSetter; > class GlobalCodeBlock; >@@ -114,6 +115,7 @@ namespace JSC { > WriteBarrier<NumberPrototype> m_numberPrototype; > WriteBarrier<DatePrototype> m_datePrototype; > WriteBarrier<RegExpPrototype> m_regExpPrototype; >+ WriteBarrier<ErrorPrototype> m_errorPrototype; > > WriteBarrier<Structure> m_argumentsStructure; > WriteBarrier<Structure> m_arrayStructure; >@@ -245,6 +247,7 @@ namespace JSC { > NumberPrototype* numberPrototype() const { return m_numberPrototype.get(); } > DatePrototype* datePrototype() const { return m_datePrototype.get(); } > RegExpPrototype* regExpPrototype() const { return m_regExpPrototype.get(); } >+ ErrorPrototype* errorPrototype() const { return m_errorPrototype.get(); } > > JSObject* methodCallDummy() const { return m_methodCallDummy.get(); } > >diff --git a/Source/WebCore/ForwardingHeaders/runtime/ErrorPrototype.h b/Source/WebCore/ForwardingHeaders/runtime/ErrorPrototype.h >new file mode 100644 >index 0000000000000000000000000000000000000000..46b5399a0930d9e646b8b8987c0c71a9ed077770 >--- /dev/null >+++ b/Source/WebCore/ForwardingHeaders/runtime/ErrorPrototype.h >@@ -0,0 +1,4 @@ >+#ifndef WebCore_FWD_ErrorPrototype_h >+#define WebCore_FWD_ErrorPrototype_h >+#include <JavaScriptCore/ErrorPrototype.h> >+#endif >diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >index 9b1f7c4894fce57ab53331060e3606d5f14fc48a..e5ce0a7cf5623bf9e5bd819fe24460b6862ff6b0 100644 >--- a/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >+++ b/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm >@@ -645,6 +645,13 @@ sub GenerateHeader > } else { > $headerIncludes{"JSDOMBinding.h"} = 1; > $headerIncludes{"<runtime/JSGlobalObject.h>"} = 1; >+ } >+ >+ if ($dataNode->extendedAttributes->{"ArrayClass"}) { >+ $headerIncludes{"<runtime/ArrayPrototype.h>"} = 1; >+ } elsif ($dataNode->isException) { >+ $headerIncludes{"<runtime/ErrorPrototype.h>"} = 1; >+ } else { > $headerIncludes{"<runtime/ObjectPrototype.h>"} = 1; > } > >@@ -1591,10 +1598,15 @@ sub GenerateImplementation > if (!$dataNode->extendedAttributes->{"ExtendsDOMGlobalObject"}) { > push(@implContent, "JSObject* ${className}::createPrototype(ExecState* exec, JSGlobalObject* globalObject)\n"); > push(@implContent, "{\n"); >+ >+ my $arrayClass = $dataNode->extendedAttributes->{"ArrayClass"}; >+ die "[ArrayClass] and parent interfaces are mutually exclusive" if ($hasParent && $arrayClass); >+ > if ($hasParent && $parentClassName ne "JSC::DOMNodeFilter") { > push(@implContent, " return ${className}Prototype::create(exec->globalData(), globalObject, ${className}Prototype::createStructure(exec->globalData(), globalObject, ${parentClassName}Prototype::self(exec, globalObject)));\n"); > } else { >- push(@implContent, " return ${className}Prototype::create(exec->globalData(), globalObject, ${className}Prototype::createStructure(globalObject->globalData(), globalObject, globalObject->objectPrototype()));\n"); >+ my $prototype = $arrayClass ? "arrayPrototype" : ($dataNode->isException ? "errorPrototype" : "objectPrototype"); >+ push(@implContent, " return ${className}Prototype::create(exec->globalData(), globalObject, ${className}Prototype::createStructure(globalObject->globalData(), globalObject, globalObject->${prototype}()));\n"); > } > push(@implContent, "}\n\n"); > } >diff --git a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm b/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm >index 702ab440c56fe3e7f7e1258e7e1da22f1d34b54e..6808d12104951c95e1ca35d9c48b56163de559d0 100644 >--- a/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm >+++ b/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm >@@ -1872,12 +1872,12 @@ sub GenerateNamedConstructorCallback > > if ($dataNode->extendedAttributes->{"ActiveDOMObject"}) { > push(@implContent, <<END); >-WrapperTypeInfo V8${implClassName}Constructor::info = { V8${implClassName}Constructor::GetTemplate, V8${implClassName}::derefObject, V8${implClassName}::toActiveDOMObject, 0 }; >+WrapperTypeInfo V8${implClassName}Constructor::info = { V8${implClassName}Constructor::GetTemplate, V8${implClassName}::derefObject, V8${implClassName}::toActiveDOMObject, 0, WrapperTypeObjectPrototype }; > > END > } else { > push(@implContent, <<END); >-WrapperTypeInfo V8${implClassName}Constructor::info = { V8${implClassName}Constructor::GetTemplate, 0, 0, 0 }; >+WrapperTypeInfo V8${implClassName}Constructor::info = { V8${implClassName}Constructor::GetTemplate, 0, 0, 0, WrapperTypeObjectPrototype }; > > END > } >@@ -2336,8 +2336,15 @@ sub GenerateImplementation > } > push(@implContentDecls, "namespace WebCore {\n\n"); > my $parentClassInfo = $parentClass ? "&${parentClass}::info" : "0"; >- push(@implContentDecls, "WrapperTypeInfo ${className}::info = { ${className}::GetTemplate, ${className}::derefObject, ${toActive}, ${parentClassInfo} };\n\n"); >+ >+ my $arrayClass = $dataNode->extendedAttributes->{"ArrayClass"}; >+ die "[ArrayClass] and parent interfaces are mutually exclusive" if ($parentClass && $arrayClass); >+ >+ my $WrapperTypeprototype = $arrayClass ? "WrapperTypeArrayPrototype" : ($dataNode->isException ? "WrapperTypeErrorPrototype" : "WrapperTypeObjectPrototype"); >+ >+ push(@implContentDecls, "WrapperTypeInfo ${className}::info = { ${className}::GetTemplate, ${className}::derefObject, $toActive, $parentClassInfo, $WrapperTypeprototype };\n\n"); > push(@implContentDecls, "namespace ${interfaceName}V8Internal {\n\n"); >+ > push(@implContentDecls, "template <typename T> void V8_USE(T) { }\n\n"); > > my $hasConstructors = 0; >diff --git a/Source/WebCore/bindings/scripts/IDLAttributes.txt b/Source/WebCore/bindings/scripts/IDLAttributes.txt >index a467bfee54d5a55833c3090719ea28e36f4de45d..1722352e4a551b6e94043a5dbdd09ccdc2d24e13 100644 >--- a/Source/WebCore/bindings/scripts/IDLAttributes.txt >+++ b/Source/WebCore/bindings/scripts/IDLAttributes.txt >@@ -19,6 +19,7 @@ > # > > ActiveDOMObject >+ArrayClass > CPPPureInterface > CachedAttribute > CallWith=ScriptExecutionContext|ScriptState|ScriptArguments|CallStack >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSFloat64Array.h b/Source/WebCore/bindings/scripts/test/JS/JSFloat64Array.h >index 3a3b7cd8b234b0eba210143cc8c2af7017483601..f3f40078e3ee4c643ecdad89cc308d5613305531 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSFloat64Array.h >+++ b/Source/WebCore/bindings/scripts/test/JS/JSFloat64Array.h >@@ -24,6 +24,7 @@ > #include "JSArrayBufferView.h" > #include "JSDOMBinding.h" > #include <runtime/JSObject.h> >+#include <runtime/ObjectPrototype.h> > #include <wtf/Float64Array.h> > > namespace WebCore { >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp >index bfa872825adf71702e2127334c5f4afe374aad5d..2385a79ff9e94d73d793dcff5523ab02026d2942 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp >@@ -252,8 +252,6 @@ EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionAddEventListener( > JSTestEventTarget* castedThis = jsCast<JSTestEventTarget*>(asObject(thisValue)); > ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestEventTarget::s_info); > TestEventTarget* impl = static_cast<TestEventTarget*>(castedThis->impl()); >- if (exec->argumentCount() < 2) >- return throwVMError(exec, createNotEnoughArgumentsError(exec)); > JSValue listener = exec->argument(1); > if (!listener.isObject()) > return JSValue::encode(jsUndefined()); >@@ -269,8 +267,6 @@ EncodedJSValue JSC_HOST_CALL jsTestEventTargetPrototypeFunctionRemoveEventListen > JSTestEventTarget* castedThis = jsCast<JSTestEventTarget*>(asObject(thisValue)); > ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestEventTarget::s_info); > TestEventTarget* impl = static_cast<TestEventTarget*>(castedThis->impl()); >- if (exec->argumentCount() < 2) >- return throwVMError(exec, createNotEnoughArgumentsError(exec)); > JSValue listener = exec->argument(1); > if (!listener.isObject()) > return JSValue::encode(jsUndefined()); >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >index f66e6b96d6a7926dede23f654cd35c927771887d..e0a43a024bb41135662f66f29fc6753ae6f23141 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp >@@ -104,7 +104,7 @@ void JSTestException::finishCreation(JSGlobalData& globalData) > > JSObject* JSTestException::createPrototype(ExecState* exec, JSGlobalObject* globalObject) > { >- return JSTestExceptionPrototype::create(exec->globalData(), globalObject, JSTestExceptionPrototype::createStructure(globalObject->globalData(), globalObject, globalObject->objectPrototype())); >+ return JSTestExceptionPrototype::create(exec->globalData(), globalObject, JSTestExceptionPrototype::createStructure(globalObject->globalData(), globalObject, globalObject->errorPrototype())); > } > > void JSTestException::destroy(JSC::JSCell* cell) >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestException.h b/Source/WebCore/bindings/scripts/test/JS/JSTestException.h >index 5f1fa8ac139f51b25d611afe1165e554a32abc68..5b433299e3a3c8516eaf51b1cde00b9d72d45bdb 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestException.h >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestException.h >@@ -23,9 +23,9 @@ > > #include "JSDOMBinding.h" > #include "TestException.h" >+#include <runtime/ErrorPrototype.h> > #include <runtime/JSGlobalObject.h> > #include <runtime/JSObject.h> >-#include <runtime/ObjectPrototype.h> > > namespace WebCore { > >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h >index 5f8706fd37ce2fe5ff13ca591795f23c40eb15b1..5f70c01c788d0227b8da82cf2e89d0fce7dfae27 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestNode.h >@@ -25,6 +25,7 @@ > #include "JSNode.h" > #include "TestNode.h" > #include <runtime/JSObject.h> >+#include <runtime/ObjectPrototype.h> > > namespace WebCore { > >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >index 06828a48ab077535f4c333182f96b871d7df5614..a292f441825d3b61c250fd988f850aa091b7931d 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp >@@ -365,7 +365,7 @@ void JSTestObj::finishCreation(JSGlobalData& globalData) > > JSObject* JSTestObj::createPrototype(ExecState* exec, JSGlobalObject* globalObject) > { >- return JSTestObjPrototype::create(exec->globalData(), globalObject, JSTestObjPrototype::createStructure(globalObject->globalData(), globalObject, globalObject->objectPrototype())); >+ return JSTestObjPrototype::create(exec->globalData(), globalObject, JSTestObjPrototype::createStructure(globalObject->globalData(), globalObject, globalObject->arrayPrototype())); > } > > void JSTestObj::destroy(JSC::JSCell* cell) >@@ -1826,8 +1826,6 @@ EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionAddEventListener(ExecStat > JSTestObj* castedThis = jsCast<JSTestObj*>(asObject(thisValue)); > ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestObj::s_info); > TestObj* impl = static_cast<TestObj*>(castedThis->impl()); >- if (exec->argumentCount() < 2) >- return throwVMError(exec, createNotEnoughArgumentsError(exec)); > JSValue listener = exec->argument(1); > if (!listener.isObject()) > return JSValue::encode(jsUndefined()); >@@ -1843,8 +1841,6 @@ EncodedJSValue JSC_HOST_CALL jsTestObjPrototypeFunctionRemoveEventListener(ExecS > JSTestObj* castedThis = jsCast<JSTestObj*>(asObject(thisValue)); > ASSERT_GC_OBJECT_INHERITS(castedThis, &JSTestObj::s_info); > TestObj* impl = static_cast<TestObj*>(castedThis->impl()); >- if (exec->argumentCount() < 2) >- return throwVMError(exec, createNotEnoughArgumentsError(exec)); > JSValue listener = exec->argument(1); > if (!listener.isObject()) > return JSValue::encode(jsUndefined()); >diff --git a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h >index b8dca2e025d6e9fe39c73080f767993fe3173072..62b23400171480ec8a2857b74c3e8d81648a36d8 100644 >--- a/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h >+++ b/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h >@@ -23,9 +23,9 @@ > > #include "JSDOMBinding.h" > #include "TestObj.h" >+#include <runtime/ArrayPrototype.h> > #include <runtime/JSGlobalObject.h> > #include <runtime/JSObject.h> >-#include <runtime/ObjectPrototype.h> > > namespace WebCore { > >diff --git a/Source/WebCore/bindings/scripts/test/TestObj.idl b/Source/WebCore/bindings/scripts/test/TestObj.idl >index 488c99ab8d19de5d53d50ef34c51e3aa95067088..f5f7f58aff6b69e0730bcae29ac220835fcb2e9c 100644 >--- a/Source/WebCore/bindings/scripts/test/TestObj.idl >+++ b/Source/WebCore/bindings/scripts/test/TestObj.idl >@@ -32,7 +32,8 @@ > module test { > interface [ > Constructor(in [Callback] TestCallback testCallback), >- InterfaceName=TestObject >+ InterfaceName=TestObject, >+ ArrayClass > ] TestObj { > // Attributes > readonly attribute long readOnlyIntAttr; >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp b/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp >index 8581a8d68efa06d523264ad17e37e01ba0b9d353..5499e224195f749e4345998c36448a4e80042c18 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8Float64Array.cpp >@@ -42,7 +42,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8Float64Array::info = { V8Float64Array::GetTemplate, V8Float64Array::derefObject, 0, &V8ArrayBufferView::info }; >+WrapperTypeInfo V8Float64Array::info = { V8Float64Array::GetTemplate, V8Float64Array::derefObject, 0, &V8ArrayBufferView::info, WrapperTypeObjectPrototype }; > > namespace Float64ArrayV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp >index 74900001769f5fe34d660f5d5a9d3a76b887cc4f..f115f99b5477e2cafa965bda2c5028d0ef4c238e 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.cpp >@@ -34,7 +34,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestActiveDOMObject::info = { V8TestActiveDOMObject::GetTemplate, V8TestActiveDOMObject::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestActiveDOMObject::info = { V8TestActiveDOMObject::GetTemplate, V8TestActiveDOMObject::derefObject, 0, 0, WrapperTypeObjectPrototype }; > > namespace TestActiveDOMObjectV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp >index 20eb5a11ac29b0ae78e4e88da8a7ca624385a3ee..8ca3d32fedadedb3be4216a84357886727e939fb 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.cpp >@@ -33,7 +33,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestCustomNamedGetter::info = { V8TestCustomNamedGetter::GetTemplate, V8TestCustomNamedGetter::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestCustomNamedGetter::info = { V8TestCustomNamedGetter::GetTemplate, V8TestCustomNamedGetter::derefObject, 0, 0, WrapperTypeObjectPrototype }; > > namespace TestCustomNamedGetterV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp >index feb22aee9a220150bd84d7112570071d8278210f..8111f34b7f830a4e1404a3f9aa1fc8cc6c3dc04a 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.cpp >@@ -33,7 +33,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestEventConstructor::info = { V8TestEventConstructor::GetTemplate, V8TestEventConstructor::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestEventConstructor::info = { V8TestEventConstructor::GetTemplate, V8TestEventConstructor::derefObject, 0, 0, WrapperTypeObjectPrototype }; > > namespace TestEventConstructorV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp >index 33c5065f0ec482cd8e5841fa94738f02f3a0037b..ddc0941d4a07bc349e032bf0735f687bf8f59ace 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.cpp >@@ -36,7 +36,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestEventTarget::info = { V8TestEventTarget::GetTemplate, V8TestEventTarget::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestEventTarget::info = { V8TestEventTarget::GetTemplate, V8TestEventTarget::derefObject, 0, 0, WrapperTypeObjectPrototype }; > > namespace TestEventTargetV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestException.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestException.cpp >index 5d1777f01ffe9f90fb9c7ca9f1d3989e227b2161..85d3f59d191fb2c9592c2be4459d0395c6823794 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestException.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestException.cpp >@@ -31,7 +31,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestException::info = { V8TestException::GetTemplate, V8TestException::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestException::info = { V8TestException::GetTemplate, V8TestException::derefObject, 0, 0, WrapperTypeErrorPrototype }; > > namespace TestExceptionV8Internal { > >@@ -112,7 +112,7 @@ v8::Handle<v8::Object> V8TestException::wrapSlow(PassRefPtr<TestException> impl, > > if (!hasDependentLifetime) > wrapperHandle.MarkIndependent(); >- V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle); >+ V8DOMWrapper::setJSWrapperForDOMObject(impl, wrapperHandle, isolate); > return wrapper; > } > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestException.h b/Source/WebCore/bindings/scripts/test/V8/V8TestException.h >index 86d4a4ff2c0eabcd1e575716bad11faf16072553..7a2f584e8afb544ec1a18c0fd16e0def630ebe3e 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestException.h >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestException.h >@@ -50,7 +50,7 @@ private: > > v8::Handle<v8::Object> V8TestException::wrap(TestException* impl, v8::Isolate* isolate) > { >- v8::Handle<v8::Object> wrapper = getDOMObjectMap().get(impl); >+ v8::Handle<v8::Object> wrapper = getDOMObjectMap(isolate).get(impl); > if (!wrapper.IsEmpty()) > return wrapper; > return V8TestException::wrapSlow(impl, isolate); >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp >index 263b425eb77b33d6eb10f38c060108edc48009e1..c1d36d662cb076b170f98ddddc6edf137e7fece8 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestInterface.cpp >@@ -41,7 +41,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestInterface::info = { V8TestInterface::GetTemplate, V8TestInterface::derefObject, V8TestInterface::toActiveDOMObject, 0 }; >+WrapperTypeInfo V8TestInterface::info = { V8TestInterface::GetTemplate, V8TestInterface::derefObject, V8TestInterface::toActiveDOMObject, 0, WrapperTypeObjectPrototype }; > > namespace TestInterfaceV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp >index b515b4346de8173ca40fc14f1a5625d2f195db93..3f3b7d009ef0a6dc23c04c4a0c8bd3d9fde1545d 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.cpp >@@ -34,7 +34,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestMediaQueryListListener::info = { V8TestMediaQueryListListener::GetTemplate, V8TestMediaQueryListListener::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestMediaQueryListListener::info = { V8TestMediaQueryListListener::GetTemplate, V8TestMediaQueryListListener::derefObject, 0, 0, WrapperTypeObjectPrototype }; > > namespace TestMediaQueryListListenerV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp >index 53c3c4b64792bc39e9920e376ed74aa7f1648ccb..8db16741ea64c0c238b293f79bb8ca1ff686ef7f 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.cpp >@@ -33,7 +33,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestNamedConstructor::info = { V8TestNamedConstructor::GetTemplate, V8TestNamedConstructor::derefObject, V8TestNamedConstructor::toActiveDOMObject, 0 }; >+WrapperTypeInfo V8TestNamedConstructor::info = { V8TestNamedConstructor::GetTemplate, V8TestNamedConstructor::derefObject, V8TestNamedConstructor::toActiveDOMObject, 0, WrapperTypeObjectPrototype }; > > namespace TestNamedConstructorV8Internal { > >@@ -41,7 +41,7 @@ template <typename T> void V8_USE(T) { } > > } // namespace TestNamedConstructorV8Internal > >-WrapperTypeInfo V8TestNamedConstructorConstructor::info = { V8TestNamedConstructorConstructor::GetTemplate, V8TestNamedConstructor::derefObject, V8TestNamedConstructor::toActiveDOMObject, 0 }; >+WrapperTypeInfo V8TestNamedConstructorConstructor::info = { V8TestNamedConstructorConstructor::GetTemplate, V8TestNamedConstructor::derefObject, V8TestNamedConstructor::toActiveDOMObject, 0, WrapperTypeObjectPrototype }; > > static v8::Handle<v8::Value> V8TestNamedConstructorConstructorCallback(const v8::Arguments& args) > { >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp >index dc4943c41da9db956458e081ce0e829bbad8e15c..c04f31d6fce2ddcd01d9b06ba80b62ef0dfe9845 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp >@@ -32,7 +32,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestNode::info = { V8TestNode::GetTemplate, V8TestNode::derefObject, 0, &V8Node::info }; >+WrapperTypeInfo V8TestNode::info = { V8TestNode::GetTemplate, V8TestNode::derefObject, 0, &V8Node::info, WrapperTypeObjectPrototype }; > > namespace TestNodeV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp >index 39c13b6f246c170c16203fd63992d7c49131de4e..b71ecc4c60d56ee22cc402305485d126377ef0c4 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp >@@ -73,7 +73,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestObj::info = { V8TestObj::GetTemplate, V8TestObj::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestObj::info = { V8TestObj::GetTemplate, V8TestObj::derefObject, 0, 0, WrapperTypeArrayPrototype }; > > namespace TestObjV8Internal { > >diff --git a/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp b/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp >index a99a0cf5482f70c187aad669a39998e76d4bd281..d448181398e1eb44cc124464d1bdac5ce8cb6232 100644 >--- a/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp >+++ b/Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp >@@ -39,7 +39,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8TestSerializedScriptValueInterface::info = { V8TestSerializedScriptValueInterface::GetTemplate, V8TestSerializedScriptValueInterface::derefObject, 0, 0 }; >+WrapperTypeInfo V8TestSerializedScriptValueInterface::info = { V8TestSerializedScriptValueInterface::GetTemplate, V8TestSerializedScriptValueInterface::derefObject, 0, 0, WrapperTypeObjectPrototype }; > > namespace TestSerializedScriptValueInterfaceV8Internal { > >diff --git a/Source/WebCore/bindings/v8/NPV8Object.cpp b/Source/WebCore/bindings/v8/NPV8Object.cpp >index 5c335937705ef23c86d6670bb1cb9387af368124..6021f3c2fb6f1fd5faa114f1417dd92899607e88 100644 >--- a/Source/WebCore/bindings/v8/NPV8Object.cpp >+++ b/Source/WebCore/bindings/v8/NPV8Object.cpp >@@ -53,7 +53,7 @@ namespace WebCore { > > WrapperTypeInfo* npObjectTypeInfo() > { >- static WrapperTypeInfo typeInfo = { 0, 0, 0, 0 }; >+ static WrapperTypeInfo typeInfo = { 0, 0, 0, 0, WrapperTypeObjectPrototype }; > return &typeInfo; > } > >diff --git a/Source/WebCore/bindings/v8/V8BindingPerContextData.cpp b/Source/WebCore/bindings/v8/V8BindingPerContextData.cpp >index a010efa78d56c6000ea02ef7fde52dbfaf64696d..f7395e011ce84b1145018864e184e7b4f3911922 100644 >--- a/Source/WebCore/bindings/v8/V8BindingPerContextData.cpp >+++ b/Source/WebCore/bindings/v8/V8BindingPerContextData.cpp >@@ -56,28 +56,40 @@ void V8BindingPerContextData::dispose() > } > } > >+#define V8_STORE_PRIMORDIAL(name, Name) \ >+{ \ >+ ASSERT(m_##name##Prototype.get().IsEmpty()); \ >+ v8::Handle<v8::String> symbol = v8::String::NewSymbol(#Name); \ >+ if (symbol.IsEmpty()) \ >+ return false; \ >+ v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(m_context->Global()->Get(symbol)); \ >+ if (object.IsEmpty()) \ >+ return false; \ >+ v8::Handle<v8::Value> prototypeValue = object->Get(prototypeString); \ >+ if (prototypeValue.IsEmpty()) \ >+ return false; \ >+ m_##name##Prototype.set(prototypeValue); \ >+} >+ > bool V8BindingPerContextData::init() > { >- ASSERT(m_objectPrototype.get().IsEmpty()); >- >- v8::Handle<v8::String> objectString = v8::String::New("Object"); >- v8::Handle<v8::String> prototypeString = v8::String::New("prototype"); >- if (objectString.IsEmpty() || prototypeString.IsEmpty()) >+ v8::Handle<v8::String> prototypeString = v8::String::NewSymbol("prototype"); >+ if (prototypeString.IsEmpty()) > return false; > >- v8::Handle<v8::Object> object = v8::Handle<v8::Object>::Cast(m_context->Global()->Get(objectString)); >- if (object.IsEmpty()) >- return false; >- v8::Handle<v8::Value> objectPrototype = object->Get(prototypeString); >- if (objectPrototype.IsEmpty()) >- return false; >+ V8_STORE_PRIMORDIAL(array, Array); >+ V8_STORE_PRIMORDIAL(error, Error); >+ V8_STORE_PRIMORDIAL(object, Object); > >- m_objectPrototype.set(objectPrototype); > return true; > } > >+#undef V8_STORE_PRIMORDIAL >+ > v8::Local<v8::Object> V8BindingPerContextData::createWrapperFromCacheSlowCase(WrapperTypeInfo* type) > { >+ ASSERT(!m_arrayPrototype.get().IsEmpty()); >+ ASSERT(!m_errorPrototype.get().IsEmpty()); > ASSERT(!m_objectPrototype.get().IsEmpty()); > > v8::Context::Scope scope(m_context); >@@ -92,6 +104,8 @@ v8::Local<v8::Object> V8BindingPerContextData::createWrapperFromCacheSlowCase(Wr > > v8::Local<v8::Function> V8BindingPerContextData::constructorForTypeSlowCase(WrapperTypeInfo* type) > { >+ ASSERT(!m_arrayPrototype.get().IsEmpty()); >+ ASSERT(!m_errorPrototype.get().IsEmpty()); > ASSERT(!m_objectPrototype.get().IsEmpty()); > > v8::Context::Scope scope(m_context); >@@ -104,6 +118,16 @@ v8::Local<v8::Function> V8BindingPerContextData::constructorForTypeSlowCase(Wrap > > function->SetPrototype(m_objectPrototype.get()); > >+ if (type->wrapperTypePrototype == WrapperTypeArrayPrototype) { >+ v8::Local<v8::Value> prototypeValue = function->Get(v8::String::NewSymbol("prototype")); >+ if (!prototypeValue.IsEmpty() && prototypeValue->IsObject()) >+ v8::Local<v8::Object>::Cast(prototypeValue)->SetPrototype(m_arrayPrototype.get()); >+ } else if (type->wrapperTypePrototype == WrapperTypeErrorPrototype) { >+ v8::Local<v8::Value> prototypeValue = function->Get(v8::String::NewSymbol("prototype")); >+ if (!prototypeValue.IsEmpty() && prototypeValue->IsObject()) >+ v8::Local<v8::Object>::Cast(prototypeValue)->SetPrototype(m_errorPrototype.get()); >+ } >+ > m_constructorMap.set(type, v8::Persistent<v8::Function>::New(function)); > > return function; >diff --git a/Source/WebCore/bindings/v8/V8BindingPerContextData.h b/Source/WebCore/bindings/v8/V8BindingPerContextData.h >index 1a94a038bacd48e4c164a331b1387b4e03b3ff7c..f1b50c027eafd6e16db1fd490728a83dd4875780 100644 >--- a/Source/WebCore/bindings/v8/V8BindingPerContextData.h >+++ b/Source/WebCore/bindings/v8/V8BindingPerContextData.h >@@ -90,6 +90,8 @@ private: > ConstructorMap m_constructorMap; > > v8::Handle<v8::Context> m_context; >+ OwnHandle<v8::Value> m_arrayPrototype; >+ OwnHandle<v8::Value> m_errorPrototype; > OwnHandle<v8::Value> m_objectPrototype; > }; > >diff --git a/Source/WebCore/bindings/v8/V8HiddenPropertyName.h b/Source/WebCore/bindings/v8/V8HiddenPropertyName.h >index ef025d39fdf1df61f2c5a065777edc0b4cdd758c..18362cb193e5cdd8a04f975ec966ba2ce7b0824c 100644 >--- a/Source/WebCore/bindings/v8/V8HiddenPropertyName.h >+++ b/Source/WebCore/bindings/v8/V8HiddenPropertyName.h >@@ -36,7 +36,6 @@ > namespace WebCore { > > #define V8_HIDDEN_PROPERTIES(V) \ >- V(objectPrototype) \ > V(listener) \ > V(attributeListener) \ > V(scriptState) \ >diff --git a/Source/WebCore/bindings/v8/WrapperTypeInfo.h b/Source/WebCore/bindings/v8/WrapperTypeInfo.h >index c2684d66be667fb20937d45d93abcf7276a15ccc..df3e677558e06bd9487a0b66b622b747c89de796 100644 >--- a/Source/WebCore/bindings/v8/WrapperTypeInfo.h >+++ b/Source/WebCore/bindings/v8/WrapperTypeInfo.h >@@ -46,12 +46,18 @@ namespace WebCore { > typedef v8::Persistent<v8::FunctionTemplate> (*GetTemplateFunction)(); > typedef void (*DerefObjectFunction)(void*); > typedef ActiveDOMObject* (*ToActiveDOMObjectFunction)(v8::Handle<v8::Object>); >- >+ >+ enum WrapperTypePrototype { >+ WrapperTypeObjectPrototype, >+ WrapperTypeArrayPrototype, >+ WrapperTypeErrorPrototype >+ }; >+ > // This struct provides a way to store a bunch of information that is helpful when unwrapping > // v8 objects. Each v8 bindings class has exactly one static WrapperTypeInfo member, so > // comparing pointers is a safe way to determine if types match. > struct WrapperTypeInfo { >- >+ > static WrapperTypeInfo* unwrap(v8::Handle<v8::Value> typeInfoWrapper) > { > return reinterpret_cast<WrapperTypeInfo*>(v8::External::Unwrap(typeInfoWrapper)); >@@ -92,6 +98,7 @@ namespace WebCore { > const DerefObjectFunction derefObjectFunction; > const ToActiveDOMObjectFunction toActiveDOMObjectFunction; > const WrapperTypeInfo* parentClass; >+ const WrapperTypePrototype wrapperTypePrototype; > }; > } > >diff --git a/Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.cpp b/Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.cpp >index 8c73a38e74fd01cbee2760b905b4f3835c21cba5..7a1a95dc0d72fe0f6a31dc1a645e2710c16be7c0 100644 >--- a/Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.cpp >+++ b/Source/WebCore/bindings/v8/custom/V8HTMLImageElementConstructor.cpp >@@ -44,7 +44,7 @@ > > namespace WebCore { > >-WrapperTypeInfo V8HTMLImageElementConstructor::info = { V8HTMLImageElementConstructor::GetTemplate, 0, 0, 0 }; >+WrapperTypeInfo V8HTMLImageElementConstructor::info = { V8HTMLImageElementConstructor::GetTemplate, 0, 0, 0, WrapperTypeObjectPrototype }; > > static v8::Handle<v8::Value> v8HTMLImageElementConstructorCallback(const v8::Arguments& args) > { >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 95a475e1fa91a50665151dc58ce31c453cd5a454..1497fa27eef93cab62d235aa72729fb6868046c6 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,42 @@ >+2012-05-10 Erik Arvidsson <arv@chromium.org> >+ >+ Make DOM Exceptions Errors >+ https://bugs.webkit.org/show_bug.cgi?id=85078 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ WebIDL mandates that exceptions should have Error.prototype on its prototype chain. >+ >+ For JSC we have access to the Error.prototype (and Array.prototype) from the binding code. >+ >+ For V8 we set a field in the WrapperTypeInfo and when the constructor function is created we >+ set the prototype as needed. >+ >+ This patch also adds support for [ArrayClass] since that code is almost identical. It does not >+ however use [ArrayClass] in any places yet. >+ >+ * fast/dom/DOMException/prototype-object-expected.txt: >+ * fast/dom/DOMException/prototype-object.html: >+ * fast/dom/DOMException/resources/prototype-object.js: Removed. >+ * platform/chromium-mac/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt: Removed. >+ * platform/chromium-mac/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt: Removed. >+ * platform/chromium-mac/fast/dynamic/015-expected.txt: >+ * platform/chromium-mac/svg/filters/feBlend-invalid-mode-expected.txt: Removed. >+ * platform/chromium-win/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt: Removed. >+ * platform/chromium-win/fast/dynamic/015-expected.txt: >+ * platform/chromium-win/svg/filters/feBlend-invalid-mode-expected.txt: Removed. >+ * platform/chromium/dom/xhtml/level3/core/documentnormalizedocument10-expected.txt: Added. >+ * platform/chromium/dom/xhtml/level3/core/documentsetxmlversion03-expected.txt: Added. >+ * platform/chromium/fast/dom/DOMException/prototype-object-expected.txt: >+ * platform/chromium/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt: Renamed from LayoutTests/platform/chromium-win/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt. >+ * platform/chromium/fast/dom/insertAdjacentHTML-DocumentFragment-crash-expected.txt: >+ * platform/chromium/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt: Added. >+ * platform/chromium/fast/events/remove-target-with-shadow-in-drag-expected.txt: >+ * platform/chromium/fast/inspector-support/uncaught-dom1-exception-expected.txt: >+ * platform/chromium/fast/inspector-support/uncaught-dom3-exception-expected.txt: >+ * platform/chromium/fast/inspector-support/uncaught-dom8-exception-expected.txt: >+ * platform/chromium/svg/filters/feBlend-invalid-mode-expected.txt: Added. >+ > 2012-05-10 Joe Thomas <joethomas@motorola.com> > > [CSS3 Backgrounds and Borders] Add background-size to the background shorthand >diff --git a/LayoutTests/fast/dom/DOMException/prototype-object-expected.txt b/LayoutTests/fast/dom/DOMException/prototype-object-expected.txt >index abe0b4af05a770b990b1b3c274dd6f4b94cf58e5..1b518321e4b2bd38bf403b28b3048e62535424aa 100644 >--- a/LayoutTests/fast/dom/DOMException/prototype-object-expected.txt >+++ b/LayoutTests/fast/dom/DOMException/prototype-object-expected.txt >@@ -1,4 +1,4 @@ >-DOMException needs a real prototype: http://bugs.webkit.org/show_bug.cgi?id=16637 >+This tests the prototype chain of DOMException objects. > > On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". > >@@ -6,7 +6,10 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > PASS e.toString() is "Error: HIERARCHY_REQUEST_ERR: DOM Exception 3" > PASS Object.prototype.toString.call(e) is "[object DOMException]" > PASS Object.prototype.toString.call(e.__proto__) is "[object DOMExceptionPrototype]" >+PASS Object.prototype.toString.call(e.__proto__.__proto__) is "[object Error]" > PASS e.constructor.toString() is "[object DOMExceptionConstructor]" >+PASS e instanceof DOMException is true >+PASS e instanceof Error is true > PASS e.constructor is window.DOMException > PASS e.HIERARCHY_REQUEST_ERR is e.constructor.HIERARCHY_REQUEST_ERR > PASS e.HIERARCHY_REQUEST_ERR is 3 >diff --git a/LayoutTests/fast/dom/DOMException/prototype-object.html b/LayoutTests/fast/dom/DOMException/prototype-object.html >index bffc26d6872e65e148c2c6386b8f1c85fa642c51..b6072c990ea058d0e2a54dacafbdcbe7acc8e38c 100644 >--- a/LayoutTests/fast/dom/DOMException/prototype-object.html >+++ b/LayoutTests/fast/dom/DOMException/prototype-object.html >@@ -1,10 +1,27 @@ >-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> >-<html> >-<head> >+<!DOCTYPE html> > <script src="../../js/resources/js-test-pre.js"></script> >-</head> >-<body> >-<script src="resources/prototype-object.js"></script> >+<script> >+ >+description("This tests the prototype chain of DOMException objects.") >+ >+var e; >+try { >+ document.appendChild(document); >+ // raises a HIERARCHY_REQUEST_ERR >+} catch (err) { >+ e = err; >+} >+ >+shouldBeEqualToString("e.toString()", "Error: HIERARCHY_REQUEST_ERR: DOM Exception 3"); >+shouldBeEqualToString("Object.prototype.toString.call(e)", "[object DOMException]"); >+shouldBeEqualToString("Object.prototype.toString.call(e.__proto__)", "[object DOMExceptionPrototype]"); >+shouldBeEqualToString("Object.prototype.toString.call(e.__proto__.__proto__)", "[object Error]"); >+shouldBeEqualToString("e.constructor.toString()", "[object DOMExceptionConstructor]"); >+shouldBeTrue("e instanceof DOMException"); >+shouldBeTrue("e instanceof Error"); >+shouldBe("e.constructor", "window.DOMException"); >+shouldBe("e.HIERARCHY_REQUEST_ERR", "e.constructor.HIERARCHY_REQUEST_ERR"); >+shouldBe("e.HIERARCHY_REQUEST_ERR", "3"); >+ >+</script> > <script src="../../js/resources/js-test-post.js"></script> >-</body> >-</html> >diff --git a/LayoutTests/fast/dom/DOMException/resources/prototype-object.js b/LayoutTests/fast/dom/DOMException/resources/prototype-object.js >deleted file mode 100644 >index 722c80e87fd7eca79a5832b679e2a4a8aa30b5aa..0000000000000000000000000000000000000000 >--- a/LayoutTests/fast/dom/DOMException/resources/prototype-object.js >+++ /dev/null >@@ -1,17 +0,0 @@ >-description("DOMException needs a real prototype: http://bugs.webkit.org/show_bug.cgi?id=16637") >- >-var e; >-try { >- document.body.appendChild(document.documentElement); >- // raises a HIERARCHY_REQUEST_ERR >-} catch (err) { >- e = err; >-} >- >-shouldBeEqualToString("e.toString()", "Error: HIERARCHY_REQUEST_ERR: DOM Exception 3"); >-shouldBeEqualToString("Object.prototype.toString.call(e)", "[object DOMException]"); >-shouldBeEqualToString("Object.prototype.toString.call(e.__proto__)", "[object DOMExceptionPrototype]"); >-shouldBeEqualToString("e.constructor.toString()", "[object DOMExceptionConstructor]"); >-shouldBe("e.constructor", "window.DOMException"); >-shouldBe("e.HIERARCHY_REQUEST_ERR", "e.constructor.HIERARCHY_REQUEST_ERR"); >-shouldBe("e.HIERARCHY_REQUEST_ERR", "3"); >diff --git a/LayoutTests/platform/chromium-mac/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt b/LayoutTests/platform/chromium-mac/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt >deleted file mode 100644 >index 81aba0a1f3bf7eb749b552ccdd8720fc832ca64e..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/chromium-mac/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt >+++ /dev/null >@@ -1,2 +0,0 @@ >-CONSOLE MESSAGE: line 7: Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 >-This passes if it does not crash. (see https://bugs.webkit.org/show_bug.cgi?id=18958) >diff --git a/LayoutTests/platform/chromium-mac/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt b/LayoutTests/platform/chromium-mac/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt >deleted file mode 100644 >index 5c427ce3d8e57fc3e85093cb8dcfa3a61c1e469f..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/chromium-mac/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt >+++ /dev/null >@@ -1,2 +0,0 @@ >-CONSOLE MESSAGE: line 10: Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 >- >diff --git a/LayoutTests/platform/chromium-mac/fast/dynamic/015-expected.txt b/LayoutTests/platform/chromium-mac/fast/dynamic/015-expected.txt >index 5487a556c4e6812dfc0631ec573aa91e1f85c759..cb314fbd4ff3636939d877ca35720cefd4af8861 100644 >--- a/LayoutTests/platform/chromium-mac/fast/dynamic/015-expected.txt >+++ b/LayoutTests/platform/chromium-mac/fast/dynamic/015-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 16: Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1 >+CONSOLE MESSAGE: line 16: Uncaught INDEX_SIZE_ERR: INDEX_SIZE_ERR: DOM Exception 1 > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/chromium-mac/svg/filters/feBlend-invalid-mode-expected.txt b/LayoutTests/platform/chromium-mac/svg/filters/feBlend-invalid-mode-expected.txt >deleted file mode 100644 >index c5e7826915b105a5d0b441b5cea1a1337d07c7a5..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/chromium-mac/svg/filters/feBlend-invalid-mode-expected.txt >+++ /dev/null >@@ -1,2 +0,0 @@ >-CONSOLE MESSAGE: line 14: Uncaught Error: SVG_INVALID_VALUE_ERR: DOM SVG Exception 1 >-PASS: Invalid blend modes do not trigger a crash. >diff --git a/LayoutTests/platform/chromium-win/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt b/LayoutTests/platform/chromium-win/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt >deleted file mode 100644 >index 81aba0a1f3bf7eb749b552ccdd8720fc832ca64e..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/chromium-win/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt >+++ /dev/null >@@ -1,2 +0,0 @@ >-CONSOLE MESSAGE: line 7: Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 >-This passes if it does not crash. (see https://bugs.webkit.org/show_bug.cgi?id=18958) >diff --git a/LayoutTests/platform/chromium-win/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt b/LayoutTests/platform/chromium-win/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt >deleted file mode 100644 >index 5c427ce3d8e57fc3e85093cb8dcfa3a61c1e469f..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/chromium-win/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt >+++ /dev/null >@@ -1,2 +0,0 @@ >-CONSOLE MESSAGE: line 10: Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 >- >diff --git a/LayoutTests/platform/chromium-win/fast/dynamic/015-expected.txt b/LayoutTests/platform/chromium-win/fast/dynamic/015-expected.txt >index a4105b3c44b12374954269866ae288777179690f..abfba73bd3bec92ad86e6c039a6b68d60af6861c 100644 >--- a/LayoutTests/platform/chromium-win/fast/dynamic/015-expected.txt >+++ b/LayoutTests/platform/chromium-win/fast/dynamic/015-expected.txt >@@ -1,4 +1,4 @@ >-CONSOLE MESSAGE: line 16: Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1 >+CONSOLE MESSAGE: line 16: Uncaught INDEX_SIZE_ERR: INDEX_SIZE_ERR: DOM Exception 1 > layer at (0,0) size 800x600 > RenderView at (0,0) size 800x600 > layer at (0,0) size 800x600 >diff --git a/LayoutTests/platform/chromium-win/svg/filters/feBlend-invalid-mode-expected.txt b/LayoutTests/platform/chromium-win/svg/filters/feBlend-invalid-mode-expected.txt >deleted file mode 100644 >index c5e7826915b105a5d0b441b5cea1a1337d07c7a5..0000000000000000000000000000000000000000 >--- a/LayoutTests/platform/chromium-win/svg/filters/feBlend-invalid-mode-expected.txt >+++ /dev/null >@@ -1,2 +0,0 @@ >-CONSOLE MESSAGE: line 14: Uncaught Error: SVG_INVALID_VALUE_ERR: DOM SVG Exception 1 >-PASS: Invalid blend modes do not trigger a crash. >diff --git a/LayoutTests/platform/chromium/dom/xhtml/level3/core/documentnormalizedocument10-expected.txt b/LayoutTests/platform/chromium/dom/xhtml/level3/core/documentnormalizedocument10-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..306ea85592ae473829afd3529b02a0f86cdbc1ab >--- /dev/null >+++ b/LayoutTests/platform/chromium/dom/xhtml/level3/core/documentnormalizedocument10-expected.txt >@@ -0,0 +1,3 @@ >+Test http://www.w3.org/2001/DOM-Test-Suite/level3/core/documentnormalizedocument10 >+Status error >+Message Line undefined: HIERARCHY_REQUEST_ERR >diff --git a/LayoutTests/platform/chromium/dom/xhtml/level3/core/documentsetxmlversion03-expected.txt b/LayoutTests/platform/chromium/dom/xhtml/level3/core/documentsetxmlversion03-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7e0936ba478de17cc11b17da77a5043d0380044b >--- /dev/null >+++ b/LayoutTests/platform/chromium/dom/xhtml/level3/core/documentsetxmlversion03-expected.txt >@@ -0,0 +1,3 @@ >+Test http://www.w3.org/2001/DOM-Test-Suite/level3/core/documentsetxmlversion03 >+Status error >+Message Line undefined: NOT_SUPPORTED_ERR >diff --git a/LayoutTests/platform/chromium/fast/dom/DOMException/prototype-object-expected.txt b/LayoutTests/platform/chromium/fast/dom/DOMException/prototype-object-expected.txt >index 772445cf70aa1e4a9f6305f6519de65ca25e26ec..2a549390dba7b804d9341a10e062a5069d60e7a5 100644 >--- a/LayoutTests/platform/chromium/fast/dom/DOMException/prototype-object-expected.txt >+++ b/LayoutTests/platform/chromium/fast/dom/DOMException/prototype-object-expected.txt >@@ -1,4 +1,4 @@ >-DOMException needs a real prototype: http://bugs.webkit.org/show_bug.cgi?id=16637 >+This tests the prototype chain of DOMException objects. > > On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". > >@@ -6,7 +6,10 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE > PASS e.toString() is "Error: HIERARCHY_REQUEST_ERR: DOM Exception 3" > PASS Object.prototype.toString.call(e) is "[object DOMException]" > FAIL Object.prototype.toString.call(e.__proto__) should be [object DOMExceptionPrototype]. Was [object Object]. >+PASS Object.prototype.toString.call(e.__proto__.__proto__) is "[object Error]" > FAIL e.constructor.toString() should be [object DOMExceptionConstructor]. Was function DOMException() { [native code] }. >+PASS e instanceof DOMException is true >+PASS e instanceof Error is true > PASS e.constructor is window.DOMException > PASS e.HIERARCHY_REQUEST_ERR is e.constructor.HIERARCHY_REQUEST_ERR > PASS e.HIERARCHY_REQUEST_ERR is 3 >diff --git a/LayoutTests/platform/chromium/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt b/LayoutTests/platform/chromium/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..02c2792a8d092f1e6f645b5b827982e84189e5b1 >--- /dev/null >+++ b/LayoutTests/platform/chromium/fast/dom/NamedNodeMap-setNamedItem-crash-expected.txt >@@ -0,0 +1,2 @@ >+CONSOLE MESSAGE: line 7: Uncaught NOT_FOUND_ERR: NOT_FOUND_ERR: DOM Exception 8 >+This passes if it does not crash. (see https://bugs.webkit.org/show_bug.cgi?id=18958) >diff --git a/LayoutTests/platform/chromium/fast/dom/insertAdjacentHTML-DocumentFragment-crash-expected.txt b/LayoutTests/platform/chromium/fast/dom/insertAdjacentHTML-DocumentFragment-crash-expected.txt >index 84525413c66b3dc210e8070b93fe5335d4082255..505b255778c890b3b7a83fccffdc1407577a21ad 100644 >--- a/LayoutTests/platform/chromium/fast/dom/insertAdjacentHTML-DocumentFragment-crash-expected.txt >+++ b/LayoutTests/platform/chromium/fast/dom/insertAdjacentHTML-DocumentFragment-crash-expected.txt >@@ -1,2 +1,2 @@ >-CONSOLE MESSAGE: line 9: Uncaught Error: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7 >+CONSOLE MESSAGE: line 9: Uncaught NO_MODIFICATION_ALLOWED_ERR: NO_MODIFICATION_ALLOWED_ERR: DOM Exception 7 > This test passes if it doesn't crash (or ASSERT). >diff --git a/LayoutTests/platform/chromium/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt b/LayoutTests/platform/chromium/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..980edab96039a0d2f1495d4fdb7ce83194c14c21 >--- /dev/null >+++ b/LayoutTests/platform/chromium/fast/dom/timer-clear-interval-in-handler-and-generate-error-expected.txt >@@ -0,0 +1,2 @@ >+CONSOLE MESSAGE: line 10: Uncaught NOT_FOUND_ERR: NOT_FOUND_ERR: DOM Exception 8 >+ >diff --git a/LayoutTests/platform/chromium/fast/events/remove-target-with-shadow-in-drag-expected.txt b/LayoutTests/platform/chromium/fast/events/remove-target-with-shadow-in-drag-expected.txt >index eefd7f24fe21f71a1980322b0066c59c7e777380..1f9f119a66e0c07937b8904ae3515ecc558b710e 100644 >--- a/LayoutTests/platform/chromium/fast/events/remove-target-with-shadow-in-drag-expected.txt >+++ b/LayoutTests/platform/chromium/fast/events/remove-target-with-shadow-in-drag-expected.txt >@@ -1,3 +1,3 @@ >-CONSOLE MESSAGE: line 34: Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 >-CONSOLE MESSAGE: line 34: Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 >+CONSOLE MESSAGE: line 34: Uncaught NOT_FOUND_ERR: NOT_FOUND_ERR: DOM Exception 8 >+CONSOLE MESSAGE: line 34: Uncaught NOT_FOUND_ERR: NOT_FOUND_ERR: DOM Exception 8 > PASS. DRT didn't crash. >diff --git a/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom1-exception-expected.txt b/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom1-exception-expected.txt >index 4392163c1e41775ceab561e17c90ae171346ad6a..4eb3f42e4d0cb084da18d5359322e2b2abd453bc 100644 >--- a/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom1-exception-expected.txt >+++ b/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom1-exception-expected.txt >@@ -1,2 +1,2 @@ >-CONSOLE MESSAGE: line 13: Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1 >+CONSOLE MESSAGE: line 13: Uncaught INDEX_SIZE_ERR: INDEX_SIZE_ERR: DOM Exception 1 > This tests that we are getting the correct message for DOM Exception 1: INDEX_SIZE_ERR. >diff --git a/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom3-exception-expected.txt b/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom3-exception-expected.txt >index 915a649ec87c4f548f84c50adf789cf6906b4bd2..c2f63b3dfbe32fc74cf8886cdc10aa1d13927e67 100644 >--- a/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom3-exception-expected.txt >+++ b/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom3-exception-expected.txt >@@ -1,2 +1,2 @@ >-CONSOLE MESSAGE: line 9: Uncaught Error: HIERARCHY_REQUEST_ERR: DOM Exception 3 >+CONSOLE MESSAGE: line 9: Uncaught HIERARCHY_REQUEST_ERR: HIERARCHY_REQUEST_ERR: DOM Exception 3 > This tests that we are getting the correct message for DOM Exception 3: HIERARCHY_REQUEST_ERR. >diff --git a/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom8-exception-expected.txt b/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom8-exception-expected.txt >index 582d6ead086aac8091690fd2d67349cd847b812b..b31e96758ba2d10fae74e4655168971381dab49c 100644 >--- a/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom8-exception-expected.txt >+++ b/LayoutTests/platform/chromium/fast/inspector-support/uncaught-dom8-exception-expected.txt >@@ -1,2 +1,2 @@ >-CONSOLE MESSAGE: line 9: Uncaught Error: NOT_FOUND_ERR: DOM Exception 8 >+CONSOLE MESSAGE: line 9: Uncaught NOT_FOUND_ERR: NOT_FOUND_ERR: DOM Exception 8 > This tests that we are getting the correct message for DOM Exception 8: NOT_FOUND_ERR. >diff --git a/LayoutTests/platform/chromium/svg/filters/feBlend-invalid-mode-expected.txt b/LayoutTests/platform/chromium/svg/filters/feBlend-invalid-mode-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..b44e869d5b8b6a4c224f75f86f0f383c5ec01fc8 >--- /dev/null >+++ b/LayoutTests/platform/chromium/svg/filters/feBlend-invalid-mode-expected.txt >@@ -0,0 +1,2 @@ >+CONSOLE MESSAGE: line 14: Uncaught SVG_INVALID_VALUE_ERR: SVG_INVALID_VALUE_ERR: DOM SVG Exception 1 >+PASS: Invalid blend modes do not trigger a crash.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 85078
:
140097
|
140333
|
140350
|
141192
|
141215
|
141508
|
141516
|
141784
|
142762
|
142778
|
143914
|
143938
|
144602
|
144896
|
144952