Changeset 85118 in webkit
- Timestamp:
- Apr 27, 2011 4:09:01 PM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 1 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r85116 r85118 1 2011-04-19 MORITA Hajime <morrita@google.com> 2 3 Reviewed by Tony Chang. 4 5 [Refactoring] DocumentMarkerController::MarkerMapVectorPair should be replaced with a list of some class. 6 https://bugs.webkit.org/show_bug.cgi?id=58113 7 8 * Introduced RenderedDocumentMarker, a subclass of DocumentMarker. 9 * Eliminated Vector<IntRect> and move the IntRect into RenderedDocumentMarker 10 * Now MarkerMapVectorPair is no longer used. 11 12 No new tests, No behavior change. 13 14 * GNUmakefile.list.am: 15 * WebCore.gypi: 16 * WebCore.pro: 17 * WebCore.vcproj/WebCore.vcproj: 18 * WebCore.xcodeproj/project.pbxproj: 19 * dom/DocumentMarker.h: 20 * dom/DocumentMarkerController.cpp: 21 (WebCore::DocumentMarkerController::addMarker): 22 (WebCore::DocumentMarkerController::copyMarkers): 23 (WebCore::DocumentMarkerController::removeMarkers): 24 (WebCore::DocumentMarkerController::markerContainingPoint): 25 (WebCore::DocumentMarkerController::markersForNode): 26 (WebCore::DocumentMarkerController::renderedRectsForMarkers): 27 (WebCore::DocumentMarkerController::removeMarkersFromList): 28 (WebCore::DocumentMarkerController::repaintMarkers): 29 (WebCore::DocumentMarkerController::setRenderedRectForMarker): 30 (WebCore::DocumentMarkerController::invalidateRenderedRectsForMarkersInRect): 31 (WebCore::DocumentMarkerController::shiftMarkers): 32 (WebCore::DocumentMarkerController::setMarkersActive): 33 (WebCore::DocumentMarkerController::clearDescriptionOnMarkersIntersectingRange): 34 (WebCore::DocumentMarkerController::showMarkers): 35 * dom/DocumentMarkerController.h: 36 * dom/RenderedDocumentMarker.h: Added. 37 (WebCore::RenderedDocumentMarker::RenderedDocumentMarker): 38 (WebCore::RenderedDocumentMarker::isRendered): 39 (WebCore::RenderedDocumentMarker::contains): 40 (WebCore::RenderedDocumentMarker::setRenderedRect): 41 (WebCore::RenderedDocumentMarker::renderedRect): 42 (WebCore::RenderedDocumentMarker::invalidate): 43 (WebCore::RenderedDocumentMarker::invalidMarkerRect): 44 1 45 2011-04-27 James Robinson <jamesr@chromium.org> 2 46 -
trunk/Source/WebCore/GNUmakefile.list.am
r85045 r85118 1219 1219 Source/WebCore/dom/RegisteredEventListener.cpp \ 1220 1220 Source/WebCore/dom/RegisteredEventListener.h \ 1221 Source/WebCore/dom/RenderedDocumentMarker.h \ 1221 1222 Source/WebCore/dom/ScopedEventQueue.cpp \ 1222 1223 Source/WebCore/dom/ScopedEventQueue.h \ -
trunk/Source/WebCore/WebCore.gypi
r85045 r85118 546 546 'dom/RangeBoundaryPoint.h', 547 547 'dom/RegisteredEventListener.h', 548 'dom/RenderedDocumentMarker.h', 548 549 'dom/ScriptExecutionContext.h', 549 550 'dom/ScriptRunner.h', -
trunk/Source/WebCore/WebCore.pro
r84991 r85118 1496 1496 dom/Range.h \ 1497 1497 dom/RegisteredEventListener.h \ 1498 dom/RenderedDocumentMarker.h \ 1498 1499 dom/ScriptElement.h \ 1499 1500 dom/ScriptExecutionContext.h \ -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r84991 r85118 46035 46035 </File> 46036 46036 <File 46037 RelativePath="..\dom\RenderedDocumentMarker.h" 46038 > 46039 </File> 46040 <File 46037 46041 RelativePath="..\dom\ScopedEventQueue.cpp" 46038 46042 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r85114 r85118 3263 3263 A75E8B8E0E1DE2D6007F2481 /* FEComposite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A75E8B860E1DE2D6007F2481 /* FEComposite.cpp */; }; 3264 3264 A75E8B8F0E1DE2D6007F2481 /* FEComposite.h in Headers */ = {isa = PBXBuildFile; fileRef = A75E8B870E1DE2D6007F2481 /* FEComposite.h */; }; 3265 A76E5F7F135E0DCF00A69837 /* RenderedDocumentMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = A76E5F7E135E0DCF00A69837 /* RenderedDocumentMarker.h */; }; 3265 3266 A77979190D6B9D0C003851B9 /* ImageData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A77979130D6B9D0C003851B9 /* ImageData.cpp */; }; 3266 3267 A779791A0D6B9D0C003851B9 /* ImageData.h in Headers */ = {isa = PBXBuildFile; fileRef = A77979140D6B9D0C003851B9 /* ImageData.h */; }; … … 9824 9825 A75E8B860E1DE2D6007F2481 /* FEComposite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FEComposite.cpp; path = filters/FEComposite.cpp; sourceTree = "<group>"; }; 9825 9826 A75E8B870E1DE2D6007F2481 /* FEComposite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FEComposite.h; path = filters/FEComposite.h; sourceTree = "<group>"; }; 9827 A76E5F7E135E0DCF00A69837 /* RenderedDocumentMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderedDocumentMarker.h; sourceTree = "<group>"; }; 9826 9828 A77979130D6B9D0C003851B9 /* ImageData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ImageData.cpp; sourceTree = "<group>"; }; 9827 9829 A77979140D6B9D0C003851B9 /* ImageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageData.h; sourceTree = "<group>"; }; … … 19523 19525 85031B350A44EFC700F992E0 /* RegisteredEventListener.cpp */, 19524 19526 85031B360A44EFC700F992E0 /* RegisteredEventListener.h */, 19527 A76E5F7E135E0DCF00A69837 /* RenderedDocumentMarker.h */, 19525 19528 9BD0BF9212A42BF50072FD43 /* ScopedEventQueue.cpp */, 19526 19529 9BD0BF9112A42BF50072FD43 /* ScopedEventQueue.h */, … … 22141 22144 93309E05099E64920056E581 /* RemoveNodeCommand.h in Headers */, 22142 22145 93309E07099E64920056E581 /* RemoveNodePreservingChildrenCommand.h in Headers */, 22146 A76E5F7F135E0DCF00A69837 /* RenderedDocumentMarker.h in Headers */, 22143 22147 BCEA485C097D93020094C9E4 /* RenderApplet.h in Headers */, 22144 22148 BCEA485E097D93020094C9E4 /* RenderArena.h in Headers */, -
trunk/Source/WebCore/dom/DocumentMarker.h
r83991 r85118 26 26 #include "PlatformString.h" 27 27 #include <wtf/Forward.h> 28 28 29 29 30 namespace WebCore { -
trunk/Source/WebCore/dom/DocumentMarkerController.cpp
r83991 r85118 30 30 #include "Node.h" 31 31 #include "Range.h" 32 #include "RenderedDocumentMarker.h" 32 33 #include "TextIterator.h" 33 34 34 35 namespace WebCore { 35 36 static IntRect placeholderRectForMarker()37 {38 return IntRect(-1, -1, -1, -1);39 }40 36 41 37 inline bool DocumentMarkerController::possiblyHasMarkers(DocumentMarker::MarkerTypes types) … … 86 82 // Markers of the same type do not overlap each other. 87 83 88 void DocumentMarkerController::addMarker(Node* node, DocumentMarkernewMarker)84 void DocumentMarkerController::addMarker(Node* node, const DocumentMarker& newMarker) 89 85 { 90 86 ASSERT(newMarker.endOffset >= newMarker.startOffset); … … 94 90 m_possiblyExistingMarkerTypes.add(newMarker.type); 95 91 96 MarkerMapVectorPair* vectorPair = m_markers.get(node); 97 98 if (!vectorPair) { 99 vectorPair = new MarkerMapVectorPair; 100 vectorPair->first.append(newMarker); 101 vectorPair->second.append(placeholderRectForMarker()); 102 m_markers.set(node, vectorPair); 92 MarkerList* list = m_markers.get(node); 93 94 if (!list) { 95 list = new MarkerList; 96 list->append(RenderedDocumentMarker(newMarker)); 97 m_markers.set(node, list); 103 98 } else { 104 Vector<DocumentMarker>& markers = vectorPair->first; 105 Vector<IntRect>& rects = vectorPair->second; 106 size_t numMarkers = markers.size(); 107 ASSERT(numMarkers == rects.size()); 99 RenderedDocumentMarker toInsert(newMarker); 100 size_t numMarkers = list->size(); 108 101 size_t i; 109 102 // Iterate over all markers whose start offset is less than or equal to the new marker's. … … 111 104 // (there is at most one), remove it and adjust the new marker's start offset to encompass it. 112 105 for (i = 0; i < numMarkers; ++i) { 113 DocumentMarker marker = markers[i];114 if (marker.startOffset > newMarker.startOffset)106 DocumentMarker marker = list->at(i); 107 if (marker.startOffset > toInsert.startOffset) 115 108 break; 116 if (marker.type == newMarker.type && marker.endOffset >= newMarker.startOffset) { 117 newMarker.startOffset = marker.startOffset; 118 markers.remove(i); 119 rects.remove(i); 109 if (marker.type == toInsert.type && marker.endOffset >= toInsert.startOffset) { 110 toInsert.startOffset = marker.startOffset; 111 list->remove(i); 120 112 numMarkers--; 121 113 break; … … 127 119 // adjusting the new marker's end offset to cover them if necessary. 128 120 while (j < numMarkers) { 129 DocumentMarker marker = markers[j];130 if (marker.startOffset > newMarker.endOffset)121 DocumentMarker marker = list->at(j); 122 if (marker.startOffset > toInsert.endOffset) 131 123 break; 132 if (marker.type == newMarker.type) { 133 markers.remove(j); 134 rects.remove(j); 135 if (newMarker.endOffset <= marker.endOffset) { 136 newMarker.endOffset = marker.endOffset; 124 if (marker.type == toInsert.type) { 125 list->remove(j); 126 if (toInsert.endOffset <= marker.endOffset) { 127 toInsert.endOffset = marker.endOffset; 137 128 break; 138 129 } … … 142 133 } 143 134 // At this point i points to the node before which we want to insert. 144 markers.insert(i, newMarker); 145 rects.insert(i, placeholderRectForMarker()); 135 list->insert(i, RenderedDocumentMarker(toInsert)); 146 136 } 147 137 … … 162 152 ASSERT(!m_markers.isEmpty()); 163 153 164 MarkerMapVectorPair* vectorPair = m_markers.get(srcNode); 165 if (!vectorPair) 166 return; 167 168 ASSERT(vectorPair->first.size() == vectorPair->second.size()); 154 MarkerList* list = m_markers.get(srcNode); 155 if (!list) 156 return; 169 157 170 158 bool docDirty = false; 171 159 unsigned endOffset = startOffset + length - 1; 172 Vector<DocumentMarker>& markers = vectorPair->first; 173 for (size_t i = 0; i != markers.size(); ++i) { 174 DocumentMarker marker = markers[i]; 160 for (size_t i = 0; i != list->size(); ++i) { 161 DocumentMarker marker = list->at(i); 175 162 176 163 // stop if we are now past the specified range … … 208 195 ASSERT(!(m_markers.isEmpty())); 209 196 210 MarkerMapVectorPair* vectorPair = m_markers.get(node); 211 if (!vectorPair) 212 return; 213 214 Vector<DocumentMarker>& markers = vectorPair->first; 215 Vector<IntRect>& rects = vectorPair->second; 216 ASSERT(markers.size() == rects.size()); 197 MarkerList* list = m_markers.get(node); 198 if (!list) 199 return; 200 217 201 bool docDirty = false; 218 202 unsigned endOffset = startOffset + length; 219 for (size_t i = 0; i < markers.size();) {220 DocumentMarker marker = markers[i];203 for (size_t i = 0; i < list->size();) { 204 DocumentMarker marker = list->at(i); 221 205 222 206 // markers are returned in order, so stop if we are now past the specified range … … 233 217 docDirty = true; 234 218 235 // pitch the old marker and any associated rect 236 markers.remove(i); 237 rects.remove(i); 219 // pitch the old marker 220 list->remove(i); 238 221 239 222 if (shouldRemovePartiallyOverlappingMarker) … … 245 228 DocumentMarker newLeft = marker; 246 229 newLeft.endOffset = startOffset; 247 markers.insert(i, newLeft); 248 rects.insert(i, placeholderRectForMarker()); 230 list->insert(i, RenderedDocumentMarker(newLeft)); 249 231 // i now points to the newly-inserted node, but we want to skip that one 250 232 i++; … … 253 235 DocumentMarker newRight = marker; 254 236 newRight.startOffset = endOffset; 255 markers.insert(i, newRight); 256 rects.insert(i, placeholderRectForMarker()); 237 list->insert(i, RenderedDocumentMarker(newRight)); 257 238 // i now points to the newly-inserted node, but we want to skip that one 258 239 i++; … … 260 241 } 261 242 262 if (markers.isEmpty()) { 263 ASSERT(rects.isEmpty()); 243 if (list->isEmpty()) { 264 244 m_markers.remove(node); 265 delete vectorPair;245 delete list; 266 246 } 267 247 … … 284 264 for (MarkerMap::iterator nodeIterator = m_markers.begin(); nodeIterator != end; ++nodeIterator) { 285 265 // inner loop; process each marker in this node 286 MarkerMapVectorPair* vectorPair = nodeIterator->second; 287 Vector<DocumentMarker>& markers = vectorPair->first; 288 Vector<IntRect>& rects = vectorPair->second; 289 ASSERT(markers.size() == rects.size()); 290 unsigned markerCount = markers.size(); 266 MarkerList* list = nodeIterator->second; 267 unsigned markerCount = list->size(); 291 268 for (unsigned markerIndex = 0; markerIndex < markerCount; ++markerIndex) { 292 DocumentMarker& marker = markers[markerIndex];269 RenderedDocumentMarker& marker = list->at(markerIndex); 293 270 294 271 // skip marker that is wrong type … … 296 273 continue; 297 274 298 IntRect& r = rects[markerIndex]; 299 300 // skip placeholder rects 301 if (r == placeholderRectForMarker()) 302 continue; 303 304 if (r.contains(point)) 275 if (marker.contains(point)) 305 276 return ▮ 306 277 } … … 312 283 Vector<DocumentMarker> DocumentMarkerController::markersForNode(Node* node) 313 284 { 314 MarkerMapVectorPair* vectorPair = m_markers.get(node); 315 if (vectorPair) 316 return vectorPair->first; 317 return Vector<DocumentMarker>(); 285 Vector<DocumentMarker> result; 286 MarkerList* list = m_markers.get(node); 287 if (!list) 288 return result; 289 290 for (size_t i = 0; i < list->size(); ++i) 291 result.append(list->at(i)); 292 293 return result; 318 294 } 319 295 … … 359 335 for (MarkerMap::iterator nodeIterator = m_markers.begin(); nodeIterator != end; ++nodeIterator) { 360 336 // inner loop; process each marker in this node 361 MarkerMapVectorPair* vectorPair = nodeIterator->second; 362 Vector<DocumentMarker>& markers = vectorPair->first; 363 Vector<IntRect>& rects = vectorPair->second; 364 ASSERT(markers.size() == rects.size()); 365 unsigned markerCount = markers.size(); 337 MarkerList* list = nodeIterator->second; 338 unsigned markerCount = list->size(); 366 339 for (unsigned markerIndex = 0; markerIndex < markerCount; ++markerIndex) { 367 DocumentMarker marker = markers[markerIndex];340 const RenderedDocumentMarker& marker = list->at(markerIndex); 368 341 369 342 // skip marker that is wrong type … … 371 344 continue; 372 345 373 IntRect r = rects[markerIndex]; 374 // skip placeholder rects 375 if (r == placeholderRectForMarker()) 376 continue; 377 378 result.append(r); 346 if (!marker.isRendered()) 347 continue; 348 349 result.append(marker.renderedRect()); 379 350 } 380 351 } … … 391 362 MarkerMap::iterator iterator = m_markers.find(node); 392 363 if (iterator != m_markers.end()) 393 removeMarkersFrom MarkerMapVectorPair(node, iterator->second, markerTypes);364 removeMarkersFromList(node, iterator->second, markerTypes); 394 365 } 395 366 … … 403 374 MarkerMap markerMapCopy = m_markers; 404 375 MarkerMap::iterator end = markerMapCopy.end(); 405 for (MarkerMap::iterator i = markerMapCopy.begin(); i != end; ++i) { 406 Node* node = i->first.get(); 407 MarkerMapVectorPair* vectorPair = i->second; 408 removeMarkersFromMarkerMapVectorPair(node, vectorPair, markerTypes); 409 } 410 376 for (MarkerMap::iterator i = markerMapCopy.begin(); i != end; ++i) 377 removeMarkersFromList(i->first.get(), i->second, markerTypes); 411 378 m_possiblyExistingMarkerTypes.remove(markerTypes); 412 379 } 413 380 414 381 // This function may release node and vectorPair. 415 void DocumentMarkerController::removeMarkersFrom MarkerMapVectorPair(Node* node, MarkerMapVectorPair* vectorPair, DocumentMarker::MarkerTypes markerTypes)382 void DocumentMarkerController::removeMarkersFromList(Node* node, MarkerList* list, DocumentMarker::MarkerTypes markerTypes) 416 383 { 417 384 if (markerTypes == DocumentMarker::AllMarkers()) { 418 delete vectorPair;385 delete list; 419 386 m_markers.remove(node); 420 387 if (RenderObject* renderer = node->renderer()) … … 422 389 } else { 423 390 bool needsRepaint = false; 424 Vector<DocumentMarker>& markers = vectorPair->first; 425 Vector<IntRect>& rects = vectorPair->second; 426 ASSERT(markers.size() == rects.size()); 427 for (size_t i = 0; i != markers.size();) { 428 DocumentMarker marker = markers[i]; 391 for (size_t i = 0; i != list->size();) { 392 DocumentMarker marker = list->at(i); 429 393 430 394 // skip nodes that are not of the specified type … … 435 399 436 400 // pitch the old marker 437 markers.remove(i); 438 rects.remove(i); 401 list->remove(i); 439 402 needsRepaint = true; 440 403 // i now is the index of the next marker … … 450 413 451 414 // delete the node's list if it is now empty 452 if (markers.isEmpty()) { 453 ASSERT(rects.isEmpty()); 415 if (list->isEmpty()) { 454 416 m_markers.remove(node); 455 delete vectorPair;417 delete list; 456 418 } 457 419 } … … 472 434 473 435 // inner loop: process each marker in the current node 474 MarkerMapVectorPair* vectorPair = i->second; 475 Vector<DocumentMarker>& markers = vectorPair->first; 436 MarkerList* list = i->second; 476 437 bool nodeNeedsRepaint = false; 477 for (size_t i = 0; i != markers.size(); ++i) {478 DocumentMarker marker = markers[i];438 for (size_t i = 0; i != list->size(); ++i) { 439 DocumentMarker marker = list->at(i); 479 440 480 441 // skip nodes that are not of the specified type … … 496 457 void DocumentMarkerController::setRenderedRectForMarker(Node* node, const DocumentMarker& marker, const IntRect& r) 497 458 { 498 Marker MapVectorPair* vectorPair= m_markers.get(node);499 if (! vectorPair) {459 MarkerList* list = m_markers.get(node); 460 if (!list) { 500 461 ASSERT_NOT_REACHED(); // shouldn't be trying to set the rect for a marker we don't already know about 501 462 return; 502 463 } 503 464 504 Vector<DocumentMarker>& markers = vectorPair->first; 505 ASSERT(markers.size() == vectorPair->second.size()); 506 unsigned markerCount = markers.size(); 507 for (unsigned markerIndex = 0; markerIndex < markerCount; ++markerIndex) { 508 DocumentMarker m = markers[markerIndex]; 465 size_t markerCount = list->size(); 466 for (size_t markerIndex = 0; markerIndex < markerCount; ++markerIndex) { 467 RenderedDocumentMarker& m = list->at(markerIndex); 509 468 if (m == marker) { 510 vectorPair->second[markerIndex] = r;469 m.setRenderedRect(r); 511 470 return; 512 471 } … … 523 482 524 483 // inner loop: process each rect in the current node 525 MarkerMapVectorPair* vectorPair = i->second; 526 Vector<IntRect>& rects = vectorPair->second; 527 528 unsigned rectCount = rects.size(); 529 for (unsigned rectIndex = 0; rectIndex < rectCount; ++rectIndex) 530 if (rects[rectIndex].intersects(r)) 531 rects[rectIndex] = placeholderRectForMarker(); 484 MarkerList* list = i->second; 485 for (size_t listIndex = 0; listIndex < list->size(); ++listIndex) 486 list->at(listIndex).invalidate(r); 532 487 } 533 488 } … … 539 494 ASSERT(!m_markers.isEmpty()); 540 495 541 MarkerMapVectorPair* vectorPair = m_markers.get(node); 542 if (!vectorPair) 543 return; 544 545 Vector<DocumentMarker>& markers = vectorPair->first; 546 Vector<IntRect>& rects = vectorPair->second; 547 ASSERT(markers.size() == rects.size()); 496 MarkerList* list = m_markers.get(node); 497 if (!list) 498 return; 548 499 549 500 bool docDirty = false; 550 for (size_t i = 0; i != markers.size(); ++i) {551 DocumentMarker& marker = markers[i];501 for (size_t i = 0; i != list->size(); ++i) { 502 RenderedDocumentMarker& marker = list->at(i); 552 503 if (marker.startOffset >= startOffset) { 553 504 ASSERT((int)marker.startOffset + delta >= 0); … … 557 508 558 509 // Marker moved, so previously-computed rendered rectangle is now invalid 559 rects[i] = placeholderRectForMarker();510 marker.invalidate(); 560 511 } 561 512 } … … 586 537 void DocumentMarkerController::setMarkersActive(Node* node, unsigned startOffset, unsigned endOffset, bool active) 587 538 { 588 MarkerMapVectorPair* vectorPair = m_markers.get(node); 589 if (!vectorPair) 590 return; 591 592 Vector<DocumentMarker>& markers = vectorPair->first; 593 ASSERT(markers.size() == vectorPair->second.size()); 539 MarkerList* list = m_markers.get(node); 540 if (!list) 541 return; 594 542 595 543 bool docDirty = false; 596 for (size_t i = 0; i != markers.size(); ++i) {597 DocumentMarker& marker = markers[i];544 for (size_t i = 0; i != list->size(); ++i) { 545 DocumentMarker& marker = list->at(i); 598 546 599 547 // Markers are returned in order, so stop if we are now past the specified range. … … 655 603 unsigned startOffset = node == startContainer ? range->startOffset() : 0; 656 604 unsigned endOffset = node == endContainer ? static_cast<unsigned>(range->endOffset()) : std::numeric_limits<unsigned>::max(); 657 Marker MapVectorPair* vectorPair= m_markers.get(node);658 if (! vectorPair)605 MarkerList* list = m_markers.get(node); 606 if (!list) 659 607 continue; 660 608 661 Vector<DocumentMarker>& markers = vectorPair->first; 662 for (size_t i = 0; i < markers.size(); ++i) { 663 DocumentMarker& marker = markers[i]; 609 for (size_t i = 0; i < list->size(); ++i) { 610 DocumentMarker& marker = list->at(i); 664 611 665 612 // markers are returned in order, so stop if we are now past the specified range … … 686 633 Node* node = nodeIterator->first.get(); 687 634 fprintf(stderr, "%p", node); 688 MarkerMapVectorPair* vectorPair = nodeIterator->second; 689 Vector<DocumentMarker>& markers = vectorPair->first; 690 unsigned markerCount = markers.size(); 691 for (unsigned markerIndex = 0; markerIndex < markerCount; ++markerIndex) 692 fprintf(stderr, " %d:[%d:%d](%d)", markers[markerIndex].type, markers[markerIndex].startOffset, markers[markerIndex].endOffset, markers[markerIndex].activeMatch); 635 MarkerList* list = nodeIterator->second; 636 for (unsigned markerIndex = 0; markerIndex < list->size(); ++markerIndex) 637 fprintf(stderr, " %d:[%d:%d](%d)", list->at(markerIndex).type, list->at(markerIndex).startOffset, list->at(markerIndex).endOffset, list->at(markerIndex).activeMatch); 693 638 fprintf(stderr, "\n"); 694 639 } -
trunk/Source/WebCore/dom/DocumentMarkerController.h
r83991 r85118 38 38 class Node; 39 39 class Range; 40 class RenderedDocumentMarker; 40 41 41 42 class DocumentMarkerController { 42 43 WTF_MAKE_NONCOPYABLE(DocumentMarkerController); WTF_MAKE_FAST_ALLOCATED; 43 44 public: 45 44 46 DocumentMarkerController(); 45 47 ~DocumentMarkerController() { detach(); } … … 47 49 void detach(); 48 50 void addMarker(Range*, DocumentMarker::MarkerType, String description = String()); 49 void addMarker(Node*, DocumentMarker);51 void addMarker(Node*, const DocumentMarker&); 50 52 void copyMarkers(Node* srcNode, unsigned startOffset, int length, Node* dstNode, int delta); 51 53 bool hasMarkers(Range*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); … … 78 80 79 81 private: 80 typedef std::pair<Vector<DocumentMarker>, Vector<IntRect> > MarkerMapVectorPair;81 typedef HashMap<RefPtr<Node>, Marker MapVectorPair*> MarkerMap;82 typedef Vector<RenderedDocumentMarker> MarkerList; 83 typedef HashMap<RefPtr<Node>, MarkerList*> MarkerMap; 82 84 bool possiblyHasMarkers(DocumentMarker::MarkerTypes); 83 void removeMarkersFrom MarkerMapVectorPair(Node*, MarkerMapVectorPair*, DocumentMarker::MarkerTypes);85 void removeMarkersFromList(Node*, MarkerList*, DocumentMarker::MarkerTypes); 84 86 85 87 MarkerMap m_markers;
Note: See TracChangeset
for help on using the changeset viewer.