From c93e8e4d0eec71053eaa21c0d5879dae3525a83c Mon Sep 17 00:00:00 2001 From: "aaronleventhal%moonset.net" Date: Fri, 18 Mar 2005 14:56:48 +0000 Subject: [PATCH] Bug 286687. Expose menu item keyboard accelerators in MSAA. r=timeless, sr=neil --- accessible/src/atk/Makefile.in | 1 + accessible/src/atk/nsXULMenuAccessibleWrap.h | 45 ++++++++++++ accessible/src/base/nsAccessibilityAtomList.h | 1 + .../src/base/nsAccessibilityService.cpp | 4 +- accessible/src/mac/Makefile.in | 1 + accessible/src/mac/nsXULMenuAccessibleWrap.h | 45 ++++++++++++ accessible/src/msaa/Makefile.in | 2 + .../src/msaa/nsXULMenuAccessibleWrap.cpp | 69 +++++++++++++++++++ accessible/src/msaa/nsXULMenuAccessibleWrap.h | 51 ++++++++++++++ accessible/src/other/Makefile.in | 1 + .../src/other/nsXULMenuAccessibleWrap.h | 45 ++++++++++++ 11 files changed, 263 insertions(+), 2 deletions(-) create mode 100755 accessible/src/atk/nsXULMenuAccessibleWrap.h create mode 100755 accessible/src/mac/nsXULMenuAccessibleWrap.h create mode 100755 accessible/src/msaa/nsXULMenuAccessibleWrap.cpp create mode 100755 accessible/src/msaa/nsXULMenuAccessibleWrap.h create mode 100755 accessible/src/other/nsXULMenuAccessibleWrap.h diff --git a/accessible/src/atk/Makefile.in b/accessible/src/atk/Makefile.in index c16ef353c461..b7326af5fdc9 100644 --- a/accessible/src/atk/Makefile.in +++ b/accessible/src/atk/Makefile.in @@ -98,6 +98,7 @@ EXPORTS = \ nsDocAccessibleWrap.h \ nsRootAccessibleWrap.h \ nsTextAccessibleWrap.h \ + nsXULMenuAccessibleWrap.h \ nsXULTabAccessibleWrap.h \ nsXULTreeAccessibleWrap.h \ nsAccessibleText.h \ diff --git a/accessible/src/atk/nsXULMenuAccessibleWrap.h b/accessible/src/atk/nsXULMenuAccessibleWrap.h new file mode 100755 index 000000000000..bff8e0b7969e --- /dev/null +++ b/accessible/src/atk/nsXULMenuAccessibleWrap.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is IBM Corporation + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Author: Aaron Leventhal (aleventh@us.ibm.com) + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef __nsXULMenuAccessibleWrap_h__ +#define __nsXULMenuAccessibleWrap_h__ + +#include "nsXULMenuAccessible.h" + +typedef class nsXULMenuitemAccessible nsXULMenuitemAccessibleWrap; + +#endif diff --git a/accessible/src/base/nsAccessibilityAtomList.h b/accessible/src/base/nsAccessibilityAtomList.h index 20d5b6d67db9..5436d9470adc 100755 --- a/accessible/src/base/nsAccessibilityAtomList.h +++ b/accessible/src/base/nsAccessibilityAtomList.h @@ -82,6 +82,7 @@ ACCESSIBILITY_ATOM(toolbaritem, "toolbaritem") ACCESSIBILITY_ATOM(ul, "ul") // Alphabetical list of attributes +ACCESSIBILITY_ATOM(acceltext, "acceltext") ACCESSIBILITY_ATOM(accesskey, "accesskey") ACCESSIBILITY_ATOM(control, "control") ACCESSIBILITY_ATOM(disabled, "disabled") diff --git a/accessible/src/base/nsAccessibilityService.cpp b/accessible/src/base/nsAccessibilityService.cpp index 92eee11b8c51..680c72efd5ba 100644 --- a/accessible/src/base/nsAccessibilityService.cpp +++ b/accessible/src/base/nsAccessibilityService.cpp @@ -79,7 +79,7 @@ #include "nsXULAlertAccessible.h" #include "nsXULColorPickerAccessible.h" #include "nsXULFormControlAccessible.h" -#include "nsXULMenuAccessible.h" +#include "nsXULMenuAccessibleWrap.h" #include "nsXULSelectAccessible.h" #include "nsXULTabAccessibleWrap.h" #include "nsXULTextAccessible.h" @@ -1178,7 +1178,7 @@ nsAccessibilityService::CreateXULMenuitemAccessible(nsIDOMNode *aNode, nsIAccess nsCOMPtr weakShell; GetShellFromNode(aNode, getter_AddRefs(weakShell)); - *_retval = new nsXULMenuitemAccessible(aNode, weakShell); + *_retval = new nsXULMenuitemAccessibleWrap(aNode, weakShell); if (! *_retval) return NS_ERROR_OUT_OF_MEMORY; diff --git a/accessible/src/mac/Makefile.in b/accessible/src/mac/Makefile.in index 71ed3ba5ae03..697bad9c66c1 100644 --- a/accessible/src/mac/Makefile.in +++ b/accessible/src/mac/Makefile.in @@ -71,6 +71,7 @@ EXPORTS = \ nsAccessibleWrap.h \ nsDocAccessibleWrap.h \ nsRootAccessibleWrap.h \ + nsXULMenuAccessibleWrap.h \ nsXULTabAccessibleWrap.h \ nsXULTreeAccessibleWrap.h \ $(NULL) diff --git a/accessible/src/mac/nsXULMenuAccessibleWrap.h b/accessible/src/mac/nsXULMenuAccessibleWrap.h new file mode 100755 index 000000000000..bff8e0b7969e --- /dev/null +++ b/accessible/src/mac/nsXULMenuAccessibleWrap.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is IBM Corporation + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Author: Aaron Leventhal (aleventh@us.ibm.com) + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef __nsXULMenuAccessibleWrap_h__ +#define __nsXULMenuAccessibleWrap_h__ + +#include "nsXULMenuAccessible.h" + +typedef class nsXULMenuitemAccessible nsXULMenuitemAccessibleWrap; + +#endif diff --git a/accessible/src/msaa/Makefile.in b/accessible/src/msaa/Makefile.in index 9187b2c7de1d..0b057900cbb0 100644 --- a/accessible/src/msaa/Makefile.in +++ b/accessible/src/msaa/Makefile.in @@ -73,6 +73,7 @@ CPPSRCS = \ nsDocAccessibleWrap.cpp \ nsRootAccessibleWrap.cpp \ nsHTMLWin32ObjectAccessible.cpp \ + nsXULMenuAccessibleWrap.cpp \ nsXULTabAccessibleWrap.cpp \ nsXULTreeAccessibleWrap.cpp \ $(NULL) @@ -84,6 +85,7 @@ EXPORTS = \ nsDocAccessibleWrap.h \ nsRootAccessibleWrap.h \ nsHTMLWin32ObjectAccessible.h \ + nsXULMenuAccessibleWrap.h \ nsXULTabAccessibleWrap.h \ nsXULTreeAccessibleWrap.h \ $(NULL) diff --git a/accessible/src/msaa/nsXULMenuAccessibleWrap.cpp b/accessible/src/msaa/nsXULMenuAccessibleWrap.cpp new file mode 100755 index 000000000000..09ea45db8bc0 --- /dev/null +++ b/accessible/src/msaa/nsXULMenuAccessibleWrap.cpp @@ -0,0 +1,69 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is IBM Corporation + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Author: Aaron Leventhal (aleventh@us.ibm.com) + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#include "nsXULMenuAccessibleWrap.h" +#include "nsAccessibilityAtoms.h" +#include "nsINameSpaceManager.h" + +// -------------------------------------------------------- +// nsXULMenuAccessibleWrap Accessible +// -------------------------------------------------------- + +nsXULMenuitemAccessibleWrap::nsXULMenuitemAccessibleWrap(nsIDOMNode *aDOMNode, + nsIWeakReference *aShell): +nsXULMenuitemAccessible(aDOMNode, aShell) +{ +} + +NS_IMETHODIMP nsXULMenuitemAccessibleWrap::GetName(nsAString& aName) +{ + nsresult rv = nsXULMenuitemAccessible::GetName(aName); + if (NS_FAILED(rv)) { + return rv; + } + nsCOMPtr content(do_QueryInterface(mDOMNode)); + NS_ASSERTION(content, "Should not have gotten past nsXULMenuitemAccessible::GetName"); + + nsAutoString accel; + rv = content->GetAttr(kNameSpaceID_None, + nsAccessibilityAtoms::acceltext, accel); + if (rv == NS_CONTENT_ATTR_HAS_VALUE) { + aName += NS_LITERAL_STRING("\t") + accel; + } + + return NS_OK; +} diff --git a/accessible/src/msaa/nsXULMenuAccessibleWrap.h b/accessible/src/msaa/nsXULMenuAccessibleWrap.h new file mode 100755 index 000000000000..3a6caedd9eba --- /dev/null +++ b/accessible/src/msaa/nsXULMenuAccessibleWrap.h @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is IBM Corporation + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Author: Aaron Leventhal (aleventh@us.ibm.com) + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef __nsXULMenuAccessibleWrap_h__ +#define __nsXULMenuAccessibleWrap_h__ + +#include "nsXULMenuAccessible.h" + +class nsXULMenuitemAccessibleWrap : public nsXULMenuitemAccessible +{ +public: + nsXULMenuitemAccessibleWrap(nsIDOMNode *aDOMNode, nsIWeakReference *aShell); + virtual ~nsXULMenuitemAccessibleWrap() {} + NS_IMETHOD GetName(nsAString& aName); +}; + +#endif diff --git a/accessible/src/other/Makefile.in b/accessible/src/other/Makefile.in index 68e5d75e6563..5a780e1fd931 100755 --- a/accessible/src/other/Makefile.in +++ b/accessible/src/other/Makefile.in @@ -79,6 +79,7 @@ EXPORTS = \ nsAccessibleWrap.h \ nsDocAccessibleWrap.h \ nsRootAccessibleWrap.h \ + nsXULMenuAccessibleWrap.h \ nsXULTabAccessibleWrap.h \ nsXULTreeAccessibleWrap.h \ $(NULL) diff --git a/accessible/src/other/nsXULMenuAccessibleWrap.h b/accessible/src/other/nsXULMenuAccessibleWrap.h new file mode 100755 index 000000000000..bff8e0b7969e --- /dev/null +++ b/accessible/src/other/nsXULMenuAccessibleWrap.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is IBM Corporation + * Portions created by the Initial Developer are Copyright (C) 2005 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Author: Aaron Leventhal (aleventh@us.ibm.com) + * + * Alternatively, the contents of this file may be used under the terms of + * either of the GNU General Public License Version 2 or later (the "GPL"), + * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef __nsXULMenuAccessibleWrap_h__ +#define __nsXULMenuAccessibleWrap_h__ + +#include "nsXULMenuAccessible.h" + +typedef class nsXULMenuitemAccessible nsXULMenuitemAccessibleWrap; + +#endif