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

Unified Diff: Source/core/accessibility/AXMenuListPopup.cpp

Issue 713933002: Create Source/modules/accessibility/ and move most of core/accessibility/* into it (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebase Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/accessibility/AXMenuListPopup.h ('k') | Source/core/accessibility/AXMockObject.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/accessibility/AXMenuListPopup.cpp
diff --git a/Source/core/accessibility/AXMenuListPopup.cpp b/Source/core/accessibility/AXMenuListPopup.cpp
deleted file mode 100644
index cf9317812ea075d9f69cbc75de0a3130a3afa352..0000000000000000000000000000000000000000
--- a/Source/core/accessibility/AXMenuListPopup.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "core/accessibility/AXMenuListPopup.h"
-
-#include "core/accessibility/AXMenuListOption.h"
-#include "core/accessibility/AXObjectCacheImpl.h"
-#include "core/html/HTMLSelectElement.h"
-
-namespace blink {
-
-using namespace HTMLNames;
-
-AXMenuListPopup::AXMenuListPopup()
-{
-}
-
-bool AXMenuListPopup::isVisible() const
-{
- return false;
-}
-
-bool AXMenuListPopup::isOffScreen() const
-{
- if (!m_parent)
- return true;
-
- return m_parent->isCollapsed();
-}
-
-bool AXMenuListPopup::isEnabled() const
-{
- if (!m_parent)
- return false;
-
- return m_parent->isEnabled();
-}
-
-bool AXMenuListPopup::computeAccessibilityIsIgnored() const
-{
- return accessibilityIsIgnoredByDefault();
-}
-
-AXMenuListOption* AXMenuListPopup::menuListOptionAXObject(HTMLElement* element) const
-{
- ASSERT(element);
- if (!isHTMLOptionElement(*element))
- return 0;
-
- AXObject* object = toAXObjectCacheImpl(document()->axObjectCache())->getOrCreate(MenuListOptionRole);
- ASSERT_WITH_SECURITY_IMPLICATION(object->isMenuListOption());
-
- AXMenuListOption* option = toAXMenuListOption(object);
- option->setElement(element);
-
- return option;
-}
-
-bool AXMenuListPopup::press() const
-{
- if (!m_parent)
- return false;
-
- m_parent->press();
- return true;
-}
-
-void AXMenuListPopup::addChildren()
-{
- if (!m_parent)
- return;
-
- Node* selectNode = m_parent->node();
- if (!selectNode)
- return;
-
- m_haveChildren = true;
-
- const WillBeHeapVector<RawPtrWillBeMember<HTMLElement> >& listItems = toHTMLSelectElement(selectNode)->listItems();
- unsigned length = listItems.size();
- for (unsigned i = 0; i < length; i++) {
- AXMenuListOption* option = menuListOptionAXObject(listItems[i]);
- if (option) {
- option->setParent(this);
- m_children.append(option);
- }
- }
-}
-
-void AXMenuListPopup::childrenChanged()
-{
- AXObjectCacheImpl* cache = axObjectCache();
- if (!cache)
- return;
- for (size_t i = m_children.size(); i > 0 ; --i) {
- AXObject* child = m_children[i - 1].get();
- // FIXME: How could children end up in here that have no actionElement(), the check
- // in menuListOptionAXObject would seem to prevent that.
- if (child->actionElement()) {
- child->detachFromParent();
- cache->remove(child->axObjectID());
- }
- }
-
- m_children.clear();
- m_haveChildren = false;
-}
-
-void AXMenuListPopup::didUpdateActiveOption(int optionIndex)
-{
- // We defer creation of the children until updating the active option so that we don't
- // create AXObjects for <option> elements while they're in the middle of removal.
- if (!m_haveChildren)
- addChildren();
-
- ASSERT_ARG(optionIndex, optionIndex >= 0);
- ASSERT_ARG(optionIndex, optionIndex < static_cast<int>(m_children.size()));
-
- AXObjectCacheImpl* cache = axObjectCache();
- RefPtr<AXObject> child = m_children[optionIndex].get();
-
- cache->postNotification(child.get(), document(), AXObjectCacheImpl::AXFocusedUIElementChanged, true);
- cache->postNotification(child.get(), document(), AXObjectCacheImpl::AXMenuListItemSelected, true);
-}
-
-} // namespace blink
« no previous file with comments | « Source/core/accessibility/AXMenuListPopup.h ('k') | Source/core/accessibility/AXMockObject.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698