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

Side by Side Diff: Source/core/accessibility/AXRenderObject.cpp

Issue 138443013: Remove iframe@seamless (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Include remove tests Created 6 years, 11 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple 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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. 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 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 return ariaHasPopup() ? PopUpButtonRole : ButtonRole; 294 return ariaHasPopup() ? PopUpButtonRole : ButtonRole;
295 if (isSVGImage()) 295 if (isSVGImage())
296 return SVGRootRole; 296 return SVGRootRole;
297 return ImageRole; 297 return ImageRole;
298 } 298 }
299 299
300 // Note: if JavaScript is disabled, the renderer won't be a RenderHTMLCanvas . 300 // Note: if JavaScript is disabled, the renderer won't be a RenderHTMLCanvas .
301 if (node && node->hasTagName(canvasTag) && m_renderer->isCanvas()) 301 if (node && node->hasTagName(canvasTag) && m_renderer->isCanvas())
302 return CanvasRole; 302 return CanvasRole;
303 303
304 if (cssBox && cssBox->isRenderView()) { 304 if (cssBox && cssBox->isRenderView())
305 // If the iframe is seamless, it should not be announced as a web area t o AT clients.
306 if (document() && document()->shouldDisplaySeamlesslyWithParent())
307 return SeamlessWebAreaRole;
308 return WebAreaRole; 305 return WebAreaRole;
309 }
310 306
311 if (cssBox && cssBox->isTextField()) 307 if (cssBox && cssBox->isTextField())
312 return TextFieldRole; 308 return TextFieldRole;
313 309
314 if (cssBox && cssBox->isTextArea()) 310 if (cssBox && cssBox->isTextArea())
315 return TextAreaRole; 311 return TextAreaRole;
316 312
317 if (node && node->hasTagName(inputTag)) { 313 if (node && node->hasTagName(inputTag)) {
318 HTMLInputElement* input = toHTMLInputElement(node); 314 HTMLInputElement* input = toHTMLInputElement(node);
319 if (input->isCheckbox()) 315 if (input->isCheckbox())
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 729
734 if (isCanvas()) { 730 if (isCanvas()) {
735 if (canvasHasFallbackContent()) 731 if (canvasHasFallbackContent())
736 return false; 732 return false;
737 RenderHTMLCanvas* canvas = toRenderHTMLCanvas(m_renderer); 733 RenderHTMLCanvas* canvas = toRenderHTMLCanvas(m_renderer);
738 if (canvas->height() <= 1 || canvas->width() <= 1) 734 if (canvas->height() <= 1 || canvas->width() <= 1)
739 return true; 735 return true;
740 // Otherwise fall through; use presence of help text, title, or descript ion to decide. 736 // Otherwise fall through; use presence of help text, title, or descript ion to decide.
741 } 737 }
742 738
743 if (isWebArea() || isSeamlessWebArea() || m_renderer->isListMarker()) 739 if (isWebArea() || m_renderer->isListMarker())
744 return false; 740 return false;
745 741
746 // Using the help text, title or accessibility description (so we 742 // Using the help text, title or accessibility description (so we
747 // check if there's some kind of accessible name for the element) 743 // check if there's some kind of accessible name for the element)
748 // to decide an element's visibility is not as definitive as 744 // to decide an element's visibility is not as definitive as
749 // previous checks, so this should remain as one of the last. 745 // previous checks, so this should remain as one of the last.
750 // 746 //
751 // These checks are simplified in the interest of execution speed; 747 // These checks are simplified in the interest of execution speed;
752 // for example, any element having an alt attribute will make it 748 // for example, any element having an alt attribute will make it
753 // not ignored, rather than just images. 749 // not ignored, rather than just images.
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 AXObject* parent = menuButtonForMenu(); 1319 AXObject* parent = menuButtonForMenu();
1324 if (parent) 1320 if (parent)
1325 return parent; 1321 return parent;
1326 } 1322 }
1327 1323
1328 RenderObject* parentObj = renderParentObject(); 1324 RenderObject* parentObj = renderParentObject();
1329 if (parentObj) 1325 if (parentObj)
1330 return axObjectCache()->getOrCreate(parentObj); 1326 return axObjectCache()->getOrCreate(parentObj);
1331 1327
1332 // WebArea's parent should be the scroll view containing it. 1328 // WebArea's parent should be the scroll view containing it.
1333 if (isWebArea() || isSeamlessWebArea()) 1329 if (isWebArea())
1334 return axObjectCache()->getOrCreate(m_renderer->frame()->view()); 1330 return axObjectCache()->getOrCreate(m_renderer->frame()->view());
1335 1331
1336 return 0; 1332 return 0;
1337 } 1333 }
1338 1334
1339 AXObject* AXRenderObject::parentObjectIfExists() const 1335 AXObject* AXRenderObject::parentObjectIfExists() const
1340 { 1336 {
1341 // WebArea's parent should be the scroll view containing it. 1337 // WebArea's parent should be the scroll view containing it.
1342 if (isWebArea() || isSeamlessWebArea()) 1338 if (isWebArea())
1343 return axObjectCache()->get(m_renderer->frame()->view()); 1339 return axObjectCache()->get(m_renderer->frame()->view());
1344 1340
1345 return axObjectCache()->get(renderParentObject()); 1341 return axObjectCache()->get(renderParentObject());
1346 } 1342 }
1347 1343
1348 // 1344 //
1349 // Low-level accessibility tree exploration, only for use within the accessibili ty module. 1345 // Low-level accessibility tree exploration, only for use within the accessibili ty module.
1350 // 1346 //
1351 1347
1352 AXObject* AXRenderObject::firstChild() const 1348 AXObject* AXRenderObject::firstChild() const
(...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after
2299 if (obj->node()) // If we are a continuation, we want to make sure to use th e primary renderer. 2295 if (obj->node()) // If we are a continuation, we want to make sure to use th e primary renderer.
2300 obj = obj->node()->renderer(); 2296 obj = obj->node()->renderer();
2301 2297
2302 // absoluteFocusRingQuads will query the hierarchy below this element, which for large webpages can be very slow. 2298 // absoluteFocusRingQuads will query the hierarchy below this element, which for large webpages can be very slow.
2303 // For a web area, which will have the most elements of any element, absolut eQuads should be used. 2299 // For a web area, which will have the most elements of any element, absolut eQuads should be used.
2304 // We should also use absoluteQuads for SVG elements, otherwise transforms w on't be applied. 2300 // We should also use absoluteQuads for SVG elements, otherwise transforms w on't be applied.
2305 Vector<FloatQuad> quads; 2301 Vector<FloatQuad> quads;
2306 2302
2307 if (obj->isText()) 2303 if (obj->isText())
2308 toRenderText(obj)->absoluteQuads(quads, 0, RenderText::ClipToEllipsis); 2304 toRenderText(obj)->absoluteQuads(quads, 0, RenderText::ClipToEllipsis);
2309 else if (isWebArea() || isSeamlessWebArea() || obj->isSVGRoot()) 2305 else if (isWebArea() || obj->isSVGRoot())
2310 obj->absoluteQuads(quads); 2306 obj->absoluteQuads(quads);
2311 else 2307 else
2312 obj->absoluteFocusRingQuads(quads); 2308 obj->absoluteFocusRingQuads(quads);
2313 2309
2314 LayoutRect result = boundingBoxForQuads(obj, quads); 2310 LayoutRect result = boundingBoxForQuads(obj, quads);
2315 2311
2316 Document* document = this->document(); 2312 Document* document = this->document();
2317 if (document && document->isSVGDocument()) 2313 if (document && document->isSVGDocument())
2318 offsetBoundingBoxForRemoteSVGElement(result); 2314 offsetBoundingBoxForRemoteSVGElement(result);
2319 2315
2320 // The size of the web area should be the content size, not the clipped size . 2316 // The size of the web area should be the content size, not the clipped size .
2321 if ((isWebArea() || isSeamlessWebArea()) && obj->frame()->view()) 2317 if (isWebArea() && obj->frame()->view())
2322 result.setSize(obj->frame()->view()->contentsSize()); 2318 result.setSize(obj->frame()->view()->contentsSize());
2323 2319
2324 // Checkboxes and radio buttons include their label as part of their rect. 2320 // Checkboxes and radio buttons include their label as part of their rect.
2325 if (isCheckboxOrRadio()) { 2321 if (isCheckboxOrRadio()) {
2326 HTMLLabelElement* label = labelForElement(toElement(m_renderer->node())) ; 2322 HTMLLabelElement* label = labelForElement(toElement(m_renderer->node())) ;
2327 if (label && label->renderer()) { 2323 if (label && label->renderer()) {
2328 LayoutRect labelRect = axObjectCache()->getOrCreate(label)->elementR ect(); 2324 LayoutRect labelRect = axObjectCache()->getOrCreate(label)->elementR ect();
2329 result.unite(labelRect); 2325 result.unite(labelRect);
2330 } 2326 }
2331 } 2327 }
2332 2328
2333 return result; 2329 return result;
2334 } 2330 }
2335 2331
2336 } // namespace WebCore 2332 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698