Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1525)

Side by Side Diff: Source/web/WebAXObject.cpp

Issue 286143008: Make AX update layout on all frames (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: More strict assert Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/accessibility/AXObject.cpp ('k') | public/web/WebAXObject.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 } 100 }
101 101
102 int WebAXObject::axID() const 102 int WebAXObject::axID() const
103 { 103 {
104 if (isDetached()) 104 if (isDetached())
105 return -1; 105 return -1;
106 106
107 return m_private->axObjectID(); 107 return m_private->axObjectID();
108 } 108 }
109 109
110 bool WebAXObject::updateLayoutAndCheckValidity()
111 {
112 if (!isDetached()) {
113 Document* document = m_private->document();
114 if (!document || !document->topDocument().view())
115 return false;
116 document->topDocument().view()->updateLayoutAndStyleIfNeededRecursive();
117 }
118
119 // Doing a layout can cause this object to be invalid, so check again.
120 return !isDetached();
121 }
122
110 bool WebAXObject::updateBackingStoreAndCheckValidity() 123 bool WebAXObject::updateBackingStoreAndCheckValidity()
111 { 124 {
112 if (!isDetached()) 125 return updateLayoutAndCheckValidity();
113 m_private->updateBackingStore();
114 return !isDetached();
115 } 126 }
116 127
117 WebString WebAXObject::accessibilityDescription() const 128 WebString WebAXObject::accessibilityDescription() const
118 { 129 {
119 if (isDetached()) 130 if (isDetached())
120 return WebString(); 131 return WebString();
121 132
122 return m_private->accessibilityDescription(); 133 return m_private->accessibilityDescription();
123 } 134 }
124 135
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 m_private->ariaOwnsElements(owns); 537 m_private->ariaOwnsElements(owns);
527 538
528 WebVector<WebAXObject> result(owns.size()); 539 WebVector<WebAXObject> result(owns.size());
529 for (size_t i = 0; i < owns.size(); i++) 540 for (size_t i = 0; i < owns.size(); i++)
530 result[i] = WebAXObject(owns[i]); 541 result[i] = WebAXObject(owns[i]);
531 ownsElements.swap(result); 542 ownsElements.swap(result);
532 543
533 return true; 544 return true;
534 } 545 }
535 546
547 #if ASSERT_ENABLED
548 static bool isLayoutClean(Document* document)
549 {
550 if (!document || !document->view())
551 return false;
552 return document->lifecycle().state() >= DocumentLifecycle::LayoutClean
553 || (document->lifecycle().state() == DocumentLifecycle::StyleClean && !d ocument->view()->needsLayout());
554 }
555 #endif
556
536 WebRect WebAXObject::boundingBoxRect() const 557 WebRect WebAXObject::boundingBoxRect() const
537 { 558 {
538 if (isDetached()) 559 if (isDetached())
539 return WebRect(); 560 return WebRect();
540 561
541 // It's not safe to call boundingBoxRect if a layout is pending. 562 // It's not safe to call boundingBoxRect if a layout is pending.
542 // Clients should call updateBackingStoreAndCheckValidity first. 563 // Clients should call updateLayoutAndCheckValidity first.
543 ASSERT(m_private->document() && m_private->document()->lifecycle().state() > = DocumentLifecycle::LayoutClean); 564 ASSERT(isLayoutClean(m_private->document()));
544 565
545 return pixelSnappedIntRect(m_private->elementRect()); 566 return pixelSnappedIntRect(m_private->elementRect());
546 } 567 }
547 568
548 bool WebAXObject::canvasHasFallbackContent() const 569 bool WebAXObject::canvasHasFallbackContent() const
549 { 570 {
550 if (isDetached()) 571 if (isDetached())
551 return false; 572 return false;
552 573
553 return m_private->canvasHasFallbackContent(); 574 return m_private->canvasHasFallbackContent();
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
1150 m_private = object; 1171 m_private = object;
1151 return *this; 1172 return *this;
1152 } 1173 }
1153 1174
1154 WebAXObject::operator WTF::PassRefPtr<WebCore::AXObject>() const 1175 WebAXObject::operator WTF::PassRefPtr<WebCore::AXObject>() const
1155 { 1176 {
1156 return m_private.get(); 1177 return m_private.get();
1157 } 1178 }
1158 1179
1159 } // namespace blink 1180 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/accessibility/AXObject.cpp ('k') | public/web/WebAXObject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698