| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "AXObjectCache.h" | 7 #include "AXObjectCache.h" |
| 8 #include "Document.h" | 8 #include "Document.h" |
| 9 #include "Frame.h" | 9 #include "Frame.h" |
| 10 #include "RefPtr.h" | 10 #include "RefPtr.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 }; | 28 }; |
| 29 | 29 |
| 30 /*static*/ | 30 /*static*/ |
| 31 WebAccessibilityManager* WebAccessibilityManager::Create() { | 31 WebAccessibilityManager* WebAccessibilityManager::Create() { |
| 32 return new WebAccessibilityManagerImpl(); | 32 return new WebAccessibilityManagerImpl(); |
| 33 } | 33 } |
| 34 | 34 |
| 35 // class WebAccessibilityManagerImpl | 35 // class WebAccessibilityManagerImpl |
| 36 WebAccessibilityManagerImpl::WebAccessibilityManagerImpl() | 36 WebAccessibilityManagerImpl::WebAccessibilityManagerImpl() |
| 37 : root_(new GlueAccessibilityObjectRoot), | 37 : root_(new GlueAccessibilityObjectRoot), |
| 38 acc_obj_id_(0) { | 38 acc_obj_id_(1000) { |
| 39 } | 39 } |
| 40 | 40 |
| 41 WebAccessibilityManagerImpl::~WebAccessibilityManagerImpl() { | 41 WebAccessibilityManagerImpl::~WebAccessibilityManagerImpl() { |
| 42 int_to_glue_acc_obj_map_.clear(); | 42 int_to_glue_acc_obj_map_.clear(); |
| 43 acc_obj_to_int_map_.clear(); | 43 acc_obj_to_int_map_.clear(); |
| 44 } | 44 } |
| 45 | 45 |
| 46 bool WebAccessibilityManagerImpl::GetAccObjInfo(WebView* view, | 46 bool WebAccessibilityManagerImpl::GetAccObjInfo(WebView* view, |
| 47 const WebAccessibility::InParams& in_params, | 47 const WebAccessibility::InParams& in_params, |
| 48 WebAccessibility::OutParams* out_params) { | 48 WebAccessibility::OutParams* out_params) { |
| 49 if (!root_->acc_obj_root_ && !InitAccObjRoot(view)) { | 49 if (!root_->acc_obj_root_ && !InitAccObjRoot(view)) { |
| 50 // Failure in retrieving or initializing the root. | 50 // Failure in retrieving or initializing the root. |
| 51 return false; | 51 return false; |
| 52 } | 52 } |
| 53 | 53 |
| 54 // Function input parameters. | 54 // Function input parameters. |
| 55 int object_id = in_params.object_id; | 55 int object_id = in_params.object_id; |
| 56 int child_id = in_params.child_id; | 56 int child_id = in_params.child_id; |
| 57 | 57 |
| 58 if (!in_params.direct_descendant) { | 58 // Since ids assigned by Chrome starts at 1000, whereas platform-specific ids |
| 59 // used to reference a child will be in a wholly different range, we know |
| 60 // that any id that high should be treated as a non-direct descendant. |
| 61 if (in_params.child_id >= 1000) { |
| 59 // Object is not a direct child, re-map the input parameters accordingly. | 62 // Object is not a direct child, re-map the input parameters accordingly. |
| 60 // The object to be retrieved is referred to by the |in_params.child_id|, as | 63 // The object to be retrieved is referred to by the |in_params.child_id|, as |
| 61 // a result of e.g. a focus event. The local |child_id| is set to 0, to | 64 // a result of e.g. a focus event. The local |child_id| is set to 0, to |
| 62 // indicate that any function call should refer to the object itself. | 65 // indicate that any function call should refer to the object itself. |
| 63 object_id = in_params.child_id; | 66 object_id = in_params.child_id; |
| 64 child_id = 0; | 67 child_id = 0; |
| 65 } | 68 } |
| 66 | 69 |
| 67 // Find GlueAccessibilityObject requested by |object_id|. | 70 // Find GlueAccessibilityObject requested by |object_id|. |
| 68 IntToGlueAccObjMap::iterator it = | 71 IntToGlueAccObjMap::iterator it = |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 if (it->second) { | 243 if (it->second) { |
| 241 // Erase element from reverse hashmap. | 244 // Erase element from reverse hashmap. |
| 242 AccObjToIntMap::iterator it2 = | 245 AccObjToIntMap::iterator it2 = |
| 243 acc_obj_to_int_map_.find(it->second->accessibilityObject()); | 246 acc_obj_to_int_map_.find(it->second->accessibilityObject()); |
| 244 | 247 |
| 245 if (it2 != acc_obj_to_int_map_.end()) | 248 if (it2 != acc_obj_to_int_map_.end()) |
| 246 acc_obj_to_int_map_.erase(it2); | 249 acc_obj_to_int_map_.erase(it2); |
| 247 } | 250 } |
| 248 int_to_glue_acc_obj_map_.erase(it); | 251 int_to_glue_acc_obj_map_.erase(it); |
| 249 | 252 |
| 250 if (acc_obj_id == 0) { | 253 if (acc_obj_id == 1000) { |
| 251 // Invalidate root. | 254 // Invalidate root. |
| 252 root_->acc_obj_root_ = 0; | 255 root_->acc_obj_root_ = 0; |
| 253 } | 256 } |
| 254 return true; | 257 return true; |
| 255 } | 258 } |
| 256 | 259 |
| 257 int WebAccessibilityManagerImpl::FocusAccObj( | 260 int WebAccessibilityManagerImpl::FocusAccObj( |
| 258 WebCore::AccessibilityObject* acc_obj) { | 261 WebCore::AccessibilityObject* acc_obj) { |
| 259 if (!acc_obj) { | 262 if (!acc_obj) { |
| 260 // Return with failure. | 263 // Return with failure. |
| 261 return -1; | 264 return -1; |
| 262 } | 265 } |
| 263 | 266 |
| 264 AccObjToIntMap::iterator it = acc_obj_to_int_map_.find(acc_obj); | 267 AccObjToIntMap::iterator it = acc_obj_to_int_map_.find(acc_obj); |
| 265 | 268 |
| 266 if (it != acc_obj_to_int_map_.end()) | 269 if (it != acc_obj_to_int_map_.end()) |
| 267 return it->second; | 270 return it->second; |
| 268 | 271 |
| 269 // Insert new accessibility object in hashmaps and return its newly | 272 // Insert new accessibility object in hashmaps and return its newly |
| 270 // assigned accessibility object id. | 273 // assigned accessibility object id. |
| 271 int_to_glue_acc_obj_map_[acc_obj_id_] = | 274 int_to_glue_acc_obj_map_[acc_obj_id_] = |
| 272 GlueAccessibilityObject::CreateInstance(acc_obj); | 275 GlueAccessibilityObject::CreateInstance(acc_obj); |
| 273 acc_obj_to_int_map_[acc_obj] = acc_obj_id_; | 276 acc_obj_to_int_map_[acc_obj] = acc_obj_id_; |
| 274 | 277 |
| 275 return acc_obj_id_++; | 278 return acc_obj_id_++; |
| 276 } | 279 } |
| 277 | 280 |
| 278 } // namespace webkit_glue | 281 } // namespace webkit_glue |
| OLD | NEW |