Diff
Modified: branches/safari-536.28-branch/LayoutTests/ChangeLog (137616 => 137617)
--- branches/safari-536.28-branch/LayoutTests/ChangeLog 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/LayoutTests/ChangeLog 2012-12-13 18:55:49 UTC (rev 137617)
@@ -1,3 +1,7 @@
+2012-12-13 Lucas Forschler <[email protected]>
+
+ Rollout r134991
+
2012-12-12 Lucas Forschler <[email protected]>
Merge r137393
Deleted: branches/safari-536.28-branch/LayoutTests/platform/mac-wk2/plugins/script-object-access-fails-during-slow-initialization-expected.txt (137616 => 137617)
--- branches/safari-536.28-branch/LayoutTests/platform/mac-wk2/plugins/script-object-access-fails-during-slow-initialization-expected.txt 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/LayoutTests/platform/mac-wk2/plugins/script-object-access-fails-during-slow-initialization-expected.txt 2012-12-13 18:55:49 UTC (rev 137617)
@@ -1,8 +0,0 @@
-
-Tests that accessing the script object of a plug-in that hasn't been initialized fails instead of waiting for initialization to finish.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS Accessing the property took less than 550ms, meaning the plug-in had not finished initializing after our call to the plug-in script object returned.
-
Deleted: branches/safari-536.28-branch/LayoutTests/platform/mac-wk2/plugins/script-object-access-fails-during-slow-initialization.html (137616 => 137617)
--- branches/safari-536.28-branch/LayoutTests/platform/mac-wk2/plugins/script-object-access-fails-during-slow-initialization.html 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/LayoutTests/platform/mac-wk2/plugins/script-object-access-fails-during-slow-initialization.html 2012-12-13 18:55:49 UTC (rev 137617)
@@ -1,47 +0,0 @@
-<head>
-<script src=""
-<script>
-
-var startTime = new Date;
-
-if (window.testRunner) {
- testRunner.overridePreference("WebKit2AsynchronousPluginInitializationEnabled", "1");
- testRunner.overridePreference("WebKit2AsynchronousPluginInitializationEnabledForAllPlugins", "1");
- testRunner.dumpAsText();
- testRunner.waitUntilDone();
-}
-
-function runTest()
-{
- if (!window.testRunner) {
- debug("This test can only run from within DumpRenderTree because it requires test runner internals.\n");
- return;
- }
-
- var pluginElement = document.getElementById("TestElement");
- var testProperty = pluginElement.fooBar;
-
- if (testProperty)
- testFailed("testProperty should not have returned anything, but it returned " + testProperty);
-
- var endTime = new Date;
- if (endTime - startTime > 549)
- testFailed("This test took over 549ms meaning the plug-in with a 550ms startup delay was actually initialized. It never should've been initialized.");
- else
- testPassed("Accessing the property took less than 550ms, meaning the plug-in had not finished initializing after our call to the plug-in script object returned.");
-
- testRunner.notifyDone();
-}
-</script>
-
-</head>
-<body _onload_="setTimeout('runTest()', 0)">
-<embed id="TestElement" type="application/x-webkit-test-netscape" test="slow-npp-new"></embed>
-<p id="description"></p>
-<div id="console"></div>
-</body>
-
-<script>
-description("Tests that accessing the script object of a plug-in that hasn't been initialized fails instead of waiting for initialization to finish.");
-var unused = document.body.offsetTop;
-</script>
Modified: branches/safari-536.28-branch/Source/WebKit2/ChangeLog (137616 => 137617)
--- branches/safari-536.28-branch/Source/WebKit2/ChangeLog 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Source/WebKit2/ChangeLog 2012-12-13 18:55:49 UTC (rev 137617)
@@ -1,3 +1,7 @@
+2012-12-13 Lucas Forschler <[email protected]>
+
+ Rollout r134991
+
2012-12-06 Anders Carlsson <[email protected]>
<rdar://problem/12828185> "Invalid message" crash reporter data should also include last sent sync message
Modified: branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h (137616 => 137617)
--- branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h 2012-12-13 18:55:49 UTC (rev 137617)
@@ -53,6 +53,7 @@
static PassRefPtr<NetscapePlugin> fromNPP(NPP);
// In-process NetscapePlugins don't support asynchronous initialization.
+ virtual void waitForAsynchronousInitialization() { }
virtual bool isBeingAsynchronouslyInitialized() const { return false; }
#if PLATFORM(MAC)
Modified: branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h (137616 => 137617)
--- branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PDF/BuiltInPDFView.h 2012-12-13 18:55:49 UTC (rev 137617)
@@ -51,6 +51,7 @@
static WebCore::PluginInfo pluginInfo();
// In-process PDFViews don't support asynchronous initialization.
+ virtual void waitForAsynchronousInitialization() { }
virtual bool isBeingAsynchronouslyInitialized() const { return false; }
private:
Modified: branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/Plugin.h (137616 => 137617)
--- branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/Plugin.h 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/Plugin.h 2012-12-13 18:55:49 UTC (rev 137617)
@@ -83,6 +83,8 @@
// Sets the active plug-in controller and initializes the plug-in.
bool initialize(PluginController*, const Parameters&);
+ // Forces synchronous initialization of a plugin previously initialized asynchronously.
+ virtual void waitForAsynchronousInitialization() = 0;
virtual bool isBeingAsynchronouslyInitialized() const = 0;
// Destroys the plug-in.
Modified: branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp (137616 => 137617)
--- branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginProxy.cpp 2012-12-13 18:55:49 UTC (rev 137617)
@@ -123,6 +123,14 @@
return controller()->asynchronousPluginInitializationEnabled() && (m_connection->supportsAsynchronousPluginInitialization() || controller()->asynchronousPluginInitializationEnabledForAllPlugins());
}
+void PluginProxy::waitForAsynchronousInitialization()
+{
+ ASSERT(!m_isStarted);
+ ASSERT(m_waitingOnAsynchronousInitialization);
+
+ initializeSynchronously();
+}
+
bool PluginProxy::initializeSynchronously()
{
ASSERT(m_pendingPluginCreationParameters);
Modified: branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginProxy.h (137616 => 137617)
--- branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginProxy.h 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginProxy.h 2012-12-13 18:55:49 UTC (rev 137617)
@@ -71,6 +71,7 @@
virtual bool initialize(const Parameters&);
bool initializeSynchronously();
+ virtual void waitForAsynchronousInitialization();
virtual void destroy();
virtual void paint(WebCore::GraphicsContext*, const WebCore::IntRect& dirtyRect);
virtual PassRefPtr<ShareableBitmap> snapshot();
Modified: branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginView.cpp (137616 => 137617)
--- branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Source/WebKit2/WebProcess/Plugins/PluginView.cpp 2012-12-13 18:55:49 UTC (rev 137617)
@@ -545,8 +545,19 @@
if (m_isWaitingForSynchronousInitialization)
return 0;
- // We might not have started initialization of the plug-in yet, the plug-in might be in the middle
- // of being initializing asynchronously, or initialization might have previously failed.
+ // The plug-in can be null here if it failed to initialize previously.
+ if (!m_plugin)
+ return 0;
+
+ // If the plug-in exists but is not initialized then we're still initializing asynchronously.
+ // We need to wait here until initialization has either succeeded or failed.
+ if (m_plugin->isBeingAsynchronouslyInitialized()) {
+ m_isWaitingForSynchronousInitialization = true;
+ m_plugin->waitForAsynchronousInitialization();
+ m_isWaitingForSynchronousInitialization = false;
+ }
+
+ // The plug-in can be null here if it still failed to initialize.
if (!m_isInitialized || !m_plugin)
return 0;
Modified: branches/safari-536.28-branch/Tools/ChangeLog (137616 => 137617)
--- branches/safari-536.28-branch/Tools/ChangeLog 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Tools/ChangeLog 2012-12-13 18:55:49 UTC (rev 137617)
@@ -1,3 +1,7 @@
+2012-12-13 Lucas Forschler <[email protected]>
+
+ Rollout r134991
+
2012-11-26 Lucas Forschler <[email protected]>
Merge r132713
Modified: branches/safari-536.28-branch/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/SlowNPPNew.cpp (137616 => 137617)
--- branches/safari-536.28-branch/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/SlowNPPNew.cpp 2012-12-13 18:52:58 UTC (rev 137616)
+++ branches/safari-536.28-branch/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/SlowNPPNew.cpp 2012-12-13 18:55:49 UTC (rev 137617)
@@ -37,46 +37,7 @@
}
private:
- class PluginObject : public Object<PluginObject> {
- public:
- PluginObject()
- {
- }
-
- ~PluginObject()
- {
- }
-
- bool hasProperty(NPIdentifier propertyName)
- {
- return true;
- }
-
- bool getProperty(NPIdentifier propertyName, NPVariant* result)
- {
- static const char* message = "My name is ";
- char* propertyString = pluginTest()->NPN_UTF8FromIdentifier(propertyName);
-
- int bufferLength = strlen(propertyString) + strlen(message) + 1;
- char* resultBuffer = static_cast<char*>(pluginTest()->NPN_MemAlloc(bufferLength));
- snprintf(resultBuffer, bufferLength, "%s%s", message, propertyString);
-
- STRINGZ_TO_NPVARIANT(resultBuffer, *result);
-
- return true;
- }
- };
- virtual NPError NPP_GetValue(NPPVariable variable, void *value)
- {
- if (variable != NPPVpluginScriptableNPObject)
- return NPERR_GENERIC_ERROR;
-
- *(NPObject**)value = PluginObject::create(this);
-
- return NPERR_NO_ERROR;
- }
-
virtual NPError NPP_New(NPMIMEType pluginType, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData *saved)
{
usleep(550000);