From ebcbcf264354033d1c6477e2dcc21eea3bbba043 Mon Sep 17 00:00:00 2001 From: Grzegorz Czajkowski Date: Wed, 4 Nov 2015 11:31:40 +0100 Subject: [PATCH] Changed settings are not sometimes applied to Renderer when Browser starts If renderer is not ready to receive messages, we collect them inside std::set<> collection. When renderer is back, the messages are propagated via IPC system. The problem is that due to std::set sorting hash function, the last inserted element is not guaranteed to be the last in collection. Last updated value for particular setting is expected to be the most recent (and finally applied to Renderer). Use std::vector instead of std::set to keep insertion sequence. Bug: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=14642 Reviewed by: a.renevier, a1.gomes, sns.park Change-Id: Iaeb956e538d7f3409483053ff9f4f144601b2fa7 Signed-off-by: Grzegorz Czajkowski --- tizen_src/ewk/efl_integration/eweb_view.cc | 15 ++++++--------- tizen_src/ewk/efl_integration/eweb_view.h | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/tizen_src/ewk/efl_integration/eweb_view.cc b/tizen_src/ewk/efl_integration/eweb_view.cc index 02a2765..179faa1 100644 --- a/tizen_src/ewk/efl_integration/eweb_view.cc +++ b/tizen_src/ewk/efl_integration/eweb_view.cc @@ -341,11 +341,9 @@ EWebView::~EWebView() delete hit_test_callback_iterator->second; hit_test_callback_.clear(); - std::set::iterator delayed_messages_iterator; - for (delayed_messages_iterator = delayed_messages_.begin(); - delayed_messages_iterator != delayed_messages_.end(); - ++delayed_messages_iterator) - delete (*delayed_messages_iterator); + for (auto iter = delayed_messages_.begin(); iter != delayed_messages_.end(); ++iter) + delete *iter; + delayed_messages_.clear(); if (!is_initialized_) { @@ -895,7 +893,7 @@ void EWebView::UpdateWebKitPreferences() { if (render_view_host->IsRenderViewLive()) { render_view_host->Send(message); } else { - delayed_messages_.insert(message); + delayed_messages_.push_back(message); } } @@ -1938,7 +1936,7 @@ void EWebView::SetViewMode(blink::WebViewMode view_mode) { if (render_view_host->IsRenderViewLive()) { render_view_host->Send(message); } else { - delayed_messages_.insert(message); + delayed_messages_.push_back(message); } } @@ -2226,8 +2224,7 @@ void EWebView::SendDelayedMessages(RenderViewHost* render_view_host) { return; } - for (std::set::iterator iter = delayed_messages_.begin(); - iter != delayed_messages_.end(); ++iter) { + for (auto iter = delayed_messages_.begin(); iter != delayed_messages_.end(); ++iter) { IPC::Message* message = *iter; message->set_routing_id(render_view_host->GetRoutingID()); render_view_host->Send(message); diff --git a/tizen_src/ewk/efl_integration/eweb_view.h b/tizen_src/ewk/efl_integration/eweb_view.h index 0cb6a5b..e2e3a92 100644 --- a/tizen_src/ewk/efl_integration/eweb_view.h +++ b/tizen_src/ewk/efl_integration/eweb_view.h @@ -554,7 +554,7 @@ private: gfx::Point context_menu_position_; - std::set delayed_messages_; + std::vector delayed_messages_; std::map hit_test_callback_; }; -- 2.7.4