Changeset 69587 in webkit
- Timestamp:
- Oct 12, 2010 10:20:13 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r69586 r69587 1 2010-10-12 Sam Weinig <sam@webkit.org> 2 3 Reviewed by Anders Carlsson. 4 5 Need WebKit2 API to get the cell above a table cell 6 <rdar://problem/8537111> 7 https://bugs.webkit.org/show_bug.cgi?id=47532 8 9 Re-factor functionality to get the cell above a table cell 10 into a function on HTMLTableCellElement and export it for use 11 as SPI. 12 13 * WebCore.exp.in: 14 * WebCore.xcodeproj/project.pbxproj: 15 * html/HTMLTableCellElement.cpp: 16 (WebCore::HTMLTableCellElement::cellAbove): Move implementation here... 17 * html/HTMLTableCellElement.h: 18 * page/Frame.cpp: 19 (WebCore::Frame::searchForLabelsAboveCell): ...from here. 20 1 21 2010-10-12 Dave Moore <davemoore@chromium.org> 2 22 -
trunk/WebCore/WebCore.exp.in
r69549 r69587 981 981 __ZNK7WebCore19SelectionController31getClippedVisibleTextRectanglesERN3WTF6VectorINS_9FloatRectELm0EEE 982 982 __ZNK7WebCore19SelectionController6boundsEb 983 __ZNK7WebCore20HTMLTableCellElement9cellAboveEv 983 984 __ZNK7WebCore20ResourceResponseBase14httpStatusCodeEv 984 985 __ZNK7WebCore20ResourceResponseBase14httpStatusTextEv -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r69549 r69587 3367 3367 A871DB280A150BD600B12A68 /* HTMLTableElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB1A0A150BD600B12A68 /* HTMLTableElement.cpp */; }; 3368 3368 A871DB290A150BD600B12A68 /* HTMLTableColElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB1B0A150BD600B12A68 /* HTMLTableColElement.cpp */; }; 3369 A871DB2A0A150BD600B12A68 /* HTMLTableCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1C0A150BD600B12A68 /* HTMLTableCellElement.h */; };3369 A871DB2A0A150BD600B12A68 /* HTMLTableCellElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1C0A150BD600B12A68 /* HTMLTableCellElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3370 3370 A871DB2B0A150BD600B12A68 /* HTMLTableCaptionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1D0A150BD600B12A68 /* HTMLTableCaptionElement.h */; }; 3371 A871DB2C0A150BD600B12A68 /* HTMLTablePartElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1E0A150BD600B12A68 /* HTMLTablePartElement.h */; };3371 A871DB2C0A150BD600B12A68 /* HTMLTablePartElement.h in Headers */ = {isa = PBXBuildFile; fileRef = A871DB1E0A150BD600B12A68 /* HTMLTablePartElement.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3372 3372 A871DB2D0A150BD600B12A68 /* HTMLTablePartElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB1F0A150BD600B12A68 /* HTMLTablePartElement.cpp */; }; 3373 3373 A871DB2E0A150BD600B12A68 /* HTMLTableCellElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A871DB200A150BD600B12A68 /* HTMLTableCellElement.cpp */; }; -
trunk/WebCore/html/HTMLTableCellElement.cpp
r61959 r69587 166 166 } 167 167 168 HTMLTableCellElement* HTMLTableCellElement::cellAbove() const 169 { 170 RenderObject* cellRenderer = renderer(); 171 if (!cellRenderer) 172 return 0; 173 if (!cellRenderer->isTableCell()) 174 return 0; 175 176 RenderTableCell* tableCellRenderer = toRenderTableCell(cellRenderer); 177 RenderTableCell* cellAboveRenderer = tableCellRenderer->table()->cellAbove(tableCellRenderer); 178 if (!cellAboveRenderer) 179 return 0; 180 181 return static_cast<HTMLTableCellElement*>(cellAboveRenderer->node()); 168 182 } 183 184 } // namespace WebCore -
trunk/WebCore/html/HTMLTableCellElement.h
r66057 r69587 54 54 String scope() const; 55 55 56 HTMLTableCellElement* cellAbove() const; 57 56 58 private: 57 59 HTMLTableCellElement(const QualifiedName&, Document*); -
trunk/WebCore/page/Frame.cpp
r69039 r69587 344 344 String Frame::searchForLabelsAboveCell(RegularExpression* regExp, HTMLTableCellElement* cell, size_t* resultDistanceFromStartOfCell) 345 345 { 346 RenderObject* cellRenderer = cell->renderer(); 347 348 if (cellRenderer && cellRenderer->isTableCell()) { 349 RenderTableCell* tableCellRenderer = toRenderTableCell(cellRenderer); 350 RenderTableCell* cellAboveRenderer = tableCellRenderer->table()->cellAbove(tableCellRenderer); 351 352 if (cellAboveRenderer) { 353 HTMLTableCellElement* aboveCell = 354 static_cast<HTMLTableCellElement*>(cellAboveRenderer->node()); 355 356 if (aboveCell) { 357 // search within the above cell we found for a match 358 size_t lengthSearched = 0; 359 for (Node* n = aboveCell->firstChild(); n; n = n->traverseNextNode(aboveCell)) { 360 if (n->isTextNode() && n->renderer() && n->renderer()->style()->visibility() == VISIBLE) { 361 // For each text chunk, run the regexp 362 String nodeString = n->nodeValue(); 363 int pos = regExp->searchRev(nodeString); 364 if (pos >= 0) { 365 if (resultDistanceFromStartOfCell) 366 *resultDistanceFromStartOfCell = lengthSearched; 367 return nodeString.substring(pos, regExp->matchedLength()); 368 } 369 lengthSearched += nodeString.length(); 370 } 346 HTMLTableCellElement* aboveCell = cell->cellAbove(); 347 if (aboveCell) { 348 // search within the above cell we found for a match 349 size_t lengthSearched = 0; 350 for (Node* n = aboveCell->firstChild(); n; n = n->traverseNextNode(aboveCell)) { 351 if (n->isTextNode() && n->renderer() && n->renderer()->style()->visibility() == VISIBLE) { 352 // For each text chunk, run the regexp 353 String nodeString = n->nodeValue(); 354 int pos = regExp->searchRev(nodeString); 355 if (pos >= 0) { 356 if (resultDistanceFromStartOfCell) 357 *resultDistanceFromStartOfCell = lengthSearched; 358 return nodeString.substring(pos, regExp->matchedLength()); 371 359 } 360 lengthSearched += nodeString.length(); 372 361 } 373 362 } 374 363 } 364 375 365 // Any reason in practice to search all cells in that are above cell? 376 366 if (resultDistanceFromStartOfCell) -
trunk/WebKit2/ChangeLog
r69584 r69587 1 2010-10-12 Sam Weinig <sam@webkit.org> 2 3 Reviewed by Anders Carlsson. 4 5 Need WebKit2 API to get the cell above a table cell 6 <rdar://problem/8537111> 7 https://bugs.webkit.org/show_bug.cgi?id=47532 8 9 * WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp: 10 (WKBundleNodeHandleCopyHTMLTableCellElementCellAbove): 11 * WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h: 12 * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp: 13 (WebKit::InjectedBundleNodeHandle::copyHTMLTableCellElementCellAbove): 14 * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h: 15 1 16 2010-10-11 Anders Carlsson <andersca@apple.com> 2 17 -
trunk/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandle.cpp
r69545 r69587 53 53 toImpl(htmlInputElementHandleRef)->setHTMLInputElementAutofilled(filled); 54 54 } 55 56 WKBundleNodeHandleRef WKBundleNodeHandleCopyHTMLTableCellElementCellAbove(WKBundleNodeHandleRef htmlTableCellElementHandleRef) 57 { 58 RefPtr<InjectedBundleNodeHandle> nodeHandle = toImpl(htmlTableCellElementHandleRef)->copyHTMLTableCellElementCellAbove(); 59 return toAPI(nodeHandle.release().releaseRef()); 60 } -
trunk/WebKit2/WebProcess/InjectedBundle/API/c/WKBundleNodeHandlePrivate.h
r69545 r69587 37 37 WK_EXPORT WKBundleNodeHandleRef WKBundleNodeHandleCreate(JSContextRef context, JSObjectRef object); 38 38 39 39 40 /* Additional DOM Operations */ 40 41 42 /* HTMLInputElement Operations */ 41 43 WK_EXPORT void WKBundleNodeHandleSetHTMLInputElementValueForUser(WKBundleNodeHandleRef htmlInputElementHandle, WKStringRef value); 42 44 WK_EXPORT void WKBundleNodeHandleSetHTMLInputElementAutofilled(WKBundleNodeHandleRef htmlInputElementHandle, bool filled); 45 46 /* HTMLTableCellElement Operations */ 47 WK_EXPORT WKBundleNodeHandleRef WKBundleNodeHandleCopyHTMLTableCellElementCellAbove(WKBundleNodeHandleRef htmlTableCellElementHandle); 43 48 44 49 #ifdef __cplusplus -
trunk/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp
r69545 r69587 28 28 #include <JavaScriptCore/APICast.h> 29 29 #include <WebCore/HTMLInputElement.h> 30 #include <WebCore/HTMLTableCellElement.h> 30 31 #include <WebCore/JSNode.h> 31 32 #include <WebCore/Node.h> … … 106 107 } 107 108 109 PassRefPtr<InjectedBundleNodeHandle> InjectedBundleNodeHandle::copyHTMLTableCellElementCellAbove() 110 { 111 if (!m_node->hasTagName(tdTag)) 112 return 0; 113 114 return getOrCreate(static_cast<HTMLTableCellElement*>(m_node.get())->cellAbove()); 115 } 116 108 117 } // namespace WebKit -
trunk/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h
r69545 r69587 53 53 void setHTMLInputElementValueForUser(const String&); 54 54 void setHTMLInputElementAutofilled(bool); 55 PassRefPtr<InjectedBundleNodeHandle> copyHTMLTableCellElementCellAbove(); 55 56 56 57 private:
Note: See TracChangeset
for help on using the changeset viewer.