[Webkit-unassigned] [Bug 70339] New: NPN_ConvertPoint does not work the first time inside NPP_SetWindow

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Oct 18 10:37:06 PDT 2011


https://bugs.webkit.org/show_bug.cgi?id=70339

           Summary: NPN_ConvertPoint does not work the first time inside
                    NPP_SetWindow
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Macintosh
               URL: n/a
        OS/Version: Mac OS X 10.6
            Status: UNCONFIRMED
          Severity: Normal
          Priority: P2
         Component: Plug-ins
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: rsherry at adobe.com


When I get the first NPP_SetWindow call that has non-zero clipping in the npwindow, I want to get the screen coords of the plug-in.

They are wrong: 0,0 in plug-in coords gives me 0,-<pluginheight>.

I debugged it and the reason appears to be that the plug-in process is getting a geometryChanged message *first*, before ever getting the real view/window frames, and *then* getting the view frame-changed notification.  When it gets the geometryChanged, it calls NPP_SetWindow but the conversion depends on things that don't get set until the view frame-changed notification.

Here is the stack the first time our plug-in get NPP_SetWindow with non-zero clipping... during this time, WebKit::NetscapePlugin::m_windowFrameInScreenCoordinates and m_viewFrameInWindowCoordinates are all [0,0][0,0]:


#4    0x101020195 in WebKit::NetscapePlugin::NPP_SetWindow at NetscapePlugin.cpp:426
#5    0x10102029c in WebKit::NetscapePlugin::callSetWindow at NetscapePlugin.cpp:497
#6    0x101021ab2 in WebKit::NetscapePlugin::geometryDidChange at NetscapePlugin.cpp:676
#7    0x10116c9ee in WebKit::PluginControllerProxy::geometryDidChange at PluginControllerProxy.cpp:439
#8    0x1011726fb in CoreIPC::callMemberFunction<WebKit::PluginControllerProxy, void (WebKit::PluginControllerProxy::*)(WebCore::IntRect const&, WebCore::IntRect const&, WebKit::ShareableBitmap::Handle const&), WebCore::IntRect, WebCore::IntRect, WebKit::ShareableBitmap::Handle> at HandleMessage.h:31
#9    0x101173b4c in CoreIPC::handleMessage<Messages::PluginControllerProxy::GeometryDidChange, WebKit::PluginControllerProxy, void (WebKit::PluginControllerProxy::*)(WebCore::IntRect const&, WebCore::IntRect const&, WebKit::ShareableBitmap::Handle const&)> at HandleMessage.h:277
#10    0x101172122 in WebKit::PluginControllerProxy::didReceivePluginControllerProxyMessage at PluginControllerProxyMessageReceiver.cpp:76
#11    0x10115f6d7 in WebKit::WebProcessConnection::didReceiveMessage at WebProcessConnection.cpp:172
#12    0x101005cc4 in CoreIPC::Connection::dispatchMessage at Connection.cpp:689
#13    0x101005f0b in CoreIPC::Connection::SyncMessageState::dispatchMessages at Connection.cpp:169
#14    0x1010064af in CoreIPC::Connection::SyncMessageState::dispatchMessageAndResetDidScheduleDispatchMessagesWork at Connection.cpp:181
#15    0x101008855 in MemberFunctionWorkItem0<CoreIPC::Connection::SyncMessageState>::execute at WorkItem.h:79


This is because it hasn't yet gotten the ViewFrameDidChange notification through the proxy. It does that sometime later, in this stack:

#0    0x10102c565 in WebKit::NetscapePlugin::windowAndViewFramesChanged at NetscapePluginMac.mm:897
#1    0x1011a77c8 in WebKit::PluginControllerProxy::windowAndViewFramesChanged at PluginControllerProxyMac.mm:105
#2    0x101172bd9 in CoreIPC::callMemberFunction<WebKit::PluginControllerProxy, void (WebKit::PluginControllerProxy::*)(WebCore::IntRect const&, WebCore::IntRect const&), WebCore::IntRect, WebCore::IntRect> at HandleMessage.h:25
#3    0x101173a70 in CoreIPC::handleMessage<Messages::PluginControllerProxy::WindowAndViewFramesChanged, WebKit::PluginControllerProxy, void (WebKit::PluginControllerProxy::*)(WebCore::IntRect const&, WebCore::IntRect const&)> at HandleMessage.h:277
#4    0x1011724be in WebKit::PluginControllerProxy::didReceivePluginControllerProxyMessage at PluginControllerProxyMessageReceiver.cpp:129
#5    0x10115f6d7 in WebKit::WebProcessConnection::didReceiveMessage at WebProcessConnection.cpp:172
#6    0x101005cc4 in CoreIPC::Connection::dispatchMessage at Connection.cpp:689
#7    0x101005e38 in CoreIPC::Connection::dispatchMessages at Connection.cpp:716
#8    0x10100876d in MemberFunctionWorkItem0<CoreIPC::Connection>::execute at WorkItem.h:79
#9    0x101047c81 in RunLoop::performWork at RunLoop.cpp:63
#10    0x101048dd9 in RunLoop::performWork at RunLoopMac.mm:37

...but this doesn't result in any calls to NPP_SetWindow, so I don't know when I can call NPN_ConvertPoint() and get the real screen coords.

Full disclosure: my webkit sources are about two weeks old, not the most current.

-- 
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