diff options
author | Steve Block <steveblock@google.com> | 2010-04-27 16:23:55 +0100 |
---|---|---|
committer | Steve Block <steveblock@google.com> | 2010-04-27 17:07:03 +0100 |
commit | 692e5dbf12901edacf14812a6fae25462920af42 (patch) | |
tree | d62802373a429e0a9dc093b6046c166b2c514285 /WebCore/plugins | |
parent | e24bea4efef1c414137d36a9778aa4e142e10c7d (diff) | |
download | external_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.cpp | 5 | ||||
-rw-r--r-- | WebCore/plugins/PluginPackage.cpp | 2 | ||||
-rw-r--r-- | WebCore/plugins/PluginPackage.h | 1 | ||||
-rw-r--r-- | WebCore/plugins/PluginView.cpp | 43 | ||||
-rw-r--r-- | WebCore/plugins/PluginView.h | 13 | ||||
-rw-r--r-- | WebCore/plugins/gtk/PluginPackageGtk.cpp | 17 | ||||
-rw-r--r-- | WebCore/plugins/gtk/PluginViewGtk.cpp | 16 | ||||
-rw-r--r-- | WebCore/plugins/mac/PluginPackageMac.cpp | 4 | ||||
-rw-r--r-- | WebCore/plugins/qt/PluginPackageQt.cpp | 4 | ||||
-rw-r--r-- | WebCore/plugins/symbian/PluginPackageSymbian.cpp | 5 | ||||
-rw-r--r-- | WebCore/plugins/win/PluginPackageWin.cpp | 4 |
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; +} } |