//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.System.idl";
import "Windows.UI.Core.idl";
import "Windows.Web.UI.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct Rect Rect;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace System
    {
        typedef enum VirtualKey VirtualKey;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Core
        {
            typedef enum CoreAcceleratorKeyEventType CoreAcceleratorKeyEventType;

            typedef struct CorePhysicalKeyStatus CorePhysicalKeyStatus;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace UI
        {
            interface IWebViewControl;

            interface IWebViewControl2;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace UI
        {
            namespace Interop
            {
                typedef enum WebViewControlAcceleratorKeyRoutingStage WebViewControlAcceleratorKeyRoutingStage;

                typedef enum WebViewControlMoveFocusReason WebViewControlMoveFocusReason;

                typedef enum WebViewControlProcessCapabilityState WebViewControlProcessCapabilityState;

                interface IWebViewControlAcceleratorKeyPressedEventArgs;

                interface IWebViewControlMoveFocusRequestedEventArgs;

                interface IWebViewControlProcess;

                interface IWebViewControlProcessFactory;

                interface IWebViewControlProcessOptions;

                interface IWebViewControlSite;

                interface IWebViewControlSite2;

                runtimeclass WebViewControl;

                runtimeclass WebViewControlAcceleratorKeyPressedEventArgs;

                runtimeclass WebViewControlMoveFocusRequestedEventArgs;

                runtimeclass WebViewControlProcess;

                runtimeclass WebViewControlProcessOptions;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Web
    {
        namespace UI
        {
            namespace Interop
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Web.UI.Interop.WebViewControl*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Web.UI.Interop.WebViewControl*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Web.UI.Interop.WebViewControl*>;

                    interface Windows.Foundation.IAsyncOperation<Windows.Web.UI.Interop.WebViewControl*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControl*, IInspectable*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControl*, Windows.Web.UI.Interop.WebViewControlAcceleratorKeyPressedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControl*, Windows.Web.UI.Interop.WebViewControlMoveFocusRequestedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControlProcess*, IInspectable*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Web
    {
        namespace UI
        {
            namespace Interop
            {
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                enum WebViewControlAcceleratorKeyRoutingStage
                {
                    Tunneling = 0,
                    Bubbling  = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                enum WebViewControlMoveFocusReason
                {
                    Programmatic = 0,
                    Next         = 1,
                    Previous     = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                enum WebViewControlProcessCapabilityState
                {
                    Default  = 0,
                    Disabled = 1,
                    Enabled  = 2
                };

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Web.UI.Interop.WebViewControlAcceleratorKeyPressedEventArgs)]
                [uuid(77A2A53E-7C74-437D-A290-3AC0D8CD5655)]
                interface IWebViewControlAcceleratorKeyPressedEventArgs : IInspectable
                {
                    [propget] HRESULT EventType([out] [retval] Windows.UI.Core.CoreAcceleratorKeyEventType* value);
                    [propget] HRESULT VirtualKey([out] [retval] Windows.System.VirtualKey* value);
                    [propget] HRESULT KeyStatus([out] [retval] Windows.UI.Core.CorePhysicalKeyStatus* value);
                    [propget] HRESULT RoutingStage([out] [retval] Windows.Web.UI.Interop.WebViewControlAcceleratorKeyRoutingStage* value);
                    [propget] HRESULT Handled([out] [retval] boolean* value);
                    [propput] HRESULT Handled([in] boolean value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Web.UI.Interop.WebViewControlMoveFocusRequestedEventArgs)]
                [uuid(6B2A340D-4BD0-405E-B7C1-1E72A492F446)]
                interface IWebViewControlMoveFocusRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT Reason([out] [retval] Windows.Web.UI.Interop.WebViewControlMoveFocusReason* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Web.UI.Interop.WebViewControlProcess)]
                [uuid(02C723EC-98D6-424A-B63E-C6136C36A0F2)]
                interface IWebViewControlProcess : IInspectable
                {
                    [propget] HRESULT ProcessId([out] [retval] UINT32* value);
                    [propget] HRESULT EnterpriseId([out] [retval] HSTRING* value);
                    [propget] HRESULT IsPrivateNetworkClientServerCapabilityEnabled([out] [retval] boolean* value);
                    HRESULT CreateWebViewControlAsync([in] INT64 hostWindowHandle, [in] Windows.Foundation.Rect bounds, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Web.UI.Interop.WebViewControl*>** operation);
                    HRESULT GetWebViewControls([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Web.UI.Interop.WebViewControl*>** result);
                    HRESULT Terminate();
                    [eventadd] HRESULT ProcessExited([in] Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControlProcess*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT ProcessExited([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Web.UI.Interop.WebViewControlProcess)]
                [uuid(47B65CF9-A2D2-453C-B097-F6779D4B8E02)]
                interface IWebViewControlProcessFactory : IInspectable
                {
                    HRESULT CreateWithOptions([in] Windows.Web.UI.Interop.WebViewControlProcessOptions* processOptions, [out] [retval] Windows.Web.UI.Interop.WebViewControlProcess** result);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Web.UI.Interop.WebViewControlProcessOptions)]
                [uuid(1CCA72A7-3BD6-4826-8261-6C8189505D89)]
                interface IWebViewControlProcessOptions : IInspectable
                {
                    [propput] HRESULT EnterpriseId([in] HSTRING value);
                    [propget] HRESULT EnterpriseId([out] [retval] HSTRING* value);
                    [propput] HRESULT PrivateNetworkClientServerCapability([in] Windows.Web.UI.Interop.WebViewControlProcessCapabilityState value);
                    [propget] HRESULT PrivateNetworkClientServerCapability([out] [retval] Windows.Web.UI.Interop.WebViewControlProcessCapabilityState* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [exclusiveto(Windows.Web.UI.Interop.WebViewControl)]
                [uuid(133F47C6-12DC-4898-BD47-04967DE648BA)]
                interface IWebViewControlSite : IInspectable
                {
                    [propget] HRESULT Process([out] [retval] Windows.Web.UI.Interop.WebViewControlProcess** value);
                    [propput] HRESULT Scale([in] DOUBLE value);
                    [propget] HRESULT Scale([out] [retval] DOUBLE* value);
                    [propput] HRESULT Bounds([in] Windows.Foundation.Rect value);
                    [propget] HRESULT Bounds([out] [retval] Windows.Foundation.Rect* value);
                    [propput] HRESULT IsVisible([in] boolean value);
                    [propget] HRESULT IsVisible([out] [retval] boolean* value);
                    HRESULT Close();
                    HRESULT MoveFocus([in] Windows.Web.UI.Interop.WebViewControlMoveFocusReason reason);
                    [eventadd] HRESULT MoveFocusRequested([in] Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControl*, Windows.Web.UI.Interop.WebViewControlMoveFocusRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT MoveFocusRequested([in] EventRegistrationToken token);
                    [eventadd] HRESULT AcceleratorKeyPressed([in] Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControl*, Windows.Web.UI.Interop.WebViewControlAcceleratorKeyPressedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT AcceleratorKeyPressed([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Web.UI.Interop.WebViewControl)]
                [uuid(D13B2E3F-48EE-4730-8243-D2ED0C05606A)]
                interface IWebViewControlSite2 : IInspectable
                {
                    [eventadd] HRESULT GotFocus([in] Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControl*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT GotFocus([in] EventRegistrationToken token);
                    [eventadd] HRESULT LostFocus([in] Windows.Foundation.TypedEventHandler<Windows.Web.UI.Interop.WebViewControl*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT LostFocus([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(standard)]
                runtimeclass WebViewControl
                {
                    [default] interface Windows.Web.UI.IWebViewControl;
                    interface Windows.Web.UI.Interop.IWebViewControlSite;
                    [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.Web.UI.IWebViewControl2;
                    [contract(Windows.Foundation.UniversalApiContract, 7.0)] interface Windows.Web.UI.Interop.IWebViewControlSite2;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(standard)]
                runtimeclass WebViewControlAcceleratorKeyPressedEventArgs
                {
                    [default] interface Windows.Web.UI.Interop.IWebViewControlAcceleratorKeyPressedEventArgs;
                }

                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(standard)]
                runtimeclass WebViewControlMoveFocusRequestedEventArgs
                {
                    [default] interface Windows.Web.UI.Interop.IWebViewControlMoveFocusRequestedEventArgs;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 6.0)]
                [activatable(Windows.Web.UI.Interop.IWebViewControlProcessFactory, Windows.Foundation.UniversalApiContract, 6.0)]
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(standard)]
                runtimeclass WebViewControlProcess
                {
                    [default] interface Windows.Web.UI.Interop.IWebViewControlProcess;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 6.0)]
                [contract(Windows.Foundation.UniversalApiContract, 6.0)]
                [marshaling_behavior(standard)]
                runtimeclass WebViewControlProcessOptions
                {
                    [default] interface Windows.Web.UI.Interop.IWebViewControlProcessOptions;
                }
            }
        }
    }
}
