Changeset 138747 in webkit


Ignore:
Timestamp:
Jan 3, 2013 3:01:23 PM (11 years ago)
Author:
mitz@apple.com
Message:

No way to obtain a DOMNode given a JS wrapper for a Node
https://bugs.webkit.org/show_bug.cgi?id=106033

Source/WebCore:

Reviewed by Sam Weinig.

Test: TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm.

  • bindings/objc/DOM.mm:

(+[DOMNode _nodeFromJSWrapper:]): Added. If the given JSObjectRef is a wrapper for a Node,
returns the Objective-C wrapper for that node. Note that Objective-C wrappers are always
for the main world, regardless of which world the given JS wrapper comes from.

  • bindings/objc/DOMPrivate.h: Added declaration of the above.

Tools:

Added a test for +[DOMNode _nodeFromJSWrapper:].

Reviewed by Sam Weinig.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm: Added.

(TestWebKitAPI):
(TestWebKitAPI::TEST):

Location:
trunk
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r138746 r138747  
     12013-01-03  Dan Bernstein  <mitz@apple.com>
     2
     3        No way to obtain a DOMNode given a JS wrapper for a Node
     4        https://bugs.webkit.org/show_bug.cgi?id=106033
     5
     6        Reviewed by Sam Weinig.
     7
     8        Test: TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm.
     9
     10        * bindings/objc/DOM.mm:
     11        (+[DOMNode _nodeFromJSWrapper:]): Added. If the given JSObjectRef is a wrapper for a Node,
     12        returns the Objective-C wrapper for that node. Note that Objective-C wrappers are always
     13        for the main world, regardless of which world the given JS wrapper comes from.
     14        * bindings/objc/DOMPrivate.h: Added declaration of the above.
     15
    1162013-01-03  Uday Kiran  <udaykiran@motorola.com>
    217
  • trunk/Source/WebCore/bindings/objc/DOM.mm

    r132282 r138747  
    4141#import "HTMLParserIdioms.h"
    4242#import "Image.h"
     43#import "JSNode.h"
    4344#import "NodeFilter.h"
    4445#import "RenderImage.h"
    4546#import "WebScriptObjectPrivate.h"
     47#import <JavaScriptCore/APICast.h>
    4648#import <wtf/HashMap.h>
    4749
     
    390392@end
    391393
     394@implementation DOMNode (WebPrivate)
     395
     396+ (id)_nodeFromJSWrapper:(JSObjectRef)jsWrapper
     397{
     398    JSObject* object = toJS(jsWrapper);
     399
     400    if (!object->inherits(&JSNode::s_info))
     401        return nil;
     402
     403    WebCore::Node* node = jsCast<JSNode*>(object)->impl();
     404    return kit(node);
     405}
     406
     407@end
     408
    392409@implementation DOMRange (DOMRangeExtensions)
    393410
  • trunk/Source/WebCore/bindings/objc/DOMPrivate.h

    r112424 r138747  
    3030- (NSImage *)renderedImage;
    3131- (NSArray *)textRects;
     32@end
     33
     34@interface DOMNode (WebPrivate)
     35+ (id)_nodeFromJSWrapper:(JSObjectRef)jsWrapper;
    3236@end
    3337
  • trunk/Tools/ChangeLog

    r138736 r138747  
     12013-01-03  Dan Bernstein  <mitz@apple.com>
     2
     3        No way to obtain a DOMNode given a JS wrapper for a Node
     4        https://bugs.webkit.org/show_bug.cgi?id=106033
     5
     6        Added a test for +[DOMNode _nodeFromJSWrapper:].
     7
     8        Reviewed by Sam Weinig.
     9
     10        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     11        * TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm: Added.
     12        (TestWebKitAPI):
     13        (TestWebKitAPI::TEST):
     14
    1152013-01-03  Emil A Eklund  <eae@chromium.org>
    216
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r138104 r138747  
    4646                37200B9213A16230007A4FAD /* VectorReverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37200B9113A16230007A4FAD /* VectorReverse.cpp */; };
    4747                3722C8691461E03E00C45D00 /* RenderedImageFromDOMRange.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */; };
     48                3751AF7C169518F800764319 /* DOMNodeFromJSObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3751AF7A169518F800764319 /* DOMNodeFromJSObject.mm */; };
    4849                3776BC63150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3776BC62150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm */; };
    4950                378E64731632646D00B6C676 /* InjectedBundleFrameHitTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */; };
     
    295296                37200B9113A16230007A4FAD /* VectorReverse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VectorReverse.cpp; path = WTF/VectorReverse.cpp; sourceTree = "<group>"; };
    296297                3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderedImageFromDOMRange.mm; sourceTree = "<group>"; };
     298                3751AF7A169518F800764319 /* DOMNodeFromJSObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNodeFromJSObject.mm; sourceTree = "<group>"; };
    297299                3776BC62150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceScaleFactorInDashboardRegions.mm; sourceTree = "<group>"; };
    298300                378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleFrameHitTest.cpp; sourceTree = "<group>"; };
     
    758760                                26DF5A5D15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm */,
    759761                                5142B2701517C88B00C32B19 /* ContextMenuCanCopyURL.mm */,
     762                                3751AF7A169518F800764319 /* DOMNodeFromJSObject.mm */,
    760763                                37DC678B140D7C5000ABCCDB /* DOMRangeOfString.mm */,
    761764                                C07E6CAE13FD67650038B22B /* DynamicDeviceScaleFactor.mm */,
     
    10431046                                4BB4160216815B2600824238 /* JSWrapperForNodeInWebFrame.mm in Sources */,
    10441047                                4BB4160416815F9100824238 /* ElementAtPointInWebFrame.mm in Sources */,
     1048                                3751AF7C169518F800764319 /* DOMNodeFromJSObject.mm in Sources */,
    10451049                        );
    10461050                        runOnlyForDeploymentPostprocessing = 0;
Note: See TracChangeset for help on using the changeset viewer.