[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 15:23:14 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 37694a234c595b98509d6b1f44395237000df90a
Author: andersca at apple.com <andersca at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Nov 2 17:26:02 2010 +0000
More NPRuntime work
https://bugs.webkit.org/show_bug.cgi?id=48847
Reviewed by Adam Roben.
* PluginProcess/WebProcessConnection.cpp:
(WebKit::WebProcessConnection::~WebProcessConnection):
Add assertions.
(WebKit::WebProcessConnection::removePluginControllerProxy):
If we have no more plug-in controller proxies, invalidate the remote object map.
* Shared/Plugins/NPIdentifierData.cpp:
(WebKit::NPIdentifierData::createNPIdentifier):
Create an NPIdentifier from the given NPIdentifierData.
* Shared/Plugins/NPObjectMessageReceiver.cpp:
(WebKit::NPObjectMessageReceiver::create):
(WebKit::NPObjectMessageReceiver::NPObjectMessageReceiver):
This now takes the NPRemoteObjectMap as well as the npObjectID of the object.
(WebKit::NPObjectMessageReceiver::~NPObjectMessageReceiver):
Unregister the object.
(WebKit::NPObjectMessageReceiver::deallocate):
Delete the object.
(WebKit::NPObjectMessageReceiver::getProperty):
Ask the NPObject for the property and convert it back to an NPVariantData.
* Shared/Plugins/NPObjectProxy.cpp:
(WebKit::NPObjectProxy::~NPObjectProxy):
Send a Deallocate message to the corresponding message receiver on the other side.
(WebKit::NPObjectProxy::getProperty):
Convert the NPVariantData back to an NPVariant and return it.
* Shared/Plugins/NPRemoteObjectMap.cpp:
(WebKit::NPRemoteObjectMap::registerNPObject):
Pass the NPRemoteObjectMap and the npObjectID to NPObjectMessageReceiver::create.
(WebKit::NPRemoteObjectMap::unregisterNPObject):
Remove the given object from the map of registered objects.
(WebKit::NPRemoteObjectMap::npVariantToNPVariantData):
Given an NPVariant, create an NPVariantData. Only supports void and double types right now.
(WebKit::NPRemoteObjectMap::npVariantDataToNPVariant):
Given an NPVariantData, create an NPVariant. Only supports void and double types right now.
(WebKit::NPRemoteObjectMap::invalidate):
Add stub.
* Shared/Plugins/NPVariantData.cpp:
(WebKit::NPVariantData::NPVariantData):
Set the type to void by default.
(WebKit::NPVariantData::makeVoid):
Return a void NPVariantData.
(WebKit::NPVariantData::makeDouble):
Return an NPVariantData that contains a double value.
(WebKit::NPVariantData::encode):
Encode the NPVariantData.
(WebKit::NPVariantData::decode):
Decode the NPVariantData.
* Shared/Plugins/NPVariantData.h:
(WebKit::NPVariantData::type):
Return the type of the NPVariantData.
(WebKit::NPVariantData::doubleValue):
Return the double value of the NPVariantData.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didClose):
Use nullptr instead of 0.
* WebProcess/Plugins/PluginProcessConnection.cpp:
(WebKit::PluginProcessConnection::~PluginProcessConnection):
Assert that the connection and the remote object map are both null.
(WebKit::PluginProcessConnection::removePluginProxy):
If this was the last plug-in proxy, invalidate the remote object map.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::shutdown):
Use nullptr instead of 0.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@71127 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index acdcc04..26eae72 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,96 @@
+2010-11-02 Anders Carlsson <andersca at apple.com>
+
+ Reviewed by Adam Roben.
+
+ More NPRuntime work
+ https://bugs.webkit.org/show_bug.cgi?id=48847
+
+ * PluginProcess/WebProcessConnection.cpp:
+ (WebKit::WebProcessConnection::~WebProcessConnection):
+ Add assertions.
+
+ (WebKit::WebProcessConnection::removePluginControllerProxy):
+ If we have no more plug-in controller proxies, invalidate the remote object map.
+
+ * Shared/Plugins/NPIdentifierData.cpp:
+ (WebKit::NPIdentifierData::createNPIdentifier):
+ Create an NPIdentifier from the given NPIdentifierData.
+
+ * Shared/Plugins/NPObjectMessageReceiver.cpp:
+ (WebKit::NPObjectMessageReceiver::create):
+ (WebKit::NPObjectMessageReceiver::NPObjectMessageReceiver):
+ This now takes the NPRemoteObjectMap as well as the npObjectID of the object.
+
+ (WebKit::NPObjectMessageReceiver::~NPObjectMessageReceiver):
+ Unregister the object.
+
+ (WebKit::NPObjectMessageReceiver::deallocate):
+ Delete the object.
+
+ (WebKit::NPObjectMessageReceiver::getProperty):
+ Ask the NPObject for the property and convert it back to an NPVariantData.
+
+ * Shared/Plugins/NPObjectProxy.cpp:
+ (WebKit::NPObjectProxy::~NPObjectProxy):
+ Send a Deallocate message to the corresponding message receiver on the other side.
+
+ (WebKit::NPObjectProxy::getProperty):
+ Convert the NPVariantData back to an NPVariant and return it.
+
+ * Shared/Plugins/NPRemoteObjectMap.cpp:
+ (WebKit::NPRemoteObjectMap::registerNPObject):
+ Pass the NPRemoteObjectMap and the npObjectID to NPObjectMessageReceiver::create.
+
+ (WebKit::NPRemoteObjectMap::unregisterNPObject):
+ Remove the given object from the map of registered objects.
+
+ (WebKit::NPRemoteObjectMap::npVariantToNPVariantData):
+ Given an NPVariant, create an NPVariantData. Only supports void and double types right now.
+
+ (WebKit::NPRemoteObjectMap::npVariantDataToNPVariant):
+ Given an NPVariantData, create an NPVariant. Only supports void and double types right now.
+
+ (WebKit::NPRemoteObjectMap::invalidate):
+ Add stub.
+
+ * Shared/Plugins/NPVariantData.cpp:
+ (WebKit::NPVariantData::NPVariantData):
+ Set the type to void by default.
+
+ (WebKit::NPVariantData::makeVoid):
+ Return a void NPVariantData.
+
+ (WebKit::NPVariantData::makeDouble):
+ Return an NPVariantData that contains a double value.
+
+ (WebKit::NPVariantData::encode):
+ Encode the NPVariantData.
+
+ (WebKit::NPVariantData::decode):
+ Decode the NPVariantData.
+
+ * Shared/Plugins/NPVariantData.h:
+ (WebKit::NPVariantData::type):
+ Return the type of the NPVariantData.
+
+ (WebKit::NPVariantData::doubleValue):
+ Return the double value of the NPVariantData.
+
+ * UIProcess/WebProcessProxy.cpp:
+ (WebKit::WebProcessProxy::didClose):
+ Use nullptr instead of 0.
+
+ * WebProcess/Plugins/PluginProcessConnection.cpp:
+ (WebKit::PluginProcessConnection::~PluginProcessConnection):
+ Assert that the connection and the remote object map are both null.
+
+ (WebKit::PluginProcessConnection::removePluginProxy):
+ If this was the last plug-in proxy, invalidate the remote object map.
+
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::shutdown):
+ Use nullptr instead of 0.
+
2010-11-02 Balazs Kelemen <kbalazs at webkit.org>
Unreviewed Qt buildfix.
diff --git a/WebKit2/PluginProcess/WebProcessConnection.cpp b/WebKit2/PluginProcess/WebProcessConnection.cpp
index 2502891..3539454 100644
--- a/WebKit2/PluginProcess/WebProcessConnection.cpp
+++ b/WebKit2/PluginProcess/WebProcessConnection.cpp
@@ -42,6 +42,8 @@ PassRefPtr<WebProcessConnection> WebProcessConnection::create(CoreIPC::Connectio
WebProcessConnection::~WebProcessConnection()
{
ASSERT(m_pluginControllers.isEmpty());
+ ASSERT(!m_npRemoteObjectMap);
+ ASSERT(!m_connection);
}
WebProcessConnection::WebProcessConnection(CoreIPC::Connection::Identifier connectionIdentifier)
@@ -80,9 +82,13 @@ void WebProcessConnection::removePluginControllerProxy(PluginControllerProxy* pl
if (!m_pluginControllers.isEmpty())
return;
+ // Invalidate our remote object map.
+ m_npRemoteObjectMap->invalidate();
+ m_npRemoteObjectMap = nullptr;
+
// The last plug-in went away, close this connection.
m_connection->invalidate();
- m_connection = 0;
+ m_connection = nullptr;
// This will cause us to be deleted.
PluginProcess::shared().removeWebProcessConnection(this);
diff --git a/WebKit2/Shared/Plugins/NPIdentifierData.cpp b/WebKit2/Shared/Plugins/NPIdentifierData.cpp
index 2fe2127..51dd6be 100644
--- a/WebKit2/Shared/Plugins/NPIdentifierData.cpp
+++ b/WebKit2/Shared/Plugins/NPIdentifierData.cpp
@@ -59,6 +59,14 @@ NPIdentifierData NPIdentifierData::fromNPIdentifier(NPIdentifier npIdentifier)
return npIdentifierData;
}
+NPIdentifier NPIdentifierData::createNPIdentifier() const
+{
+ if (m_isString)
+ return static_cast<NPIdentifier>(IdentifierRep::get(m_string.data()));
+
+ return static_cast<NPIdentifier>(IdentifierRep::get(m_number));
+}
+
void NPIdentifierData::encode(CoreIPC::ArgumentEncoder* encoder) const
{
encoder->encode(m_isString);
diff --git a/WebKit2/Shared/Plugins/NPIdentifierData.h b/WebKit2/Shared/Plugins/NPIdentifierData.h
index 637ea46..dbe979e 100644
--- a/WebKit2/Shared/Plugins/NPIdentifierData.h
+++ b/WebKit2/Shared/Plugins/NPIdentifierData.h
@@ -45,6 +45,7 @@ public:
NPIdentifierData();
static NPIdentifierData fromNPIdentifier(NPIdentifier);
+ NPIdentifier createNPIdentifier() const;
void encode(CoreIPC::ArgumentEncoder*) const;
static bool decode(CoreIPC::ArgumentDecoder*, NPIdentifierData&);
diff --git a/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp b/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp
index 85775a1..db3d178 100644
--- a/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp
+++ b/WebKit2/Shared/Plugins/NPObjectMessageReceiver.cpp
@@ -28,36 +28,53 @@
#include "NPObjectMessageReceiver.h"
#include "NPIdentifierData.h"
+#include "NPRemoteObjectMap.h"
#include "NPRuntimeUtilities.h"
+#include "NPVariantData.h"
#include "NotImplemented.h"
namespace WebKit {
-PassOwnPtr<NPObjectMessageReceiver> NPObjectMessageReceiver::create(NPObject* npObject)
+PassOwnPtr<NPObjectMessageReceiver> NPObjectMessageReceiver::create(NPRemoteObjectMap* npRemoteObjectMap, uint64_t npObjectID, NPObject* npObject)
{
- return adoptPtr(new NPObjectMessageReceiver(npObject));
+ return adoptPtr(new NPObjectMessageReceiver(npRemoteObjectMap, npObjectID, npObject));
}
-NPObjectMessageReceiver::NPObjectMessageReceiver(NPObject* npObject)
- : m_npObject(npObject)
+NPObjectMessageReceiver::NPObjectMessageReceiver(NPRemoteObjectMap* npRemoteObjectMap, uint64_t npObjectID, NPObject* npObject)
+ : m_npRemoteObjectMap(npRemoteObjectMap)
+ , m_npObjectID(npObjectID)
+ , m_npObject(npObject)
{
retainNPObject(m_npObject);
}
NPObjectMessageReceiver::~NPObjectMessageReceiver()
{
+ // FIXME: The remote object map might be destroyed here.
+ m_npRemoteObjectMap->unregisterNPObject(m_npObjectID);
+
releaseNPObject(m_npObject);
}
void NPObjectMessageReceiver::deallocate()
{
- notImplemented();
+ delete this;
}
-void NPObjectMessageReceiver::getProperty(const NPIdentifierData& propertyNameData, bool& returnValue, NPVariantData& result)
+void NPObjectMessageReceiver::getProperty(const NPIdentifierData& propertyNameData, bool& returnValue, NPVariantData& resultData)
{
- notImplemented();
- returnValue = false;
+ if (!m_npObject->_class->getProperty) {
+ returnValue = false;
+ return;
+ }
+
+ NPVariant result;
+ returnValue = m_npObject->_class->getProperty(m_npObject, propertyNameData.createNPIdentifier(), &result);
+ if (!returnValue)
+ return;
+
+ // Convert the NPVariant to an NPVariantData.
+ resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result);
}
} // namespace WebKit
diff --git a/WebKit2/Shared/Plugins/NPObjectMessageReceiver.h b/WebKit2/Shared/Plugins/NPObjectMessageReceiver.h
index 7d813a1..321e0c2 100644
--- a/WebKit2/Shared/Plugins/NPObjectMessageReceiver.h
+++ b/WebKit2/Shared/Plugins/NPObjectMessageReceiver.h
@@ -36,24 +36,27 @@
namespace WebKit {
class NPIdentifierData;
+class NPRemoteObjectMap;
class NPVariantData;
class NPObjectMessageReceiver {
WTF_MAKE_NONCOPYABLE(NPObjectMessageReceiver);
public:
- static PassOwnPtr<NPObjectMessageReceiver> create(NPObject* npObject);
+ static PassOwnPtr<NPObjectMessageReceiver> create(NPRemoteObjectMap* npRemoteObjectMap, uint64_t npObjectID, NPObject* npObject);
~NPObjectMessageReceiver();
CoreIPC::SyncReplyMode didReceiveSyncNPObjectMessageReceiverMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*, CoreIPC::ArgumentEncoder*);
private:
- explicit NPObjectMessageReceiver(NPObject* npObject);
+ NPObjectMessageReceiver(NPRemoteObjectMap* npRemoteObjectMap, uint64_t npObjectID, NPObject* npObject);
// Message handlers.
void deallocate();
- void getProperty(const NPIdentifierData&, bool& returnValue, NPVariantData& result);
+ void getProperty(const NPIdentifierData&, bool& returnValue, NPVariantData& resultData);
+ NPRemoteObjectMap* m_npRemoteObjectMap;
+ uint64_t m_npObjectID;
NPObject* m_npObject;
};
diff --git a/WebKit2/Shared/Plugins/NPObjectMessageReceiver.messages.in b/WebKit2/Shared/Plugins/NPObjectMessageReceiver.messages.in
index 158fcab..1fc120f 100644
--- a/WebKit2/Shared/Plugins/NPObjectMessageReceiver.messages.in
+++ b/WebKit2/Shared/Plugins/NPObjectMessageReceiver.messages.in
@@ -27,7 +27,7 @@ messages -> NPObjectMessageReceiver {
Deallocate() -> ()
# Get the given property.
- GetProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue, WebKit::NPVariantData result)
+ GetProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue, WebKit::NPVariantData resultData)
}
#endif
diff --git a/WebKit2/Shared/Plugins/NPObjectProxy.cpp b/WebKit2/Shared/Plugins/NPObjectProxy.cpp
index f655f8f..126189d 100644
--- a/WebKit2/Shared/Plugins/NPObjectProxy.cpp
+++ b/WebKit2/Shared/Plugins/NPObjectProxy.cpp
@@ -53,6 +53,10 @@ NPObjectProxy::NPObjectProxy()
NPObjectProxy::~NPObjectProxy()
{
+ if (!m_npRemoteObjectMap)
+ return;
+
+ m_npRemoteObjectMap->connection()->sendSync(Messages::NPObjectMessageReceiver::Deallocate(), Messages::NPObjectMessageReceiver::Deallocate::Reply(), m_npObjectID);
}
bool NPObjectProxy::isNPObjectProxy(NPObject* npObject)
@@ -85,8 +89,11 @@ bool NPObjectProxy::getProperty(NPIdentifier propertyName, NPVariant* result)
if (!m_npRemoteObjectMap->connection()->sendSync(Messages::NPObjectMessageReceiver::GetProperty(propertyNameData), Messages::NPObjectMessageReceiver::GetProperty::Reply(returnValue, resultData), m_npObjectID))
return false;
- notImplemented();
- return false;
+ if (!returnValue)
+ return false;
+
+ *result = m_npRemoteObjectMap->npVariantDataToNPVariant(resultData);
+ return true;
}
NPClass* NPObjectProxy::npClass()
diff --git a/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp b/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp
index fadc713..e8f3c83 100644
--- a/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp
+++ b/WebKit2/Shared/Plugins/NPRemoteObjectMap.cpp
@@ -29,6 +29,8 @@
#include "NPObjectMessageReceiver.h"
#include "NPObjectProxy.h"
+#include "NPVariantData.h"
+#include "NotImplemented.h"
#include <wtf/OwnPtr.h>
namespace WebKit {
@@ -61,11 +63,60 @@ NPObject* NPRemoteObjectMap::createNPObjectProxy(uint64_t remoteObjectID)
uint64_t NPRemoteObjectMap::registerNPObject(NPObject* npObject)
{
uint64_t npObjectID = generateNPObjectID();
- m_registeredNPObjects.set(npObjectID, NPObjectMessageReceiver::create(npObject).leakPtr());
+ m_registeredNPObjects.set(npObjectID, NPObjectMessageReceiver::create(this, npObjectID, npObject).leakPtr());
return npObjectID;
}
+void NPRemoteObjectMap::unregisterNPObject(uint64_t npObjectID)
+{
+ m_registeredNPObjects.remove(npObjectID);
+}
+
+NPVariantData NPRemoteObjectMap::npVariantToNPVariantData(const NPVariant& variant)
+{
+ switch (variant.type) {
+ case NPVariantType_Void:
+ return NPVariantData::makeVoid();
+
+ case NPVariantType_Double:
+ return NPVariantData::makeDouble(variant.value.doubleValue);
+
+ case NPVariantType_Null:
+ case NPVariantType_Bool:
+ case NPVariantType_Int32:
+ case NPVariantType_String:
+ case NPVariantType_Object:
+ notImplemented();
+ return NPVariantData::makeVoid();
+ }
+
+ ASSERT_NOT_REACHED();
+ return NPVariantData::makeVoid();
+}
+
+NPVariant NPRemoteObjectMap::npVariantDataToNPVariant(const NPVariantData& npVariantData)
+{
+ NPVariant npVariant;
+
+ switch (npVariantData.type()) {
+ case NPVariantData::Void:
+ VOID_TO_NPVARIANT(npVariant);
+ break;
+ case NPVariantData::Double:
+ DOUBLE_TO_NPVARIANT(npVariantData.doubleValue(), npVariant);
+ break;
+ }
+
+ return npVariant;
+}
+
+void NPRemoteObjectMap::invalidate()
+{
+ // FIXME: Invalidate NPObjectProxy and NPObjectMessageReceiver objects.
+ notImplemented();
+}
+
CoreIPC::SyncReplyMode NPRemoteObjectMap::didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply)
{
NPObjectMessageReceiver* messageReceiver = m_registeredNPObjects.get(arguments->destinationID());
diff --git a/WebKit2/Shared/Plugins/NPRemoteObjectMap.h b/WebKit2/Shared/Plugins/NPRemoteObjectMap.h
index f0bf42a..535ecd4 100644
--- a/WebKit2/Shared/Plugins/NPRemoteObjectMap.h
+++ b/WebKit2/Shared/Plugins/NPRemoteObjectMap.h
@@ -37,6 +37,7 @@ namespace WebKit {
class NPObjectMessageReceiver;
class NPObjectProxy;
+class NPVariantData;
class NPRemoteObjectMap : public RefCounted<NPRemoteObjectMap> {
public:
@@ -48,9 +49,18 @@ public:
// Expose the given NPObject as a remote object. Returns the objectID.
uint64_t registerNPObject(NPObject*);
+ void unregisterNPObject(uint64_t);
+
+ // Given an NPVariant, creates an NPVariantData object (a CoreIPC representation of an NPVariant).
+ NPVariantData npVariantToNPVariantData(const NPVariant&);
+
+ // Given an NPVariantData, creates an NPVariant object.
+ NPVariant npVariantDataToNPVariant(const NPVariantData&);
CoreIPC::Connection* connection() const { return m_connection; }
+ void invalidate();
+
CoreIPC::SyncReplyMode didReceiveSyncMessage(CoreIPC::Connection* connection, CoreIPC::MessageID messageID, CoreIPC::ArgumentDecoder* arguments, CoreIPC::ArgumentEncoder* reply);
private:
diff --git a/WebKit2/Shared/Plugins/NPVariantData.cpp b/WebKit2/Shared/Plugins/NPVariantData.cpp
index f0b1d48..bacb74d 100644
--- a/WebKit2/Shared/Plugins/NPVariantData.cpp
+++ b/WebKit2/Shared/Plugins/NPVariantData.cpp
@@ -27,19 +27,57 @@
#include "NPVariantData.h"
+#include "ArgumentDecoder.h"
+#include "ArgumentEncoder.h"
#include "NotImplemented.h"
namespace WebKit {
-void NPVariantData::encode(CoreIPC::ArgumentEncoder*) const
+NPVariantData::NPVariantData()
+ : m_type(NPVariantData::Void)
{
- notImplemented();
}
-bool NPVariantData::decode(CoreIPC::ArgumentDecoder*, NPVariantData&)
+NPVariantData NPVariantData::makeVoid()
{
- notImplemented();
- return false;
+ return NPVariantData();
+}
+
+NPVariantData NPVariantData::makeDouble(double value)
+{
+ NPVariantData npVariantData;
+
+ npVariantData.m_type = NPVariantData::Double;
+ npVariantData.m_doubleValue = value;
+
+ return npVariantData;
+}
+
+void NPVariantData::encode(CoreIPC::ArgumentEncoder* encoder) const
+{
+ encoder->encode(m_type);
+
+ switch (type()) {
+ case NPVariantData::Void:
+ break;
+ case NPVariantData::Double:
+ encoder->encode(m_doubleValue);
+ }
+}
+
+bool NPVariantData::decode(CoreIPC::ArgumentDecoder* decoder, NPVariantData& result)
+{
+ if (!decoder->decode(result.m_type))
+ return false;
+
+ switch (result.m_type) {
+ case NPVariantData::Void:
+ return true;
+ case NPVariantData::Double:
+ return decoder->decode(result.m_doubleValue);
+ default:
+ return false;
+ }
}
} // namespace WebKit
diff --git a/WebKit2/Shared/Plugins/NPVariantData.h b/WebKit2/Shared/Plugins/NPVariantData.h
index 734ae97..e7cd83f 100644
--- a/WebKit2/Shared/Plugins/NPVariantData.h
+++ b/WebKit2/Shared/Plugins/NPVariantData.h
@@ -39,9 +39,29 @@ namespace WebKit {
class NPVariantData {
public:
+ enum Type {
+ Void,
+ Double,
+ };
+ NPVariantData();
+
+ static NPVariantData makeVoid();
+ static NPVariantData makeDouble(double value);
+
+ Type type() const { return static_cast<Type>(m_type); }
+
+ double doubleValue() const
+ {
+ ASSERT(type() == NPVariantData::Double);
+ return m_doubleValue;
+ }
+
void encode(CoreIPC::ArgumentEncoder*) const;
static bool decode(CoreIPC::ArgumentDecoder*, NPVariantData&);
-
+
+private:
+ uint32_t m_type;
+ double m_doubleValue;
};
} // namespace WebKit
diff --git a/WebKit2/UIProcess/WebProcessProxy.cpp b/WebKit2/UIProcess/WebProcessProxy.cpp
index ac31133..bba1948 100644
--- a/WebKit2/UIProcess/WebProcessProxy.cpp
+++ b/WebKit2/UIProcess/WebProcessProxy.cpp
@@ -401,7 +401,7 @@ CoreIPC::SyncReplyMode WebProcessProxy::didReceiveSyncMessage(CoreIPC::Connectio
void WebProcessProxy::didClose(CoreIPC::Connection*)
{
- m_connection = 0;
+ m_connection = nullptr;
m_responsivenessTimer.stop();
Vector<RefPtr<WebFrameProxy> > frames;
diff --git a/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp b/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp
index 013bc16..7c09e56 100644
--- a/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp
+++ b/WebKit2/WebProcess/Plugins/PluginProcessConnection.cpp
@@ -46,6 +46,8 @@ PluginProcessConnection::PluginProcessConnection(PluginProcessConnectionManager*
PluginProcessConnection::~PluginProcessConnection()
{
+ ASSERT(!m_connection);
+ ASSERT(!m_npRemoteObjectMap);
}
void PluginProcessConnection::addPluginProxy(PluginProxy* plugin)
@@ -62,6 +64,10 @@ void PluginProcessConnection::removePluginProxy(PluginProxy* plugin)
if (!m_plugins.isEmpty())
return;
+ // Invalidate our remote object map.
+ m_npRemoteObjectMap->invalidate();
+ m_npRemoteObjectMap = 0;
+
// We have no more plug-ins, invalidate the connection to the plug-in process.
ASSERT(m_connection);
m_connection->invalidate();
diff --git a/WebKit2/WebProcess/WebProcess.cpp b/WebKit2/WebProcess/WebProcess.cpp
index 66c697e..4d243fe 100644
--- a/WebKit2/WebProcess/WebProcess.cpp
+++ b/WebKit2/WebProcess/WebProcess.cpp
@@ -284,7 +284,7 @@ void WebProcess::shutdown()
// Invalidate our connection.
m_connection->invalidate();
- m_connection = 0;
+ m_connection = nullptr;
m_runLoop->stop();
}
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list