[Webkit-unassigned] [Bug 45855] New: Plugins added dynamically to the DOM don't paint at times
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Wed Sep 15 17:38:56 PDT 2010
https://bugs.webkit.org/show_bug.cgi?id=45855
Summary: Plugins added dynamically to the DOM don't paint at
times
Product: WebKit
Version: 528+ (Nightly build)
Platform: PC
OS/Version: Mac OS X 10.5
Status: NEW
Severity: Normal
Priority: P2
Component: Plug-ins
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: ananta at chromium.org
CC: jamesr at chromium.org
Created an attachment (id=67747)
--> (https://bugs.webkit.org/attachment.cgi?id=67747)
Test case.
This bug was originally logged in Chromium against Flash. http://code.google.com/p/chromium/issues/detail?id=55370
In this case it is a windowed plugin which does not display in Chrome. It displays in Safari as the windowed plugin
becomes visible when Widget::show is called. Chromium relies on a subsequent paint to make the plugin window visible.
However Safari would have the same bug if the plugin is a windowless plugin.
Based on our debugging it appears to be a bug in Webkit. If an object tag is added dynamically to the DOM it does not
paint. Based on a discussion with james robinson it seems that RenderWidget::setWidget should mark the widget as needs
painting.
A simple test case is attached.
The callstack in the debugger when the plugin element is added is as below.
ChildEBP RetAddr
0012eabc 03286295 chrome_1c30000!webkit_glue::WebPluginImpl::updateGeometry+0x191 [z:\code\trunk\src\webkit\glue\plugins\webplugin_impl.cc @ 281]
0012eb5c 03285df4 chrome_1c30000!WebKit::WebPluginContainerImpl::reportGeometry+0xd5 [z:\code\trunk\src\third_party\webkit\webkit\chromium\src\webplugincontainerimpl.cpp @ 286]
0012eb6c 0440178a chrome_1c30000!WebKit::WebPluginContainerImpl::setParent+0x34 [z:\code\trunk\src\third_party\webkit\webkit\chromium\src\webplugincontainerimpl.cpp @ 221]
0012eba0 047e3273 chrome_1c30000!WebCore::ScrollView::addChild+0x7a [z:\code\trunk\src\third_party\webkit\webcore\platform\scrollview.cpp @ 69]
0012ebc8 047e316f chrome_1c30000!WebCore::moveWidgetToParentSoon+0x43 [z:\code\trunk\src\third_party\webkit\webcore\rendering\renderwidget.cpp @ 91]
0012ec20 04aceff2 chrome_1c30000!WebCore::RenderWidget::setWidget+0x18f [z:\code\trunk\src\third_party\webkit\webcore\rendering\renderwidget.cpp @ 211]
0012ec38 0472b56b chrome_1c30000!WebCore::RenderPart::setWidget+0x52 [z:\code\trunk\src\third_party\webkit\webcore\rendering\renderpart.cpp @ 54]
0012ec94 0472a732 chrome_1c30000!WebCore::SubframeLoader::loadPlugin+0x1ab [z:\code\trunk\src\third_party\webkit\webcore\loader\subframeloader.cpp @ 367]
0012ed80 0479d93c chrome_1c30000!WebCore::SubframeLoader::requestObject+0x242 [z:\code\trunk\src\third_party\webkit\webcore\loader\subframeloader.cpp @ 137]
0012edfc 044cc40c chrome_1c30000!WebCore::HTMLObjectElement::updateWidget+0x21c [z:\code\trunk\src\third_party\webkit\webcore\html\htmlobjectelement.cpp @ 292]
0012ee14 044cc58f chrome_1c30000!WebCore::FrameView::updateWidget+0xfc [z:\code\trunk\src\third_party\webkit\webcore\page\frameview.cpp @ 1607]
0012ee94 044cc7bb chrome_1c30000!WebCore::FrameView::updateWidgets+0x13f [z:\code\trunk\src\third_party\webkit\webcore\page\frameview.cpp @ 1640]
0012eec8 044c94aa chrome_1c30000!WebCore::FrameView::performPostLayoutTasks+0xdb [z:\code\trunk\src\third_party\webkit\webcore\page\frameview.cpp @ 1669]
0012ef7c 044cb6b8 chrome_1c30000!WebCore::FrameView::layout+0x95a [z:\code\trunk\src\third_party\webkit\webcore\page\frameview.cpp @ 849]
0012ef8c 044cf459 chrome_1c30000!WebCore::FrameView::layoutTimerFired+0x18 [z:\code\trunk\src\third_party\webkit\webcore\page\frameview.cpp @ 1362]
0012efa0 04707559 chrome_1c30000!WebCore::Timer<WebCore::FrameView>::fired+0x29 [z:\code\trunk\src\third_party\webkit\webcore\platform\timer.h @ 98]
0012efd8 04707476 chrome_1c30000!WebCore::ThreadTimers::sharedTimerFiredInternal+0xd9 [z:\code\trunk\src\third_party\webkit\webcore\platform\threadtimers.cpp @ 112]
0012efe0 0312a24b chrome_1c30000!WebCore::ThreadTimers::sharedTimerFired+0x16 [z:\code\trunk\src\third_party\webkit\webcore\platform\threadtimers.cpp @ 91]
0012eff0 0312b0dc chrome_1c30000!webkit_glue::WebKitClientImpl::DoTimeout+0x2b [z:\code\trunk\src\webkit\glue\webkitclient_impl.h @ 65]
0012effc 0312ab94 chrome_1c30000!DispatchToMethod<webkit_glue::WebKitClientImpl,void (__thiscall webkit_glue::WebKitClientImpl::*)(void)>+0xc [z:\code\trunk\src\base\tuple.h @ 537]
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list