1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "config.h" 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebAccessibilityObject.h" 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "AccessibilityObject.h" 350617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "CSSPrimitiveValueMappings.h" 360617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "Document.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "EventHandler.h" 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "FrameView.h" 390617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "Node.h" 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "PlatformKeyboardEvent.h" 410617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "RenderStyle.h" 4281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "UserGestureIndicator.h" 430617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "WebDocument.h" 440617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen#include "WebNode.h" 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebPoint.h" 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebRect.h" 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebString.h" 48f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "WebURL.h" 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockusing namespace WebCore; 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockclass WebAccessibilityObjectPrivate : public WebCore::AccessibilityObject { 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebAccessibilityObject::reset() 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block assign(0); 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebAccessibilityObject::assign(const WebKit::WebAccessibilityObject& other) 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebAccessibilityObjectPrivate* p = const_cast<WebAccessibilityObjectPrivate*>(other.m_private); 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (p) 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block p->ref(); 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block assign(p); 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 7081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochbool WebAccessibilityObject::equals(const WebAccessibilityObject& n) const 7181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 7281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return (m_private == n.m_private); 7381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 7481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 75643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebAccessibilityObject::accessibilityDescription() const 76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->accessibilityDescription(); 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 84643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebAccessibilityObject::actionVerb() const 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->actionVerb(); 91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::canSetFocusAttribute() const 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return false; 97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->canSetFocusAttribute(); 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::canSetValueAttribute() const 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return false; 106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 107643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->canSetValueAttribute(); 109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 11168513a70bcd92384395513322f1b801e7bf9c729Steve Blockbool WebAccessibilityObject::isValid() const 11268513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 11368513a70bcd92384395513322f1b801e7bf9c729Steve Block if (!m_private) 11468513a70bcd92384395513322f1b801e7bf9c729Steve Block return false; 11568513a70bcd92384395513322f1b801e7bf9c729Steve Block 11668513a70bcd92384395513322f1b801e7bf9c729Steve Block m_private->updateBackingStore(); 11768513a70bcd92384395513322f1b801e7bf9c729Steve Block return m_private->axObjectID(); 11868513a70bcd92384395513322f1b801e7bf9c729Steve Block} 11968513a70bcd92384395513322f1b801e7bf9c729Steve Block 120643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockunsigned WebAccessibilityObject::childCount() const 121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 124643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 125643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 126643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->children().size(); 127643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 128643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 129643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::childAt(unsigned index) const 130643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 131643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 132643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (m_private->children().size() <= index) 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(m_private->children()[index]); 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 141643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::firstChild() const 142643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 143643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 144643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 145643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 146643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 147643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(m_private->firstChild()); 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 150643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::focusedChild() const 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 153643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 154643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 155643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 156643ca7872b450ea4efacab6188849e5aac2ba161Steve Block RefPtr<AccessibilityObject> focused = m_private->focusedUIElement(); 157643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (m_private == focused.get() || focused->parentObject() == m_private) 158643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(focused); 159643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 160643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 161643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 162643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 163643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::lastChild() const 164643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 165643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 166643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(m_private->lastChild()); 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 172643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 173643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::nextSibling() const 174643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 175643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 177643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 178643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 179643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(m_private->nextSibling()); 180643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 181643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 182643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::parentObject() const 183643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 184643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 187643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 188643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(m_private->parentObject()); 189643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 190643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 191643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 192643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::previousSibling() const 193643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 194643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 195643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 196643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 197643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 198643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(m_private->previousSibling()); 199643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 200643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2015abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickbool WebAccessibilityObject::canSetSelectedAttribute() const 2025abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{ 2035abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick if (!m_private) 2045abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return 0; 2055abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 2065abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick m_private->updateBackingStore(); 2075abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return m_private->canSetSelectedAttribute(); 2085abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 2095abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 210643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isAnchor() const 211643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 212643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 213643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 214643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 215643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 216643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isAnchor(); 217643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 218643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 219643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isChecked() const 220643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 221643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 222643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 223643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 224643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 225643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isChecked(); 226643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 227643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2285abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickbool WebAccessibilityObject::isCollapsed() const 2295abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{ 2305abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick if (!m_private) 2315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return 0; 2325abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 2335abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick m_private->updateBackingStore(); 2345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return m_private->isCollapsed(); 2355abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 2365abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 237643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 238643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isFocused() const 239643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 240643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 241643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 242643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 243643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 244643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isFocused(); 245643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 246643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 247643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isEnabled() const 248643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 249643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 250643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 251643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 252643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 253643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isEnabled(); 254643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 255643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 256643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isHovered() const 257643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 258643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 259643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 260643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 261643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 262643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isHovered(); 263643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 264643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 265643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isIndeterminate() const 266643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 267643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 268643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 269643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 270643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 271643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isIndeterminate(); 272643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 273643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 2745abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickbool WebAccessibilityObject::isLinked() const 2755abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{ 2765abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick if (!m_private) 2775abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return 0; 2785abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 2795abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick m_private->updateBackingStore(); 2805abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return m_private->isLinked(); 2815abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 2825abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 283d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool WebAccessibilityObject::isMultiSelectable() const 284643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 285643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 286643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 287643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 288643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 289d0825bca7fe65beaee391d30da42e937db621564Steve Block return m_private->isMultiSelectable(); 290643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 291643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 292643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isOffScreen() const 293643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 294643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 295643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 296643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 297643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 298643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isOffScreen(); 299643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 300643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 301643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isPasswordField() const 302643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 303643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 304643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 305643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 306643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 307643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isPasswordField(); 308643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 309643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 310643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isPressed() const 311643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 312643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 313643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 314643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 315643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 316643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isPressed(); 317643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 318643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 319643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isReadOnly() const 320643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 321643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 322643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 323643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 324643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 325643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isReadOnly(); 326643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 327643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 3285abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickbool WebAccessibilityObject::isSelected() const 3295abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{ 3305abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick if (!m_private) 3315abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return 0; 3325abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 3335abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick m_private->updateBackingStore(); 3345abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return m_private->isSelected(); 3355abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 3365abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 3375abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrickbool WebAccessibilityObject::isVisible() const 3385abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick{ 3395abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick if (!m_private) 3405abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return 0; 3415abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 3425abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick m_private->updateBackingStore(); 3435abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick return m_private->isVisible(); 3445abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick} 3455abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick 346643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::isVisited() const 347643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 348643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 349643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return 0; 350643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 351643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 352643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->isVisited(); 353643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 354643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 355643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebRect WebAccessibilityObject::boundingBoxRect() const 356643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 357643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 358643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebRect(); 359643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 360643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 36128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return m_private->boundingBoxRect(); 362643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 363643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 364643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebAccessibilityObject::helpText() const 365643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 366643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 367643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 368643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 369643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 370643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->helpText(); 371643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 372643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 373e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockint WebAccessibilityObject::headingLevel() const 374e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block{ 375e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block if (!m_private) 376e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block return 0; 377e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block 378e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block m_private->updateBackingStore(); 379e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block return m_private->headingLevel(); 380e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block} 381e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block 382643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject WebAccessibilityObject::hitTest(const WebPoint& point) const 383643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 384643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 385643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 386643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 387643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 388643ca7872b450ea4efacab6188849e5aac2ba161Steve Block IntPoint contentsPoint = m_private->documentFrameView()->windowToContents(point); 389f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch RefPtr<AccessibilityObject> hit = m_private->accessibilityHitTest(contentsPoint); 390643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 391643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (hit.get()) 392643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(hit); 393643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 394643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (m_private->boundingBoxRect().contains(contentsPoint)) 395643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return *this; 396643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 397643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebAccessibilityObject(); 398643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 399643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 400643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebAccessibilityObject::keyboardShortcut() const 401643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 402643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 403643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 404643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 405643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 406643ca7872b450ea4efacab6188849e5aac2ba161Steve Block String accessKey = m_private->accessKey(); 407643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (accessKey.isNull()) 408643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 409643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 410643ca7872b450ea4efacab6188849e5aac2ba161Steve Block static String modifierString; 411643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (modifierString.isNull()) { 412643ca7872b450ea4efacab6188849e5aac2ba161Steve Block unsigned modifiers = EventHandler::accessKeyModifiers(); 413643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Follow the same order as Mozilla MSAA implementation: 414643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Ctrl+Alt+Shift+Meta+key. MSDN states that keyboard shortcut strings 415643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // should not be localized and defines the separator as "+". 416643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (modifiers & PlatformKeyboardEvent::CtrlKey) 417643ca7872b450ea4efacab6188849e5aac2ba161Steve Block modifierString += "Ctrl+"; 418643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (modifiers & PlatformKeyboardEvent::AltKey) 419643ca7872b450ea4efacab6188849e5aac2ba161Steve Block modifierString += "Alt+"; 420643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (modifiers & PlatformKeyboardEvent::ShiftKey) 421643ca7872b450ea4efacab6188849e5aac2ba161Steve Block modifierString += "Shift+"; 422643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (modifiers & PlatformKeyboardEvent::MetaKey) 423643ca7872b450ea4efacab6188849e5aac2ba161Steve Block modifierString += "Win+"; 424643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 425643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 426643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return modifierString + accessKey; 427643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 428643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 429643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockbool WebAccessibilityObject::performDefaultAction() const 430643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 431643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 432643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return false; 433643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 43481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch UserGestureIndicator gestureIndicator(DefinitelyProcessingUserGesture); 43581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 436643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 437643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->performDefaultAction(); 438643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 439643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 440643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityRole WebAccessibilityObject::roleValue() const 441643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 442643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 443643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebKit::WebAccessibilityRoleUnknown; 444643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 445643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 446643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return static_cast<WebAccessibilityRole>(m_private->roleValue()); 447643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 448643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 449e78cbe89e6f337f2f1fe40315be88f742b547151Steve Blockvoid WebAccessibilityObject::setFocused(bool on) const 450e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block{ 451e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block if (m_private) 452e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block m_private->setFocused(on); 453e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block} 454e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block 455643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebAccessibilityObject::stringValue() const 456643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 457643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 458643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 459643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 460643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 461643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->stringValue(); 462643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 463643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 464643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebString WebAccessibilityObject::title() const 465643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 466643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!m_private) 467643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebString(); 468643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 469643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->updateBackingStore(); 470643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return m_private->title(); 471643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 472643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 473f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochWebURL WebAccessibilityObject::url() const 474f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 475f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (!m_private) 476f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return WebURL(); 477f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 478f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch m_private->updateBackingStore(); 479f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return m_private->url(); 480f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 4810617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 4820617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenWebNode WebAccessibilityObject::node() const 4830617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{ 4840617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (!m_private) 4850617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebNode(); 4860617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 4870617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen m_private->updateBackingStore(); 4880617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 4890617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen Node* node = m_private->node(); 4900617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (!node) 4910617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebNode(); 4920617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 4930617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebNode(node); 4940617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen} 4950617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 4960617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenWebDocument WebAccessibilityObject::document() const 4970617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{ 4980617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (!m_private) 4990617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebDocument(); 5000617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5010617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen m_private->updateBackingStore(); 5020617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5030617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen Document* document = m_private->document(); 5040617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (!document) 5050617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebDocument(); 5060617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5070617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebDocument(document); 5080617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen} 5090617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5100617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenbool WebAccessibilityObject::hasComputedStyle() const 5110617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{ 5120617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen Document* document = m_private->document(); 5130617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (document) 5140617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen document->updateStyleIfNeeded(); 5150617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5160617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen Node* node = m_private->node(); 5170617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (!node) 5180617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return false; 5190617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5200617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return node->computedStyle(); 5210617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen} 5220617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5230617145a89917ae7735fe1c9538688ab9a577df5Kristian MonsenWebString WebAccessibilityObject::computedStyleDisplay() const 5240617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen{ 5250617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen Document* document = m_private->document(); 5260617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (document) 5270617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen document->updateStyleIfNeeded(); 5280617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5290617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen Node* node = m_private->node(); 5300617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (!node) 5310617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebString(); 5320617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5330617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen RenderStyle* renderStyle = node->computedStyle(); 5340617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen if (!renderStyle) 5350617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebString(); 5360617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5370617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen return WebString(CSSPrimitiveValue::create(renderStyle->display())->getStringValue()); 5380617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen} 5390617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsen 5402bde8e466a4451c7319e3a072d118917957d6554Steve Blockbool WebAccessibilityObject::accessibilityIsIgnored() const 5412bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 5422bde8e466a4451c7319e3a072d118917957d6554Steve Block m_private->updateBackingStore(); 5432bde8e466a4451c7319e3a072d118917957d6554Steve Block return m_private->accessibilityIsIgnored(); 5442bde8e466a4451c7319e3a072d118917957d6554Steve Block} 5452bde8e466a4451c7319e3a072d118917957d6554Steve Block 546643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject::WebAccessibilityObject(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object) 547643ca7872b450ea4efacab6188849e5aac2ba161Steve Block : m_private(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef())) 548643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 549643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 550643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 551643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject& WebAccessibilityObject::operator=(const WTF::PassRefPtr<WebCore::AccessibilityObject>& object) 552643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 553643ca7872b450ea4efacab6188849e5aac2ba161Steve Block assign(static_cast<WebAccessibilityObjectPrivate*>(object.releaseRef())); 554643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return *this; 555643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 556643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 557643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebAccessibilityObject::operator WTF::PassRefPtr<WebCore::AccessibilityObject>() const 558643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 559643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return PassRefPtr<WebCore::AccessibilityObject>(const_cast<WebAccessibilityObjectPrivate*>(m_private)); 560643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 561643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 562643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockvoid WebAccessibilityObject::assign(WebAccessibilityObjectPrivate* p) 563643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 564643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // p is already ref'd for us by the caller 565643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (m_private) 566643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private->deref(); 567643ca7872b450ea4efacab6188849e5aac2ba161Steve Block m_private = p; 568643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 569643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 570643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 571