summaryrefslogtreecommitdiffstats
path: root/webkit/api/src/WebAccessibilityCacheImpl.h
diff options
context:
space:
mode:
authordglazkov@chromium.org <dglazkov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-04 20:06:15 +0000
committerdglazkov@chromium.org <dglazkov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-11-04 20:06:15 +0000
commitc7287a9c5154d8ce9f213d5e741021b13dfcbe66 (patch)
tree9c67ea76a88047ac74632df01b1bec7557a2a3a7 /webkit/api/src/WebAccessibilityCacheImpl.h
parentb8ce79bbe5104243715968ab112e6b19102effee (diff)
downloadchromium_src-c7287a9c5154d8ce9f213d5e741021b13dfcbe66.zip
chromium_src-c7287a9c5154d8ce9f213d5e741021b13dfcbe66.tar.gz
chromium_src-c7287a9c5154d8ce9f213d5e741021b13dfcbe66.tar.bz2
Introduce WebAccessibilityControllerImpl.
Removes accessibility-related WebCore dependencies from glue. R=darin TEST=none BUG=24616 Review URL: http://codereview.chromium.org/348063 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@30986 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/api/src/WebAccessibilityCacheImpl.h')
-rw-r--r--webkit/api/src/WebAccessibilityCacheImpl.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/webkit/api/src/WebAccessibilityCacheImpl.h b/webkit/api/src/WebAccessibilityCacheImpl.h
new file mode 100644
index 0000000..1173a41
--- /dev/null
+++ b/webkit/api/src/WebAccessibilityCacheImpl.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2009 Google 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:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * 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.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "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 THE COPYRIGHT
+ * OWNER 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.
+ */
+
+#ifndef WebAccessibilityCacheImpl_h
+#define WebAccessibilityCacheImpl_h
+
+// FIXME: Move wtf/RefCounted.h include to AccessibilityObjectWrapper.h
+// once this file is upstream.
+#include <wtf/RefCounted.h>
+#include "AccessibilityObjectWrapper.h"
+#include "WebAccessibilityCache.h"
+#include <wtf/HashMap.h>
+#include <wtf/PassRefPtr.h>
+
+namespace WebKit {
+
+// FIXME: Should be eliminated to use AXObjectCache instead.
+class WebAccessibilityCacheImpl : public WebKit::WebAccessibilityCache {
+public:
+ virtual void initialize(WebView* view);
+ virtual bool isInitialized() const { return m_initialized; }
+
+ virtual WebAccessibilityObject getObjectById(int);
+ virtual bool isValidId(int) const;
+ virtual int addOrGetId(const WebKit::WebAccessibilityObject&);
+
+ virtual void remove(int);
+ virtual void clear();
+
+protected:
+ friend class WebKit::WebAccessibilityCache;
+
+ WebAccessibilityCacheImpl();
+ ~WebAccessibilityCacheImpl();
+
+private:
+ // FIXME: This can be just part of Chromium's AccessibilityObjectWrapper.
+ class WeakHandle : public WebCore::AccessibilityObjectWrapper {
+ public:
+ static PassRefPtr<WeakHandle> create(WebCore::AccessibilityObject*);
+ virtual void detach();
+ private:
+ WeakHandle(WebCore::AccessibilityObject*);
+ };
+
+ typedef HashMap<int, RefPtr<WeakHandle> > ObjectMap;
+ typedef HashMap<WebCore::AccessibilityObject*, int> IdMap;
+
+ // Hashmap for caching of elements in use by the AT, mapping id (int) to
+ // WebAccessibilityObject.
+ ObjectMap m_objectMap;
+ // Hashmap for caching of elements in use by the AT, mapping a
+ // AccessibilityObject pointer to its id (int). Needed for reverse lookup,
+ // to ensure unnecessary duplicate entries are not created in the
+ // ObjectMap and for focus changes in WebKit.
+ IdMap m_idMap;
+
+ // Unique identifier for retrieving an accessibility object from the page's
+ // hashmaps. Id is always 0 for the root of the accessibility object
+ // hierarchy (on a per-renderer process basis).
+ int m_nextNewId;
+
+ bool m_initialized;
+};
+
+}
+
+#endif