diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2013-09-13 12:51:20 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-19 20:50:05 +0200 |
commit | d441d6f39bb846989d95bcf5caf387b42414718d (patch) | |
tree | e367e64a75991c554930278175d403c072de6bb8 /Source/WebCore/plugins/PluginView.cpp | |
parent | 0060b2994c07842f4c59de64b5e3e430525c4b90 (diff) | |
download | qtwebkit-d441d6f39bb846989d95bcf5caf387b42414718d.tar.gz |
Import Qt5x2 branch of QtWebkit for Qt 5.2
Importing a new snapshot of webkit.
Change-Id: I2d01ad12cdc8af8cb015387641120a9d7ea5f10c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Diffstat (limited to 'Source/WebCore/plugins/PluginView.cpp')
-rw-r--r-- | Source/WebCore/plugins/PluginView.cpp | 78 |
1 files changed, 31 insertions, 47 deletions
diff --git a/Source/WebCore/plugins/PluginView.cpp b/Source/WebCore/plugins/PluginView.cpp index cdf8a78bb..74fd5d79a 100644 --- a/Source/WebCore/plugins/PluginView.cpp +++ b/Source/WebCore/plugins/PluginView.cpp @@ -28,9 +28,7 @@ #include "config.h" #include "PluginView.h" -#if USE(JSC) #include "BridgeJSC.h" -#endif #include "Chrome.h" #include "CookieJar.h" #include "Document.h" @@ -38,6 +36,7 @@ #include "Element.h" #include "FocusController.h" #include "Frame.h" +#include "FrameLoadRequest.h" #include "FrameLoader.h" #include "FrameLoaderClient.h" #include "FrameTree.h" @@ -46,6 +45,8 @@ #include "HTMLNames.h" #include "HTMLPlugInElement.h" #include "Image.h" +#include "JSDOMBinding.h" +#include "JSDOMWindow.h" #include "KeyboardEvent.h" #include "MIMETypeRegistry.h" #include "MouseEvent.h" @@ -59,11 +60,17 @@ #include "ProxyServer.h" #include "RenderBox.h" #include "RenderObject.h" +#include "ScriptController.h" #include "ScriptValue.h" #include "SecurityOrigin.h" #include "Settings.h" +#include "UserGestureIndicator.h" #include "WheelEvent.h" +#include "c_instance.h" #include "npruntime_impl.h" +#include "runtime_root.h" +#include <runtime/JSCJSValue.h> +#include <runtime/JSLock.h> #include <wtf/ASCIICType.h> #include <wtf/text/WTFString.h> @@ -71,19 +78,10 @@ #include "PluginMessageThrottlerWin.h" #endif -#if USE(JSC) -#include "JSDOMBinding.h" -#include "JSDOMWindow.h" -#include "c_instance.h" -#include "runtime_root.h" -#include <runtime/JSLock.h> -#include <runtime/JSValue.h> - using JSC::ExecState; using JSC::JSLock; using JSC::JSObject; using JSC::JSValue; -#endif #if ENABLE(NETSCAPE_PLUGIN_API) @@ -158,6 +156,11 @@ void PluginView::frameRectsChanged() updatePluginWidget(); } +void PluginView::clipRectChanged() +{ + updatePluginWidget(); +} + void PluginView::handleEvent(Event* event) { if (!m_plugin || m_isWindowed) @@ -244,9 +247,7 @@ bool PluginView::start() NPError npErr; { PluginView::setCurrentPluginView(this); -#if USE(JSC) - JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonJSGlobalData()); -#endif + JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonVM()); setCallingPlugin(true); npErr = m_plugin->pluginFuncs()->newp((NPMIMEType)m_mimeType.utf8().data(), m_instance, m_mode, m_paramCount, m_paramNames, m_paramValues, NULL); setCallingPlugin(false); @@ -303,8 +304,6 @@ PluginView::~PluginView() stop(); - deleteAllValues(m_requests); - freeStringArray(m_paramNames, m_paramCount); freeStringArray(m_paramValues, m_paramCount); @@ -334,9 +333,7 @@ void PluginView::stop() m_isStarted = false; -#if USE(JSC) - JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonJSGlobalData()); -#endif + JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonVM()); #if ENABLE(NETSCAPE_PLUGIN_API) #if defined(XP_WIN) && !PLATFORM(GTK) @@ -433,6 +430,8 @@ void PluginView::performRequest(PluginRequest* request) KURL requestURL = request->frameLoadRequest().resourceRequest().url(); String jsString = scriptStringIfJavaScriptURL(requestURL); + UserGestureIndicator gestureIndicator(request->shouldAllowPopups() ? DefinitelyProcessingUserGesture : PossiblyProcessingUserGesture); + if (jsString.isNull()) { // if this is not a targeted request, create a stream for it. otherwise, // just pass it off to the loader @@ -453,9 +452,7 @@ void PluginView::performRequest(PluginRequest* request) // FIXME: <rdar://problem/4807469> This should be sent when the document has finished loading if (request->sendNotification()) { PluginView::setCurrentPluginView(this); -#if USE(JSC) - JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonJSGlobalData()); -#endif + JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonVM()); setCallingPlugin(true); m_plugin->pluginFuncs()->urlnotify(m_instance, requestURL.string().utf8().data(), NPRES_DONE, request->notifyData()); setCallingPlugin(false); @@ -476,11 +473,7 @@ void PluginView::performRequest(PluginRequest* request) if (targetFrameName.isNull()) { String resultString; -#if USE(JSC) ScriptState* scriptState = m_parentFrame->script()->globalObject(pluginWorld())->globalExec(); -#elif USE(V8) - ScriptState* scriptState = 0; // Not used with V8 -#endif CString cstr; if (result.getString(scriptState, resultString)) cstr = resultString.utf8(); @@ -494,22 +487,21 @@ void PluginView::performRequest(PluginRequest* request) void PluginView::requestTimerFired(Timer<PluginView>* timer) { ASSERT_UNUSED(timer, timer == &m_requestTimer); - ASSERT(m_requests.size() > 0); + ASSERT(!m_requests.isEmpty()); ASSERT(!m_isJavaScriptPaused); - PluginRequest* request = m_requests[0]; + OwnPtr<PluginRequest> request = m_requests[0].release(); m_requests.remove(0); // Schedule a new request before calling performRequest since the call to // performRequest can cause the plugin view to be deleted. - if (m_requests.size() > 0) + if (!m_requests.isEmpty()) m_requestTimer.startOneShot(0); - performRequest(request); - delete request; + performRequest(request.get()); } -void PluginView::scheduleRequest(PluginRequest* request) +void PluginView::scheduleRequest(PassOwnPtr<PluginRequest> request) { m_requests.append(request); @@ -545,8 +537,7 @@ NPError PluginView::load(const FrameLoadRequest& frameLoadRequest, bool sendNoti } else if (!m_parentFrame->document()->securityOrigin()->canDisplay(url)) return NPERR_GENERIC_ERROR; - PluginRequest* request = new PluginRequest(frameLoadRequest, sendNotification, notifyData, arePopupsAllowed()); - scheduleRequest(request); + scheduleRequest(adoptPtr(new PluginRequest(frameLoadRequest, sendNotification, notifyData, arePopupsAllowed()))); return NPERR_NO_ERROR; } @@ -623,7 +614,7 @@ NPError PluginView::destroyStream(NPStream* stream, NPReason reason) void PluginView::status(const char* message) { if (Page* page = m_parentFrame->page()) - page->chrome()->setStatusbarText(m_parentFrame.get(), String::fromUTF8(message)); + page->chrome().setStatusbarText(m_parentFrame.get(), String::fromUTF8(message)); } NPError PluginView::setValue(NPPVariable variable, void* value) @@ -734,9 +725,7 @@ NPObject* PluginView::npObject() NPError npErr; { PluginView::setCurrentPluginView(this); -#if USE(JSC) - JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonJSGlobalData()); -#endif + JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonVM()); setCallingPlugin(true); npErr = m_plugin->pluginFuncs()->getvalue(m_instance, NPPVpluginScriptableNPObject, &object); setCallingPlugin(false); @@ -750,7 +739,6 @@ NPObject* PluginView::npObject() } #endif -#if USE(JSC) PassRefPtr<JSC::Bindings::Instance> PluginView::bindingInstance() { #if ENABLE(NETSCAPE_PLUGIN_API) @@ -775,7 +763,6 @@ PassRefPtr<JSC::Bindings::Instance> PluginView::bindingInstance() return 0; #endif } -#endif void PluginView::disconnectStream(PluginStream* stream) { @@ -891,11 +878,10 @@ PluginView::PluginView(Frame* parentFrame, const IntSize& size, PluginPackage* p void PluginView::focusPluginElement() { - // Focus the plugin if (Page* page = m_parentFrame->page()) - page->focusController()->setFocusedNode(m_element, m_parentFrame); + page->focusController()->setFocusedElement(m_element, m_parentFrame); else - m_parentFrame->document()->setFocusedNode(m_element); + m_parentFrame->document()->setFocusedElement(m_element); } void PluginView::didReceiveResponse(const ResourceResponse& response) @@ -1356,7 +1342,7 @@ NPError PluginView::getValue(NPNVariable variable, void* value) NPObject* pluginScriptObject = 0; if (m_element->hasTagName(appletTag) || m_element->hasTagName(embedTag) || m_element->hasTagName(objectTag)) - pluginScriptObject = static_cast<HTMLPlugInElement*>(m_element)->getNPObject(); + pluginScriptObject = m_element->getNPObject(); // Return value is expected to be retained, as described here: <http://www.mozilla.org/projects/plugin/npruntime.html> if (pluginScriptObject) @@ -1507,9 +1493,7 @@ void PluginView::privateBrowsingStateChanged(bool privateBrowsingEnabled) return; PluginView::setCurrentPluginView(this); -#if USE(JSC) - JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonJSGlobalData()); -#endif + JSC::JSLock::DropAllLocks dropAllLocks(JSDOMWindowBase::commonVM()); setCallingPlugin(true); NPBool value = privateBrowsingEnabled; setValue(m_instance, NPNVprivateModeBool, &value); |