//
// 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.Diagnostics.idl";
import "Windows.Web.Http.idl";

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

        runtimeclass Uri;
    }
}
namespace Windows
{
    namespace System
    {
        namespace Diagnostics
        {
            runtimeclass ProcessDiagnosticInfo;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            runtimeclass HttpRequestMessage;

            runtimeclass HttpResponseMessage;
        }
    }
}
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            namespace Diagnostics
            {
                apicontract HttpDiagnosticsContract;

                typedef enum HttpDiagnosticRequestInitiator HttpDiagnosticRequestInitiator;

                interface IHttpDiagnosticProvider;

                interface IHttpDiagnosticProviderRequestResponseCompletedEventArgs;

                interface IHttpDiagnosticProviderRequestResponseTimestamps;

                interface IHttpDiagnosticProviderRequestSentEventArgs;

                interface IHttpDiagnosticProviderResponseReceivedEventArgs;

                interface IHttpDiagnosticProviderStatics;

                interface IHttpDiagnosticSourceLocation;

                runtimeclass HttpDiagnosticProvider;

                runtimeclass HttpDiagnosticProviderRequestResponseCompletedEventArgs;

                runtimeclass HttpDiagnosticProviderRequestResponseTimestamps;

                runtimeclass HttpDiagnosticProviderRequestSentEventArgs;

                runtimeclass HttpDiagnosticProviderResponseReceivedEventArgs;

                runtimeclass HttpDiagnosticSourceLocation;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            namespace Diagnostics
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Web.Http.Diagnostics.HttpDiagnosticSourceLocation*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Web.Http.Diagnostics.HttpDiagnosticSourceLocation*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Web.Http.Diagnostics.HttpDiagnosticSourceLocation*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Web.Http.Diagnostics.HttpDiagnosticProvider*, Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestResponseCompletedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Web.Http.Diagnostics.HttpDiagnosticProvider*, Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestSentEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Web.Http.Diagnostics.HttpDiagnosticProvider*, Windows.Web.Http.Diagnostics.HttpDiagnosticProviderResponseReceivedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Web
    {
        namespace Http
        {
            namespace Diagnostics
            {
                [contractversion(2.0)]
                apicontract HttpDiagnosticsContract
                {
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                enum HttpDiagnosticRequestInitiator
                {
                    ParsedElement        = 0,
                    Script               = 1,
                    Image                = 2,
                    Link                 = 3,
                    Style                = 4,
                    XmlHttpRequest       = 5,
                    Media                = 6,
                    HtmlDownload         = 7,
                    Prefetch             = 8,
                    Other                = 9,
                    [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 2.0)]
                    CrossOriginPreFlight = 10,
                    [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 2.0)]
                    Fetch                = 11,
                    [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 2.0)]
                    Beacon               = 12
                };

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [exclusiveto(Windows.Web.Http.Diagnostics.HttpDiagnosticProvider)]
                [uuid(BD811501-A056-4D39-B174-833B7B03B02C)]
                interface IHttpDiagnosticProvider : IInspectable
                {
                    HRESULT Start();
                    HRESULT Stop();
                    [eventadd] HRESULT RequestSent([in] Windows.Foundation.TypedEventHandler<Windows.Web.Http.Diagnostics.HttpDiagnosticProvider*, Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestSentEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT RequestSent([in] EventRegistrationToken token);
                    [eventadd] HRESULT ResponseReceived([in] Windows.Foundation.TypedEventHandler<Windows.Web.Http.Diagnostics.HttpDiagnosticProvider*, Windows.Web.Http.Diagnostics.HttpDiagnosticProviderResponseReceivedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT ResponseReceived([in] EventRegistrationToken token);
                    [eventadd] HRESULT RequestResponseCompleted([in] Windows.Foundation.TypedEventHandler<Windows.Web.Http.Diagnostics.HttpDiagnosticProvider*, Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestResponseCompletedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT RequestResponseCompleted([in] EventRegistrationToken token);
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [exclusiveto(Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestResponseCompletedEventArgs)]
                [uuid(735F98EE-94F6-4532-B26E-61E1B1E4EFD4)]
                interface IHttpDiagnosticProviderRequestResponseCompletedEventArgs : IInspectable
                {
                    [propget] HRESULT ActivityId([out] [retval] GUID* value);
                    [propget] HRESULT Timestamps([out] [retval] Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestResponseTimestamps** value);
                    [propget] HRESULT RequestedUri([out] [retval] Windows.Foundation.Uri** value);
                    [propget] HRESULT ProcessId([out] [retval] UINT32* value);
                    [propget] HRESULT ThreadId([out] [retval] UINT32* value);
                    [propget] HRESULT Initiator([out] [retval] Windows.Web.Http.Diagnostics.HttpDiagnosticRequestInitiator* value);
                    [propget] HRESULT SourceLocations([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Web.Http.Diagnostics.HttpDiagnosticSourceLocation*>** value);
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [exclusiveto(Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestResponseTimestamps)]
                [uuid(E0AFDE10-55CF-4C01-91D4-A20557D849F0)]
                interface IHttpDiagnosticProviderRequestResponseTimestamps : IInspectable
                {
                    [propget] HRESULT CacheCheckedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT ConnectionInitiatedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT NameResolvedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT SslNegotiatedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT ConnectionCompletedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT RequestSentTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT RequestCompletedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT ResponseReceivedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                    [propget] HRESULT ResponseCompletedTimestamp([out] [retval] Windows.Foundation.IReference<Windows.Foundation.DateTime>** value);
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [exclusiveto(Windows.Web.Http.Diagnostics.HttpDiagnosticProviderRequestSentEventArgs)]
                [uuid(3F5196D0-4C1F-4EBE-A57A-06930771C50D)]
                interface IHttpDiagnosticProviderRequestSentEventArgs : IInspectable
                {
                    [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
                    [propget] HRESULT ActivityId([out] [retval] GUID* value);
                    [propget] HRESULT Message([out] [retval] Windows.Web.Http.HttpRequestMessage** value);
                    [propget] HRESULT ProcessId([out] [retval] UINT32* value);
                    [propget] HRESULT ThreadId([out] [retval] UINT32* value);
                    [propget] HRESULT Initiator([out] [retval] Windows.Web.Http.Diagnostics.HttpDiagnosticRequestInitiator* value);
                    [propget] HRESULT SourceLocations([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Web.Http.Diagnostics.HttpDiagnosticSourceLocation*>** value);
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [exclusiveto(Windows.Web.Http.Diagnostics.HttpDiagnosticProviderResponseReceivedEventArgs)]
                [uuid(A0A2566C-AB5F-4D66-BB2D-084CF41635D0)]
                interface IHttpDiagnosticProviderResponseReceivedEventArgs : IInspectable
                {
                    [propget] HRESULT Timestamp([out] [retval] Windows.Foundation.DateTime* value);
                    [propget] HRESULT ActivityId([out] [retval] GUID* value);
                    [propget] HRESULT Message([out] [retval] Windows.Web.Http.HttpResponseMessage** value);
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [exclusiveto(Windows.Web.Http.Diagnostics.HttpDiagnosticProvider)]
                [uuid(5B824EC1-6A6C-47CC-AFEC-1E86BC26053B)]
                interface IHttpDiagnosticProviderStatics : IInspectable
                {
                    HRESULT CreateFromProcessDiagnosticInfo([in] Windows.System.Diagnostics.ProcessDiagnosticInfo* processDiagnosticInfo, [out] [retval] Windows.Web.Http.Diagnostics.HttpDiagnosticProvider** value);
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [exclusiveto(Windows.Web.Http.Diagnostics.HttpDiagnosticSourceLocation)]
                [uuid(54A9D260-8860-423F-B6FA-D77716F647A7)]
                interface IHttpDiagnosticSourceLocation : IInspectable
                {
                    [propget] HRESULT SourceUri([out] [retval] Windows.Foundation.Uri** value);
                    [propget] HRESULT LineNumber([out] [retval] UINT64* value);
                    [propget] HRESULT ColumnNumber([out] [retval] UINT64* value);
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Web.Http.Diagnostics.IHttpDiagnosticProviderStatics, Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [threading(both)]
                runtimeclass HttpDiagnosticProvider
                {
                    [default] interface Windows.Web.Http.Diagnostics.IHttpDiagnosticProvider;
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass HttpDiagnosticProviderRequestResponseCompletedEventArgs
                {
                    [default] interface Windows.Web.Http.Diagnostics.IHttpDiagnosticProviderRequestResponseCompletedEventArgs;
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass HttpDiagnosticProviderRequestResponseTimestamps
                {
                    [default] interface Windows.Web.Http.Diagnostics.IHttpDiagnosticProviderRequestResponseTimestamps;
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass HttpDiagnosticProviderRequestSentEventArgs
                {
                    [default] interface Windows.Web.Http.Diagnostics.IHttpDiagnosticProviderRequestSentEventArgs;
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass HttpDiagnosticProviderResponseReceivedEventArgs
                {
                    [default] interface Windows.Web.Http.Diagnostics.IHttpDiagnosticProviderResponseReceivedEventArgs;
                }

                [contract(Windows.Web.Http.Diagnostics.HttpDiagnosticsContract, 1.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass HttpDiagnosticSourceLocation
                {
                    [default] interface Windows.Web.Http.Diagnostics.IHttpDiagnosticSourceLocation;
                }
            }
        }
    }
}
