Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(832)

Unified Diff: content/browser/accessibility/accessibility_event_recorder_win.cc

Issue 811213002: Revert of Add DumpAccessibilityEvents test framework. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@dump_acc_events_1
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/accessibility/accessibility_event_recorder_win.cc
diff --git a/content/browser/accessibility/accessibility_event_recorder_win.cc b/content/browser/accessibility/accessibility_event_recorder_win.cc
deleted file mode 100644
index aefaba6aa826706612917a01ac91c1eaa2d0d871..0000000000000000000000000000000000000000
--- a/content/browser/accessibility/accessibility_event_recorder_win.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2014 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.
-
-#include "content/browser/accessibility/accessibility_event_recorder.h"
-
-#include <oleacc.h>
-
-#include <string>
-
-#include "base/strings/string_number_conversions.h"
-#include "base/strings/string_util.h"
-#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
-#include "base/win/scoped_bstr.h"
-#include "base/win/scoped_comptr.h"
-#include "base/win/scoped_variant.h"
-#include "content/browser/accessibility/accessibility_tree_formatter_utils_win.h"
-#include "content/browser/accessibility/browser_accessibility_manager.h"
-#include "content/browser/accessibility/browser_accessibility_win.h"
-#include "third_party/iaccessible2/ia2_api_all.h"
-#include "ui/base/win/atl_module.h"
-
-namespace content {
-
-namespace {
-
-std::string RoleVariantToString(const base::win::ScopedVariant& role) {
- if (role.type() == VT_I4) {
- return base::UTF16ToUTF8(IAccessibleRoleToString(V_I4(&role)));
- } else if (role.type() == VT_BSTR) {
- return base::UTF16ToUTF8(
- base::string16(V_BSTR(&role), SysStringLen(V_BSTR(&role))));
- }
- return std::string();
-}
-
-HRESULT QueryIAccessible2(IAccessible* accessible, IAccessible2** accessible2) {
- base::win::ScopedComPtr<IServiceProvider> service_provider;
- HRESULT hr = accessible->QueryInterface(service_provider.Receive());
- return SUCCEEDED(hr) ?
- service_provider->QueryService(IID_IAccessible2, accessible2) : hr;
-}
-
-std::string BstrToUTF8(BSTR bstr) {
- base::string16 str16(bstr, SysStringLen(bstr));
- return base::UTF16ToUTF8(str16);
-}
-
-std::string AccessibilityEventToStringUTF8(int32 event_id) {
- return base::UTF16ToUTF8(AccessibilityEventToString(event_id));
-}
-
-} // namespace
-
-class AccessibilityEventRecorderWin : public AccessibilityEventRecorder {
- public:
- explicit AccessibilityEventRecorderWin(BrowserAccessibilityManager* manager);
- virtual ~AccessibilityEventRecorderWin();
-
- // Callback registered by SetWinEventHook. Just calls OnWinEventHook.
- static void CALLBACK WinEventHookThunk(
- HWINEVENTHOOK handle,
- DWORD event,
- HWND hwnd,
- LONG obj_id,
- LONG child_id,
- DWORD event_thread,
- DWORD event_time);
-
- private:
- // Called by the thunk registered by SetWinEventHook. Retrives accessibility
- // info about the node the event was fired on and appends a string to
- // the event log.
- void OnWinEventHook(HWINEVENTHOOK handle,
- DWORD event,
- HWND hwnd,
- LONG obj_id,
- LONG child_id,
- DWORD event_thread,
- DWORD event_time);
-
- HWINEVENTHOOK win_event_hook_handle_;
- static AccessibilityEventRecorderWin* instance_;
-};
-
-// static
-AccessibilityEventRecorderWin*
-AccessibilityEventRecorderWin::instance_ = nullptr;
-
-// static
-AccessibilityEventRecorder* AccessibilityEventRecorder::Create(
- BrowserAccessibilityManager* manager) {
- return new AccessibilityEventRecorderWin(manager);
-}
-
-// static
-void CALLBACK AccessibilityEventRecorderWin::WinEventHookThunk(
- HWINEVENTHOOK handle,
- DWORD event,
- HWND hwnd,
- LONG obj_id,
- LONG child_id,
- DWORD event_thread,
- DWORD event_time) {
- if (instance_) {
- instance_->OnWinEventHook(handle, event, hwnd, obj_id, child_id,
- event_thread, event_time);
- }
-}
-
-AccessibilityEventRecorderWin::AccessibilityEventRecorderWin(
- BrowserAccessibilityManager* manager)
- : AccessibilityEventRecorder(manager) {
- CHECK(!instance_) << "There can be only one instance of"
- << " WinAccessibilityEventMonitor at a time.";
- instance_ = this;
- win_event_hook_handle_ = SetWinEventHook(
- EVENT_MIN,
- EVENT_MAX,
- GetModuleHandle(NULL),
- &AccessibilityEventRecorderWin::WinEventHookThunk,
- GetCurrentProcessId(),
- 0, // Hook all threads
- WINEVENT_INCONTEXT);
-}
-
-AccessibilityEventRecorderWin::~AccessibilityEventRecorderWin() {
- UnhookWinEvent(win_event_hook_handle_);
- instance_ = NULL;
-}
-
-void AccessibilityEventRecorderWin::OnWinEventHook(
- HWINEVENTHOOK handle,
- DWORD event,
- HWND hwnd,
- LONG obj_id,
- LONG child_id,
- DWORD event_thread,
- DWORD event_time) {
- base::win::ScopedComPtr<IAccessible> browser_accessible;
- HRESULT hr = AccessibleObjectFromWindow(
- hwnd,
- obj_id,
- IID_IAccessible,
- reinterpret_cast<void**>(browser_accessible.Receive()));
- CHECK(SUCCEEDED(hr)) << "Failure accessing accessible object from hwnd "
- << hwnd << " obj_id=" << obj_id << " child_id="
- << child_id;
-
- base::win::ScopedVariant childid_variant(child_id);
- base::win::ScopedComPtr<IDispatch> dispatch;
- hr = browser_accessible->get_accChild(childid_variant, dispatch.Receive());
- CHECK(SUCCEEDED(hr));
- base::win::ScopedComPtr<IAccessible> iaccessible;
- dispatch.QueryInterface(iaccessible.Receive());
-
- base::win::ScopedVariant childid_self(CHILDID_SELF);
- base::win::ScopedVariant role;
- iaccessible->get_accRole(childid_self, role.Receive());
- base::win::ScopedBstr name_bstr;
- iaccessible->get_accName(childid_self, name_bstr.Receive());
- base::win::ScopedBstr value_bstr;
- iaccessible->get_accValue(childid_self, value_bstr.Receive());
-
- std::string log = base::StringPrintf(
- "%s on role=%s",
- AccessibilityEventToStringUTF8(event).c_str(),
- RoleVariantToString(role).c_str());
- if (name_bstr.Length() > 0)
- log += base::StringPrintf(" name=\"%s\"", BstrToUTF8(name_bstr).c_str());
- if (value_bstr.Length() > 0)
- log += base::StringPrintf(" value=\"%s\"", BstrToUTF8(value_bstr).c_str());
-
- event_logs_.push_back(log);
-}
-
-} // namespace content

Powered by Google App Engine
This is Rietveld 408576698