1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#ifndef CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_COCOA_H_
6731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#define CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_COCOA_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#import <Cocoa/Cocoa.h>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#import "base/memory/scoped_nsobject.h"
12731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#import "chrome/browser/accessibility/browser_accessibility_delegate_mac.h"
13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/accessibility/browser_accessibility.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// BrowserAccessibilityCocoa is a cocoa wrapper around the BrowserAccessibility
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// object. The renderer converts webkit's accessibility tree into a
173345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// WebAccessibility tree and passes it to the browser process over IPC.
183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// This class converts it into a format Cocoa can query.
19513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Inheriting from NSView rather than NSObject as clients cannot add
20513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// observers to pure NSObject derived classes.
21513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch@interface BrowserAccessibilityCocoa : NSView {
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch @private
23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  BrowserAccessibility* browserAccessibility_;
24513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  scoped_nsobject<NSMutableArray> children_;
25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  id<BrowserAccessibilityDelegateCocoa> delegate_;
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// This creates a cocoa browser accessibility object around
29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// the cross platform BrowserAccessibility object.  The delegate is
303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// used to communicate with the host renderer.  None of these
313345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// parameters can be null.
32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick- (id)initWithObject:(BrowserAccessibility*)accessibility
33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick            delegate:(id<BrowserAccessibilityDelegateCocoa>)delegate;
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
35513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Invalidate children for a non-ignored ancestor (including self).
36513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch- (void)childrenChanged;
37513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Children is an array of BrowserAccessibility objects, representing
393345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// the accessibility children of this object.
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@property(nonatomic, readonly) NSArray* children;
413345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// isIgnored returns whether or not the accessibility object
423345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// should be ignored by the accessibility hierarchy.
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@property(nonatomic, readonly, getter=isIgnored) BOOL ignored;
443345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// The origin of this object in the page's document.
453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// This is relative to webkit's top-left origin, not Cocoa's
463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// bottom-left origin.
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@property(nonatomic, readonly) NSPoint origin;
483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// A string indicating the role of this object as far as accessibility
493345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// is concerned.
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@property(nonatomic, readonly) NSString* role;
513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// The size of this object.
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@property(nonatomic, readonly) NSSize size;
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@end
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
56731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif // CHROME_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_COCOA_H_
57