Hello,

Ones again about creating new window & policy. Please, have a look.

Say, we have main.html as below:

<html>
<body>
   <a href="main.html" target="_blank">Open new window</a>
   <a href="javascript:window.open('main.html','_blank')">Open new window, 
JS</a>
</body>
</html>

The first link opens main.html in new window, the second does the same
by means of javascript.

However, I'm observing quite different behavior of WebCore.

A new window is opened by a client via ChromeClient::createWindow callback.
There's also a mechanism to check NewWindow policy, implemented
as FrameLoaderClient::dispatchDecidePolicyForNewWindowAction.

Now, when I'm clicking the first link, ChromeClient::createWindow is not called
at all, FrameLoaderClient::dispatchDecidePolicyForNewWindowAction is called.

Simple grep in WebCore sources gives the following. ChromeClient::createWindow
is called only by:

- ContextMenuController (on selecting "Open link in new window" item)
- javascript (in kjs_window.cpp, on executing 'open')

With the second link there's another issue. Just the reverse, 
ChromeClient::createWindow
is called, FrameLoaderClient::dispatchDecidePolicyForNewWindowAction is not...

Why that difference? How to open new window in the first case, and why policy 
check
is not triggered in the second?

Thanks,
Anton.
_______________________________________________
webkit-dev mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to