| Index: chrome/browser/browser_accessibility.cc
|
| ===================================================================
|
| --- chrome/browser/browser_accessibility.cc (revision 39785)
|
| +++ chrome/browser/browser_accessibility.cc (working copy)
|
| @@ -29,7 +29,7 @@
|
| HRESULT BrowserAccessibility::accDoDefaultAction(VARIANT var_id) {
|
| if (!instance_active()) {
|
| // Instance no longer active, fail gracefully.
|
| - // TODO(klink): Once we have MSAA events, change these fails to having
|
| + // TODO(ctguil): Once we have MSAA events, change these fails to having
|
| // BrowserAccessibilityManager firing the right event.
|
| return E_FAIL;
|
| }
|
| @@ -42,7 +42,7 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code)
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE)
|
| return S_FALSE;
|
|
|
| return S_OK;
|
| @@ -69,11 +69,11 @@
|
| ::ScreenToClient(parent_hwnd_, &p);
|
|
|
| if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_HITTEST,
|
| - EmptyVariant(), p.x, p.y)) {
|
| + ChildSelfVariant(), p.x, p.y)) {
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // The point is outside of the object's boundaries.
|
| child->vt = VT_EMPTY;
|
| return S_FALSE;
|
| @@ -156,7 +156,7 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // No screen element was found in the specified direction.
|
| end->vt = VT_EMPTY;
|
| return S_FALSE;
|
| @@ -198,7 +198,8 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + // TODO(ctguil): Figure out when the return code would be false
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // When at a leaf, children are handled by the parent object.
|
| *disp_child = NULL;
|
| return S_FALSE;
|
| @@ -226,7 +227,7 @@
|
| return E_INVALIDARG;
|
|
|
| if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_CHILDCOUNT,
|
| - EmptyVariant(), NULL, NULL)) {
|
| + ChildSelfVariant(), NULL, NULL)) {
|
| return E_FAIL;
|
| }
|
|
|
| @@ -249,7 +250,7 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // No string found.
|
| return S_FALSE;
|
| }
|
| @@ -275,7 +276,7 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // No string found.
|
| return S_FALSE;
|
| }
|
| @@ -296,11 +297,11 @@
|
| return E_INVALIDARG;
|
|
|
| if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETFOCUSEDCHILD,
|
| - EmptyVariant(), NULL, NULL)) {
|
| + ChildSelfVariant(), NULL, NULL)) {
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // The window that contains this object is not the active window.
|
| focus_child->vt = VT_EMPTY;
|
| return S_FALSE;
|
| @@ -337,7 +338,8 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code || response().output_string.empty()) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE ||
|
| + response().output_string.empty()) {
|
| // No string found.
|
| return S_FALSE;
|
| }
|
| @@ -363,7 +365,7 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // No string found.
|
| return S_FALSE;
|
| }
|
| @@ -388,7 +390,7 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // No string found.
|
| return S_FALSE;
|
| }
|
| @@ -425,11 +427,11 @@
|
| }
|
|
|
| if (!RequestAccessibilityInfo(WebAccessibility::FUNCTION_GETPARENT,
|
| - EmptyVariant(), NULL, NULL)) {
|
| + ChildSelfVariant(), NULL, NULL)) {
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE) {
|
| // No parent exists for this object.
|
| return S_FALSE;
|
| }
|
| @@ -499,7 +501,8 @@
|
| return E_FAIL;
|
| }
|
|
|
| - if (!response().return_code || response().output_string.empty()) {
|
| + if (response().return_code == WebAccessibility::RETURNCODE_FALSE ||
|
| + response().output_string.empty()) {
|
| // No string found.
|
| return S_FALSE;
|
| }
|
| @@ -540,17 +543,20 @@
|
| bool BrowserAccessibility::RequestAccessibilityInfo(int iaccessible_func_id,
|
| VARIANT var_id, LONG input1,
|
| LONG input2) {
|
| + DCHECK(V_VT(&var_id) == VT_I4);
|
| +
|
| // Create and populate IPC message structure, for retrieval of accessibility
|
| // information from the renderer.
|
| WebAccessibility::InParams in_params;
|
| in_params.object_id = iaccessible_id_;
|
| in_params.function_id = iaccessible_func_id;
|
| - in_params.child_id = var_id.lVal;
|
| + in_params.child_id = V_I4(&var_id);
|
| in_params.input_long1 = input1;
|
| in_params.input_long2 = input2;
|
|
|
| return BrowserAccessibilityManager::GetInstance()->
|
| - RequestAccessibilityInfo(&in_params, routing_id_, process_id_);
|
| + RequestAccessibilityInfo(&in_params, routing_id_, process_id_) &&
|
| + response().return_code != WebAccessibility::RETURNCODE_FAIL;
|
| }
|
|
|
| const WebAccessibility::OutParams& BrowserAccessibility::response() {
|
|
|