diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-05 14:34:32 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-05 14:34:32 -0800 |
commit | 635860845790a19bf50bbc51ba8fb66a96dde068 (patch) | |
tree | ef6ad9ff73a5b57f65249d4232a202fa77e6a140 /WebCore/bindings/objc | |
parent | 8e35f3cfc7fba1d1c829dc557ebad6409cbe16a2 (diff) | |
download | external_webkit-635860845790a19bf50bbc51ba8fb66a96dde068.zip external_webkit-635860845790a19bf50bbc51ba8fb66a96dde068.tar.gz external_webkit-635860845790a19bf50bbc51ba8fb66a96dde068.tar.bz2 |
auto import from //depot/cupcake/@136594
Diffstat (limited to 'WebCore/bindings/objc')
-rw-r--r-- | WebCore/bindings/objc/DOMAbstractView.mm | 5 | ||||
-rw-r--r-- | WebCore/bindings/objc/DOMHTML.mm | 6 | ||||
-rw-r--r-- | WebCore/bindings/objc/DOMInternal.h | 9 | ||||
-rw-r--r-- | WebCore/bindings/objc/DOMInternal.mm | 40 | ||||
-rw-r--r-- | WebCore/bindings/objc/DOMObject.mm | 13 | ||||
-rw-r--r-- | WebCore/bindings/objc/DOMRGBColor.mm | 40 | ||||
-rw-r--r-- | WebCore/bindings/objc/WebScriptObject.mm | 94 | ||||
-rw-r--r-- | WebCore/bindings/objc/WebScriptObjectPrivate.h | 2 |
8 files changed, 115 insertions, 94 deletions
diff --git a/WebCore/bindings/objc/DOMAbstractView.mm b/WebCore/bindings/objc/DOMAbstractView.mm index c751903..728a39a 100644 --- a/WebCore/bindings/objc/DOMAbstractView.mm +++ b/WebCore/bindings/objc/DOMAbstractView.mm @@ -48,11 +48,6 @@ [super dealloc]; } -- (void)finalize -{ - [super finalize]; -} - - (DOMDocument *)document { if (!_internal) diff --git a/WebCore/bindings/objc/DOMHTML.mm b/WebCore/bindings/objc/DOMHTML.mm index 59f2d7f..baf5774 100644 --- a/WebCore/bindings/objc/DOMHTML.mm +++ b/WebCore/bindings/objc/DOMHTML.mm @@ -36,6 +36,7 @@ #import "HTMLDocument.h" #import "HTMLInputElement.h" #import "HTMLObjectElement.h" +#import "HTMLSelectElement.h" #import "Range.h" #import "RenderTextControl.h" #import "markup.h" @@ -155,11 +156,12 @@ @end -@implementation DOMHTMLSelectElement(FormAutoFillTransition) +@implementation DOMHTMLSelectElement (FormAutoFillTransition) - (void)_activateItemAtIndex:(int)index { - // FIXME: Needs implementation for non-NSView <select>! + if (WebCore::HTMLSelectElement* select = [self _HTMLSelectElement]) + select->setSelectedIndex(index); } @end diff --git a/WebCore/bindings/objc/DOMInternal.h b/WebCore/bindings/objc/DOMInternal.h index a1ca9fe..9ddcada 100644 --- a/WebCore/bindings/objc/DOMInternal.h +++ b/WebCore/bindings/objc/DOMInternal.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple, Inc. All rights reserved. + * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. * Copyright (C) 2006 James G. Speth (speth@end.com) * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) * @@ -150,6 +150,7 @@ #import "DOMUIEventInternal.h" #import "DOMWebKitCSSKeyframeRuleInternal.h" #import "DOMWebKitCSSKeyframesRuleInternal.h" +#import "DOMWebKitCSSMatrixInternal.h" #import "DOMWebKitCSSTransformValueInternal.h" #import "DOMWheelEventInternal.h" @@ -299,7 +300,7 @@ namespace WebCore { class NodeFilter; #if ENABLE(SVG) - class AffineTransform; + class TransformationMatrix; class FloatPoint; class FloatRect; #endif // ENABLE(SVG) @@ -336,6 +337,10 @@ namespace WebCore { namespace WebCore { + // Create an NSMapTable mapping from pointers to ObjC objects held with zeroing weak references. + NSMapTable* createWrapperCache(); + NSMapTable* createWrapperCacheWithIntegerKeys(); // Same, but from integers to ObjC objects. + id createDOMWrapper(JSC::JSObject*, PassRefPtr<JSC::Bindings::RootObject> origin, PassRefPtr<JSC::Bindings::RootObject> current); NSObject* getDOMWrapper(DOMObjectInternal*); diff --git a/WebCore/bindings/objc/DOMInternal.mm b/WebCore/bindings/objc/DOMInternal.mm index f0b6305..ea26d5e 100644 --- a/WebCore/bindings/objc/DOMInternal.mm +++ b/WebCore/bindings/objc/DOMInternal.mm @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -45,33 +45,55 @@ namespace WebCore { -typedef HashMap<DOMObjectInternal*, NSObject*> DOMWrapperMap; -static DOMWrapperMap* DOMWrapperCache; +static NSMapTable* DOMWrapperCache; + +NSMapTable* createWrapperCache() +{ +#ifdef BUILDING_ON_TIGER + return NSCreateMapTable(NSNonOwnedPointerMapKeyCallBacks, NSNonRetainedObjectMapValueCallBacks, 0); +#else + // NSMapTable with zeroing weak pointers is the recommended way to build caches like this under garbage collection. + NSPointerFunctionsOptions keyOptions = NSPointerFunctionsOpaqueMemory | NSPointerFunctionsOpaquePersonality; + NSPointerFunctionsOptions valueOptions = NSPointerFunctionsZeroingWeakMemory | NSPointerFunctionsObjectPersonality; + return [[NSMapTable alloc] initWithKeyOptions:keyOptions valueOptions:valueOptions capacity:0]; +#endif +} + +NSMapTable* createWrapperCacheWithIntegerKeys() +{ +#ifdef BUILDING_ON_TIGER + return NSCreateMapTable(NSIntMapKeyCallBacks, NSNonRetainedObjectMapValueCallBacks, 0); +#else + // NSMapTable with zeroing weak pointers is the recommended way to build caches like this under garbage collection. + NSPointerFunctionsOptions keyOptions = NSPointerFunctionsOpaqueMemory | NSPointerFunctionsIntegerPersonality; + NSPointerFunctionsOptions valueOptions = NSPointerFunctionsZeroingWeakMemory | NSPointerFunctionsObjectPersonality; + return [[NSMapTable alloc] initWithKeyOptions:keyOptions valueOptions:valueOptions capacity:0]; +#endif +} NSObject* getDOMWrapper(DOMObjectInternal* impl) { if (!DOMWrapperCache) return nil; - return DOMWrapperCache->get(impl); + return static_cast<NSObject*>(NSMapGet(DOMWrapperCache, impl)); } void addDOMWrapper(NSObject* wrapper, DOMObjectInternal* impl) { if (!DOMWrapperCache) - DOMWrapperCache = new DOMWrapperMap; - DOMWrapperCache->set(impl, wrapper); + DOMWrapperCache = createWrapperCache(); + NSMapInsert(DOMWrapperCache, impl, wrapper); } void removeDOMWrapper(DOMObjectInternal* impl) { if (!DOMWrapperCache) return; - DOMWrapperCache->remove(impl); + NSMapRemove(DOMWrapperCache, impl); } } // namespace WebCore - //------------------------------------------------------------------------------------------ @implementation WebScriptObject (WebScriptObjectInternal) @@ -94,7 +116,7 @@ void removeDOMWrapper(DOMObjectInternal* impl) - (void)_initializeScriptDOMNodeImp { - assert (_private->isCreatedByDOMWrapper); + ASSERT(_private->isCreatedByDOMWrapper); if (![self isKindOfClass:[DOMNode class]]) { // DOMObject can't map back to a document, and thus an interpreter, diff --git a/WebCore/bindings/objc/DOMObject.mm b/WebCore/bindings/objc/DOMObject.mm index f820df9..8510ae9 100644 --- a/WebCore/bindings/objc/DOMObject.mm +++ b/WebCore/bindings/objc/DOMObject.mm @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004-2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2004, 2006, 2006, 2008 Apple Inc. All rights reserved. * Copyright (C) 2006 James G. Speth <speth@end.com> * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> * @@ -38,6 +38,7 @@ #import "ProcessingInstruction.h" #import "StyleSheet.h" #import "WebScriptObjectPrivate.h" +#import <wtf/UnusedParam.h> @implementation DOMObject @@ -56,15 +57,9 @@ [super dealloc]; } -- (void)finalize -{ - if (_internal) - WebCore::removeDOMWrapper(_internal); - [super finalize]; -} - -- (id)copyWithZone:(NSZone *)zone +- (id)copyWithZone:(NSZone *)unusedZone { + UNUSED_PARAM(unusedZone); return [self retain]; } diff --git a/WebCore/bindings/objc/DOMRGBColor.mm b/WebCore/bindings/objc/DOMRGBColor.mm index eca2c25..5921b8e 100644 --- a/WebCore/bindings/objc/DOMRGBColor.mm +++ b/WebCore/bindings/objc/DOMRGBColor.mm @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) * * Redistribution and use in source and binary forms, with or without @@ -33,33 +33,34 @@ #import "DOMCSSPrimitiveValue.h" #import "DOMInternal.h" #import "WebCoreObjCExtras.h" +#import <runtime/InitializeThreading.h> #import <wtf/GetPtr.h> namespace WebCore { -static CFMutableDictionaryRef wrapperCache = NULL; +static NSMapTable* RGBColorWrapperCache; -id getWrapperForRGB(WebCore::RGBA32 value) +static id getWrapperForRGB(WebCore::RGBA32 value) { - if (!wrapperCache) + if (!RGBColorWrapperCache) return nil; - return (id)CFDictionaryGetValue(wrapperCache, reinterpret_cast<const void*>(value)); + return static_cast<id>(NSMapGet(RGBColorWrapperCache, reinterpret_cast<const void*>(value))); } -void setWrapperForRGB(id wrapper, WebCore::RGBA32 value) +static void setWrapperForRGB(id wrapper, WebCore::RGBA32 value) { - if (!wrapperCache) + if (!RGBColorWrapperCache) // No need to retain/free either impl key, or id value. Items will be removed // from the cache in dealloc methods. - wrapperCache = CFDictionaryCreateMutable(NULL, 0, NULL, NULL); - CFDictionarySetValue(wrapperCache, reinterpret_cast<const void*>(value), wrapper); + RGBColorWrapperCache = createWrapperCacheWithIntegerKeys(); + NSMapInsert(RGBColorWrapperCache, reinterpret_cast<const void*>(value), wrapper); } -void removeWrapperForRGB(WebCore::RGBA32 value) +static void removeWrapperForRGB(WebCore::RGBA32 value) { - if (!wrapperCache) + if (!RGBColorWrapperCache) return; - CFDictionaryRemoveValue(wrapperCache, reinterpret_cast<const void*>(value)); + NSMapRemove(RGBColorWrapperCache, reinterpret_cast<const void*>(value)); } } // namespace WebCore @@ -67,12 +68,13 @@ void removeWrapperForRGB(WebCore::RGBA32 value) @implementation DOMRGBColor -#ifndef BUILDING_ON_TIGER + (void)initialize { + JSC::initializeThreading(); +#ifndef BUILDING_ON_TIGER WebCoreObjCFinalizeOnMainThread(self); -} #endif +} - (void)dealloc { @@ -84,12 +86,6 @@ void removeWrapperForRGB(WebCore::RGBA32 value) [super dealloc]; } -- (void)finalize -{ - WebCore::removeWrapperForRGB(reinterpret_cast<uintptr_t>(_internal)); - [super finalize]; -} - - (DOMCSSPrimitiveValue *)red { WebCore::RGBA32 rgb = reinterpret_cast<uintptr_t>(_internal); @@ -129,8 +125,8 @@ void removeWrapperForRGB(WebCore::RGBA32 value) @implementation DOMRGBColor (WebPrivate) -// FIXME: this should be removed as soon as all internal Apple uses of it have been replaced with -// calls to the public method - (NSColor *)color. +// FIXME: this should be removed once all internal Apple uses of it have been replaced with +// calls to the public method, color without the leading underscore. - (NSColor *)_color { return [self color]; diff --git a/WebCore/bindings/objc/WebScriptObject.mm b/WebCore/bindings/objc/WebScriptObject.mm index 6262b97..f08d61b 100644 --- a/WebCore/bindings/objc/WebScriptObject.mm +++ b/WebCore/bindings/objc/WebScriptObject.mm @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2006, 2007 Apple Inc. All rights reserved. + * Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -40,11 +40,12 @@ #import "runtime_object.h" #import "runtime_root.h" #import <JavaScriptCore/APICast.h> -#import <runtime/ExecState.h> +#import <interpreter/CallFrame.h> +#import <runtime/InitializeThreading.h> #import <runtime/JSGlobalObject.h> #import <runtime/JSLock.h> -#import <kjs/completion.h> -#import <kjs/interpreter.h> +#import <runtime/Completion.h> +#import <runtime/Completion.h> #ifdef BUILDING_ON_TIGER typedef unsigned NSUInteger; @@ -56,28 +57,27 @@ using namespace WebCore; namespace WebCore { -typedef HashMap<JSObject*, NSObject*> JSWrapperMap; -static JSWrapperMap* JSWrapperCache; +static NSMapTable* JSWrapperCache; NSObject* getJSWrapper(JSObject* impl) { if (!JSWrapperCache) return nil; - return JSWrapperCache->get(impl); + return static_cast<NSObject*>(NSMapGet(JSWrapperCache, impl)); } void addJSWrapper(NSObject* wrapper, JSObject* impl) { if (!JSWrapperCache) - JSWrapperCache = new JSWrapperMap; - JSWrapperCache->set(impl, wrapper); + JSWrapperCache = createWrapperCache(); + NSMapInsert(JSWrapperCache, impl, wrapper); } void removeJSWrapper(JSObject* impl) { if (!JSWrapperCache) return; - JSWrapperCache->remove(impl); + NSMapRemove(JSWrapperCache, impl); } id createJSWrapper(JSC::JSObject* object, PassRefPtr<JSC::Bindings::RootObject> origin, PassRefPtr<JSC::Bindings::RootObject> root) @@ -92,7 +92,7 @@ static void addExceptionToConsole(ExecState* exec) JSDOMWindow* window = asJSDOMWindow(exec->dynamicGlobalObject()); if (!window || !exec->hadException()) return; - window->impl()->console()->reportCurrentException(exec); + reportCurrentException(exec); } } // namespace WebCore @@ -103,12 +103,13 @@ static void addExceptionToConsole(ExecState* exec) @implementation WebScriptObject -#ifndef BUILDING_ON_TIGER + (void)initialize { + JSC::initializeThreading(); +#ifndef BUILDING_ON_TIGER WebCoreObjCFinalizeOnMainThread(self); -} #endif +} + (id)scriptObjectForJSObject:(JSObjectRef)jsObject originRootObject:(RootObject*)originRootObject rootObject:(RootObject*)rootObject { @@ -246,9 +247,6 @@ static void _didExecute(WebScriptObject *obj) - (void)finalize { - if (_private->imp) - WebCore::removeJSWrapper(_private->imp); - if (_private->rootObject && _private->rootObject->isValid()) _private->rootObject->gcUnprotect(_private->imp); @@ -288,9 +286,9 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root ExecState* exec = [self _rootObject]->globalObject()->globalExec(); ASSERT(!exec->hadException()); - JSValue* function = [self _imp]->get(exec, Identifier(exec, String(name))); + JSValuePtr function = [self _imp]->get(exec, Identifier(exec, String(name))); CallData callData; - CallType callType = function->getCallData(callData); + CallType callType = function.getCallData(callData); if (callType == CallTypeNone) return nil; @@ -301,7 +299,7 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root return nil; [self _rootObject]->globalObject()->startTimeoutCheck(); - JSValue* result = call(exec, function, callType, callData, [self _imp], argList); + JSValuePtr result = call(exec, function, callType, callData, [self _imp], argList); [self _rootObject]->globalObject()->stopTimeoutCheck(); if (exec->hadException()) { @@ -326,11 +324,11 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root ExecState* exec = [self _rootObject]->globalObject()->globalExec(); ASSERT(!exec->hadException()); - JSValue* result; + JSValuePtr result; JSLock lock(false); [self _rootObject]->globalObject()->startTimeoutCheck(); - Completion completion = Interpreter::evaluate([self _rootObject]->globalObject()->globalExec(), [self _rootObject]->globalObject()->globalScopeChain(), makeSource(String(script))); + Completion completion = JSC::evaluate([self _rootObject]->globalObject()->globalExec(), [self _rootObject]->globalObject()->globalScopeChain(), makeSource(String(script))); [self _rootObject]->globalObject()->stopTimeoutCheck(); ComplType type = completion.complType(); @@ -390,7 +388,7 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root // leaving the lock permanently held JSLock lock(false); - JSValue* result = [self _imp]->get(exec, Identifier(exec, String(key))); + JSValuePtr result = [self _imp]->get(exec, Identifier(exec, String(key))); if (exec->hadException()) { addExceptionToConsole(exec); @@ -431,9 +429,10 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root - (NSString *)stringRepresentation { - if (![self _isSafeScript]) + if (![self _isSafeScript]) { // This is a workaround for a gcc 3.3 internal compiler error. return @"Undefined"; + } JSLock lock(false); ExecState* exec = [self _rootObject]->globalObject()->globalExec(); @@ -456,7 +455,7 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root ASSERT(!exec->hadException()); JSLock lock(false); - JSValue* result = [self _imp]->get(exec, index); + JSValuePtr result = [self _imp]->get(exec, index); if (exec->hadException()) { addExceptionToConsole(exec); @@ -505,16 +504,16 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root return toRef([self _imp]); } -+ (id)_convertValueToObjcValue:(JSValue*)value originRootObject:(RootObject*)originRootObject rootObject:(RootObject*)rootObject ++ (id)_convertValueToObjcValue:(JSValuePtr)value originRootObject:(RootObject*)originRootObject rootObject:(RootObject*)rootObject { - if (value->isObject()) { + if (value.isObject()) { JSObject* object = asObject(value); ExecState* exec = rootObject->globalObject()->globalExec(); JSLock lock(false); if (object->classInfo() != &RuntimeObjectImp::s_info) { - JSValue* runtimeObject = object->get(exec, Identifier(exec, "__apple_runtime_object")); - if (runtimeObject && runtimeObject->isObject()) + JSValuePtr runtimeObject = object->get(exec, Identifier(exec, "__apple_runtime_object")); + if (runtimeObject && runtimeObject.isObject()) object = asObject(runtimeObject); } @@ -529,18 +528,18 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root return [WebScriptObject scriptObjectForJSObject:toRef(object) originRootObject:originRootObject rootObject:rootObject]; } - if (value->isString()) { + if (value.isString()) { const UString& u = asString(value)->value(); return [NSString stringWithCharacters:u.data() length:u.size()]; } - if (value->isNumber()) - return [NSNumber numberWithDouble:value->getNumber()]; + if (value.isNumber()) + return [NSNumber numberWithDouble:value.uncheckedGetNumber()]; - if (value->isBoolean()) - return [NSNumber numberWithBool:value->getBoolean()]; + if (value.isBoolean()) + return [NSNumber numberWithBool:value.getBoolean()]; - if (value->isUndefined()) + if (value.isUndefined()) return [WebUndefined undefined]; // jsNull is not returned as NSNull because existing applications do not expect @@ -560,16 +559,17 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root @implementation WebScriptObject (WebKitCocoaBindings) #if 0 -// FIXME: presence of 'count' method on WebScriptObject breaks Democracy player -// http://bugs.webkit.org/show_bug.cgi?id=13129 + +// FIXME: We'd like to add this, but we can't do that until this issue is resolved: +// http://bugs.webkit.org/show_bug.cgi?id=13129: presence of 'count' method on +// WebScriptObject breaks Democracy player. - (unsigned)count { id length = [self valueForKey:@"length"]; - if ([length respondsToSelector:@selector(intValue)]) - return [length intValue]; - else + if (![length respondsToSelector:@selector(intValue)]) return 0; + return [length intValue]; } #endif @@ -583,8 +583,10 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root @implementation WebUndefined -+ (id)allocWithZone:(NSZone *)zone ++ (id)allocWithZone:(NSZone *)unusedZone { + UNUSED_PARAM(unusedZone); + static WebUndefined *sharedUndefined = 0; if (!sharedUndefined) sharedUndefined = [super allocWithZone:NULL]; @@ -596,17 +598,22 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root return @"undefined"; } -- (id)initWithCoder:(NSCoder *)coder +- (id)initWithCoder:(NSCoder *)unusedCoder { + UNUSED_PARAM(unusedCoder); + return self; } -- (void)encodeWithCoder:(NSCoder *)encoder +- (void)encodeWithCoder:(NSCoder *)unusedCoder { + UNUSED_PARAM(unusedCoder); } -- (id)copyWithZone:(NSZone *)zone +- (id)copyWithZone:(NSZone *)unusedZone { + UNUSED_PARAM(unusedZone); + return self; } @@ -642,4 +649,3 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root } @end - diff --git a/WebCore/bindings/objc/WebScriptObjectPrivate.h b/WebCore/bindings/objc/WebScriptObjectPrivate.h index 569d6f6..6810de6 100644 --- a/WebCore/bindings/objc/WebScriptObjectPrivate.h +++ b/WebCore/bindings/objc/WebScriptObjectPrivate.h @@ -46,7 +46,7 @@ namespace WebCore { } @interface WebScriptObject (Private) -+ (id)_convertValueToObjcValue:(JSC::JSValue*)value originRootObject:(JSC::Bindings::RootObject*)originRootObject rootObject:(JSC::Bindings::RootObject*)rootObject; ++ (id)_convertValueToObjcValue:(JSC::JSValuePtr)value originRootObject:(JSC::Bindings::RootObject*)originRootObject rootObject:(JSC::Bindings::RootObject*)rootObject; + (id)scriptObjectForJSObject:(JSObjectRef)jsObject originRootObject:(JSC::Bindings::RootObject*)originRootObject rootObject:(JSC::Bindings::RootObject*)rootObject; - (id)_init; - (id)_initWithJSObject:(JSC::JSObject*)imp originRootObject:(PassRefPtr<JSC::Bindings::RootObject>)originRootObject rootObject:(PassRefPtr<JSC::Bindings::RootObject>)rootObject; |