diff -r 000000000000 -r 6474c204b198 widget/windows/winrt/UIAAccessibilityBridge.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widget/windows/winrt/UIAAccessibilityBridge.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,55 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#if defined(ACCESSIBILITY) + +#include "UIAAccessibilityBridge.h" +#include "MetroUtils.h" + +#include + +#include "nsIAccessibleEvent.h" +#include "nsIAccessibleEditableText.h" +#include "nsIPersistentProperties2.h" + +// generated +#include "UIABridge.h" + +#include + +using namespace mozilla::a11y; + +namespace mozilla { +namespace widget { +namespace winrt { + +using namespace Microsoft::WRL; + +NS_IMPL_ISUPPORTS(AccessibilityBridge, nsIObserver) + +nsresult +AccessibilityBridge::Observe(nsISupports *aSubject, const char *aTopic, const char16_t *aData) +{ + nsCOMPtr ev = do_QueryInterface(aSubject); + if (!ev) { + return NS_OK; + } + + uint32_t eventType = 0; + ev->GetEventType(&eventType); + if (eventType == nsIAccessibleEvent::EVENT_FOCUS) { + Microsoft::WRL::ComPtr bridgePtr; + mBridge.As(&bridgePtr); + if (bridgePtr) { + bridgePtr->FocusChangeEvent(); + } + } + + return NS_OK; +} + +} } } + +#endif // ACCESSIBILITY