mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Fix mapping of routing IDs to browser objects (issue #1012).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1305 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
@@ -8,9 +8,7 @@
|
||||
CefBrowserInfo::CefBrowserInfo(int browser_id, bool is_popup)
|
||||
: browser_id_(browser_id),
|
||||
is_popup_(is_popup),
|
||||
is_window_rendering_disabled_(false),
|
||||
render_process_id_(MSG_ROUTING_NONE),
|
||||
render_view_id_(MSG_ROUTING_NONE) {
|
||||
is_window_rendering_disabled_(false) {
|
||||
DCHECK_GT(browser_id, 0);
|
||||
}
|
||||
|
||||
@@ -21,19 +19,51 @@ void CefBrowserInfo::set_window_rendering_disabled(bool disabled) {
|
||||
is_window_rendering_disabled_ = disabled;
|
||||
}
|
||||
|
||||
void CefBrowserInfo::set_render_ids(
|
||||
void CefBrowserInfo::add_render_id(
|
||||
int render_process_id, int render_view_id) {
|
||||
DCHECK_GT(render_process_id, 0);
|
||||
DCHECK_GT(render_view_id, 0);
|
||||
|
||||
base::AutoLock lock_scope(lock_);
|
||||
render_process_id_ = render_process_id;
|
||||
render_view_id_ = render_view_id;
|
||||
|
||||
if (!render_id_set_.empty()) {
|
||||
RenderIdSet::const_iterator it =
|
||||
render_id_set_.find(std::make_pair(render_process_id, render_view_id));
|
||||
if (it != render_id_set_.end())
|
||||
return;
|
||||
}
|
||||
|
||||
render_id_set_.insert(std::make_pair(render_process_id, render_view_id));
|
||||
}
|
||||
|
||||
void CefBrowserInfo::remove_render_id(
|
||||
int render_process_id, int render_view_id) {
|
||||
DCHECK_GT(render_process_id, 0);
|
||||
DCHECK_GT(render_view_id, 0);
|
||||
|
||||
base::AutoLock lock_scope(lock_);
|
||||
|
||||
DCHECK(!render_id_set_.empty());
|
||||
if (render_id_set_.empty())
|
||||
return;
|
||||
|
||||
RenderIdSet::iterator it =
|
||||
render_id_set_.find(std::make_pair(render_process_id, render_view_id));
|
||||
DCHECK(it != render_id_set_.end());
|
||||
if (it != render_id_set_.end())
|
||||
render_id_set_.erase(it);
|
||||
}
|
||||
|
||||
bool CefBrowserInfo::is_render_id_match(
|
||||
int render_process_id, int render_view_id) {
|
||||
base::AutoLock lock_scope(lock_);
|
||||
if (render_process_id != render_process_id_)
|
||||
|
||||
if (render_id_set_.empty())
|
||||
return false;
|
||||
return (render_view_id == 0 || render_view_id == render_view_id_);
|
||||
|
||||
RenderIdSet::const_iterator it =
|
||||
render_id_set_.find(std::make_pair(render_process_id, render_view_id));
|
||||
return (it != render_id_set_.end());
|
||||
}
|
||||
|
||||
CefRefPtr<CefBrowserHostImpl> CefBrowserInfo::browser() {
|
||||
|
Reference in New Issue
Block a user