diff options
Diffstat (limited to 'WebCore/bindings/objc')
| -rw-r--r-- | WebCore/bindings/objc/DOM.mm | 41 | ||||
| -rw-r--r-- | WebCore/bindings/objc/DOMCSS.mm | 3 | ||||
| -rw-r--r-- | WebCore/bindings/objc/DOMEvents.mm | 3 | ||||
| -rw-r--r-- | WebCore/bindings/objc/DOMHTML.mm | 14 | ||||
| -rw-r--r-- | WebCore/bindings/objc/DOMInternal.h | 1 | ||||
| -rw-r--r-- | WebCore/bindings/objc/DOMInternal.mm | 16 | ||||
| -rw-r--r-- | WebCore/bindings/objc/DOMPrivate.h | 6 | ||||
| -rw-r--r-- | WebCore/bindings/objc/DOMSVG.h | 2 | ||||
| -rw-r--r-- | WebCore/bindings/objc/ObjCEventListener.h | 11 | ||||
| -rw-r--r-- | WebCore/bindings/objc/ObjCEventListener.mm | 12 | ||||
| -rw-r--r-- | WebCore/bindings/objc/WebScriptObject.mm | 7 |
11 files changed, 66 insertions, 50 deletions
diff --git a/WebCore/bindings/objc/DOM.mm b/WebCore/bindings/objc/DOM.mm index 62bf1de..907961f 100644 --- a/WebCore/bindings/objc/DOM.mm +++ b/WebCore/bindings/objc/DOM.mm @@ -29,21 +29,23 @@ #import "DOMInternal.h" // import first to make the private/public trick work #import "DOM.h" -#import "DOMRangeInternal.h" #import "DOMElementInternal.h" -#import "DOMNodeInternal.h" #import "DOMHTMLCanvasElement.h" +#import "DOMNodeInternal.h" +#import "DOMPrivate.h" +#import "DOMRangeInternal.h" #import "Frame.h" -#import "HTMLNames.h" #import "HTMLElement.h" -#import "RenderImage.h" +#import "HTMLNames.h" #import "NodeFilter.h" +#import "RenderImage.h" #import "WebScriptObjectPrivate.h" #import <wtf/HashMap.h> #if ENABLE(SVG_DOM_OBJC_BINDINGS) #import "DOMSVG.h" #import "SVGElementInstance.h" +#import "SVGNames.h" #endif using namespace JSC; @@ -154,9 +156,6 @@ static void createElementClassMap() addElementClass(SVGNames::circleTag, [DOMSVGCircleElement class]); addElementClass(SVGNames::clipPathTag, [DOMSVGClipPathElement class]); addElementClass(SVGNames::cursorTag, [DOMSVGCursorElement class]); -#if ENABLE(SVG_FONTS) - addElementClass(SVGNames::definition_srcTag, [DOMSVGDefinitionSrcElement class]); -#endif addElementClass(SVGNames::defsTag, [DOMSVGDefsElement class]); addElementClass(SVGNames::descTag, [DOMSVGDescElement class]); addElementClass(SVGNames::ellipseTag, [DOMSVGEllipseElement class]); @@ -177,6 +176,7 @@ static void createElementClassMap() addElementClass(SVGNames::feImageTag, [DOMSVGFEImageElement class]); addElementClass(SVGNames::feMergeTag, [DOMSVGFEMergeElement class]); addElementClass(SVGNames::feMergeNodeTag, [DOMSVGFEMergeNodeElement class]); + addElementClass(SVGNames::feMorphologyTag, [DOMSVGFEMorphologyElement class]); addElementClass(SVGNames::feOffsetTag, [DOMSVGFEOffsetElement class]); addElementClass(SVGNames::fePointLightTag, [DOMSVGFEPointLightElement class]); addElementClass(SVGNames::feSpecularLightingTag, [DOMSVGFESpecularLightingElement class]); @@ -359,20 +359,6 @@ id <DOMEventTarget> kit(WebCore::EventTarget* eventTarget) return renderer->absoluteBoundingBoxRect(); } -- (NSArray *)textRects -{ - // FIXME: Could we move this function to WebCore::Node and autogenerate? - core(self)->document()->updateLayoutIgnorePendingStylesheets(); - if (!core(self)->renderer()) - return nil; - RefPtr<Range> range = Range::create(core(self)->document()); - WebCore::ExceptionCode ec = 0; - range->selectNodeContents(core(self), ec); - Vector<WebCore::IntRect> rects; - range->textRects(rects); - return kit(rects); -} - - (NSArray *)lineBoxRects { return [self textRects]; @@ -392,6 +378,19 @@ id <DOMEventTarget> kit(WebCore::EventTarget* eventTarget) return frame->nodeImage(node); } +- (NSArray *)textRects +{ + // FIXME: Could we move this function to WebCore::Node and autogenerate? + core(self)->document()->updateLayoutIgnorePendingStylesheets(); + if (!core(self)->renderer()) + return nil; + RefPtr<Range> range = Range::create(core(self)->document()); + WebCore::ExceptionCode ec = 0; + range->selectNodeContents(core(self), ec); + Vector<WebCore::IntRect> rects; + range->textRects(rects); + return kit(rects); +} @end @implementation DOMRange (DOMRangeExtensions) diff --git a/WebCore/bindings/objc/DOMCSS.mm b/WebCore/bindings/objc/DOMCSS.mm index 0149273..22a9cb2 100644 --- a/WebCore/bindings/objc/DOMCSS.mm +++ b/WebCore/bindings/objc/DOMCSS.mm @@ -47,6 +47,7 @@ #import "DOMStyleSheetInternal.h" #import "DOMWebKitCSSKeyframeRule.h" #import "DOMWebKitCSSKeyframesRule.h" +#import "DOMWebKitCSSTransformValue.h" #if ENABLE(SVG_DOM_OBJC_BINDINGS) #import "DOMSVGPaint.h" @@ -102,6 +103,8 @@ Class kitClass(WebCore::CSSValue* impl) case WebCore::CSSValue::CSS_PRIMITIVE_VALUE: return [DOMCSSPrimitiveValue class]; case WebCore::CSSValue::CSS_VALUE_LIST: + if (impl->isWebKitCSSTransformValue()) + return [DOMWebKitCSSTransformValue class]; return [DOMCSSValueList class]; case WebCore::CSSValue::CSS_INHERIT: case WebCore::CSSValue::CSS_INITIAL: diff --git a/WebCore/bindings/objc/DOMEvents.mm b/WebCore/bindings/objc/DOMEvents.mm index c901e12..26dfe7b 100644 --- a/WebCore/bindings/objc/DOMEvents.mm +++ b/WebCore/bindings/objc/DOMEvents.mm @@ -28,6 +28,7 @@ #import "config.h" #import "DOMEventInternal.h" +#import "DOMBeforeLoadEvent.h" #import "DOMKeyboardEvent.h" #import "DOMMessageEvent.h" #import "DOMMouseEvent.h" @@ -67,5 +68,7 @@ Class kitClass(WebCore::Event* impl) return [DOMMessageEvent class]; if (impl->isProgressEvent()) return [DOMProgressEvent class]; + if (impl->isBeforeLoadEvent()) + return [DOMBeforeLoadEvent class]; return [DOMEvent class]; } diff --git a/WebCore/bindings/objc/DOMHTML.mm b/WebCore/bindings/objc/DOMHTML.mm index 1043d8e..3488b35 100644 --- a/WebCore/bindings/objc/DOMHTML.mm +++ b/WebCore/bindings/objc/DOMHTML.mm @@ -140,7 +140,12 @@ return NSMakeRange(start, end - start); } return NSMakeRange(NSNotFound, 0); -} +} + +- (BOOL)_isAutofilled +{ + return core(self)->isAutofilled(); +} - (void)_setAutofilled:(BOOL)filled { @@ -156,8 +161,9 @@ - (void)_activateItemAtIndex:(int)index { + // Use the setSelectedIndexByUser function so a change event will be fired. <rdar://problem/6760590> if (WebCore::HTMLSelectElement* select = core(self)) - select->setSelectedIndex(index); + select->setSelectedIndexByUser(index, true, true); } @end @@ -167,7 +173,7 @@ - (BOOL)_isEdited { WebCore::RenderObject *renderer = core(self)->renderer(); - return renderer && [self _isTextField] && static_cast<WebCore::RenderTextControl *>(renderer)->isUserEdited(); + return renderer && [self _isTextField] && static_cast<WebCore::RenderTextControl *>(renderer)->lastChangeWasUserEdit(); } @end @@ -177,7 +183,7 @@ - (BOOL)_isEdited { WebCore::RenderObject* renderer = core(self)->renderer(); - return renderer && static_cast<WebCore::RenderTextControl*>(renderer)->isUserEdited(); + return renderer && static_cast<WebCore::RenderTextControl*>(renderer)->lastChangeWasUserEdit(); } @end diff --git a/WebCore/bindings/objc/DOMInternal.h b/WebCore/bindings/objc/DOMInternal.h index 48f5d2f..72f63d2 100644 --- a/WebCore/bindings/objc/DOMInternal.h +++ b/WebCore/bindings/objc/DOMInternal.h @@ -61,7 +61,6 @@ 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); diff --git a/WebCore/bindings/objc/DOMInternal.mm b/WebCore/bindings/objc/DOMInternal.mm index 9b26e59..590d653 100644 --- a/WebCore/bindings/objc/DOMInternal.mm +++ b/WebCore/bindings/objc/DOMInternal.mm @@ -49,18 +49,6 @@ NSMapTable* createWrapperCache() #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) @@ -124,8 +112,8 @@ void removeDOMWrapper(DOMObjectInternal* impl) if (!frame) return; - // The global object which should own this node. - WebCore::JSDOMGlobalObject* globalObject = frame->script()->globalObject(); + // The global object which should own this node - FIXME: does this need to be isolated-world aware? + WebCore::JSDOMGlobalObject* globalObject = frame->script()->globalObject(WebCore::mainThreadNormalWorld()); JSC::ExecState *exec = globalObject->globalExec(); // Get (or create) a cached JS object for the DOM node. diff --git a/WebCore/bindings/objc/DOMPrivate.h b/WebCore/bindings/objc/DOMPrivate.h index 4291cbc..b8e4460 100644 --- a/WebCore/bindings/objc/DOMPrivate.h +++ b/WebCore/bindings/objc/DOMPrivate.h @@ -67,10 +67,10 @@ @end // All the methods in this category are used by Safari forms autofill and should not be used for any other purpose. -// They are stopgap measures until we finish transitioning form controls to not use NSView. Each one should become -// replaceable by public DOM API, and when that happens Safari will switch to implementations using that public API, -// and these will be deleted. +// Each one should eventually be replaced by public DOM API, and when that happens Safari will switch to implementations +// using that public API, and these will be deleted. @interface DOMHTMLInputElement (FormsAutoFillTransition) +- (BOOL)_isAutofilled; - (BOOL)_isTextField; - (NSRect)_rectOnScreen; // bounding box of the text field, in screen coordinates - (void)_replaceCharactersInRange:(NSRange)targetRange withString:(NSString *)replacementString selectingFromIndex:(int)index; diff --git a/WebCore/bindings/objc/DOMSVG.h b/WebCore/bindings/objc/DOMSVG.h index f1321d8..c59532f 100644 --- a/WebCore/bindings/objc/DOMSVG.h +++ b/WebCore/bindings/objc/DOMSVG.h @@ -50,7 +50,6 @@ #import <WebCore/DOMSVGColor.h> #import <WebCore/DOMSVGComponentTransferFunctionElement.h> #import <WebCore/DOMSVGCursorElement.h> -#import <WebCore/DOMSVGDefinitionSrcElement.h> #import <WebCore/DOMSVGDefsElement.h> #import <WebCore/DOMSVGDescElement.h> #import <WebCore/DOMSVGDocument.h> @@ -76,6 +75,7 @@ #import <WebCore/DOMSVGFEImageElement.h> #import <WebCore/DOMSVGFEMergeElement.h> #import <WebCore/DOMSVGFEMergeNodeElement.h> +#import <WebCore/DOMSVGFEMorphologyElement.h> #import <WebCore/DOMSVGFEOffsetElement.h> #import <WebCore/DOMSVGFEPointLightElement.h> #import <WebCore/DOMSVGFESpecularLightingElement.h> diff --git a/WebCore/bindings/objc/ObjCEventListener.h b/WebCore/bindings/objc/ObjCEventListener.h index 6056b01..434ef45 100644 --- a/WebCore/bindings/objc/ObjCEventListener.h +++ b/WebCore/bindings/objc/ObjCEventListener.h @@ -39,13 +39,22 @@ namespace WebCore { public: static PassRefPtr<ObjCEventListener> wrap(id <DOMEventListener>); + static const ObjCEventListener* cast(const EventListener* listener) + { + return listener->type() == ObjCEventListenerType + ? static_cast<const ObjCEventListener*>(listener) + : 0; + } + + virtual bool operator==(const EventListener& other); + private: static ObjCEventListener* find(id <DOMEventListener>); ObjCEventListener(id <DOMEventListener>); virtual ~ObjCEventListener(); - virtual void handleEvent(Event*, bool isWindowEvent); + virtual void handleEvent(ScriptExecutionContext*, Event*); id <DOMEventListener> m_listener; }; diff --git a/WebCore/bindings/objc/ObjCEventListener.mm b/WebCore/bindings/objc/ObjCEventListener.mm index 77c6ad2..d73ac30 100644 --- a/WebCore/bindings/objc/ObjCEventListener.mm +++ b/WebCore/bindings/objc/ObjCEventListener.mm @@ -56,7 +56,8 @@ PassRefPtr<ObjCEventListener> ObjCEventListener::wrap(id <DOMEventListener> list } ObjCEventListener::ObjCEventListener(id <DOMEventListener> listener) - : m_listener([listener retain]) + : EventListener(ObjCEventListenerType) + , m_listener([listener retain]) { ListenerMap* map = listenerMap; if (!map) { @@ -72,9 +73,16 @@ ObjCEventListener::~ObjCEventListener() [m_listener release]; } -void ObjCEventListener::handleEvent(Event* event, bool) +void ObjCEventListener::handleEvent(ScriptExecutionContext*, Event* event) { [m_listener handleEvent:kit(event)]; } +bool ObjCEventListener::operator==(const EventListener& listener) +{ + if (const ObjCEventListener* objCEventListener = ObjCEventListener::cast(&listener)) + return m_listener == objCEventListener->m_listener; + return false; +} + } // namespace WebCore diff --git a/WebCore/bindings/objc/WebScriptObject.mm b/WebCore/bindings/objc/WebScriptObject.mm index 1086204..1622a3c 100644 --- a/WebCore/bindings/objc/WebScriptObject.mm +++ b/WebCore/bindings/objc/WebScriptObject.mm @@ -299,7 +299,7 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root return nil; [self _rootObject]->globalObject()->globalData()->timeoutChecker.start(); - JSValue result = call(exec, function, callType, callData, [self _imp], argList); + JSValue result = JSC::call(exec, function, callType, callData, [self _imp], argList); [self _rootObject]->globalObject()->globalData()->timeoutChecker.stop(); if (exec->hadException()) { @@ -328,7 +328,7 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root JSLock lock(SilenceAssertionsOnly); [self _rootObject]->globalObject()->globalData()->timeoutChecker.start(); - Completion completion = JSC::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)), JSC::JSValue()); [self _rootObject]->globalObject()->globalData()->timeoutChecker.stop(); ComplType type = completion.complType(); @@ -529,7 +529,8 @@ static void getListFromNSArray(ExecState *exec, NSArray *array, RootObject* root } if (value.isString()) { - const UString& u = asString(value)->value(); + ExecState* exec = rootObject->globalObject()->globalExec(); + const UString& u = asString(value)->value(exec); return [NSString stringWithCharacters:u.data() length:u.size()]; } |
