[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc
andersca at apple.com
andersca at apple.com
Wed Dec 22 13:39:23 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 6ff86ab9598688b4f930666f281b0967df792d75
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Sep 22 18:14:59 2010 +0000
Random plug-in cleanups
https://bugs.webkit.org/show_bug.cgi?id=46279
Reviewed by Darin Adler.
* WebProcess/Plugins/Plugin.cpp:
(WebKit::Plugin::Parameters::encode):
(WebKit::Plugin::Parameters::decode):
Add CoreIPC coding support for the Plugin::Parameters struct.
* WebProcess/Plugins/PluginController.h:
Add pluginProcessCrashed pure virtual member function.
* WebProcess/Plugins/PluginView.cpp:
(WebKit::PluginView::handleEvent):
handleEvent can be called when m_plugin is null.
(WebKit::PluginView::pluginProcessCrashed):
Ask the renderer to show the crashed plug-in indicator.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68058 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 1c97b0e..769ac90 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,5 +1,27 @@
2010-09-22 Anders Carlsson <andersca at apple.com>
+ Reviewed by Darin Adler.
+
+ Random plug-in cleanups
+ https://bugs.webkit.org/show_bug.cgi?id=46279
+
+ * WebProcess/Plugins/Plugin.cpp:
+ (WebKit::Plugin::Parameters::encode):
+ (WebKit::Plugin::Parameters::decode):
+ Add CoreIPC coding support for the Plugin::Parameters struct.
+
+ * WebProcess/Plugins/PluginController.h:
+ Add pluginProcessCrashed pure virtual member function.
+
+ * WebProcess/Plugins/PluginView.cpp:
+ (WebKit::PluginView::handleEvent):
+ handleEvent can be called when m_plugin is null.
+
+ (WebKit::PluginView::pluginProcessCrashed):
+ Ask the renderer to show the crashed plug-in indicator.
+
+2010-09-22 Anders Carlsson <andersca at apple.com>
+
Reviewed by John Sullivan.
Don't listen for some window notifications on all windows
diff --git a/WebKit2/WebProcess/Plugins/Plugin.cpp b/WebKit2/WebProcess/Plugins/Plugin.cpp
index 12650e0..32ad92d 100644
--- a/WebKit2/WebProcess/Plugins/Plugin.cpp
+++ b/WebKit2/WebProcess/Plugins/Plugin.cpp
@@ -25,10 +25,46 @@
#include "Plugin.h"
+#include "WebCoreArgumentCoders.h"
+
using namespace WebCore;
namespace WebKit {
+void Plugin::Parameters::encode(CoreIPC::ArgumentEncoder* encoder) const
+{
+ encoder->encode(url.string());
+ encoder->encode(names);
+ encoder->encode(values);
+ encoder->encode(mimeType);
+ encoder->encode(loadManually);
+}
+
+bool Plugin::Parameters::decode(CoreIPC::ArgumentDecoder* decoder, Parameters& parameters)
+{
+ String urlString;
+ if (!decoder->decode(urlString))
+ return false;
+ // FIXME: We can't assume that the url passed in here is valid.
+ parameters.url = KURL(ParsedURLString, urlString);
+
+ if (!decoder->decode(parameters.names))
+ return false;
+ if (!decoder->decode(parameters.values))
+ return false;
+ if (!decoder->decode(parameters.mimeType))
+ return false;
+ if (!decoder->decode(parameters.loadManually))
+ return false;
+
+ if (parameters.names.size() != parameters.values.size()) {
+ decoder->markInvalid();
+ return false;
+ }
+
+ return true;
+}
+
Plugin::Plugin()
{
}
diff --git a/WebKit2/WebProcess/Plugins/Plugin.h b/WebKit2/WebProcess/Plugins/Plugin.h
index bfaba4e..fc08be7 100644
--- a/WebKit2/WebProcess/Plugins/Plugin.h
+++ b/WebKit2/WebProcess/Plugins/Plugin.h
@@ -33,6 +33,11 @@
struct NPObject;
+namespace CoreIPC {
+ class ArgumentEncoder;
+ class ArgumentDecoder;
+}
+
namespace WebCore {
class GraphicsContext;
class IntRect;
@@ -53,6 +58,9 @@ public:
Vector<String> values;
String mimeType;
bool loadManually;
+
+ void encode(CoreIPC::ArgumentEncoder*) const;
+ static bool decode(CoreIPC::ArgumentDecoder*, Parameters&);
};
virtual ~Plugin();
diff --git a/WebKit2/WebProcess/Plugins/PluginController.h b/WebKit2/WebProcess/Plugins/PluginController.h
index 45883dc..0448ede 100644
--- a/WebKit2/WebProcess/Plugins/PluginController.h
+++ b/WebKit2/WebProcess/Plugins/PluginController.h
@@ -80,6 +80,9 @@ public:
virtual bool isAcceleratedCompositingEnabled() = 0;
#endif
+ // Tells the controller that the plug-in process has crashed.
+ virtual void pluginProcessCrashed() = 0;
+
protected:
virtual ~PluginController() { }
};
diff --git a/WebKit2/WebProcess/Plugins/PluginView.cpp b/WebKit2/WebProcess/Plugins/PluginView.cpp
index d7bb0ea..26e39b0 100644
--- a/WebKit2/WebProcess/Plugins/PluginView.cpp
+++ b/WebKit2/WebProcess/Plugins/PluginView.cpp
@@ -40,6 +40,7 @@
#include <WebCore/HTMLPlugInElement.h>
#include <WebCore/HostWindow.h>
#include <WebCore/NetscapePlugInStreamLoader.h>
+#include <WebCore/RenderEmbeddedObject.h>
#include <WebCore/RenderLayer.h>
#include <WebCore/ScrollView.h>
#include <WebCore/Settings.h>
@@ -457,6 +458,9 @@ void PluginView::setParent(ScrollView* scrollView)
void PluginView::handleEvent(Event* event)
{
+ if (!m_plugin)
+ return;
+
const WebEvent* currentEvent = WebPage::currentEvent();
if (!currentEvent)
return;
@@ -805,6 +809,14 @@ bool PluginView::isAcceleratedCompositingEnabled()
return settings->acceleratedCompositingEnabled();
}
+void PluginView::pluginProcessCrashed()
+{
+ if (RenderEmbeddedObject* renderer = toRenderEmbeddedObject(m_pluginElement->renderer()))
+ renderer->setShowsCrashedPluginIndicator();
+
+ invalidateRect(frameRect());
+}
+
void PluginView::didFinishLoad(WebFrame* webFrame)
{
RefPtr<URLRequest> request = m_pendingFrameLoads.take(webFrame);
diff --git a/WebKit2/WebProcess/Plugins/PluginView.h b/WebKit2/WebProcess/Plugins/PluginView.h
index 3838c1d..88b4318 100644
--- a/WebKit2/WebProcess/Plugins/PluginView.h
+++ b/WebKit2/WebProcess/Plugins/PluginView.h
@@ -123,6 +123,7 @@ private:
virtual bool evaluate(NPObject*, const String&scriptString, NPVariant* result, bool allowPopups);
virtual void setStatusbarText(const String&);
virtual bool isAcceleratedCompositingEnabled();
+ virtual void pluginProcessCrashed();
// WebFrame::LoadListener
virtual void didFinishLoad(WebFrame*);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list