Changeset 126932 in webkit
- Timestamp:
- Aug 28, 2012, 2:58:35 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
-
Source/WebKit/chromium/ChangeLog (modified) (1 diff)
-
Source/WebKit/chromium/public/WebAccessibilityObject.h (modified) (1 diff)
-
Source/WebKit/chromium/src/WebAccessibilityObject.cpp (modified) (74 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/chromium/ChangeLog
r126926 r126932 1 2012-08-28 Dominic Mazzoni <dmazzoni@google.com> 2 3 AX: Crash due to object getting deleted inside updateBackingStore 4 https://bugs.webkit.org/show_bug.cgi?id=94619 5 6 Reviewed by Chris Fleizach. 7 8 Chromium now calls updateBackingStoreAndCheckValidity explicitly, 9 so we can now get rid of calls to updateBackingStore in the 10 method implementations, and just make sure we're checking isDetached. 11 12 * public/WebAccessibilityObject.h: 13 (WebAccessibilityObject): 14 * src/WebAccessibilityObject.cpp: 15 (WebKit::WebAccessibilityObject::axID): 16 (WebKit::WebAccessibilityObject::accessibilityDescription): 17 (WebKit::WebAccessibilityObject::actionVerb): 18 (WebKit::WebAccessibilityObject::canSetFocusAttribute): 19 (WebKit::WebAccessibilityObject::canSetValueAttribute): 20 (WebKit::WebAccessibilityObject::childCount): 21 (WebKit::WebAccessibilityObject::childAt): 22 (WebKit::WebAccessibilityObject::firstChild): 23 (WebKit::WebAccessibilityObject::focusedChild): 24 (WebKit::WebAccessibilityObject::lastChild): 25 (WebKit::WebAccessibilityObject::nextSibling): 26 (WebKit::WebAccessibilityObject::parentObject): 27 (WebKit::WebAccessibilityObject::previousSibling): 28 (WebKit::WebAccessibilityObject::canSetSelectedAttribute): 29 (WebKit::WebAccessibilityObject::isAnchor): 30 (WebKit::WebAccessibilityObject::isAriaReadOnly): 31 (WebKit::WebAccessibilityObject::isButtonStateMixed): 32 (WebKit::WebAccessibilityObject::isChecked): 33 (WebKit::WebAccessibilityObject::isCollapsed): 34 (WebKit::WebAccessibilityObject::isControl): 35 (WebKit::WebAccessibilityObject::isEnabled): 36 (WebKit::WebAccessibilityObject::isFocused): 37 (WebKit::WebAccessibilityObject::isHovered): 38 (WebKit::WebAccessibilityObject::isIndeterminate): 39 (WebKit::WebAccessibilityObject::isLinked): 40 (WebKit::WebAccessibilityObject::isLoaded): 41 (WebKit::WebAccessibilityObject::isMultiSelectable): 42 (WebKit::WebAccessibilityObject::isOffScreen): 43 (WebKit::WebAccessibilityObject::isPasswordField): 44 (WebKit::WebAccessibilityObject::isPressed): 45 (WebKit::WebAccessibilityObject::isReadOnly): 46 (WebKit::WebAccessibilityObject::isRequired): 47 (WebKit::WebAccessibilityObject::isSelected): 48 (WebKit::WebAccessibilityObject::isSelectedOptionActive): 49 (WebKit::WebAccessibilityObject::isVertical): 50 (WebKit::WebAccessibilityObject::isVisible): 51 (WebKit::WebAccessibilityObject::isVisited): 52 (WebKit::WebAccessibilityObject::accessKey): 53 (WebKit::WebAccessibilityObject::ariaHasPopup): 54 (WebKit::WebAccessibilityObject::ariaLiveRegionAtomic): 55 (WebKit::WebAccessibilityObject::ariaLiveRegionBusy): 56 (WebKit::WebAccessibilityObject::ariaLiveRegionRelevant): 57 (WebKit::WebAccessibilityObject::ariaLiveRegionStatus): 58 (WebKit::WebAccessibilityObject::boundingBoxRect): 59 (WebKit::WebAccessibilityObject::estimatedLoadingProgress): 60 (WebKit::WebAccessibilityObject::helpText): 61 (WebKit::WebAccessibilityObject::headingLevel): 62 (WebKit::WebAccessibilityObject::hierarchicalLevel): 63 (WebKit::WebAccessibilityObject::hitTest): 64 (WebKit::WebAccessibilityObject::keyboardShortcut): 65 (WebKit::WebAccessibilityObject::performDefaultAction): 66 (WebKit::WebAccessibilityObject::roleValue): 67 (WebKit::WebAccessibilityObject::selectionEnd): 68 (WebKit::WebAccessibilityObject::selectionStart): 69 (WebKit::WebAccessibilityObject::stringValue): 70 (WebKit::WebAccessibilityObject::title): 71 (WebKit::WebAccessibilityObject::titleUIElement): 72 (WebKit::WebAccessibilityObject::url): 73 (WebKit::WebAccessibilityObject::valueDescription): 74 (WebKit::WebAccessibilityObject::valueForRange): 75 (WebKit::WebAccessibilityObject::maxValueForRange): 76 (WebKit::WebAccessibilityObject::minValueForRange): 77 (WebKit::WebAccessibilityObject::node): 78 (WebKit::WebAccessibilityObject::document): 79 (WebKit::WebAccessibilityObject::accessibilityIsIgnored): 80 (WebKit::WebAccessibilityObject::lineBreaks): 81 (WebKit::WebAccessibilityObject::columnCount): 82 (WebKit::WebAccessibilityObject::rowCount): 83 (WebKit::WebAccessibilityObject::cellForColumnAndRow): 84 (WebKit::WebAccessibilityObject::cellColumnIndex): 85 (WebKit::WebAccessibilityObject::cellColumnSpan): 86 (WebKit::WebAccessibilityObject::cellRowIndex): 87 (WebKit::WebAccessibilityObject::cellRowSpan): 88 (WebKit::WebAccessibilityObject::scrollToMakeVisible): 89 (WebKit::WebAccessibilityObject::scrollToMakeVisibleWithSubFocus): 90 (WebKit::WebAccessibilityObject::scrollToGlobalPoint): 91 1 92 2012-08-28 Sheriff Bot <webkit.review.bot@gmail.com> 2 93 -
trunk/Source/WebKit/chromium/public/WebAccessibilityObject.h
r126662 r126932 90 90 WEBKIT_EXPORT bool canSetFocusAttribute() const; 91 91 WEBKIT_EXPORT bool canSetValueAttribute() const; 92 WEBKIT_EXPORT bool isValid() const;93 92 94 93 WEBKIT_EXPORT unsigned childCount() const; -
trunk/Source/WebKit/chromium/src/WebAccessibilityObject.cpp
r126662 r126932 96 96 return -1; 97 97 98 m_private->updateBackingStore();99 98 return m_private->axObjectID(); 100 99 } … … 112 111 return WebString(); 113 112 114 m_private->updateBackingStore();115 113 return m_private->accessibilityDescription(); 116 114 } … … 121 119 return WebString(); 122 120 123 m_private->updateBackingStore();124 121 return m_private->actionVerb(); 125 122 } … … 130 127 return false; 131 128 132 m_private->updateBackingStore();133 129 return m_private->canSetFocusAttribute(); 134 130 } … … 139 135 return false; 140 136 141 m_private->updateBackingStore();142 137 return m_private->canSetValueAttribute(); 143 138 } 144 139 145 bool WebAccessibilityObject::isValid() const146 {147 if (isDetached())148 return false;149 150 m_private->updateBackingStore();151 return m_private->axObjectID();152 }153 154 140 unsigned WebAccessibilityObject::childCount() const 155 141 { … … 157 143 return 0; 158 144 159 m_private->updateBackingStore();160 145 return m_private->children().size(); 161 146 } … … 166 151 return WebAccessibilityObject(); 167 152 168 m_private->updateBackingStore();169 153 if (m_private->children().size() <= index) 170 154 return WebAccessibilityObject(); … … 178 162 return WebAccessibilityObject(); 179 163 180 m_private->updateBackingStore();181 164 return WebAccessibilityObject(m_private->firstChild()); 182 165 } … … 187 170 return WebAccessibilityObject(); 188 171 189 m_private->updateBackingStore();190 172 RefPtr<AccessibilityObject> focused = m_private->focusedUIElement(); 191 173 if (m_private.get() == focused.get() || m_private.get() == focused->parentObject()) … … 200 182 return WebAccessibilityObject(); 201 183 202 m_private->updateBackingStore();203 184 return WebAccessibilityObject(m_private->lastChild()); 204 185 } … … 210 191 return WebAccessibilityObject(); 211 192 212 m_private->updateBackingStore();213 193 return WebAccessibilityObject(m_private->nextSibling()); 214 194 } … … 219 199 return WebAccessibilityObject(); 220 200 221 m_private->updateBackingStore();222 201 return WebAccessibilityObject(m_private->parentObject()); 223 202 } … … 229 208 return WebAccessibilityObject(); 230 209 231 m_private->updateBackingStore();232 210 return WebAccessibilityObject(m_private->previousSibling()); 233 211 } … … 238 216 return 0; 239 217 240 m_private->updateBackingStore();241 218 return m_private->canSetSelectedAttribute(); 242 219 } … … 247 224 return 0; 248 225 249 m_private->updateBackingStore();250 226 return m_private->isAnchor(); 251 227 } … … 256 232 return 0; 257 233 258 m_private->updateBackingStore();259 234 return equalIgnoringCase(m_private->getAttribute(HTMLNames::aria_readonlyAttr), "true"); 260 235 } … … 265 240 return 0; 266 241 267 m_private->updateBackingStore();268 242 return m_private->checkboxOrRadioValue() == ButtonStateMixed; 269 243 } … … 274 248 return 0; 275 249 276 m_private->updateBackingStore();277 250 return m_private->isChecked(); 278 251 } … … 283 256 return 0; 284 257 285 m_private->updateBackingStore();286 258 return m_private->isCollapsed(); 287 259 } … … 292 264 return 0; 293 265 294 m_private->updateBackingStore();295 266 return m_private->isControl(); 296 267 } … … 301 272 return 0; 302 273 303 m_private->updateBackingStore();304 274 return m_private->isEnabled(); 305 275 } … … 310 280 return 0; 311 281 312 m_private->updateBackingStore();313 282 return m_private->isFocused(); 314 283 } … … 319 288 return 0; 320 289 321 m_private->updateBackingStore();322 290 return m_private->isHovered(); 323 291 } … … 328 296 return 0; 329 297 330 m_private->updateBackingStore();331 298 return m_private->isIndeterminate(); 332 299 } … … 337 304 return 0; 338 305 339 m_private->updateBackingStore();340 306 return m_private->isLinked(); 341 307 } … … 346 312 return 0; 347 313 348 m_private->updateBackingStore();349 314 return m_private->isLoaded(); 350 315 } … … 355 320 return 0; 356 321 357 m_private->updateBackingStore();358 322 return m_private->isMultiSelectable(); 359 323 } … … 364 328 return 0; 365 329 366 m_private->updateBackingStore();367 330 return m_private->isOffScreen(); 368 331 } … … 373 336 return 0; 374 337 375 m_private->updateBackingStore();376 338 return m_private->isPasswordField(); 377 339 } … … 382 344 return 0; 383 345 384 m_private->updateBackingStore();385 346 return m_private->isPressed(); 386 347 } … … 391 352 return 0; 392 353 393 m_private->updateBackingStore();394 354 return m_private->isReadOnly(); 395 355 } … … 400 360 return 0; 401 361 402 m_private->updateBackingStore();403 362 return m_private->isRequired(); 404 363 } … … 409 368 return 0; 410 369 411 m_private->updateBackingStore();412 370 return m_private->isSelected(); 413 371 } … … 418 376 return false; 419 377 420 m_private->updateBackingStore();421 378 return m_private->isSelectedOptionActive(); 422 379 } … … 427 384 return 0; 428 385 429 m_private->updateBackingStore();430 386 return m_private->orientation() == AccessibilityOrientationVertical; 431 387 } … … 436 392 return 0; 437 393 438 m_private->updateBackingStore();439 394 return m_private->isVisible(); 440 395 } … … 445 400 return 0; 446 401 447 m_private->updateBackingStore();448 402 return m_private->isVisited(); 449 403 } … … 454 408 return WebString(); 455 409 456 m_private->updateBackingStore();457 410 return WebString(m_private->accessKey()); 458 411 } … … 463 416 return 0; 464 417 465 m_private->updateBackingStore();466 418 return m_private->ariaHasPopup(); 467 419 } … … 472 424 return 0; 473 425 474 m_private->updateBackingStore();475 426 return m_private->ariaLiveRegionAtomic(); 476 427 } … … 481 432 return 0; 482 433 483 m_private->updateBackingStore();484 434 return m_private->ariaLiveRegionBusy(); 485 435 } … … 490 440 return WebString(); 491 441 492 m_private->updateBackingStore();493 442 return m_private->ariaLiveRegionRelevant(); 494 443 } … … 499 448 return WebString(); 500 449 501 m_private->updateBackingStore();502 450 return m_private->ariaLiveRegionStatus(); 503 451 } … … 508 456 return WebRect(); 509 457 510 m_private->updateBackingStore();511 458 return m_private->pixelSnappedBoundingBoxRect(); 512 459 } … … 517 464 return 0.0; 518 465 519 m_private->updateBackingStore();520 466 return m_private->estimatedLoadingProgress(); 521 467 } … … 526 472 return WebString(); 527 473 528 m_private->updateBackingStore();529 474 return m_private->helpText(); 530 475 } … … 535 480 return 0; 536 481 537 m_private->updateBackingStore();538 482 return m_private->headingLevel(); 539 483 } … … 544 488 return 0; 545 489 546 m_private->updateBackingStore();547 490 return m_private->hierarchicalLevel(); 548 491 } … … 553 496 return WebAccessibilityObject(); 554 497 555 m_private->updateBackingStore();556 498 IntPoint contentsPoint = m_private->documentFrameView()->windowToContents(point); 557 499 RefPtr<AccessibilityObject> hit = m_private->accessibilityHitTest(contentsPoint); … … 571 513 return WebString(); 572 514 573 m_private->updateBackingStore();574 515 String accessKey = m_private->accessKey(); 575 516 if (accessKey.isNull()) … … 602 543 UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture); 603 544 604 m_private->updateBackingStore();605 545 return m_private->performDefaultAction(); 606 546 } … … 611 551 return WebKit::WebAccessibilityRoleUnknown; 612 552 613 m_private->updateBackingStore();614 553 return static_cast<WebAccessibilityRole>(m_private->roleValue()); 615 554 } … … 620 559 return 0; 621 560 622 m_private->updateBackingStore();623 561 return m_private->selectedTextRange().start + m_private->selectedTextRange().length; 624 562 } … … 629 567 return 0; 630 568 631 m_private->updateBackingStore();632 569 return m_private->selectedTextRange().start; 633 570 } … … 644 581 return WebString(); 645 582 646 m_private->updateBackingStore();647 583 return m_private->stringValue(); 648 584 } … … 653 589 return WebString(); 654 590 655 m_private->updateBackingStore();656 591 return m_private->title(); 657 592 } … … 662 597 return WebAccessibilityObject(); 663 598 664 m_private->updateBackingStore();665 599 return WebAccessibilityObject(m_private->titleUIElement()); 666 600 } … … 671 605 return WebURL(); 672 606 673 m_private->updateBackingStore();674 607 return m_private->url(); 675 608 } … … 680 613 return WebString(); 681 614 682 m_private->updateBackingStore();683 615 return m_private->valueDescription(); 684 616 } … … 689 621 return 0.0; 690 622 691 m_private->updateBackingStore();692 623 return m_private->valueForRange(); 693 624 } … … 698 629 return 0.0; 699 630 700 m_private->updateBackingStore();701 631 return m_private->maxValueForRange(); 702 632 } … … 707 637 return 0.0; 708 638 709 m_private->updateBackingStore();710 639 return m_private->minValueForRange(); 711 640 } … … 715 644 if (isDetached()) 716 645 return WebNode(); 717 718 m_private->updateBackingStore();719 646 720 647 Node* node = m_private->node(); … … 730 657 return WebDocument(); 731 658 732 m_private->updateBackingStore();733 734 659 Document* document = m_private->document(); 735 660 if (!document) … … 780 705 return false; 781 706 782 m_private->updateBackingStore();783 707 return m_private->accessibilityIsIgnored(); 784 708 } … … 789 713 return false; 790 714 791 m_private->updateBackingStore();792 715 int textLength = m_private->textLength(); 793 716 if (!textLength) … … 813 736 return false; 814 737 815 m_private->updateBackingStore();816 738 if (!m_private->isAccessibilityTable()) 817 739 return 0; … … 825 747 return false; 826 748 827 m_private->updateBackingStore();828 749 if (!m_private->isAccessibilityTable()) 829 750 return 0; … … 834 755 WebAccessibilityObject WebAccessibilityObject::cellForColumnAndRow(unsigned column, unsigned row) const 835 756 { 836 m_private->updateBackingStore(); 757 if (isDetached()) 758 return WebAccessibilityObject(); 759 837 760 if (!m_private->isAccessibilityTable()) 838 761 return WebAccessibilityObject(); … … 844 767 unsigned WebAccessibilityObject::cellColumnIndex() const 845 768 { 846 m_private->updateBackingStore(); 769 if (isDetached()) 770 return 0; 771 847 772 if (!m_private->isTableCell()) 848 773 return 0; … … 855 780 unsigned WebAccessibilityObject::cellColumnSpan() const 856 781 { 857 m_private->updateBackingStore(); 782 if (isDetached()) 783 return 0; 784 858 785 if (!m_private->isTableCell()) 859 786 return 0; … … 866 793 unsigned WebAccessibilityObject::cellRowIndex() const 867 794 { 868 m_private->updateBackingStore(); 795 if (isDetached()) 796 return 0; 797 869 798 if (!m_private->isTableCell()) 870 799 return 0; … … 877 806 unsigned WebAccessibilityObject::cellRowSpan() const 878 807 { 879 m_private->updateBackingStore(); 808 if (isDetached()) 809 return 0; 810 880 811 if (!m_private->isTableCell()) 881 812 return 0; … … 888 819 void WebAccessibilityObject::scrollToMakeVisible() const 889 820 { 890 m_private->updateBackingStore();891 m_private->scrollToMakeVisible();821 if (!isDetached()) 822 m_private->scrollToMakeVisible(); 892 823 } 893 824 894 825 void WebAccessibilityObject::scrollToMakeVisibleWithSubFocus(const WebRect& subfocus) const 895 826 { 896 m_private->updateBackingStore();897 m_private->scrollToMakeVisibleWithSubFocus(subfocus);827 if (!isDetached()) 828 m_private->scrollToMakeVisibleWithSubFocus(subfocus); 898 829 } 899 830 900 831 void WebAccessibilityObject::scrollToGlobalPoint(const WebPoint& point) const 901 832 { 902 m_private->updateBackingStore();903 m_private->scrollToGlobalPoint(point);833 if (!isDetached()) 834 m_private->scrollToGlobalPoint(point); 904 835 } 905 836 -
trunk/Tools/ChangeLog
r126926 r126932 1 2012-08-28 Dominic Mazzoni <dmazzoni@google.com> 2 3 AX: Crash due to object getting deleted inside updateBackingStore 4 https://bugs.webkit.org/show_bug.cgi?id=94619 5 6 Reviewed by Chris Fleizach. 7 8 Change isValid to !isDetached after deleting isValid from 9 chromium WebAccessibilityObject as being redundant. 10 11 * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp: 12 (AccessibilityUIElement::isValidGetterCallback): 13 1 14 2012-08-28 Sheriff Bot <webkit.review.bot@gmail.com> 2 15 -
trunk/Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp
r126369 r126932 548 548 void AccessibilityUIElement::isValidGetterCallback(CppVariant* result) 549 549 { 550 result->set( accessibilityObject().isValid());550 result->set(!accessibilityObject().isDetached()); 551 551 } 552 552
Note:
See TracChangeset
for help on using the changeset viewer.