Diff
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/ChangeLog 2019-02-14 11:26:50 UTC (rev 241519)
@@ -1,3 +1,52 @@
+2019-02-13 Alex Christensen <achristen...@webkit.org>
+
+ Remove legacy sync messaging in some IPC code
+ https://bugs.webkit.org/show_bug.cgi?id=194561
+
+ Reviewed by Geoffrey Garen.
+
+ Changing some LegacySync messages to Delayed messages. We should probably rename Delayed to Sync.
+ There are too many ways to send messages. Let's work to get rid of the old one.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::setAllowsAnySSLCertificateForWebSocket):
+ (WebKit::NetworkProcess::processWillSuspendImminently):
+ * NetworkProcess/NetworkProcess.h:
+ * NetworkProcess/NetworkProcess.messages.in:
+ * PluginProcess/PluginControllerProxy.cpp:
+ (WebKit::PluginControllerProxy::handleWheelEvent):
+ (WebKit::PluginControllerProxy::handleMouseEnterEvent):
+ (WebKit::PluginControllerProxy::handleMouseLeaveEvent):
+ (WebKit::PluginControllerProxy::handleKeyboardEvent):
+ (WebKit::PluginControllerProxy::handleEditingCommand):
+ (WebKit::PluginControllerProxy::isEditingCommandEnabled):
+ (WebKit::PluginControllerProxy::handlesPageScaleFactor):
+ (WebKit::PluginControllerProxy::requiresUnifiedScaleFactor):
+ (WebKit::PluginControllerProxy::paintEntirePlugin):
+ (WebKit::PluginControllerProxy::supportsSnapshotting):
+ (WebKit::PluginControllerProxy::snapshot):
+ (WebKit::PluginControllerProxy::getPluginScriptableNPObject):
+ (WebKit::PluginControllerProxy::getFormValue):
+ * PluginProcess/PluginControllerProxy.h:
+ * PluginProcess/PluginControllerProxy.messages.in:
+ * Shared/Plugins/NPObjectMessageReceiver.cpp:
+ (WebKit::NPObjectMessageReceiver::deallocate):
+ (WebKit::NPObjectMessageReceiver::hasMethod):
+ (WebKit::NPObjectMessageReceiver::invoke):
+ (WebKit::NPObjectMessageReceiver::invokeDefault):
+ (WebKit::NPObjectMessageReceiver::hasProperty):
+ (WebKit::NPObjectMessageReceiver::getProperty):
+ (WebKit::NPObjectMessageReceiver::setProperty):
+ (WebKit::NPObjectMessageReceiver::removeProperty):
+ (WebKit::NPObjectMessageReceiver::enumerate):
+ (WebKit::NPObjectMessageReceiver::construct):
+ * Shared/Plugins/NPObjectMessageReceiver.h:
+ * Shared/Plugins/NPObjectMessageReceiver.messages.in:
+ * UIProcess/mac/SecItemShimProxy.cpp:
+ (WebKit::SecItemShimProxy::secItemRequest):
+ * UIProcess/mac/SecItemShimProxy.h:
+ * UIProcess/mac/SecItemShimProxy.messages.in:
+
2019-02-13 Ryosuke Niwa <rn...@webkit.org>
Crash in Page::setActivityState because m_page is null
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.cpp (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2019-02-14 11:26:50 UTC (rev 241519)
@@ -1774,9 +1774,10 @@
parentProcessConnection()->send(Messages::WebProcessPool::DidGetStatistics(data, callbackID), 0);
}
-void NetworkProcess::setAllowsAnySSLCertificateForWebSocket(bool allows)
+void NetworkProcess::setAllowsAnySSLCertificateForWebSocket(bool allows, CompletionHandler<void()>&& completionHandler)
{
DeprecatedGlobalSettings::setAllowsAnySSLCertificate(allows);
+ completionHandler();
}
void NetworkProcess::logDiagnosticMessage(uint64_t webPageID, const String& message, const String& description, ShouldSample shouldSample)
@@ -1849,10 +1850,10 @@
connection->cleanupForSuspension([delayedTaskCounter] { });
}
-void NetworkProcess::processWillSuspendImminently(bool& handled)
+void NetworkProcess::processWillSuspendImminently(CompletionHandler<void(bool)>&& completionHandler)
{
actualPrepareToSuspend(ShouldAcknowledgeWhenReadyToSuspend::No);
- handled = true;
+ completionHandler(true);
}
void NetworkProcess::prepareToSuspend()
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.h (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.h 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.h 2019-02-14 11:26:50 UTC (rev 241519)
@@ -154,7 +154,7 @@
bool canHandleHTTPSServerTrustEvaluation() const { return m_canHandleHTTPSServerTrustEvaluation; }
- void processWillSuspendImminently(bool& handled);
+ void processWillSuspendImminently(CompletionHandler<void(bool)>&&);
void prepareToSuspend();
void cancelPrepareToSuspend();
void processDidResume();
@@ -363,7 +363,7 @@
void setCanHandleHTTPSServerTrustEvaluation(bool);
void getNetworkProcessStatistics(uint64_t callbackID);
void clearCacheForAllOrigins(uint32_t cachesToClear);
- void setAllowsAnySSLCertificateForWebSocket(bool);
+ void setAllowsAnySSLCertificateForWebSocket(bool, CompletionHandler<void()>&&);
void syncAllCookies();
void didSyncAllCookies();
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.messages.in (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/NetworkProcess/NetworkProcess.messages.in 2019-02-14 11:26:50 UTC (rev 241519)
@@ -60,7 +60,7 @@
SetQOS(int latencyQOS, int throughputQOS)
SetStorageAccessAPIEnabled(bool enabled)
#endif
- SetAllowsAnySSLCertificateForWebSocket(bool enabled) -> () LegacySync
+ SetAllowsAnySSLCertificateForWebSocket(bool enabled) -> () Delayed
SyncAllCookies()
@@ -75,7 +75,7 @@
ProcessDidTransitionToBackground()
ProcessDidTransitionToForeground()
- ProcessWillSuspendImminently() -> (bool handled) LegacySync
+ ProcessWillSuspendImminently() -> (bool handled) Delayed
PrepareToSuspend()
CancelPrepareToSuspend()
ProcessDidResume()
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.cpp (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.cpp 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.cpp 2019-02-14 11:26:50 UTC (rev 241519)
@@ -529,68 +529,71 @@
m_plugin->handleMouseEvent(mouseEvent);
}
-void PluginControllerProxy::handleWheelEvent(const WebWheelEvent& wheelEvent, bool& handled)
+void PluginControllerProxy::handleWheelEvent(const WebWheelEvent& wheelEvent, CompletionHandler<void(bool)>&& completionHandler)
{
- handled = m_plugin->handleWheelEvent(wheelEvent);
+ completionHandler(m_plugin->handleWheelEvent(wheelEvent));
}
-void PluginControllerProxy::handleMouseEnterEvent(const WebMouseEvent& mouseEnterEvent, bool& handled)
+void PluginControllerProxy::handleMouseEnterEvent(const WebMouseEvent& mouseEnterEvent, CompletionHandler<void(bool)>&& completionHandler)
{
- handled = m_plugin->handleMouseEnterEvent(mouseEnterEvent);
+ completionHandler(m_plugin->handleMouseEnterEvent(mouseEnterEvent));
}
-void PluginControllerProxy::handleMouseLeaveEvent(const WebMouseEvent& mouseLeaveEvent, bool& handled)
+void PluginControllerProxy::handleMouseLeaveEvent(const WebMouseEvent& mouseLeaveEvent, CompletionHandler<void(bool)>&& completionHandler)
{
- handled = m_plugin->handleMouseLeaveEvent(mouseLeaveEvent);
+ completionHandler(m_plugin->handleMouseLeaveEvent(mouseLeaveEvent));
}
-void PluginControllerProxy::handleKeyboardEvent(const WebKeyboardEvent& keyboardEvent, bool& handled)
+void PluginControllerProxy::handleKeyboardEvent(const WebKeyboardEvent& keyboardEvent, CompletionHandler<void(bool)>&& completionHandler)
{
- handled = m_plugin->handleKeyboardEvent(keyboardEvent);
+ completionHandler(m_plugin->handleKeyboardEvent(keyboardEvent));
}
-void PluginControllerProxy::handleEditingCommand(const String& commandName, const String& argument, bool& handled)
+void PluginControllerProxy::handleEditingCommand(const String& commandName, const String& argument, CompletionHandler<void(bool)>&& completionHandler)
{
- handled = m_plugin->handleEditingCommand(commandName, argument);
+ completionHandler(m_plugin->handleEditingCommand(commandName, argument));
}
-void PluginControllerProxy::isEditingCommandEnabled(const String& commandName, bool& enabled)
+void PluginControllerProxy::isEditingCommandEnabled(const String& commandName, CompletionHandler<void(bool)>&& completionHandler)
{
- enabled = m_plugin->isEditingCommandEnabled(commandName);
+ completionHandler(m_plugin->isEditingCommandEnabled(commandName));
}
-void PluginControllerProxy::handlesPageScaleFactor(bool& isHandled)
+void PluginControllerProxy::handlesPageScaleFactor(CompletionHandler<void(bool)>&& completionHandler)
{
- isHandled = m_plugin->handlesPageScaleFactor();
+ completionHandler(m_plugin->handlesPageScaleFactor());
}
-void PluginControllerProxy::requiresUnifiedScaleFactor(bool& required)
+void PluginControllerProxy::requiresUnifiedScaleFactor(CompletionHandler<void(bool)>&& completionHandler)
{
- required = m_plugin->requiresUnifiedScaleFactor();
+ completionHandler(m_plugin->requiresUnifiedScaleFactor());
}
-void PluginControllerProxy::paintEntirePlugin()
+void PluginControllerProxy::paintEntirePlugin(CompletionHandler<void()>&& completionHandler)
{
if (m_pluginSize.isEmpty())
- return;
+ return completionHandler();
m_dirtyRect = IntRect(IntPoint(), m_pluginSize);
paint();
+ completionHandler();
}
-void PluginControllerProxy::supportsSnapshotting(bool& isSupported)
+void PluginControllerProxy::supportsSnapshotting(CompletionHandler<void(bool)>&& completionHandler)
{
- isSupported = m_plugin->supportsSnapshotting();
+ completionHandler(m_plugin->supportsSnapshotting());
}
-void PluginControllerProxy::snapshot(ShareableBitmap::Handle& backingStoreHandle)
+void PluginControllerProxy::snapshot(CompletionHandler<void(ShareableBitmap::Handle&&)> completionHandler)
{
ASSERT(m_plugin);
RefPtr<ShareableBitmap> bitmap = m_plugin->snapshot();
if (!bitmap)
- return;
+ return completionHandler({ });
+ ShareableBitmap::Handle backingStoreHandle;
bitmap->createHandle(backingStoreHandle);
+ completionHandler(WTFMove(backingStoreHandle));
}
void PluginControllerProxy::setFocus(bool hasFocus)
@@ -604,16 +607,15 @@
startPaintTimer();
}
-void PluginControllerProxy::getPluginScriptableNPObject(uint64_t& pluginScriptableNPObjectID)
+void PluginControllerProxy::getPluginScriptableNPObject(CompletionHandler<void(uint64_t)>&& completionHandler)
{
NPObject* pluginScriptableNPObject = m_plugin->pluginScriptableNPObject();
- if (!pluginScriptableNPObject) {
- pluginScriptableNPObjectID = 0;
- return;
- }
+ if (!pluginScriptableNPObject)
+ return completionHandler(0);
- pluginScriptableNPObjectID = m_connection->npRemoteObjectMap()->registerNPObject(pluginScriptableNPObject, m_plugin.get());
+ uint64_t pluginScriptableNPObjectID = m_connection->npRemoteObjectMap()->registerNPObject(pluginScriptableNPObject, m_plugin.get());
releaseNPObject(pluginScriptableNPObject);
+ completionHandler(pluginScriptableNPObjectID);
}
void PluginControllerProxy::storageBlockingStateChanged(bool isStorageBlockingEnabled)
@@ -640,9 +642,11 @@
m_plugin->mutedStateChanged(isMuted);
}
-void PluginControllerProxy::getFormValue(bool& returnValue, String& formValue)
+void PluginControllerProxy::getFormValue(CompletionHandler<void(bool, String&&)>&& completionHandler)
{
- returnValue = m_plugin->getFormValue(formValue);
+ String formValue;
+ bool returnValue = m_plugin->getFormValue(formValue);
+ completionHandler(returnValue, WTFMove(formValue));
}
#if PLATFORM(X11)
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.h (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.h 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.h 2019-02-14 11:26:50 UTC (rev 241519)
@@ -135,20 +135,20 @@
void manualStreamDidFinishLoading();
void manualStreamDidFail(bool wasCancelled);
void handleMouseEvent(const WebMouseEvent&);
- void handleWheelEvent(const WebWheelEvent&, bool& handled);
- void handleMouseEnterEvent(const WebMouseEvent&, bool& handled);
- void handleMouseLeaveEvent(const WebMouseEvent&, bool& handled);
- void handleKeyboardEvent(const WebKeyboardEvent&, bool& handled);
- void handleEditingCommand(const String&, const String&, bool&);
- void isEditingCommandEnabled(const String&, bool&);
- void handlesPageScaleFactor(bool&);
- void requiresUnifiedScaleFactor(bool&);
- void paintEntirePlugin();
- void supportsSnapshotting(bool&);
- void snapshot(ShareableBitmap::Handle& backingStoreHandle);
+ void handleWheelEvent(const WebWheelEvent&, CompletionHandler<void(bool handled)>&&);
+ void handleMouseEnterEvent(const WebMouseEvent&, CompletionHandler<void(bool handled)>&&);
+ void handleMouseLeaveEvent(const WebMouseEvent&, CompletionHandler<void(bool handled)>&&);
+ void handleKeyboardEvent(const WebKeyboardEvent&, CompletionHandler<void(bool handled)>&&);
+ void handleEditingCommand(const String&, const String&, CompletionHandler<void(bool handled)>&&);
+ void isEditingCommandEnabled(const String&, CompletionHandler<void(bool)>&&);
+ void handlesPageScaleFactor(CompletionHandler<void(bool)>&&);
+ void requiresUnifiedScaleFactor(CompletionHandler<void(bool)>&&);
+ void paintEntirePlugin(CompletionHandler<void()>&&);
+ void supportsSnapshotting(CompletionHandler<void(bool)>&&);
+ void snapshot(CompletionHandler<void(ShareableBitmap::Handle&&)>);
void setFocus(bool);
void didUpdate();
- void getPluginScriptableNPObject(uint64_t& pluginScriptableNPObjectID);
+ void getPluginScriptableNPObject(CompletionHandler<void(uint64_t pluginScriptableNPObjectID)>&&);
void windowFocusChanged(bool);
void windowVisibilityChanged(bool);
@@ -165,7 +165,7 @@
void storageBlockingStateChanged(bool);
void privateBrowsingStateChanged(bool);
void mutedStateChanged(bool);
- void getFormValue(bool& returnValue, String& formValue);
+ void getFormValue(CompletionHandler<void(bool returnValue, String&& formValue)>&&);
void platformInitialize(const PluginCreationParameters&);
void platformDestroy();
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.messages.in (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.messages.in 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/PluginProcess/PluginControllerProxy.messages.in 2019-02-14 11:26:50 UTC (rev 241519)
@@ -69,28 +69,28 @@
HandleMouseEvent(WebKit::WebMouseEvent mouseEvent)
# Sent when a mouse wheel event should be processed.
- HandleWheelEvent(WebKit::WebWheelEvent wheelEvent) -> (bool handled) LegacySync
+ HandleWheelEvent(WebKit::WebWheelEvent wheelEvent) -> (bool handled) Delayed
# Sent when a mouse enter event should be processed.
- HandleMouseEnterEvent(WebKit::WebMouseEvent mouseEvent) -> (bool handled) LegacySync
+ HandleMouseEnterEvent(WebKit::WebMouseEvent mouseEvent) -> (bool handled) Delayed
# Sent when a mouse leave event should be processed.
- HandleMouseLeaveEvent(WebKit::WebMouseEvent mouseEvent) -> (bool handled) LegacySync
+ HandleMouseLeaveEvent(WebKit::WebMouseEvent mouseEvent) -> (bool handled) Delayed
# Sent when a keyboard should be processed.
- HandleKeyboardEvent(WebKit::WebKeyboardEvent keyboardEvent) -> (bool handled) LegacySync
+ HandleKeyboardEvent(WebKit::WebKeyboardEvent keyboardEvent) -> (bool handled) Delayed
# Sent when an editing command should be processed.
- HandleEditingCommand(String commandName, String argument) -> (bool handled) LegacySync
+ HandleEditingCommand(String commandName, String argument) -> (bool handled) Delayed
# Return whether or not a plugin wants to enable the given editing command.
- IsEditingCommandEnabled(String commandName) -> (bool enabled) LegacySync
+ IsEditingCommandEnabled(String commandName) -> (bool enabled) Delayed
# Return whether or not a plugin wants to handle page scale factor itself.
- HandlesPageScaleFactor() -> (bool enabled) LegacySync
+ HandlesPageScaleFactor() -> (bool enabled) Delayed
# Return whether or not a plugin wants page scale, page zoom, and text zoom all to affect page scale.
- RequiresUnifiedScaleFactor() -> (bool required) LegacySync
+ RequiresUnifiedScaleFactor() -> (bool required) Delayed
# Sent when the plug-in focus changes.
SetFocus(bool isFocused)
@@ -99,10 +99,10 @@
DidUpdate()
# Paint the entire plug-in.
- PaintEntirePlugin() -> () LegacySync
+ PaintEntirePlugin() -> () Delayed
# Get a reference to the plug-in's scriptable NPObject.
- GetPluginScriptableNPObject() -> (uint64_t pluginScriptableNPObjectID) LegacySync
+ GetPluginScriptableNPObject() -> (uint64_t pluginScriptableNPObjectID) Delayed
# Sent when the containing NSWindow's focus changes
WindowFocusChanged(bool hasFocus)
@@ -122,10 +122,10 @@
#endif
# Does the plugin support snapshotting?
- SupportsSnapshotting() -> (bool isSupported) LegacySync
+ SupportsSnapshotting() -> (bool isSupported) Delayed
# Return a snapshot of the plugin.
- Snapshot() -> (WebKit::ShareableBitmap::Handle backingStoreHandle) LegacySync
+ Snapshot() -> (WebKit::ShareableBitmap::Handle backingStoreHandle) Delayed
# Sent when storage blocking policy changes
StorageBlockingStateChanged(bool storageBlockingEnabled)
@@ -134,7 +134,7 @@
PrivateBrowsingStateChanged(bool isPrivateBrowsingEnabled)
# Gets the string representating the form value of the plug-in
- GetFormValue() -> (bool returnValue, String formValue) LegacySync
+ GetFormValue() -> (bool returnValue, String formValue) Delayed
# Sent when the browser wants to mute or unmute the plugin.
MutedStateChanged(bool muted)
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.cpp (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.cpp 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.cpp 2019-02-14 11:26:50 UTC (rev 241519)
@@ -53,27 +53,24 @@
releaseNPObject(m_npObject);
}
-void NPObjectMessageReceiver::deallocate()
+void NPObjectMessageReceiver::deallocate(CompletionHandler<void()>&& completionHandler)
{
delete this;
+ completionHandler();
}
-void NPObjectMessageReceiver::hasMethod(const NPIdentifierData& methodNameData, bool& returnValue)
+void NPObjectMessageReceiver::hasMethod(const NPIdentifierData& methodNameData, CompletionHandler<void(bool)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !m_npObject->_class->hasMethod) {
- returnValue = false;
- return;
- }
-
- returnValue = m_npObject->_class->hasMethod(m_npObject, methodNameData.createNPIdentifier());
+ if (m_plugin->isBeingDestroyed() || !m_npObject->_class->hasMethod)
+ return completionHandler(false);
+
+ completionHandler(m_npObject->_class->hasMethod(m_npObject, methodNameData.createNPIdentifier()));
}
-void NPObjectMessageReceiver::invoke(const NPIdentifierData& methodNameData, const Vector<NPVariantData>& argumentsData, bool& returnValue, NPVariantData& resultData)
+void NPObjectMessageReceiver::invoke(const NPIdentifierData& methodNameData, const Vector<NPVariantData>& argumentsData, CompletionHandler<void(bool, NPVariantData&&)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !m_npObject->_class->invoke) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !m_npObject->_class->invoke)
+ return completionHandler(false, { });
Vector<NPVariant> arguments;
for (size_t i = 0; i < argumentsData.size(); ++i)
@@ -84,7 +81,8 @@
PluginController::PluginDestructionProtector protector(m_plugin->controller());
- returnValue = m_npObject->_class->invoke(m_npObject, methodNameData.createNPIdentifier(), arguments.data(), arguments.size(), &result);
+ NPVariantData resultData;
+ bool returnValue = m_npObject->_class->invoke(m_npObject, methodNameData.createNPIdentifier(), arguments.data(), arguments.size(), &result);
if (returnValue) {
// Convert the NPVariant to an NPVariantData.
resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result, m_plugin);
@@ -96,14 +94,13 @@
// And release the result.
releaseNPVariantValue(&result);
+ completionHandler(returnValue, WTFMove(resultData));
}
-void NPObjectMessageReceiver::invokeDefault(const Vector<NPVariantData>& argumentsData, bool& returnValue, NPVariantData& resultData)
+void NPObjectMessageReceiver::invokeDefault(const Vector<NPVariantData>& argumentsData, CompletionHandler<void(bool, NPVariantData&&)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !m_npObject->_class->invokeDefault) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !m_npObject->_class->invokeDefault)
+ return completionHandler(false, { });
Vector<NPVariant> arguments;
for (size_t i = 0; i < argumentsData.size(); ++i)
@@ -114,7 +111,8 @@
PluginController::PluginDestructionProtector protector(m_plugin->controller());
- returnValue = m_npObject->_class->invokeDefault(m_npObject, arguments.data(), arguments.size(), &result);
+ NPVariantData resultData;
+ bool returnValue = m_npObject->_class->invokeDefault(m_npObject, arguments.data(), arguments.size(), &result);
if (returnValue) {
// Convert the NPVariant to an NPVariantData.
resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result, m_plugin);
@@ -126,24 +124,21 @@
// And release the result.
releaseNPVariantValue(&result);
+ completionHandler(returnValue, WTFMove(resultData));
}
-void NPObjectMessageReceiver::hasProperty(const NPIdentifierData& propertyNameData, bool& returnValue)
+void NPObjectMessageReceiver::hasProperty(const NPIdentifierData& propertyNameData, CompletionHandler<void(bool)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !m_npObject->_class->hasProperty) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !m_npObject->_class->hasProperty)
+ return completionHandler(false);
- returnValue = m_npObject->_class->hasProperty(m_npObject, propertyNameData.createNPIdentifier());
+ completionHandler(m_npObject->_class->hasProperty(m_npObject, propertyNameData.createNPIdentifier()));
}
-void NPObjectMessageReceiver::getProperty(const NPIdentifierData& propertyNameData, bool& returnValue, NPVariantData& resultData)
+void NPObjectMessageReceiver::getProperty(const NPIdentifierData& propertyNameData, CompletionHandler<void(bool, NPVariantData&&)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !m_npObject->_class->getProperty) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !m_npObject->_class->getProperty)
+ return completionHandler(false, { });
NPVariant result;
VOID_TO_NPVARIANT(result);
@@ -150,68 +145,64 @@
PluginController::PluginDestructionProtector protector(m_plugin->controller());
- returnValue = m_npObject->_class->getProperty(m_npObject, propertyNameData.createNPIdentifier(), &result);
+ bool returnValue = m_npObject->_class->getProperty(m_npObject, propertyNameData.createNPIdentifier(), &result);
if (!returnValue)
- return;
+ return completionHandler(false, { });
- resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result, m_plugin);
+ NPVariantData resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result, m_plugin);
releaseNPVariantValue(&result);
+ completionHandler(true, WTFMove(resultData));
}
-void NPObjectMessageReceiver::setProperty(const NPIdentifierData& propertyNameData, const NPVariantData& propertyValueData, bool& returnValue)
+void NPObjectMessageReceiver::setProperty(const NPIdentifierData& propertyNameData, const NPVariantData& propertyValueData, CompletionHandler<void(bool)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !m_npObject->_class->setProperty) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !m_npObject->_class->setProperty)
+ return completionHandler(false);
NPVariant propertyValue = m_npRemoteObjectMap->npVariantDataToNPVariant(propertyValueData, m_plugin);
PluginController::PluginDestructionProtector protector(m_plugin->controller());
- returnValue = m_npObject->_class->setProperty(m_npObject, propertyNameData.createNPIdentifier(), &propertyValue);
+ bool returnValue = m_npObject->_class->setProperty(m_npObject, propertyNameData.createNPIdentifier(), &propertyValue);
releaseNPVariantValue(&propertyValue);
+ completionHandler(returnValue);
}
-void NPObjectMessageReceiver::removeProperty(const NPIdentifierData& propertyNameData, bool& returnValue)
+void NPObjectMessageReceiver::removeProperty(const NPIdentifierData& propertyNameData, CompletionHandler<void(bool)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !m_npObject->_class->removeProperty) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !m_npObject->_class->removeProperty)
+ return completionHandler(false);
- returnValue = m_npObject->_class->removeProperty(m_npObject, propertyNameData.createNPIdentifier());
+ completionHandler(m_npObject->_class->removeProperty(m_npObject, propertyNameData.createNPIdentifier()));
}
-void NPObjectMessageReceiver::enumerate(bool& returnValue, Vector<NPIdentifierData>& identifiersData)
+void NPObjectMessageReceiver::enumerate(CompletionHandler<void(bool, Vector<NPIdentifierData>&&)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !NP_CLASS_STRUCT_VERSION_HAS_ENUM(m_npObject->_class) || !m_npObject->_class->enumerate) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !NP_CLASS_STRUCT_VERSION_HAS_ENUM(m_npObject->_class) || !m_npObject->_class->enumerate)
+ return completionHandler(false, { });
NPIdentifier* identifiers = 0;
uint32_t identifierCount = 0;
- returnValue = m_npObject->_class->enumerate(m_npObject, &identifiers, &identifierCount);
+ bool returnValue = m_npObject->_class->enumerate(m_npObject, &identifiers, &identifierCount);
if (!returnValue)
- return;
+ return completionHandler(false, { });
+ Vector<WebKit::NPIdentifierData> identifiersData;
for (uint32_t i = 0; i < identifierCount; ++i)
identifiersData.append(NPIdentifierData::fromNPIdentifier(identifiers[i]));
npnMemFree(identifiers);
+ completionHandler(true, WTFMove(identifiersData));
}
-void NPObjectMessageReceiver::construct(const Vector<NPVariantData>& argumentsData, bool& returnValue, NPVariantData& resultData)
+void NPObjectMessageReceiver::construct(const Vector<NPVariantData>& argumentsData, CompletionHandler<void(bool, NPVariantData&&)>&& completionHandler)
{
- if (m_plugin->isBeingDestroyed() || !NP_CLASS_STRUCT_VERSION_HAS_CTOR(m_npObject->_class) || !m_npObject->_class->construct) {
- returnValue = false;
- return;
- }
+ if (m_plugin->isBeingDestroyed() || !NP_CLASS_STRUCT_VERSION_HAS_CTOR(m_npObject->_class) || !m_npObject->_class->construct)
+ return completionHandler(false, { });
Vector<NPVariant> arguments;
for (size_t i = 0; i < argumentsData.size(); ++i)
@@ -222,7 +213,8 @@
PluginController::PluginDestructionProtector protector(m_plugin->controller());
- returnValue = m_npObject->_class->construct(m_npObject, arguments.data(), arguments.size(), &result);
+ bool returnValue = m_npObject->_class->construct(m_npObject, arguments.data(), arguments.size(), &result);
+ NPVariantData resultData;
if (returnValue)
resultData = m_npRemoteObjectMap->npVariantToNPVariantData(result, m_plugin);
@@ -230,6 +222,7 @@
releaseNPVariantValue(&arguments[i]);
releaseNPVariantValue(&result);
+ completionHandler(returnValue, WTFMove(resultData));
}
} // namespace WebKit
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.h (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.h 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.h 2019-02-14 11:26:50 UTC (rev 241519)
@@ -23,8 +23,7 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef NPObjectMessageReceiver_h
-#define NPObjectMessageReceiver_h
+#pragma once
#if ENABLE(NETSCAPE_PLUGIN_API)
@@ -53,16 +52,16 @@
private:
// Message handlers.
- void deallocate();
- void hasMethod(const NPIdentifierData&, bool& returnValue);
- void invoke(const NPIdentifierData&, const Vector<NPVariantData>& argumentsData, bool& returnValue, NPVariantData& resultData);
- void invokeDefault(const Vector<NPVariantData>& argumentsData, bool& returnValue, NPVariantData& resultData);
- void hasProperty(const NPIdentifierData&, bool& returnValue);
- void getProperty(const NPIdentifierData&, bool& returnValue, NPVariantData& resultData);
- void setProperty(const NPIdentifierData&, const NPVariantData& propertyValueData, bool& returnValue);
- void removeProperty(const NPIdentifierData&, bool& returnValue);
- void enumerate(bool& returnValue, Vector<NPIdentifierData>& identifiersData);
- void construct(const Vector<NPVariantData>& argumentsData, bool& returnValue, NPVariantData& resultData);
+ void deallocate(CompletionHandler<void()>&&);
+ void hasMethod(const NPIdentifierData&, CompletionHandler<void(bool)>&&);
+ void invoke(const NPIdentifierData&, const Vector<NPVariantData>& argumentsData, CompletionHandler<void(bool, NPVariantData&&)>&&);
+ void invokeDefault(const Vector<NPVariantData>& argumentsData, CompletionHandler<void(bool, NPVariantData&&)>&&);
+ void hasProperty(const NPIdentifierData&, CompletionHandler<void(bool)>&&);
+ void getProperty(const NPIdentifierData&, CompletionHandler<void(bool, NPVariantData&&)>&&);
+ void setProperty(const NPIdentifierData&, const NPVariantData& propertyValueData, CompletionHandler<void(bool)>&&);
+ void removeProperty(const NPIdentifierData&, CompletionHandler<void(bool)>&&);
+ void enumerate(CompletionHandler<void(bool, Vector<NPIdentifierData>&&)>&&);
+ void construct(const Vector<NPVariantData>& argumentsData, CompletionHandler<void(bool, NPVariantData&&)>&&);
NPRemoteObjectMap* m_npRemoteObjectMap;
Plugin* m_plugin;
@@ -73,6 +72,3 @@
} // namespace WebKit
#endif // ENABLE(NETSCAPE_PLUGIN_API)
-
-
-#endif // NPObjectMessageReceiver_h
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.messages.in (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.messages.in 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/Shared/Plugins/NPObjectMessageReceiver.messages.in 2019-02-14 11:26:50 UTC (rev 241519)
@@ -23,16 +23,16 @@
#if ENABLE(NETSCAPE_PLUGIN_API)
messages -> NPObjectMessageReceiver LegacyReceiver {
- Deallocate() -> () LegacySync
- HasMethod(WebKit::NPIdentifierData methodName) -> (bool returnValue) LegacySync
- Invoke(WebKit::NPIdentifierData methodName, Vector<WebKit::NPVariantData> argumentsData) -> (bool returnValue, WebKit::NPVariantData resultData) LegacySync
- InvokeDefault(Vector<WebKit::NPVariantData> argumentsData) -> (bool returnValue, WebKit::NPVariantData resultData) LegacySync
- HasProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue) LegacySync
- GetProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue, WebKit::NPVariantData resultData) LegacySync
- SetProperty(WebKit::NPIdentifierData propertyName, WebKit::NPVariantData propertyValueData) -> (bool returnValue) LegacySync
- RemoveProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue) LegacySync
- Enumerate() -> (bool returnValue, Vector<WebKit::NPIdentifierData> identifiersData) LegacySync
- Construct(Vector<WebKit::NPVariantData> argumentsData) -> (bool returnValue, WebKit::NPVariantData resultData) LegacySync
+ Deallocate() -> () Delayed
+ HasMethod(WebKit::NPIdentifierData methodName) -> (bool returnValue) Delayed
+ Invoke(WebKit::NPIdentifierData methodName, Vector<WebKit::NPVariantData> argumentsData) -> (bool returnValue, WebKit::NPVariantData resultData) Delayed
+ InvokeDefault(Vector<WebKit::NPVariantData> argumentsData) -> (bool returnValue, WebKit::NPVariantData resultData) Delayed
+ HasProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue) Delayed
+ GetProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue, WebKit::NPVariantData resultData) Delayed
+ SetProperty(WebKit::NPIdentifierData propertyName, WebKit::NPVariantData propertyValueData) -> (bool returnValue) Delayed
+ RemoveProperty(WebKit::NPIdentifierData propertyName) -> (bool returnValue) Delayed
+ Enumerate() -> (bool returnValue, Vector<WebKit::NPIdentifierData> identifiersData) Delayed
+ Construct(Vector<WebKit::NPVariantData> argumentsData) -> (bool returnValue, WebKit::NPVariantData resultData) Delayed
}
#endif
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.cpp (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.cpp 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.cpp 2019-02-14 11:26:50 UTC (rev 241519)
@@ -60,18 +60,18 @@
{
}
-void SecItemShimProxy::secItemRequest(const SecItemRequestData& request, SecItemResponseData& response)
+void SecItemShimProxy::secItemRequest(const SecItemRequestData& request, CompletionHandler<void(SecItemResponseData&&)>&& response)
{
switch (request.type()) {
case SecItemRequestData::Invalid:
LOG_ERROR("SecItemShimProxy::secItemRequest received an invalid data request. Please file a bug if you know how you caused this.");
- response = SecItemResponseData(errSecParam, nullptr);
+ response(SecItemResponseData(errSecParam, nullptr));
break;
case SecItemRequestData::CopyMatching: {
CFTypeRef resultObject = 0;
OSStatus resultCode = SecItemCopyMatching(request.query(), &resultObject);
- response = SecItemResponseData(resultCode, adoptCF(resultObject).get());
+ response(SecItemResponseData(resultCode, adoptCF(resultObject).get()));
break;
}
@@ -79,19 +79,19 @@
// Return value of SecItemAdd is often ignored. Even if it isn't, we don't have the ability to
// serialize SecKeychainItemRef.
OSStatus resultCode = SecItemAdd(request.query(), nullptr);
- response = SecItemResponseData(resultCode, nullptr);
+ response(SecItemResponseData(resultCode, nullptr));
break;
}
case SecItemRequestData::Update: {
OSStatus resultCode = SecItemUpdate(request.query(), request.attributesToMatch());
- response = SecItemResponseData(resultCode, 0);
+ response(SecItemResponseData(resultCode, 0));
break;
}
case SecItemRequestData::Delete: {
OSStatus resultCode = SecItemDelete(request.query());
- response = SecItemResponseData(resultCode, 0);
+ response(SecItemResponseData(resultCode, 0));
break;
}
}
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.h (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.h 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.h 2019-02-14 11:26:50 UTC (rev 241519)
@@ -48,7 +48,7 @@
void didReceiveMessage(IPC::Connection&, IPC::Decoder&) override;
void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) override;
- void secItemRequest(const SecItemRequestData&, SecItemResponseData&);
+ void secItemRequest(const SecItemRequestData&, CompletionHandler<void(SecItemResponseData&&)>&&);
Ref<WorkQueue> m_queue;
};
Modified: releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.messages.in (241518 => 241519)
--- releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.messages.in 2019-02-14 11:26:41 UTC (rev 241518)
+++ releases/WebKitGTK/webkit-2.24/Source/WebKit/UIProcess/mac/SecItemShimProxy.messages.in 2019-02-14 11:26:50 UTC (rev 241519)
@@ -23,7 +23,7 @@
messages -> SecItemShimProxy {
#if ENABLE(SEC_ITEM_SHIM)
- SecItemRequest(WebKit::SecItemRequestData request) -> (WebKit::SecItemResponseData response) LegacySync
+ SecItemRequest(WebKit::SecItemRequestData request) -> (WebKit::SecItemResponseData response) Delayed
#endif
}