Bug 32886 - figure out which behavior is right for plugins/get-url-with-blank-target.html
Summary: figure out which behavior is right for plugins/get-url-with-blank-target.html
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit Misc. (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC OS X 10.5
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-12-22 15:24 PST by Dirk Pranke
Modified: 2010-04-06 16:42 PDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dirk Pranke 2009-12-22 15:24:46 PST
Supposedly plugins/get-url-with-blank-target produces one behavior on Safari/Mac , and platform/chromium/plugins/get-url-with-blank-target produces another on Safari/Win, Chromium, and FF. We should figure out which is "right" and converge.
Comment 1 Robert Hogan 2010-01-07 12:40:00 PST
(In reply to comment #0)
> Supposedly plugins/get-url-with-blank-target produces one behavior on
> Safari/Mac , and platform/chromium/plugins/get-url-with-blank-target produces
> another on Safari/Win, Chromium, and FF. We should figure out which is "right"
> and converge.

This test is very Mac-specific.

It's testing the following code in WebKit/mac/Plugins/WebNetscapePluginView.mm:
http://trac.webkit.org/browser/trunk/WebKit/mac/Plugins/WebNetscapePluginView.mm#L1625

This mac-specific behaviour is related to the fact they create a new webview for requests with a "_blank" target, and is the subject of a fixme in that code.

Other ports follow the vanilla code chain, which is as follows:

NPError PluginView::getURLNotify(const char* url, const char* target, void* notifyData)
{
<..>
    return load(frameLoadRequest, true, notifyData);
}

void PluginView::performRequest(PluginRequest* request)
{
<..>
            m_parentFrame->loader()->load(request->frameLoadRequest().resourceRequest(), targetFrameName, false);

            if (request->sendNotification()) {
                PluginView::setCurrentPluginView(this);
                JSC::JSLock::DropAllLocks dropAllLocks(JSC::SilenceAssertionsOnly);
                setCallingPlugin(true);
                m_plugin->pluginFuncs()->urlnotify(m_instance, requestURL.string().utf8().data(), NPRES_DONE, request->notifyData());
<..>
}

So this test should probably just be move to LayoutTests/mac/plugins, as it's not relevant to other platforms..
Comment 2 Dirk Pranke 2010-04-06 16:42:12 PDT
I am not currently working on this, nor do I expect to be in the near future, so I am disclaiming ownership in case someone else wants to take a look.