diff -r 4917f9bf7995 -r 8bfb9186a8b8 webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp Tue Apr 27 17:46:17 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp Tue May 11 17:13:44 2010 +0300 @@ -508,10 +508,27 @@ void WebFrame::makeVisiblePlugins(TBool visible) { - PluginHandler* plghandler = StaticObjectsContainer::instance()->pluginHandler(); - WTF::HashSet pluginObjs = plghandler->pluginObjects(); - for(WTF::HashSet::iterator it = pluginObjs.begin() ; it != pluginObjs.end() ; ++it ) { - static_cast (*it)->makeVisible(visible); + MWebCoreObjectWidget* view = NULL; + Frame* coreFrame = core(this); + PluginSkin* plg = 0; + for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) { + + PassRefPtr objects = frame->document()->objects(); + for (Node* n = objects->firstItem(); n; n = objects->nextItem()) { + view = widget(n); + if (view) { + plg = static_cast(view); + plg->makeVisible(visible); + } + } + PassRefPtr embeds = frame->document()->embeds(); + for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) { + view = widget(n); + if (view) { + plg = static_cast(view); + plg->makeVisible(visible); + } + } } } @@ -577,12 +594,29 @@ void WebFrame::reCreatePlugins() { - PluginHandler* plghandler = StaticObjectsContainer::instance()->pluginHandler(); - WTF::HashSet pluginObjs = plghandler->pluginObjects(); - for(WTF::HashSet::iterator it = pluginObjs.begin() ; it != pluginObjs.end() ; ++it ) { - PluginSkin* plg = static_cast (*it); //->PlayPauseNotify(pause); - if(plg->activeStreams() > 0) - plg->reCreatePlugin(); + MWebCoreObjectWidget* view = NULL; + Frame* coreFrame = core(this); + PluginSkin* plg = 0; + for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) { + + PassRefPtr objects = frame->document()->objects(); + for (Node* n = objects->firstItem(); n; n = objects->nextItem()) { + view = widget(n); + if (view) { + plg = static_cast(view); + if (plg->activeStreams() > 0) + plg->reCreatePlugin(); + } + } + PassRefPtr embeds = frame->document()->embeds(); + for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) { + view = widget(n); + if (view) { + plg = static_cast(view); + if (plg->activeStreams() > 0) + plg->reCreatePlugin(); + } + } } }