Fix DCHECK failure when calling OnSetFocus from LoadRequest (issue #685).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@776 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
e620a6831f
commit
b7656f50fd
|
@ -312,12 +312,7 @@ void CefBrowserHostImpl::SetFocus(bool enable) {
|
|||
if (!enable)
|
||||
return;
|
||||
|
||||
if (CEF_CURRENTLY_ON_UIT()) {
|
||||
OnSetFocus(FOCUS_SOURCE_SYSTEM);
|
||||
} else {
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::Bind(&CefBrowserHostImpl::SetFocus, this, enable));
|
||||
}
|
||||
OnSetFocus(FOCUS_SOURCE_SYSTEM);
|
||||
}
|
||||
|
||||
CefWindowHandle CefBrowserHostImpl::GetWindowHandle() {
|
||||
|
@ -838,26 +833,29 @@ GURL CefBrowserHostImpl::GetLoadingURL() {
|
|||
}
|
||||
|
||||
void CefBrowserHostImpl::OnSetFocus(cef_focus_source_t source) {
|
||||
CEF_REQUIRE_UIT();
|
||||
if (CEF_CURRENTLY_ON_UIT()) {
|
||||
// SetFocus() might be called while inside the OnSetFocus() callback. If so,
|
||||
// don't re-enter the callback.
|
||||
if (!is_in_onsetfocus_) {
|
||||
if (client_.get()) {
|
||||
CefRefPtr<CefFocusHandler> handler = client_->GetFocusHandler();
|
||||
if (handler.get()) {
|
||||
is_in_onsetfocus_ = true;
|
||||
bool handled = handler->OnSetFocus(this, source);
|
||||
is_in_onsetfocus_ = false;
|
||||
|
||||
// SetFocus() might be called while inside the OnSetFocus() callback. If so,
|
||||
// don't re-enter the callback.
|
||||
if (!is_in_onsetfocus_) {
|
||||
if (client_.get()) {
|
||||
CefRefPtr<CefFocusHandler> handler = client_->GetFocusHandler();
|
||||
if (handler.get()) {
|
||||
is_in_onsetfocus_ = true;
|
||||
bool handled = handler->OnSetFocus(this, source);
|
||||
is_in_onsetfocus_ = false;
|
||||
|
||||
if (handled)
|
||||
return;
|
||||
if (handled)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (web_contents_.get())
|
||||
web_contents_->Focus();
|
||||
if (web_contents_.get())
|
||||
web_contents_->Focus();
|
||||
} else {
|
||||
CEF_POST_TASK(CEF_UIT,
|
||||
base::Bind(&CefBrowserHostImpl::OnSetFocus, this, source));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue