chore: wrap add/remove view in extra check (#25166)
This commit is contained in:
parent
075502477e
commit
e8ef1ef252
1 changed files with 9 additions and 6 deletions
|
@ -744,9 +744,10 @@ void BaseWindow::AddBrowserView(v8::Local<v8::Value> value) {
|
||||||
gin::ConvertFromV8(isolate(), value, &browser_view)) {
|
gin::ConvertFromV8(isolate(), value, &browser_view)) {
|
||||||
auto get_that_view = browser_views_.find(browser_view->ID());
|
auto get_that_view = browser_views_.find(browser_view->ID());
|
||||||
if (get_that_view == browser_views_.end()) {
|
if (get_that_view == browser_views_.end()) {
|
||||||
|
if (browser_view->web_contents()) {
|
||||||
window_->AddBrowserView(browser_view->view());
|
window_->AddBrowserView(browser_view->view());
|
||||||
if (browser_view->web_contents())
|
|
||||||
browser_view->web_contents()->SetOwnerWindow(window_.get());
|
browser_view->web_contents()->SetOwnerWindow(window_.get());
|
||||||
|
}
|
||||||
browser_views_[browser_view->ID()].Reset(isolate(), value);
|
browser_views_[browser_view->ID()].Reset(isolate(), value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -758,9 +759,10 @@ void BaseWindow::RemoveBrowserView(v8::Local<v8::Value> value) {
|
||||||
gin::ConvertFromV8(isolate(), value, &browser_view)) {
|
gin::ConvertFromV8(isolate(), value, &browser_view)) {
|
||||||
auto get_that_view = browser_views_.find(browser_view->ID());
|
auto get_that_view = browser_views_.find(browser_view->ID());
|
||||||
if (get_that_view != browser_views_.end()) {
|
if (get_that_view != browser_views_.end()) {
|
||||||
|
if (browser_view->web_contents()) {
|
||||||
window_->RemoveBrowserView(browser_view->view());
|
window_->RemoveBrowserView(browser_view->view());
|
||||||
if (browser_view->web_contents())
|
|
||||||
browser_view->web_contents()->SetOwnerWindow(nullptr);
|
browser_view->web_contents()->SetOwnerWindow(nullptr);
|
||||||
|
}
|
||||||
(*get_that_view).second.Reset(isolate(), value);
|
(*get_that_view).second.Reset(isolate(), value);
|
||||||
browser_views_.erase(get_that_view);
|
browser_views_.erase(get_that_view);
|
||||||
}
|
}
|
||||||
|
@ -1055,9 +1057,10 @@ void BaseWindow::ResetBrowserViews() {
|
||||||
v8::Local<v8::Value>::New(isolate(), item.second),
|
v8::Local<v8::Value>::New(isolate(), item.second),
|
||||||
&browser_view) &&
|
&browser_view) &&
|
||||||
!browser_view.IsEmpty()) {
|
!browser_view.IsEmpty()) {
|
||||||
window_->RemoveBrowserView(browser_view->view());
|
if (browser_view->web_contents()) {
|
||||||
if (browser_view->web_contents())
|
|
||||||
browser_view->web_contents()->SetOwnerWindow(nullptr);
|
browser_view->web_contents()->SetOwnerWindow(nullptr);
|
||||||
|
window_->RemoveBrowserView(browser_view->view());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
item.second.Reset();
|
item.second.Reset();
|
||||||
|
|
Loading…
Add table
Reference in a new issue