summaryrefslogtreecommitdiff
path: root/Source/WebCore/plugins/PluginView.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2013-09-13 12:51:20 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-19 20:50:05 +0200
commitd441d6f39bb846989d95bcf5caf387b42414718d (patch)
treee367e64a75991c554930278175d403c072de6bb8 /Source/WebCore/plugins/PluginView.cpp
parent0060b2994c07842f4c59de64b5e3e430525c4b90 (diff)
downloadqtwebkit-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.cpp78
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);