widget/windows/winrt/UIABridgePrivate.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* This Source Code Form is subject to the terms of the Mozilla Public
     3  * License, v. 2.0. If a copy of the MPL was not distributed with this
     4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     6 #pragma once
     8 #include <windows.system.h>
     9 #include <windows.ui.core.h>
    10 #include <UIAutomation.h>
    11 #include <UIAutomationCore.h>
    12 #include <UIAutomationCoreApi.h>
    14 #include "mozwrlbase.h"
    16 #include "nsCOMPtr.h"
    17 #include "mozilla/a11y/Accessible.h"
    18 #include "UIAAccessibilityBridge.h"
    20 // generated
    21 #include "UIABridge.h"
    23 namespace mozilla {
    24 namespace widget {
    25 namespace winrt {
    27 // represents the root window to UIA
    28 [uuid("D3EDD951-0715-4501-A8E5-25D97EF35D5A")]
    29 class UIABridge : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags
    30   <Microsoft::WRL::RuntimeClassType::WinRtClassicComMix>,
    31   IUIABridge,
    32   IUIAElement,
    33   IRawElementProviderSimple,
    34   IRawElementProviderFragment,
    35   IRawElementProviderFragmentRoot>
    36 {
    37   typedef ABI::Windows::UI::Core::ICoreWindow ICoreWindow;
    39   InspectableClass(L"IUIABridge", BaseTrust);
    41 public:
    42   UIABridge() {}
    44   // IUIABridge
    45   IFACEMETHODIMP Init(IInspectable* view, IInspectable* window, LONG_PTR inner);
    46   IFACEMETHODIMP Disconnect();
    47   IFACEMETHODIMP FocusChangeEvent();
    49   // IUIAElement
    50   IFACEMETHODIMP SetFocusInternal(LONG_PTR aAccessible);
    51   IFACEMETHODIMP ClearFocus();
    53   // IRawElementProviderFragmentRoot
    54   IFACEMETHODIMP ElementProviderFromPoint(double x, double y, IRawElementProviderFragment ** retVal);
    55   IFACEMETHODIMP GetFocus(IRawElementProviderFragment ** retVal);
    57   // IRawElementProviderFragment
    58   IFACEMETHODIMP Navigate(NavigateDirection direction, IRawElementProviderFragment ** retVal);
    59   IFACEMETHODIMP GetRuntimeId(SAFEARRAY ** retVal);
    60   IFACEMETHODIMP get_BoundingRectangle(UiaRect * retVal);
    61   IFACEMETHODIMP GetEmbeddedFragmentRoots(SAFEARRAY ** retVal);
    62   IFACEMETHODIMP SetFocus();
    63   IFACEMETHODIMP get_FragmentRoot(IRawElementProviderFragmentRoot * * retVal);
    65   // IRawElementProviderSimple
    66   IFACEMETHODIMP get_ProviderOptions(ProviderOptions * retVal);
    67   IFACEMETHODIMP GetPatternProvider(PATTERNID iid, IUnknown * * retVal);
    68   IFACEMETHODIMP GetPropertyValue(PROPERTYID idProp, VARIANT * retVal );
    69   IFACEMETHODIMP get_HostRawElementProvider(IRawElementProviderSimple ** retVal);
    71 protected:
    72   bool Connected();
    74 private:
    75   Microsoft::WRL::ComPtr<ICoreWindow> mWindow;
    76 #if defined(ACCESSIBILITY)
    77   nsRefPtr<AccessibilityBridge> mAccBridge;
    78   nsRefPtr<mozilla::a11y::Accessible> mAccessible;
    79 #endif
    80 };
    82 [uuid("4438135F-F624-43DE-A417-275CE7A1A0CD")]
    83 class UIATextElement : public Microsoft::WRL::RuntimeClass<Microsoft::WRL::RuntimeClassFlags
    84   <Microsoft::WRL::RuntimeClassType::WinRtClassicComMix>,
    85   IUIAElement,
    86   IRawElementProviderSimple,
    87   IRawElementProviderFragment,
    88   ITextProvider,
    89   IValueProvider >
    90 {
    91   typedef ABI::Windows::Foundation::Rect Rect;
    93   InspectableClass(L"UIATextElement", BaseTrust);
    95 public:
    96   UIATextElement() {}
    98   // IUIAElement
    99   IFACEMETHODIMP SetFocusInternal(LONG_PTR aAccessible);
   100   IFACEMETHODIMP ClearFocus();
   101   IFACEMETHODIMP FocusChangeEvent();
   103   // IRawElementProviderFragment
   104   IFACEMETHODIMP Navigate(NavigateDirection direction, IRawElementProviderFragment ** retVal);
   105   IFACEMETHODIMP GetRuntimeId(SAFEARRAY ** retVal);
   106   IFACEMETHODIMP get_BoundingRectangle(UiaRect * retVal);
   107   IFACEMETHODIMP GetEmbeddedFragmentRoots(SAFEARRAY ** retVal);
   108   IFACEMETHODIMP SetFocus();
   109   IFACEMETHODIMP get_FragmentRoot(IRawElementProviderFragmentRoot * * retVal);
   111   // IRawElementProviderSimple
   112   IFACEMETHODIMP get_ProviderOptions(ProviderOptions * retVal);
   113   IFACEMETHODIMP GetPatternProvider(PATTERNID iid, IUnknown * * retVal);
   114   IFACEMETHODIMP GetPropertyValue(PROPERTYID idProp, VARIANT * retVal );
   115   IFACEMETHODIMP get_HostRawElementProvider(IRawElementProviderSimple ** retVal);
   117   // ITextProvider
   118   IFACEMETHODIMP GetSelection(SAFEARRAY * *pRetVal);
   119   IFACEMETHODIMP GetVisibleRanges(SAFEARRAY * *pRetVal);
   120   IFACEMETHODIMP RangeFromChild(IRawElementProviderSimple *childElement, ITextRangeProvider **pRetVal);
   121   IFACEMETHODIMP RangeFromPoint(UiaPoint point, ITextRangeProvider **pRetVal);
   122   IFACEMETHODIMP get_DocumentRange(ITextRangeProvider **pRetVal);
   123   IFACEMETHODIMP get_SupportedTextSelection(SupportedTextSelection *pRetVal);
   125   // IValueProvider
   126   IFACEMETHODIMP SetValue(LPCWSTR val);
   127   IFACEMETHODIMP get_Value(BSTR *pRetVal);
   128   IFACEMETHODIMP get_IsReadOnly(BOOL *pRetVal);
   130   void SetIndexID(int id) {
   131     mIndexID = id;
   132   }
   134 private:
   135   int mIndexID;
   136   nsCOMPtr<nsIAccessible> mAccessItem;
   137 };
   139 } } }

mercurial