OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2008, 2010 Nokia Corporation and/or its subsidiary(-ies) |
4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> | 4 * Copyright (C) 2007 Alp Toker <alp@atoker.com> |
5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> | 5 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> |
6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> | 6 * Copyright (C) 2008 Dirk Schulze <krit@webkit.org> |
7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. | 7 * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved. |
8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. | 8 * Copyright (C) 2012, 2013 Intel Corporation. All rights reserved. |
9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. | 9 * Copyright (C) 2013 Adobe Systems Incorporated. All rights reserved. |
10 * | 10 * |
(...skipping 2301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2312 | 2312 |
2313 PassRefPtr<Canvas2DContextAttributes> CanvasRenderingContext2D::getContextAttrib
utes() const | 2313 PassRefPtr<Canvas2DContextAttributes> CanvasRenderingContext2D::getContextAttrib
utes() const |
2314 { | 2314 { |
2315 RefPtr<Canvas2DContextAttributes> attributes = Canvas2DContextAttributes::cr
eate(); | 2315 RefPtr<Canvas2DContextAttributes> attributes = Canvas2DContextAttributes::cr
eate(); |
2316 attributes->setAlpha(m_hasAlpha); | 2316 attributes->setAlpha(m_hasAlpha); |
2317 return attributes.release(); | 2317 return attributes.release(); |
2318 } | 2318 } |
2319 | 2319 |
2320 void CanvasRenderingContext2D::drawFocusIfNeeded(Element* element) | 2320 void CanvasRenderingContext2D::drawFocusIfNeeded(Element* element) |
2321 { | 2321 { |
2322 if (!focusRingCallIsValid(m_path, element)) | 2322 drawFocusIfNeededInternal(m_path, element); |
| 2323 } |
| 2324 |
| 2325 void CanvasRenderingContext2D::drawFocusIfNeeded(Path2D* path2d, Element* elemen
t) |
| 2326 { |
| 2327 drawFocusIfNeededInternal(path2d->path(), element); |
| 2328 } |
| 2329 |
| 2330 void CanvasRenderingContext2D::drawFocusIfNeededInternal(const Path& path, Eleme
nt* element) |
| 2331 { |
| 2332 if (!focusRingCallIsValid(path, element)) |
2323 return; | 2333 return; |
2324 | 2334 |
2325 updateFocusRingAccessibility(m_path, element); | 2335 updateFocusRingAccessibility(path, element); |
2326 // Note: we need to check document->focusedElement() rather than just callin
g | 2336 // Note: we need to check document->focusedElement() rather than just callin
g |
2327 // element->focused(), because element->focused() isn't updated until after | 2337 // element->focused(), because element->focused() isn't updated until after |
2328 // focus events fire. | 2338 // focus events fire. |
2329 if (element->document().focusedElement() == element) | 2339 if (element->document().focusedElement() == element) |
2330 drawFocusRing(m_path); | 2340 drawFocusRing(path); |
2331 } | 2341 } |
2332 | 2342 |
2333 bool CanvasRenderingContext2D::drawCustomFocusRing(Element* element) | 2343 bool CanvasRenderingContext2D::drawCustomFocusRing(Element* element) |
2334 { | 2344 { |
2335 if (!focusRingCallIsValid(m_path, element)) | 2345 if (!focusRingCallIsValid(m_path, element)) |
2336 return false; | 2346 return false; |
2337 | 2347 |
2338 updateFocusRingAccessibility(m_path, element); | 2348 updateFocusRingAccessibility(m_path, element); |
2339 | 2349 |
2340 // Return true if the application should draw the focus ring. The spec allow
s us to | 2350 // Return true if the application should draw the focus ring. The spec allow
s us to |
(...skipping 19 matching lines...) Expand all Loading... |
2360 if (!canvas()->renderer()) | 2370 if (!canvas()->renderer()) |
2361 return; | 2371 return; |
2362 | 2372 |
2363 // If accessibility is already enabled in this frame, associate this path's | 2373 // If accessibility is already enabled in this frame, associate this path's |
2364 // bounding box with the accessible object. Do this even if the element | 2374 // bounding box with the accessible object. Do this even if the element |
2365 // isn't focused because assistive technology might try to explore the objec
t's | 2375 // isn't focused because assistive technology might try to explore the objec
t's |
2366 // location before it gets focus. | 2376 // location before it gets focus. |
2367 if (AXObjectCache* axObjectCache = element->document().existingAXObjectCache
()) { | 2377 if (AXObjectCache* axObjectCache = element->document().existingAXObjectCache
()) { |
2368 if (AXObject* obj = axObjectCache->getOrCreate(element)) { | 2378 if (AXObject* obj = axObjectCache->getOrCreate(element)) { |
2369 // Get the bounding rect and apply transformations. | 2379 // Get the bounding rect and apply transformations. |
2370 FloatRect bounds = m_path.boundingRect(); | 2380 FloatRect bounds = path.boundingRect(); |
2371 AffineTransform ctm = state().m_transform; | 2381 AffineTransform ctm = state().m_transform; |
2372 FloatRect transformedBounds = ctm.mapRect(bounds); | 2382 FloatRect transformedBounds = ctm.mapRect(bounds); |
2373 LayoutRect elementRect = LayoutRect(transformedBounds); | 2383 LayoutRect elementRect = LayoutRect(transformedBounds); |
2374 | 2384 |
2375 // Offset by the canvas rect and set the bounds of the accessible el
ement. | 2385 // Offset by the canvas rect and set the bounds of the accessible el
ement. |
2376 IntRect canvasRect = canvas()->renderer()->absoluteBoundingBoxRect()
; | 2386 IntRect canvasRect = canvas()->renderer()->absoluteBoundingBoxRect()
; |
2377 elementRect.moveBy(canvasRect.location()); | 2387 elementRect.moveBy(canvasRect.location()); |
2378 obj->setElementRect(elementRect); | 2388 obj->setElementRect(elementRect); |
2379 | 2389 |
2380 // Set the bounds of any ancestor accessible elements, up to the can
vas element, | 2390 // Set the bounds of any ancestor accessible elements, up to the can
vas element, |
(...skipping 30 matching lines...) Expand all Loading... |
2411 c->setAlphaAsFloat(1.0); | 2421 c->setAlphaAsFloat(1.0); |
2412 c->clearShadow(); | 2422 c->clearShadow(); |
2413 c->setCompositeOperation(CompositeSourceOver, blink::WebBlendModeNormal); | 2423 c->setCompositeOperation(CompositeSourceOver, blink::WebBlendModeNormal); |
2414 c->drawFocusRing(path, focusRingWidth, focusRingOutline, focusRingColor); | 2424 c->drawFocusRing(path, focusRingWidth, focusRingOutline, focusRingColor); |
2415 c->restore(); | 2425 c->restore(); |
2416 | 2426 |
2417 didDraw(dirtyRect); | 2427 didDraw(dirtyRect); |
2418 } | 2428 } |
2419 | 2429 |
2420 } // namespace WebCore | 2430 } // namespace WebCore |
OLD | NEW |