Skip to content

Commit 7937f78

Browse files
committed
Core - OnFrameCreated/OnFrameAttached/OnFrameDetached allocate IFrame on managed heap
- Previously they were stack allocated and disposed when out of scope, they're now managed heap allocated to allow for users to keep a long lived reference. FrameHandler still needs to be updated to deal with Disposing of the references. Follow up to #3757 Issue #3588
1 parent 8d98043 commit 7937f78

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

CefSharp.Core.Runtime/Internals/ClientAdapter.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,9 +1126,9 @@ namespace CefSharp
11261126
if (handler != nullptr)
11271127
{
11281128
auto browserWrapper = GetBrowserWrapper(browser->GetIdentifier(), browser->IsPopup());
1129-
CefFrameWrapper frameWrapper(frame);
1129+
auto frameWrapper = gcnew CefFrameWrapper(frame);
11301130

1131-
handler->OnFrameCreated(_browserControl, browserWrapper, %frameWrapper);
1131+
handler->OnFrameCreated(_browserControl, browserWrapper, frameWrapper);
11321132
}
11331133
}
11341134

@@ -1139,9 +1139,9 @@ namespace CefSharp
11391139
if (handler != nullptr)
11401140
{
11411141
auto browserWrapper = GetBrowserWrapper(browser->GetIdentifier(), browser->IsPopup());
1142-
CefFrameWrapper frameWrapper(frame);
1142+
auto frameWrapper = gcnew CefFrameWrapper(frame);
11431143

1144-
handler->OnFrameAttached(_browserControl, browserWrapper, %frameWrapper);
1144+
handler->OnFrameAttached(_browserControl, browserWrapper, frameWrapper);
11451145
}
11461146
}
11471147

@@ -1152,26 +1152,28 @@ namespace CefSharp
11521152
if (handler != nullptr)
11531153
{
11541154
auto browserWrapper = GetBrowserWrapper(browser->GetIdentifier(), browser->IsPopup());
1155-
CefFrameWrapper frameWrapper(frame);
1155+
auto frameWrapper = gcnew CefFrameWrapper(frame);
11561156

1157-
handler->OnFrameDetached(_browserControl, browserWrapper, %frameWrapper);
1157+
handler->OnFrameDetached(_browserControl, browserWrapper, frameWrapper);
11581158
}
11591159
}
11601160

1161-
void ClientAdapter::OnMainFrameChanged(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> old_frame, CefRefPtr<CefFrame> new_frame)
1161+
void ClientAdapter::OnMainFrameChanged(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> oldFrame, CefRefPtr<CefFrame> newFrame)
11621162
{
11631163
auto handler = _browserControl->FrameHandler;
11641164

11651165
if (handler != nullptr)
11661166
{
11671167
auto browserWrapper = GetBrowserWrapper(browser->GetIdentifier(), browser->IsPopup());
11681168
CefFrameWrapper^ oldFrameWrapper = nullptr;
1169-
if (old_frame.get()) {
1170-
oldFrameWrapper = gcnew CefFrameWrapper(old_frame);
1169+
if (oldFrame.get())
1170+
{
1171+
oldFrameWrapper = gcnew CefFrameWrapper(oldFrame);
11711172
}
11721173
CefFrameWrapper^ newFrameWrapper = nullptr;
1173-
if (new_frame.get()) {
1174-
newFrameWrapper = gcnew CefFrameWrapper(new_frame);
1174+
if (newFrame.get())
1175+
{
1176+
newFrameWrapper = gcnew CefFrameWrapper(newFrame);
11751177
}
11761178

11771179
handler->OnMainFrameChanged(_browserControl, browserWrapper, oldFrameWrapper, newFrameWrapper);

0 commit comments

Comments
 (0)