blob: b985b72497c085f2e9146ce8c187dc3596837190 [file] [log] [blame]
// Copyright 2016 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.
#ifndef CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_EVENT_H_
#define CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_EVENT_H_
#include <string>
#include "content/browser/accessibility/browser_accessibility.h"
#include "content/common/content_export.h"
#include "ui/accessibility/ax_enums.h"
namespace content {
class BrowserAccessibility;
class CONTENT_EXPORT BrowserAccessibilityEvent {
public:
enum Source {
FromBlink,
FromChildFrameLoading,
FromFindInPageResult,
FromRenderFrameHost,
FromScroll,
FromTreeChange,
FromWindowFocusChange,
FromPendingLoadComplete,
};
enum Result {
Sent,
NotNeededOnThisPlatform,
DiscardedBecauseUserNavigatingAway,
DiscardedBecauseLiveRegionBusy,
FailedBecauseNoWindow,
FailedBecauseNoFocus,
FailedBecauseFrameIsDetached,
};
// Returns true if the given result indicates that sending the event failed.
// Returns false if the event was sent, or if it was not needed (which is
// not considered failure).
static bool FailedToSend(Result result);
static BrowserAccessibilityEvent* Create(Source source,
ui::AXEvent event_type,
const BrowserAccessibility* target);
// Construct a new accessibility event that should be sent via a
// platform-specific notification.
BrowserAccessibilityEvent(Source source,
ui::AXEvent event_type,
const BrowserAccessibility* target);
virtual ~BrowserAccessibilityEvent();
// Synchronously try to send the native accessibility event notification
// and return a result indicating the outcome. This deletes the event.
virtual Result Fire();
Source source() { return source_; }
ui::AXEvent event_type() { return event_type_; }
const BrowserAccessibility* target() { return target_; }
void set_target(const BrowserAccessibility* target) { target_ = target; }
void set_original_target(BrowserAccessibility* target) {
original_target_ = target;
}
protected:
virtual std::string GetEventNameStr();
void VerboseLog(Result result);
private:
Source source_;
ui::AXEvent event_type_;
const BrowserAccessibility* target_;
const BrowserAccessibility* original_target_;
private:
DISALLOW_COPY_AND_ASSIGN(BrowserAccessibilityEvent);
};
} // namespace content
#endif // CONTENT_BROWSER_ACCESSIBILITY_BROWSER_ACCESSIBILITY_EVENT_H_