Hi,
We were using cef3_2454 and I am working on upgrading it to cef3_2785. I found out there's some changes for CefResourceDispatcherHostDelegate::HandleExternalProtocol().
In cef3_2785, cef added a check if the method is called from cef_ui_thread. If not, it will use CEF_POST_TASK to make the method calling from CEF UI thread. But it's using base::IgnoreResult for the callback value, and return false instead.
So when HandleExternalProtocol() is not called from CEF UI thread, it will always return false.
We are using the return result to determine if we want to CancelAndIgnore the current navigation.
Currently, we are override OnHandleExternalProtocol() to launch external protocol externally, and cancel the navigation from the original frame. The change kind of broke our behavior. Now there is an additional navigation in the frame, when user is clicking an link, which is to an external url, and display error 302 for unknown scheme.
Questions:
1. I have tried remove the part of checking CEF_CURRENT_ON_UIT(), and that works for us. But I wonder if it's safe to remove it.
2. Does CEF_POST_TASK(CEF_UIT, base::Bind() only accept void functions? Is there any ways to remove base::IgnoreResult and still use the callback return value to determine if we want to cancel and ignore the navigation? I have a quick check in the CEF forum, and found out it might only accept void result function? http://www.magpcss.org/ceforum/viewtopi ... =6&t=14249