MCPcopy Create free account
hub / github.com/MicrosoftEdge/WebView2Browser / Init

Method Init

Tab.cpp:22–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20}
21
22HRESULT Tab::Init(ICoreWebView2Environment* env, bool shouldBeActive)
23{
24 return env->CreateCoreWebView2Controller(m_parentHWnd, Callback<ICoreWebView2CreateCoreWebView2ControllerCompletedHandler>(
25 [this, shouldBeActive](HRESULT result, ICoreWebView2Controller* host) -> HRESULT {
26 if (!SUCCEEDED(result))
27 {
28 OutputDebugString(L"Tab WebView creation failed\n");
29 return result;
30 }
31 m_contentController = host;
32 BrowserWindow::CheckFailure(m_contentController->get_CoreWebView2(&m_contentWebView), L"");
33 BrowserWindow* browserWindow = reinterpret_cast<BrowserWindow*>(GetWindowLongPtr(m_parentHWnd, GWLP_USERDATA));
34 RETURN_IF_FAILED(m_contentWebView->add_WebMessageReceived(m_messageBroker.Get(), &m_messageBrokerToken));
35
36 // Register event handler for history change
37 RETURN_IF_FAILED(m_contentWebView->add_HistoryChanged(Callback<ICoreWebView2HistoryChangedEventHandler>(
38 [this, browserWindow](ICoreWebView2* webview, IUnknown* args) -> HRESULT
39 {
40 BrowserWindow::CheckFailure(browserWindow->HandleTabHistoryUpdate(m_tabId, webview), L"Can't update go back/forward buttons.");
41
42 return S_OK;
43 }).Get(), &m_historyUpdateForwarderToken));
44
45 // Register event handler for source change
46 RETURN_IF_FAILED(m_contentWebView->add_SourceChanged(Callback<ICoreWebView2SourceChangedEventHandler>(
47 [this, browserWindow](ICoreWebView2* webview, ICoreWebView2SourceChangedEventArgs* args) -> HRESULT
48 {
49 BrowserWindow::CheckFailure(browserWindow->HandleTabURIUpdate(m_tabId, webview), L"Can't update address bar");
50
51 return S_OK;
52 }).Get(), &m_uriUpdateForwarderToken));
53
54 RETURN_IF_FAILED(m_contentWebView->add_NavigationStarting(Callback<ICoreWebView2NavigationStartingEventHandler>(
55 [this, browserWindow](ICoreWebView2* webview, ICoreWebView2NavigationStartingEventArgs* args) -> HRESULT
56 {
57 BrowserWindow::CheckFailure(browserWindow->HandleTabNavStarting(m_tabId, webview), L"Can't update reload button");
58
59 return S_OK;
60 }).Get(), &m_navStartingToken));
61
62 RETURN_IF_FAILED(m_contentWebView->add_NavigationCompleted(Callback<ICoreWebView2NavigationCompletedEventHandler>(
63 [this, browserWindow](ICoreWebView2* webview, ICoreWebView2NavigationCompletedEventArgs* args) -> HRESULT
64 {
65 BrowserWindow::CheckFailure(browserWindow->HandleTabNavCompleted(m_tabId, webview, args), L"Can't udpate reload button");
66 return S_OK;
67 }).Get(), &m_navCompletedToken));
68
69 // Enable listening for security events to update secure icon
70 RETURN_IF_FAILED(m_contentWebView->CallDevToolsProtocolMethod(L"Security.enable", L"{}", nullptr));
71
72 BrowserWindow::CheckFailure(m_contentWebView->GetDevToolsProtocolEventReceiver(L"Security.securityStateChanged", &m_securityStateChangedReceiver), L"");
73
74 // Forward security status updates to browser
75 RETURN_IF_FAILED(m_securityStateChangedReceiver->add_DevToolsProtocolEventReceived(Callback<ICoreWebView2DevToolsProtocolEventReceivedEventHandler>(
76 [this, browserWindow](ICoreWebView2* webview, ICoreWebView2DevToolsProtocolEventReceivedEventArgs* args) -> HRESULT
77 {
78 BrowserWindow::CheckFailure(browserWindow->HandleTabSecurityUpdate(m_tabId, webview, args), L"Can't udpate security icon");
79 return S_OK;

Callers 1

CreateNewTabMethod · 0.80

Calls 6

HandleTabURIUpdateMethod · 0.80
HandleTabNavStartingMethod · 0.80
HandleTabNavCompletedMethod · 0.80
HandleTabCreatedMethod · 0.80

Tested by

no test coverage detected