[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.20-204-g221d8e8

alice.liu at apple.com alice.liu at apple.com
Wed Feb 10 22:14:55 UTC 2010


The following commit has been merged in the webkit-1.1 branch:
commit ce7ab653f535340a22f02bb91f98027dc97dc391
Author: alice.liu at apple.com <alice.liu at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Feb 4 23:29:19 2010 +0000

    https://bugs.webkit.org/show_bug.cgi?id=34612 " MSAA: accSelect returns error
    codes for most elements that arent listbox or menupopup related"
    <rdar://problem/7436861>
    
    Reviewed by Jon Honeycutt.
    
    * AccessibleBase.cpp:
    (AccessibleBase::accSelect):
    - Stop sending E_INVALIDARG for elements that request TAKE_SELECTION that
      aren't beneath listboxes or menupopups.  This was too restrictive since
      any element can be selectable.
    - Correct the misinterpretation of MSDN's stipulation of situations involving
      adding, removing, and extending selection on single-select elements
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@54376 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/win/AccessibleBase.cpp b/WebKit/win/AccessibleBase.cpp
index 0704771..3e8306f 100644
--- a/WebKit/win/AccessibleBase.cpp
+++ b/WebKit/win/AccessibleBase.cpp
@@ -382,10 +382,10 @@ HRESULT STDMETHODCALLTYPE AccessibleBase::get_accKeyboardShortcut(VARIANT vChild
 HRESULT STDMETHODCALLTYPE AccessibleBase::accSelect(long selectionFlags, VARIANT vChild)
 {
     // According to MSDN, these combinations are invalid.
-    if (((selectionFlags & (SELFLAG_ADDSELECTION | SELFLAG_REMOVESELECTION)) == (SELFLAG_ADDSELECTION | SELFLAG_REMOVESELECTION)) ||
-        ((selectionFlags & (SELFLAG_ADDSELECTION | SELFLAG_TAKESELECTION)) == (SELFLAG_ADDSELECTION | SELFLAG_TAKESELECTION)) ||
-        ((selectionFlags & (SELFLAG_REMOVESELECTION | SELFLAG_TAKESELECTION)) == (SELFLAG_REMOVESELECTION | SELFLAG_TAKESELECTION)) ||
-        ((selectionFlags & (SELFLAG_EXTENDSELECTION | SELFLAG_TAKESELECTION)) == (SELFLAG_REMOVESELECTION | SELFLAG_TAKESELECTION)))
+    if (((selectionFlags & (SELFLAG_ADDSELECTION | SELFLAG_REMOVESELECTION)) == (SELFLAG_ADDSELECTION | SELFLAG_REMOVESELECTION))
+        || ((selectionFlags & (SELFLAG_ADDSELECTION | SELFLAG_TAKESELECTION)) == (SELFLAG_ADDSELECTION | SELFLAG_TAKESELECTION))
+        || ((selectionFlags & (SELFLAG_REMOVESELECTION | SELFLAG_TAKESELECTION)) == (SELFLAG_REMOVESELECTION | SELFLAG_TAKESELECTION))
+        || ((selectionFlags & (SELFLAG_EXTENDSELECTION | SELFLAG_TAKESELECTION)) == (SELFLAG_EXTENDSELECTION | SELFLAG_TAKESELECTION)))
         return E_INVALIDARG;
 
     AccessibilityObject* childObject;
@@ -406,15 +406,19 @@ HRESULT STDMETHODCALLTYPE AccessibleBase::accSelect(long selectionFlags, VARIANT
             Vector<RefPtr<AccessibilityObject> > selectedChildren(1);
             selectedChildren[0] = childObject;
             static_cast<AccessibilityListBox*>(parentObject)->setSelectedChildren(selectedChildren);
-        } else if (parentObject->isMenuListPopup())
+        } else { // any element may be selectable by virtue of it having the aria-selected property
+            ASSERT(!parentObject->isMultiSelectable());
             childObject->setSelected(true);
-        else
-            return E_INVALIDARG;
+        }
     }
 
-    // MSDN says that ADD, REMOVE, and EXTENDSELECTION are invalid for
+    // MSDN says that ADD, REMOVE, and EXTENDSELECTION with no other flags are invalid for
     // single-select.
-    if (!parentObject->isMultiSelectable())
+    const long allSELFLAGs = SELFLAG_TAKEFOCUS | SELFLAG_TAKESELECTION | SELFLAG_EXTENDSELECTION | SELFLAG_ADDSELECTION | SELFLAG_REMOVESELECTION;
+    if (!parentObject->isMultiSelectable()
+        && (((selectionFlags & allSELFLAGs) == SELFLAG_ADDSELECTION)
+        || ((selectionFlags & allSELFLAGs) == SELFLAG_REMOVESELECTION)
+        || ((selectionFlags & allSELFLAGs) == SELFLAG_EXTENDSELECTION)))
         return E_INVALIDARG;
 
     if (selectionFlags & SELFLAG_ADDSELECTION)
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index d9eeff2..da1ab05 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,19 @@
+2010-02-04  Alice Liu  <alice.liu at apple.com>
+
+        Reviewed by Jon Honeycutt.
+
+        https://bugs.webkit.org/show_bug.cgi?id=34612 " MSAA: accSelect returns error 
+        codes for most elements that arent listbox or menupopup related"
+        <rdar://problem/7436861>
+
+        * AccessibleBase.cpp:
+        (AccessibleBase::accSelect):
+        - Stop sending E_INVALIDARG for elements that request TAKE_SELECTION that 
+          aren't beneath listboxes or menupopups.  This was too restrictive since 
+          any element can be selectable.
+        - Correct the misinterpretation of MSDN's stipulation of situations involving 
+          adding, removing, and extending selection on single-select elements
+
 2010-02-04  Brent Fulgham  <bfulgham at webkit.org>
 
         Reviewed by Adam Roben.

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list