diff options
author | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-21 20:01:21 +0000 |
---|---|---|
committer | nsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-21 20:01:21 +0000 |
commit | 294b014b3743b8a359d423ab238d2ea2872cf629 (patch) | |
tree | d379c28d239d61dfd328625f6cd3f981647ad009 /chrome/browser/accessibility | |
parent | 0a1b20fdf37d5c27a1a8bf6d2348a4778df5bad6 (diff) | |
download | chromium_src-294b014b3743b8a359d423ab238d2ea2872cf629.zip chromium_src-294b014b3743b8a359d423ab238d2ea2872cf629.tar.gz chromium_src-294b014b3743b8a359d423ab238d2ea2872cf629.tar.bz2 |
Revert 66893 - Add tests for Mac side notifications.
TestInitialPageNotifications is failing.
BUG=61961
TEST=none.
Review URL: http://codereview.chromium.org/4757004
TBR=dtseng@chromium.org
Review URL: http://codereview.chromium.org/5238004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66918 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/accessibility')
-rw-r--r-- | chrome/browser/accessibility/accessibility_mac_uitest.mm | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/chrome/browser/accessibility/accessibility_mac_uitest.mm b/chrome/browser/accessibility/accessibility_mac_uitest.mm deleted file mode 100644 index 45cdd11..0000000 --- a/chrome/browser/accessibility/accessibility_mac_uitest.mm +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import <Cocoa/Cocoa.h> - -#include "base/scoped_nsobject.h" -#include "chrome/common/chrome_switches.h" -#include "chrome/test/ui/ui_test.h" - -// The following tests exercise the Chrome Mac accessibility implementation -// similarly to the way in which VoiceOver would. -// We achieve this by utilizing the same carbon API (HIServices) as do -// other assistive technologies. -// Note that the tests must be UITests since these API's only work if not -// called within the same process begin examined. -class AccessibilityMacUITest : public UITest { - public: - AccessibilityMacUITest() { - // TODO(dtseng): fake the VoiceOver defaults value? - launch_arguments_.AppendSwitch(switches::kForceRendererAccessibility); - } - - virtual void SetUp() { - UITest::SetUp(); - SetupObservedNotifications(); - Initialize(); - } - - // Called to insert an event for validation. - // This is a order sensitive expectation. - void AddExpectedEvent(NSString* notificationName) { - [AccessibilityMacUITest::expectedEvents addObject:notificationName]; - } - - // Assert that there are no remaining expected events. - // CFRunLoop necessary to receive AX callbacks. - // Assumes that there is at least one expected event. - // The runloop stops only if we receive all expected notifications. - void WaitAndAssertAllEventsObserved() { - ASSERT_GE([expectedEvents count], 1U); - CFRunLoopRunInMode( - kCFRunLoopDefaultMode, action_max_timeout_ms()/1000, false); - ASSERT_EQ(0U, [AccessibilityMacUITest::expectedEvents count]); - } - - // The Callback handler added to each AXUIElement. - static void EventReceiver( - AXObserverRef observerRef, - AXUIElementRef element, - CFStringRef notificationName, - void *refcon) { - if ([[AccessibilityMacUITest::expectedEvents objectAtIndex:0] - isEqualToString:(NSString*)notificationName]) { - [AccessibilityMacUITest::expectedEvents removeObjectAtIndex:0]; - } - - if ([AccessibilityMacUITest::expectedEvents count] == 0) { - CFRunLoopStop(CFRunLoopGetCurrent()); - } - - // TODO(dtseng): currently refreshing on all notifications; scope later. - AccessibilityMacUITest::SetAllObserversOnDescendants( - element, observerRef); - } - - private: - // Perform AX setup. - void Initialize() { - AccessibilityMacUITest::expectedEvents.reset([[NSMutableArray alloc] init]); - - // Construct the Chrome AXUIElementRef. - ASSERT_NE(-1, browser_process_id()); - AXUIElementRef browserUiElement = - AXUIElementCreateApplication(browser_process_id()); - ASSERT_TRUE(browserUiElement); - - // Setup our callbacks. - AXObserverRef observerRef; - ASSERT_EQ(kAXErrorSuccess, - AXObserverCreate(browser_process_id(), - AccessibilityMacUITest::EventReceiver, - &observerRef)); - SetAllObserversOnDescendants(browserUiElement, observerRef); - - // Add the observer to the current message loop. - CFRunLoopAddSource( - [[NSRunLoop currentRunLoop] getCFRunLoop], - AXObserverGetRunLoopSource(observerRef), - kCFRunLoopDefaultMode); - } - - // Taken largely from AXNotificationConstants.h - // (substituted NSAccessibility* to avoid casting). - static void SetupObservedNotifications() { - AccessibilityMacUITest::observedNotifications.reset( - [[NSArray alloc] initWithObjects: - - // focus notifications - NSAccessibilityMainWindowChangedNotification, - NSAccessibilityFocusedWindowChangedNotification, - NSAccessibilityFocusedUIElementChangedNotification, - - // application notifications - NSAccessibilityApplicationActivatedNotification, - NSAccessibilityApplicationDeactivatedNotification, - NSAccessibilityApplicationHiddenNotification, - NSAccessibilityApplicationShownNotification, - - // window notifications - NSAccessibilityWindowCreatedNotification, - NSAccessibilityWindowMovedNotification, - NSAccessibilityWindowResizedNotification, - NSAccessibilityWindowMiniaturizedNotification, - NSAccessibilityWindowDeminiaturizedNotification, - - // new drawer, sheet, and help tag notifications - NSAccessibilityDrawerCreatedNotification, - NSAccessibilitySheetCreatedNotification, - NSAccessibilityHelpTagCreatedNotification, - - // element notifications - NSAccessibilityValueChangedNotification, - NSAccessibilityUIElementDestroyedNotification, - - // menu notifications - (NSString*)kAXMenuOpenedNotification, - (NSString*)kAXMenuClosedNotification, - (NSString*)kAXMenuItemSelectedNotification, - - // table/outline notifications - NSAccessibilityRowCountChangedNotification, - - // other notifications - NSAccessibilitySelectedChildrenChangedNotification, - NSAccessibilityResizedNotification, - NSAccessibilityMovedNotification, - NSAccessibilityCreatedNotification, - NSAccessibilitySelectedRowsChangedNotification, - NSAccessibilitySelectedColumnsChangedNotification, - NSAccessibilitySelectedTextChangedNotification, - NSAccessibilityTitleChangedNotification, - - // Webkit specific notifications. - @"AXLoadComplete", - nil]); - } - - // Observe AX notifications on element and all descendants. - static void SetAllObserversOnDescendants( - AXUIElementRef element, - AXObserverRef observerRef) { - SetAllObservers(element, observerRef); - CFTypeRef childrenRef; - if ((AXUIElementCopyAttributeValue( - element, kAXChildrenAttribute, &childrenRef)) == kAXErrorSuccess) { - NSArray* children = (NSArray*)childrenRef; - for (uint32 i = 0; i < [children count]; ++i) { - SetAllObserversOnDescendants( - (AXUIElementRef)[children objectAtIndex:i], observerRef); - } - } - } - - // Add observers for all notifications we know about. - static void SetAllObservers( - AXUIElementRef element, - AXObserverRef observerRef) { - for (NSString* notification in - AccessibilityMacUITest::observedNotifications.get()) { - AXObserverAddNotification( - observerRef, element, (CFStringRef)notification, nil); - } - } - - // Used to keep track of events received during the lifetime of the tests. - static scoped_nsobject<NSMutableArray> expectedEvents; - // NSString collection of all AX notifications. - static scoped_nsobject<NSArray> observedNotifications; -}; - -scoped_nsobject<NSMutableArray> AccessibilityMacUITest::expectedEvents; -scoped_nsobject<NSArray> AccessibilityMacUITest::observedNotifications; - -TEST_F(AccessibilityMacUITest, TestInitialPageNotifications) { - // Test for initial page load. - AddExpectedEvent(@"AXLoadComplete"); - WaitAndAssertAllEventsObserved(); - - // Browse to a new page. - GURL tree_url( - "data:text/html,<html><head><title>Accessibility Mac Test</title></head>" - "<body><input type='button' value='push' /><input type='checkbox' />" - "</body></html>"); - NavigateToURLAsync(tree_url); - - // Test for navigation. - AddExpectedEvent(@"AXLoadComplete"); - - // Check all the expected Mac notifications. - WaitAndAssertAllEventsObserved(); -} |