summaryrefslogtreecommitdiffstats
path: root/WebCore/plugins
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2010-04-27 16:23:55 +0100
committerSteve Block <steveblock@google.com>2010-04-27 17:07:03 +0100
commit692e5dbf12901edacf14812a6fae25462920af42 (patch)
treed62802373a429e0a9dc093b6046c166b2c514285 /WebCore/plugins
parente24bea4efef1c414137d36a9778aa4e142e10c7d (diff)
downloadexternal_webkit-692e5dbf12901edacf14812a6fae25462920af42.zip
external_webkit-692e5dbf12901edacf14812a6fae25462920af42.tar.gz
external_webkit-692e5dbf12901edacf14812a6fae25462920af42.tar.bz2
Merge webkit.org at r55033 : Initial merge by git
Change-Id: I98a4af828067cc243ec3dc5e5826154dd88074b5
Diffstat (limited to 'WebCore/plugins')
-rw-r--r--WebCore/plugins/PluginDatabase.cpp5
-rw-r--r--WebCore/plugins/PluginPackage.cpp2
-rw-r--r--WebCore/plugins/PluginPackage.h1
-rw-r--r--WebCore/plugins/PluginView.cpp43
-rw-r--r--WebCore/plugins/PluginView.h13
-rw-r--r--WebCore/plugins/gtk/PluginPackageGtk.cpp17
-rw-r--r--WebCore/plugins/gtk/PluginViewGtk.cpp16
-rw-r--r--WebCore/plugins/mac/PluginPackageMac.cpp4
-rw-r--r--WebCore/plugins/qt/PluginPackageQt.cpp4
-rw-r--r--WebCore/plugins/symbian/PluginPackageSymbian.cpp5
-rw-r--r--WebCore/plugins/win/PluginPackageWin.cpp4
11 files changed, 84 insertions, 30 deletions
diff --git a/WebCore/plugins/PluginDatabase.cpp b/WebCore/plugins/PluginDatabase.cpp
index 96e8aba..703ac87 100644
--- a/WebCore/plugins/PluginDatabase.cpp
+++ b/WebCore/plugins/PluginDatabase.cpp
@@ -262,8 +262,9 @@ PluginPackage* PluginDatabase::findPlugin(const KURL& url, String& mimeType)
if (extensionPos != -1) {
String extension = filename.substring(extensionPos + 1);
- mimeType = MIMETypeForExtension(extension);
- plugin = pluginForMIMEType(mimeType);
+ String mimeTypeForExtension = MIMETypeForExtension(extension);
+ if (plugin = pluginForMIMEType(mimeTypeForExtension))
+ mimeType = mimeTypeForExtension;
}
}
}
diff --git a/WebCore/plugins/PluginPackage.cpp b/WebCore/plugins/PluginPackage.cpp
index 9c12663..5949546 100644
--- a/WebCore/plugins/PluginPackage.cpp
+++ b/WebCore/plugins/PluginPackage.cpp
@@ -259,7 +259,7 @@ void PluginPackage::initializeBrowserFuncs()
{
memset(&m_browserFuncs, 0, sizeof(m_browserFuncs));
m_browserFuncs.size = sizeof(m_browserFuncs);
- m_browserFuncs.version = NP_VERSION_MINOR;
+ m_browserFuncs.version = NPVersion();
m_browserFuncs.geturl = NPN_GetURL;
m_browserFuncs.posturl = NPN_PostURL;
diff --git a/WebCore/plugins/PluginPackage.h b/WebCore/plugins/PluginPackage.h
index a3937f1..aa2d272 100644
--- a/WebCore/plugins/PluginPackage.h
+++ b/WebCore/plugins/PluginPackage.h
@@ -55,6 +55,7 @@ namespace WebCore {
const String& path() const { return m_path; }
const String& fileName() const { return m_fileName; }
const String& parentDirectory() const { return m_parentDirectory; }
+ uint16 NPVersion() const;
time_t lastModified() const { return m_lastModified; }
const MIMEToDescriptionsMap& mimeToDescriptions() const { return m_mimeToDescriptions; }
diff --git a/WebCore/plugins/PluginView.cpp b/WebCore/plugins/PluginView.cpp
index aadf0d2..2317849 100644
--- a/WebCore/plugins/PluginView.cpp
+++ b/WebCore/plugins/PluginView.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
* Copyright (C) 2008 Collabora Ltd. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,21 +32,28 @@
#include "Document.h"
#include "DocumentLoader.h"
#include "Element.h"
+#include "FocusController.h"
+#include "Frame.h"
#include "FrameLoader.h"
+#include "FrameLoaderClient.h"
#include "FrameTree.h"
-#include "Frame.h"
#include "FrameView.h"
#include "GraphicsContext.h"
-#include "Image.h"
#include "HTMLNames.h"
#include "HTMLPlugInElement.h"
+<<<<<<< HEAD
+=======
+#include "Image.h"
+#include "JSDOMBinding.h"
+#include "JSDOMWindow.h"
+>>>>>>> webkit.org at r55033
#include "KeyboardEvent.h"
#include "MIMETypeRegistry.h"
#include "MouseEvent.h"
#include "NotImplemented.h"
#include "Page.h"
-#include "FocusController.h"
#include "PlatformMouseEvent.h"
+<<<<<<< HEAD
#if OS(WINDOWS) && ENABLE(NETSCAPE_PLUGIN_API)
#include "PluginMessageThrottlerWin.h"
#endif
@@ -54,12 +61,15 @@
#include "ScriptController.h"
#include "ScriptValue.h"
#include "SecurityOrigin.h"
+=======
+>>>>>>> webkit.org at r55033
#include "PluginDatabase.h"
#include "PluginDebug.h"
#include "PluginMainThreadScheduler.h"
#include "PluginPackage.h"
#include "RenderBox.h"
#include "RenderObject.h"
+<<<<<<< HEAD
#include "npruntime_impl.h"
#include "Settings.h"
#include <wtf/ASCIICType.h>
@@ -74,10 +84,22 @@
#include "JSDOMWindow.h"
#include "JSDOMBinding.h"
#include "c_instance.h"
+=======
+#include "ScriptController.h"
+#include "ScriptValue.h"
+#include "SecurityOrigin.h"
+#include "Settings.h"
+#include "c_instance.h"
+#include "npruntime_impl.h"
+>>>>>>> webkit.org at r55033
#include "runtime_root.h"
#include <runtime/JSLock.h>
#include <runtime/JSValue.h>
+#if OS(WINDOWS) && ENABLE(NETSCAPE_PLUGIN_API)
+#include "PluginMessageThrottlerWin.h"
+#endif
+
using JSC::ExecState;
using JSC::JSLock;
using JSC::JSObject;
@@ -221,8 +243,8 @@ bool PluginView::startOrAddToUnstartedList()
// We only delay starting the plug-in if we're going to kick off the load
// ourselves. Otherwise, the loader will try to deliver data before we've
// started the plug-in.
- if (!m_loadManually && !m_parentFrame->page()->canStartPlugins()) {
- m_parentFrame->page()->addUnstartedPlugin(this);
+ if (!m_loadManually && !m_parentFrame->page()->canStartMedia()) {
+ m_parentFrame->page()->addMediaCanStartListener(this);
m_isWaitingToStart = true;
return true;
}
@@ -291,6 +313,13 @@ bool PluginView::start()
return true;
}
+void PluginView::mediaCanStart()
+{
+ ASSERT(!m_isStarted);
+ if (!start())
+ parentFrame()->loader()->client()->dispatchDidFailToStartPlugin(this);
+}
+
PluginView::~PluginView()
{
LOG(Plugins, "PluginView::~PluginView()");
@@ -329,7 +358,7 @@ void PluginView::removeFromUnstartedListIfNecessary()
if (!m_parentFrame->page())
return;
- m_parentFrame->page()->removeUnstartedPlugin(this);
+ m_parentFrame->page()->removeMediaCanStartListener(this);
}
void PluginView::stop()
diff --git a/WebCore/plugins/PluginView.h b/WebCore/plugins/PluginView.h
index f14eb3d..3f0b49d 100644
--- a/WebCore/plugins/PluginView.h
+++ b/WebCore/plugins/PluginView.h
@@ -1,6 +1,6 @@
/*
- * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
* Copyright (C) 2008 Collabora Ltd. All rights reserved.
* Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in>
*
@@ -26,15 +26,14 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef PluginView_H
-#define PluginView_H
+#ifndef PluginView_h
+#define PluginView_h
#include "CString.h"
#include "FrameLoadRequest.h"
#include "HaltablePlugin.h"
#include "IntRect.h"
-#include "KURL.h"
-#include "PlatformString.h"
+#include "MediaCanStartListener.h"
#include "PluginStream.h"
#include "ResourceRequest.h"
#include "Timer.h"
@@ -128,7 +127,7 @@ namespace WebCore {
virtual void didFail(const ResourceError&) = 0;
};
- class PluginView : public Widget, private PluginStreamClient, public PluginManualLoader, private HaltablePlugin {
+ class PluginView : public Widget, private PluginStreamClient, public PluginManualLoader, private HaltablePlugin, private MediaCanStartListener {
public:
static PassRefPtr<PluginView> create(Frame* parentFrame, const IntSize&, Element*, const KURL&, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually);
virtual ~PluginView();
@@ -264,6 +263,8 @@ namespace WebCore {
void invalidateWindowlessPluginRect(const IntRect&);
+ virtual void mediaCanStart();
+
#if OS(WINDOWS) && ENABLE(NETSCAPE_PLUGIN_API)
void paintWindowedPluginIntoContext(GraphicsContext*, const IntRect&);
static HDC WINAPI hookedBeginPaint(HWND, PAINTSTRUCT*);
diff --git a/WebCore/plugins/gtk/PluginPackageGtk.cpp b/WebCore/plugins/gtk/PluginPackageGtk.cpp
index bcbd519..271a4a8 100644
--- a/WebCore/plugins/gtk/PluginPackageGtk.cpp
+++ b/WebCore/plugins/gtk/PluginPackageGtk.cpp
@@ -29,9 +29,11 @@
#include "config.h"
#include "PluginPackage.h"
+#include <gio/gio.h>
#include <stdio.h>
#include "CString.h"
+#include "GOwnPtr.h"
#include "MIMETypeRegistry.h"
#include "NotImplemented.h"
#include "npruntime_impl.h"
@@ -105,7 +107,16 @@ bool PluginPackage::load()
return true;
}
- m_module = g_module_open((m_path.utf8()).data(), G_MODULE_BIND_LOCAL);
+ GOwnPtr<gchar> finalPath(g_strdup(m_path.utf8().data()));
+ while (g_file_test(finalPath.get(), G_FILE_TEST_IS_SYMLINK)) {
+ GOwnPtr<GFile> file(g_file_new_for_path(finalPath.get()));
+ GOwnPtr<gchar> linkPath(g_file_read_link(finalPath.get(), 0));
+
+ GOwnPtr<GFile> resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
+ finalPath.set(g_file_get_path(resolvedFile.get()));
+ }
+
+ m_module = g_module_open(finalPath.get(), G_MODULE_BIND_LOCAL);
if (!m_module) {
LOG(Plugins,"Module Load Failed :%s, Error:%s\n", (m_path.utf8()).data(), g_module_error());
@@ -146,4 +157,8 @@ abort:
return false;
}
+uint16 PluginPackage::NPVersion() const
+{
+ return NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL;
+}
}
diff --git a/WebCore/plugins/gtk/PluginViewGtk.cpp b/WebCore/plugins/gtk/PluginViewGtk.cpp
index 6d992fb..222584c 100644
--- a/WebCore/plugins/gtk/PluginViewGtk.cpp
+++ b/WebCore/plugins/gtk/PluginViewGtk.cpp
@@ -158,29 +158,19 @@ void PluginView::updatePluginWidget()
void PluginView::setFocus()
{
- if (platformPluginWidget())
- gtk_widget_grab_focus(platformPluginWidget());
-
+ ASSERT(platformPluginWidget() == platformWidget());
Widget::setFocus();
}
void PluginView::show()
{
- setSelfVisible(true);
-
- if (isParentVisible() && platformPluginWidget())
- gtk_widget_show(platformPluginWidget());
-
+ ASSERT(platformPluginWidget() == platformWidget());
Widget::show();
}
void PluginView::hide()
{
- setSelfVisible(false);
-
- if (isParentVisible() && platformPluginWidget())
- gtk_widget_hide(platformPluginWidget());
-
+ ASSERT(platformPluginWidget() == platformWidget());
Widget::hide();
}
diff --git a/WebCore/plugins/mac/PluginPackageMac.cpp b/WebCore/plugins/mac/PluginPackageMac.cpp
index 4aef3a0..be69242 100644
--- a/WebCore/plugins/mac/PluginPackageMac.cpp
+++ b/WebCore/plugins/mac/PluginPackageMac.cpp
@@ -302,6 +302,10 @@ abort:
return false;
}
+uint16 PluginPackage::NPVersion() const
+{
+ return NP_VERSION_MINOR;
+}
} // namespace WebCore
#else
diff --git a/WebCore/plugins/qt/PluginPackageQt.cpp b/WebCore/plugins/qt/PluginPackageQt.cpp
index 8119924..74deaf6 100644
--- a/WebCore/plugins/qt/PluginPackageQt.cpp
+++ b/WebCore/plugins/qt/PluginPackageQt.cpp
@@ -143,4 +143,8 @@ abort:
return false;
}
+uint16 PluginPackage::NPVersion() const
+{
+ return NP_VERSION_MINOR;
+}
}
diff --git a/WebCore/plugins/symbian/PluginPackageSymbian.cpp b/WebCore/plugins/symbian/PluginPackageSymbian.cpp
index d5c7533..44f8152 100644
--- a/WebCore/plugins/symbian/PluginPackageSymbian.cpp
+++ b/WebCore/plugins/symbian/PluginPackageSymbian.cpp
@@ -173,5 +173,10 @@ void PluginPackage::unload()
delete m_pluginLoader;
m_pluginLoader = 0;
}
+
+uint16 PluginPackage::NPVersion() const
+{
+ return NP_VERSION_MINOR;
+}
}
diff --git a/WebCore/plugins/win/PluginPackageWin.cpp b/WebCore/plugins/win/PluginPackageWin.cpp
index 233b10c..203fb60 100644
--- a/WebCore/plugins/win/PluginPackageWin.cpp
+++ b/WebCore/plugins/win/PluginPackageWin.cpp
@@ -335,4 +335,8 @@ bool PluginPackage::equal(const PluginPackage& a, const PluginPackage& b)
return true;
}
+uint16 PluginPackage::NPVersion() const
+{
+ return NP_VERSION_MINOR;
+}
}