Changeset 40837 in webkit


Ignore:
Timestamp:
Feb 10, 2009 3:42:44 PM (15 years ago)
Author:
weinig@apple.com
Message:

WebCore:

2009-02-10 Sam Weinig <sam@webkit.org>

Reviewed by David Hyatt.

Fix for https://bugs.webkit.org/show_bug.cgi?id=15897
Please implement getBoundingClientRect and getClientRects
<rdar://problem/6139669>

Cursory implementation of Element.getBoundingClientRect and
Element.getClientRects. Adds necessary infrastructure classes
ClientRect and ClientRectList.

Tests: fast/dom/getBoundingClientRect.html

fast/dom/getClientRects.html

  • DerivedSources.make:
  • GNUmakefile.am:
  • WebCore.pro:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCoreSources.bkl:
  • dom/ClientRect.cpp: Added. (WebCore::ClientRect::ClientRect):
  • dom/ClientRect.h: Added. (WebCore::ClientRect::create): (WebCore::ClientRect::top): (WebCore::ClientRect::right): (WebCore::ClientRect::bottom): (WebCore::ClientRect::left): (WebCore::ClientRect::width): (WebCore::ClientRect::height):
  • dom/ClientRect.idl: Added.
  • dom/ClientRectList.cpp: Added. (WebCore::ClientRectList::ClientRectList): (WebCore::ClientRectList::~ClientRectList): (WebCore::ClientRectList::length): (WebCore::ClientRectList::item):
  • dom/ClientRectList.h: Added. (WebCore::ClientRectList::create):
  • dom/ClientRectList.idl: Added.
  • dom/Element.cpp: (WebCore::Element::getClientRects): (WebCore::Element::getBoundingClientRect):
  • dom/Element.h:
  • dom/Element.idl:
  • page/DOMWindow.idl:
  • rendering/RenderInline.cpp: (WebCore::RenderInline::absoluteRects): (WebCore::RenderInline::absoluteQuads):

LayoutTests:

2009-02-08 Sam Weinig <sam@webkit.org>

Reviewed by David Hyatt.

Tests for https://bugs.webkit.org/show_bug.cgi?id=15897
Please implement getBoundingClientRect and getClientRects
<rdar://problem/6139669>

  • fast/dom/Window/window-properties-expected.txt:
  • fast/dom/domListEnumeration-expected.txt:
  • fast/dom/getBoundingClientRect-expected.txt: Added.
  • fast/dom/getBoundingClientRect.html: Added.
  • fast/dom/getClientRects-expected.txt: Added.
  • fast/dom/getClientRects.html: Added.
  • fast/dom/resources/domListEnumeration.js:
  • fast/js/global-constructors-expected.txt:
Location:
trunk
Files:
10 added
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r40814 r40837  
     12009-02-08  Sam Weinig  <sam@webkit.org>
     2
     3        Reviewed by David Hyatt.
     4
     5        Tests for https://bugs.webkit.org/show_bug.cgi?id=15897
     6        Please implement getBoundingClientRect and getClientRects
     7        <rdar://problem/6139669>
     8
     9        * fast/dom/Window/window-properties-expected.txt:
     10        * fast/dom/domListEnumeration-expected.txt:
     11        * fast/dom/getBoundingClientRect-expected.txt: Added.
     12        * fast/dom/getBoundingClientRect.html: Added.
     13        * fast/dom/getClientRects-expected.txt: Added.
     14        * fast/dom/getClientRects.html: Added.
     15        * fast/dom/resources/domListEnumeration.js:
     16        * fast/js/global-constructors-expected.txt:
     17
    1182009-02-10  Feng Qian <feng@chromium.org>
    219
  • trunk/LayoutTests/fast/dom/Window/window-properties-expected.txt

    r40672 r40837  
    365365window.CharacterData.prototype.replaceData [function]
    366366window.CharacterData.prototype.substringData [function]
     367window.ClientRect [object ClientRectConstructor]
     368window.ClientRect.prototype [object ClientRectPrototype]
     369window.ClientRectList [object ClientRectListConstructor]
     370window.ClientRectList.prototype [object ClientRectListPrototype]
     371window.ClientRectList.prototype.item [function]
    367372window.Clipboard [object ClipboardConstructor]
    368373window.Clipboard.prototype [object ClipboardPrototype]
     
    609614window.Element.prototype.getAttributeNode [function]
    610615window.Element.prototype.getAttributeNodeNS [function]
     616window.Element.prototype.getBoundingClientRect [function]
     617window.Element.prototype.getClientRects [function]
    611618window.Element.prototype.getElementsByClassName [function]
    612619window.Element.prototype.getElementsByTagName [function]
  • trunk/LayoutTests/fast/dom/domListEnumeration-expected.txt

    r35401 r40837  
    3333
    3434[object HTMLFormElement]
    35 PASS resultArray.length is 128
     35PASS resultArray.length is 130
    3636PASS resultArray[0].i is '0'
    3737PASS resultArray[0].item is document.getElementsByTagName('select')[0]
     
    4242
    4343[object HTMLSelectElement]
    44 PASS resultArray.length is 133
     44PASS resultArray.length is 135
    4545PASS resultArray[0].i is '0'
    4646PASS resultArray[0].item is document.getElementsByTagName('option')[0]
  • trunk/LayoutTests/fast/dom/resources/domListEnumeration.js

    r35396 r40837  
    131131var htmlFormElement = document.getElementsByTagName('form')[0];
    132132resultArray = iterateList(htmlFormElement);
    133 shouldBe("resultArray.length", "128");
     133shouldBe("resultArray.length", "130");
    134134shouldBe("resultArray[0].i", "'0'");
    135135shouldBe("resultArray[0].item", "document.getElementsByTagName('select')[0]");
     
    142142var htmlSelectElement = document.getElementsByTagName('select')[0];
    143143resultArray = iterateList(htmlSelectElement);
    144 shouldBe("resultArray.length", "133");
     144shouldBe("resultArray.length", "135");
    145145shouldBe("resultArray[0].i", "'0'");
    146146shouldBe("resultArray[0].item", "document.getElementsByTagName('option')[0]");
  • trunk/LayoutTests/fast/js/global-constructors-expected.txt

    r39927 r40837  
    2424PASS CanvasRenderingContext2D.toString() is '[object CanvasRenderingContext2DConstructor]'
    2525PASS CharacterData.toString() is '[object CharacterDataConstructor]'
     26PASS ClientRect.toString() is '[object ClientRectConstructor]'
     27PASS ClientRectList.toString() is '[object ClientRectListConstructor]'
    2628PASS Clipboard.toString() is '[object ClipboardConstructor]'
    2729PASS Comment.toString() is '[object CommentConstructor]'
  • trunk/WebCore/ChangeLog

    r40836 r40837  
     12009-02-10  Sam Weinig  <sam@webkit.org>
     2
     3        Reviewed by David Hyatt.
     4
     5        Fix for https://bugs.webkit.org/show_bug.cgi?id=15897
     6        Please implement getBoundingClientRect and getClientRects
     7        <rdar://problem/6139669>
     8
     9        Cursory implementation of Element.getBoundingClientRect and
     10        Element.getClientRects. Adds necessary infrastructure classes
     11        ClientRect and ClientRectList.
     12
     13        Tests: fast/dom/getBoundingClientRect.html
     14               fast/dom/getClientRects.html
     15
     16        * DerivedSources.make:
     17        * GNUmakefile.am:
     18        * WebCore.pro:
     19        * WebCore.vcproj/WebCore.vcproj:
     20        * WebCore.xcodeproj/project.pbxproj:
     21        * WebCoreSources.bkl:
     22        * dom/ClientRect.cpp: Added.
     23        (WebCore::ClientRect::ClientRect):
     24        * dom/ClientRect.h: Added.
     25        (WebCore::ClientRect::create):
     26        (WebCore::ClientRect::top):
     27        (WebCore::ClientRect::right):
     28        (WebCore::ClientRect::bottom):
     29        (WebCore::ClientRect::left):
     30        (WebCore::ClientRect::width):
     31        (WebCore::ClientRect::height):
     32        * dom/ClientRect.idl: Added.
     33        * dom/ClientRectList.cpp: Added.
     34        (WebCore::ClientRectList::ClientRectList):
     35        (WebCore::ClientRectList::~ClientRectList):
     36        (WebCore::ClientRectList::length):
     37        (WebCore::ClientRectList::item):
     38        * dom/ClientRectList.h: Added.
     39        (WebCore::ClientRectList::create):
     40        * dom/ClientRectList.idl: Added.
     41        * dom/Element.cpp:
     42        (WebCore::Element::getClientRects):
     43        (WebCore::Element::getBoundingClientRect):
     44        * dom/Element.h:
     45        * dom/Element.idl:
     46        * page/DOMWindow.idl:
     47        * rendering/RenderInline.cpp:
     48        (WebCore::RenderInline::absoluteRects):
     49        (WebCore::RenderInline::absoluteQuads):
     50
    1512009-02-10  David Hyatt  <hyatt@apple.com>
    252
  • trunk/WebCore/DerivedSources.make

    r40672 r40837  
    6868    CanvasRenderingContext2D \
    6969    CharacterData \
     70    ClientRect \
     71    ClientRectList \
    7072    Clipboard \
    7173    Comment \
  • trunk/WebCore/GNUmakefile.am

    r40796 r40837  
    103103        WebCore/dom/CDATASection.idl \
    104104        WebCore/dom/CharacterData.idl \
     105        WebCore/dom/ClientRect.idl \
     106        WebCore/dom/ClientRectList.idl \
    105107        WebCore/dom/Clipboard.idl \
    106108        WebCore/dom/Comment.idl \
     
    548550        WebCore/dom/ClassNodeList.cpp \
    549551        WebCore/dom/ClassNodeList.h \
     552        WebCore/dom/ClientRect.cpp \
     553        WebCore/dom/ClientRect.h \
     554        WebCore/dom/ClientRectList.cpp \
     555        WebCore/dom/ClientRectList.h \
    550556        WebCore/dom/Clipboard.cpp \
    551557        WebCore/dom/Clipboard.h \
  • trunk/WebCore/WebCore.pro

    r40793 r40837  
    266266    dom/Attr.idl \
    267267    dom/CharacterData.idl \
     268    dom/ClientRect.idl \
     269    dom/ClientRectList.idl \
    268270    dom/Clipboard.idl \
    269271    dom/CDATASection.idl \
     
    564566    dom/ClassNames.cpp \
    565567    dom/ClassNodeList.cpp \
     568    dom/ClientRect.cpp \
     569    dom/ClientRectList.cpp \
    566570    dom/Clipboard.cpp \
    567571    dom/ClipboardEvent.cpp \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r40793 r40837  
    617617                        </File>
    618618                        <File
     619                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSClientRect.h"
     620                                >
     621                        </File>
     622                        <File
     623                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSClientRectList.h"
     624                                >
     625                        </File>
     626                        <File
    619627                                RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSCSSVariablesRule.h"
    620628                                >
     
    1106411072                        <File
    1106511073                                RelativePath="..\dom\ClassNodeList.h"
     11074                                >
     11075                        </File>
     11076                        <File
     11077                                RelativePath="..\dom\ClientRect.cpp"
     11078                                >
     11079                                <FileConfiguration
     11080                                        Name="Release_PGO|Win32"
     11081                                        >
     11082                                        <Tool
     11083                                                Name="VCCLCompilerTool"
     11084                                                WholeProgramOptimization="true"
     11085                                        />
     11086                                </FileConfiguration>
     11087                        </File>
     11088                        <File
     11089                                RelativePath="..\dom\ClientRect.h"
     11090                                >
     11091                        </File>
     11092                        <File
     11093                                RelativePath="..\dom\ClientRectList.cpp"
     11094                                >
     11095                                <FileConfiguration
     11096                                        Name="Release_PGO|Win32"
     11097                                        >
     11098                                        <Tool
     11099                                                Name="VCCLCompilerTool"
     11100                                                WholeProgramOptimization="true"
     11101                                        />
     11102                                </FileConfiguration>
     11103                        </File>
     11104                        <File
     11105                                RelativePath="..\dom\ClientRectList.h"
    1106611106                                >
    1106711107                        </File>
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r40793 r40837  
    41024102                BCBFB53C0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBFB53A0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp */; };
    41034103                BCBFB53D0DCD29CF0019B3E5 /* JSDOMWindowShell.h in Headers */ = {isa = PBXBuildFile; fileRef = BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */; settings = {ATTRIBUTES = (Private, ); }; };
     4104                BCC0657D0F3CE1B700CD2D87 /* ClientRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC065770F3CE1B700CD2D87 /* ClientRect.cpp */; };
     4105                BCC0657E0F3CE1B700CD2D87 /* ClientRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065780F3CE1B700CD2D87 /* ClientRect.h */; };
     4106                BCC0657F0F3CE1B700CD2D87 /* ClientRect.idl in Resources */ = {isa = PBXBuildFile; fileRef = BCC065790F3CE1B700CD2D87 /* ClientRect.idl */; };
     4107                BCC065800F3CE1B700CD2D87 /* ClientRectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC0657A0F3CE1B700CD2D87 /* ClientRectList.cpp */; };
     4108                BCC065810F3CE1B700CD2D87 /* ClientRectList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC0657B0F3CE1B700CD2D87 /* ClientRectList.h */; };
     4109                BCC065820F3CE1B700CD2D87 /* ClientRectList.idl in Resources */ = {isa = PBXBuildFile; fileRef = BCC0657C0F3CE1B700CD2D87 /* ClientRectList.idl */; };
     4110                BCC065870F3CE2A700CD2D87 /* JSClientRect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC065830F3CE2A700CD2D87 /* JSClientRect.cpp */; };
     4111                BCC065880F3CE2A700CD2D87 /* JSClientRect.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065840F3CE2A700CD2D87 /* JSClientRect.h */; };
     4112                BCC065890F3CE2A700CD2D87 /* JSClientRectList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */; };
     4113                BCC0658A0F3CE2A700CD2D87 /* JSClientRectList.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */; };
    41044114                BCC438780E886CC700533DD5 /* JSHTMLInputElementCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC438770E886CC700533DD5 /* JSHTMLInputElementCustom.cpp */; };
    41054115                BCC573350D695BBE006EF517 /* DOMProgressEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = BCC573330D695BBE006EF517 /* DOMProgressEvent.h */; };
     
    88858895                BCBFB53A0DCD29CF0019B3E5 /* JSDOMWindowShell.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMWindowShell.cpp; sourceTree = "<group>"; };
    88868896                BCBFB53B0DCD29CF0019B3E5 /* JSDOMWindowShell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMWindowShell.h; sourceTree = "<group>"; };
     8897                BCC065770F3CE1B700CD2D87 /* ClientRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClientRect.cpp; sourceTree = "<group>"; };
     8898                BCC065780F3CE1B700CD2D87 /* ClientRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClientRect.h; sourceTree = "<group>"; };
     8899                BCC065790F3CE1B700CD2D87 /* ClientRect.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ClientRect.idl; sourceTree = "<group>"; };
     8900                BCC0657A0F3CE1B700CD2D87 /* ClientRectList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ClientRectList.cpp; sourceTree = "<group>"; };
     8901                BCC0657B0F3CE1B700CD2D87 /* ClientRectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClientRectList.h; sourceTree = "<group>"; };
     8902                BCC0657C0F3CE1B700CD2D87 /* ClientRectList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ClientRectList.idl; sourceTree = "<group>"; };
     8903                BCC065830F3CE2A700CD2D87 /* JSClientRect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClientRect.cpp; sourceTree = "<group>"; };
     8904                BCC065840F3CE2A700CD2D87 /* JSClientRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClientRect.h; sourceTree = "<group>"; };
     8905                BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSClientRectList.cpp; sourceTree = "<group>"; };
     8906                BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSClientRectList.h; sourceTree = "<group>"; };
    88878907                BCC438770E886CC700533DD5 /* JSHTMLInputElementCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLInputElementCustom.cpp; sourceTree = "<group>"; };
    88888908                BCC573330D695BBE006EF517 /* DOMProgressEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMProgressEvent.h; sourceTree = "<group>"; };
     
    1218612206                        isa = PBXGroup;
    1218712207                        children = (
     12208                                BCC065830F3CE2A700CD2D87 /* JSClientRect.cpp */,
     12209                                BCC065840F3CE2A700CD2D87 /* JSClientRect.h */,
     12210                                BCC065850F3CE2A700CD2D87 /* JSClientRectList.cpp */,
     12211                                BCC065860F3CE2A700CD2D87 /* JSClientRectList.h */,
     12212                                930705D709E0C9B700B17FE4 /* JSCounter.cpp */,
     12213                                930705D909E0C9BF00B17FE4 /* JSCounter.h */,
    1218812214                                BC46C1F00C0DDC8F0020CFC3 /* JSCSSCharsetRule.cpp */,
    1218912215                                BC46C1F10C0DDC8F0020CFC3 /* JSCSSCharsetRule.h */,
     
    1221612242                                BC686C7A0E0C330100DE8A08 /* JSCSSVariablesRule.cpp */,
    1221712243                                BC686C7B0E0C330100DE8A08 /* JSCSSVariablesRule.h */,
    12218                                 930705D709E0C9B700B17FE4 /* JSCounter.cpp */,
    12219                                 930705D909E0C9BF00B17FE4 /* JSCounter.h */,
    1222012244                                BC3C39B40C0D3D8D005F4D7A /* JSMediaList.cpp */,
    1222112245                                BC3C39B50C0D3D8D005F4D7A /* JSMediaList.h */,
    12222                                 BC3452550D7E02850016574A /* JSRGBColor.lut.h */,
    1222312246                                BCFE2F0F0C1B58370020235F /* JSRect.cpp */,
    1222412247                                BCFE2F100C1B58370020235F /* JSRect.h */,
     12248                                BC3452550D7E02850016574A /* JSRGBColor.lut.h */,
    1222512249                                BCE013980C0BEF180043860A /* JSStyleSheet.cpp */,
    1222612250                                BCE013990C0BEF180043860A /* JSStyleSheet.h */,
     
    1448714511                                F523D30A02DE4476018635CA /* XMLTokenizer.h */,
    1448814512                                54C50F7A0E801DF3009832A0 /* XMLTokenizerLibxml2.cpp */,
     14513                                BCC065770F3CE1B700CD2D87 /* ClientRect.cpp */,
     14514                                BCC065780F3CE1B700CD2D87 /* ClientRect.h */,
     14515                                BCC065790F3CE1B700CD2D87 /* ClientRect.idl */,
     14516                                BCC0657A0F3CE1B700CD2D87 /* ClientRectList.cpp */,
     14517                                BCC0657B0F3CE1B700CD2D87 /* ClientRectList.h */,
     14518                                BCC0657C0F3CE1B700CD2D87 /* ClientRectList.idl */,
    1448914519                        );
    1449014520                        path = dom;
     
    1672116751                                93309E1E099E64920056E581 /* visible_units.h in Headers */,
    1672216752                                BC96DB430F3A880E00573CB3 /* RenderBoxModelObject.h in Headers */,
     16753                                BCC0657E0F3CE1B700CD2D87 /* ClientRect.h in Headers */,
     16754                                BCC065810F3CE1B700CD2D87 /* ClientRectList.h in Headers */,
     16755                                BCC065880F3CE2A700CD2D87 /* JSClientRect.h in Headers */,
     16756                                BCC0658A0F3CE2A700CD2D87 /* JSClientRectList.h in Headers */,
    1672316757                                2E3AC84E0F3D06D100633F04 /* WorkerContextProxy.h in Headers */,
    1672416758                                2E3AC8500F3D06F700633F04 /* WorkerObjectProxy.h in Headers */,
     
    1683916873                                1AB1AE7A0C051FDE00139F4F /* zoomInCursor.png in Resources */,
    1684016874                                1AB1AE7B0C051FDE00139F4F /* zoomOutCursor.png in Resources */,
     16875                                BCC0657F0F3CE1B700CD2D87 /* ClientRect.idl in Resources */,
     16876                                BCC065820F3CE1B700CD2D87 /* ClientRectList.idl in Resources */,
    1684116877                        );
    1684216878                        runOnlyForDeploymentPostprocessing = 0;
     
    1870318739                                93309E1D099E64920056E581 /* visible_units.cpp in Sources */,
    1870418740                                BC96DB460F3A882200573CB3 /* RenderBoxModelObject.cpp in Sources */,
     18741                                BCC0657D0F3CE1B700CD2D87 /* ClientRect.cpp in Sources */,
     18742                                BCC065800F3CE1B700CD2D87 /* ClientRectList.cpp in Sources */,
     18743                                BCC065870F3CE2A700CD2D87 /* JSClientRect.cpp in Sources */,
     18744                                BCC065890F3CE2A700CD2D87 /* JSClientRectList.cpp in Sources */,
    1870518745                                A883DF270F3D045D00F19BF6 /* VisibleSelection.cpp in Sources */,
    1870618746                        );
  • trunk/WebCore/WebCoreSources.bkl

    r40798 r40837  
    230230        DerivedSources/WebCore/JSCanvasRenderingContext2D.cpp
    231231        DerivedSources/WebCore/JSCharacterData.cpp
     232        DerivedSources/WebCore/JSClientRect.cpp
     233        DerivedSources/WebCore/JSClientRectList.cpp
    232234        DerivedSources/WebCore/JSClipboard.cpp
    233235        DerivedSources/WebCore/JSComment.cpp
     
    393395        dom/ClassNames.cpp
    394396        dom/ClassNodeList.cpp
     397        dom/ClientRect.cpp
     398        dom/ClientRectList.cpp
    395399        dom/Clipboard.cpp
    396400        dom/ClipboardEvent.cpp
  • trunk/WebCore/dom/Element.cpp

    r40793 r40837  
    3030#include "CSSStyleSelector.h"
    3131#include "CString.h"
     32#include "ClientRect.h"
     33#include "ClientRectList.h"
    3234#include "Document.h"
    3335#include "Editor.h"
     
    4547#include "PlatformString.h"
    4648#include "RenderBlock.h"
     49#include "SVGNames.h"
    4750#include "SelectionController.h"
    4851#include "TextIterator.h"
     
    412415        return adjustForAbsoluteZoom(rend->scrollHeight(), rend);
    413416    return 0;
     417}
     418
     419PassRefPtr<ClientRectList> Element::getClientRects() const
     420{
     421    document()->updateLayoutIgnorePendingStylesheets();
     422
     423    RenderBoxModelObject* renderBoxModelObject = this->renderBoxModelObject();
     424    if (!renderBoxModelObject)
     425        return ClientRectList::create();
     426
     427    // FIXME: Handle SVG elements.
     428    // FIXME: Handle table/inline-table with a caption.
     429
     430    Vector<FloatQuad> quads;
     431    renderBoxModelObject->absoluteQuads(quads);
     432    return ClientRectList::create(quads);
     433}
     434
     435PassRefPtr<ClientRect> Element::getBoundingClientRect() const
     436{
     437    document()->updateLayoutIgnorePendingStylesheets();
     438    RenderBoxModelObject* renderBoxModelObject = this->renderBoxModelObject();
     439    if (!renderBoxModelObject)
     440        return ClientRect::create();
     441
     442    Vector<FloatQuad> quads;
     443    renderBoxModelObject->absoluteQuads(quads);
     444
     445    if (quads.isEmpty())
     446        return ClientRect::create();
     447
     448    IntRect result = quads[0].enclosingBoundingBox();
     449    for (size_t i = 1; i < quads.size(); ++i)
     450        result.unite(quads[i].enclosingBoundingBox());
     451
     452    return ClientRect::create(result);
    414453}
    415454
  • trunk/WebCore/dom/Element.h

    r40370 r40837  
    3737class ElementRareData;
    3838class IntSize;
     39class ClientRect;
     40class ClientRectList;
    3941
    4042class Element : public ContainerNode {
     
    8385    int scrollHeight();
    8486
     87    PassRefPtr<ClientRectList> getClientRects() const;
     88    PassRefPtr<ClientRect> getBoundingClientRect() const;
     89
    8590    void removeAttribute(const String& name, ExceptionCode&);
    8691    void removeAttributeNS(const String& namespaceURI, const String& localName, ExceptionCode&);
  • trunk/WebCore/dom/Element.idl

    r40672 r40837  
    11/*
    2  * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
     2 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved.
    33 * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
    44 *
     
    110110            raises(DOMException);
    111111
     112#if !defined(LANGUAGE_COM)
    112113        // ElementTraversal API
    113 #if !defined(LANGUAGE_COM)
    114114        readonly attribute Element firstElementChild;
    115115        readonly attribute Element lastElementChild;
     
    117117        readonly attribute Element nextElementSibling;
    118118        readonly attribute unsigned long childElementCount;
     119#endif
     120
     121#if defined(LANGUAGE_JAVASCRIPT)
     122        // CSSOM View Module API
     123        ClientRectList getClientRects();
     124        ClientRect getBoundingClientRect();
    119125#endif
    120126
  • trunk/WebCore/page/DOMWindow.idl

    r39699 r40837  
    380380        attribute MimeTypeArrayConstructor MimeTypeArray;
    381381
     382        attribute ClientRectConstructor ClientRect;
     383        attribute ClientRectListConstructor ClientRectList;
     384
    382385#if ENABLE_DOM_STORAGE
    383386        attribute StorageConstructor Storage;
  • trunk/WebCore/rendering/RenderInline.cpp

    r40835 r40837  
    422422        rects.append(IntRect(tx + curr->xPos(), ty + curr->yPos(), curr->width(), curr->height()));
    423423
    424     for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
    425         if (curr->isBox()) {
    426             RenderBox* box = toRenderBox(curr);
    427             curr->absoluteRects(rects, tx + box->x(), ty + box->y(), false);
    428         } else
    429             curr->absoluteRects(rects, tx, ty, false);
    430     }
    431 
    432424    if (continuation() && topLevel) {
    433425        if (continuation()->isBox()) {
     
    449441    }
    450442   
    451     for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
    452         if (!curr->isText())
    453             curr->absoluteQuads(quads, false);
    454     }
    455 
    456443    if (continuation() && topLevel)
    457444        continuation()->absoluteQuads(quads, topLevel);
Note: See TracChangeset for help on using the changeset viewer.