Skip to content

Latest commit

 

History

History
91 lines (72 loc) · 3.98 KB

icorewebview2devtoolsprotocoleventreceiver.md

File metadata and controls

91 lines (72 loc) · 3.98 KB
description title author ms.author ms.date ms.topic keywords
A Receiver is created for a particular DevTools Protocol event and allows you to subscribe and unsubscribe from that event.
WebView2 Win32 C++ ICoreWebView2DevToolsProtocolEventReceiver
MSEdgeTeam
msedgedevrel
10/07/2020
reference
IWebView2, IWebView2WebView, webview2, webview, win32 apps, win32, edge, ICoreWebView2, ICoreWebView2Controller, browser control, edge html, ICoreWebView2DevToolsProtocolEventReceiver

interface ICoreWebView2DevToolsProtocolEventReceiver

[!INCLUDE deprecation-note]

interface ICoreWebView2DevToolsProtocolEventReceiver
  : public IUnknown

A Receiver is created for a particular DevTools Protocol event and allows you to subscribe and unsubscribe from that event.

Summary

Members Descriptions
add_DevToolsProtocolEventReceived Subscribe to a DevToolsProtocol event.
remove_DevToolsProtocolEventReceived Remove an event handler previously added with add_DevToolsProtocolEventReceived.

Obtained from the WebView object via GetDevToolsProtocolEventReceiver.

Members

add_DevToolsProtocolEventReceived

Subscribe to a DevToolsProtocol event.

public HRESULT add_DevToolsProtocolEventReceived(ICoreWebView2DevToolsProtocolEventReceivedEventHandler * handler, EventRegistrationToken * token)

The handler's Invoke method will be called whenever the corresponding DevToolsProtocol event fires. Invoke will be called with the an event args object containing the DevTools Protocol event's parameter object as a JSON string.

// Prompt the user to name a CDP event, and then subscribe to that event.
void ScriptComponent::SubscribeToCdpEvent()
{
    TextInputDialog dialog(
        m_appWindow->GetMainWindow(),
        L"Subscribe to CDP Event",
        L"CDP event name:",
        L"Enter the name of the CDP event to subscribe to.\r\n"
            L"You may also have to call the \"enable\" method of the\r\n"
            L"event's domain to receive events (for example \"Log.enable\").\r\n",
        L"Log.entryAdded");
    if (dialog.confirmed)
    {
        std::wstring eventName = dialog.input;
        wil::com_ptr<ICoreWebView2DevToolsProtocolEventReceiver> receiver;
        CHECK_FAILURE(
            m_webView->GetDevToolsProtocolEventReceiver(eventName.c_str(), &receiver));

        // If we are already subscribed to this event, unsubscribe first.
        auto preexistingToken = m_devToolsProtocolEventReceivedTokenMap.find(eventName);
        if (preexistingToken != m_devToolsProtocolEventReceivedTokenMap.end())
        {
            CHECK_FAILURE(receiver->remove_DevToolsProtocolEventReceived(
                preexistingToken->second));
        }

        CHECK_FAILURE(receiver->add_DevToolsProtocolEventReceived(
            Callback<ICoreWebView2DevToolsProtocolEventReceivedEventHandler>(
                [eventName](
                    ICoreWebView2* sender,
                    ICoreWebView2DevToolsProtocolEventReceivedEventArgs* args) -> HRESULT {
                    wil::unique_cotaskmem_string parameterObjectAsJson;
                    CHECK_FAILURE(args->get_ParameterObjectAsJson(&parameterObjectAsJson));
                    MessageBox(
                        nullptr, parameterObjectAsJson.get(),
                        (L"CDP Event Fired: " + eventName).c_str(), MB_OK);
                    return S_OK;
                })
                .Get(),
            &m_devToolsProtocolEventReceivedTokenMap[eventName]));
    }
}

remove_DevToolsProtocolEventReceived

Remove an event handler previously added with add_DevToolsProtocolEventReceived.

public HRESULT remove_DevToolsProtocolEventReceived(EventRegistrationToken token)