summaryrefslogtreecommitdiffstats
path: root/WebCore/loader/NetscapePlugInStreamLoader.cpp
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:05:15 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2008-12-17 18:05:15 -0800
commit1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353 (patch)
tree4457a7306ea5acb43fe05bfe0973b1f7faf97ba2 /WebCore/loader/NetscapePlugInStreamLoader.cpp
parent9364f22aed35e1a1e9d07c121510f80be3ab0502 (diff)
downloadexternal_webkit-1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353.zip
external_webkit-1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353.tar.gz
external_webkit-1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353.tar.bz2
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'WebCore/loader/NetscapePlugInStreamLoader.cpp')
-rw-r--r--WebCore/loader/NetscapePlugInStreamLoader.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/WebCore/loader/NetscapePlugInStreamLoader.cpp b/WebCore/loader/NetscapePlugInStreamLoader.cpp
index 47c9599..e12ed07 100644
--- a/WebCore/loader/NetscapePlugInStreamLoader.cpp
+++ b/WebCore/loader/NetscapePlugInStreamLoader.cpp
@@ -46,7 +46,7 @@ NetscapePlugInStreamLoader::~NetscapePlugInStreamLoader()
PassRefPtr<NetscapePlugInStreamLoader> NetscapePlugInStreamLoader::create(Frame* frame, NetscapePlugInStreamLoaderClient* client)
{
- return new NetscapePlugInStreamLoader(frame, client);
+ return adoptRef(new NetscapePlugInStreamLoader(frame, client));
}
bool NetscapePlugInStreamLoader::isDone() const
@@ -76,7 +76,13 @@ void NetscapePlugInStreamLoader::didReceiveResponse(const ResourceResponse& resp
if (!m_client)
return;
- if (response.isHTTP() && (response.httpStatusCode() < 100 || response.httpStatusCode() >= 400))
+ if (!response.isHTTP())
+ return;
+
+ if (m_client->wantsAllStreams())
+ return;
+
+ if (response.httpStatusCode() < 100 || response.httpStatusCode() >= 400)
didCancel(frameLoader()->fileDoesNotExistError(response));
}
@@ -111,8 +117,13 @@ void NetscapePlugInStreamLoader::didCancel(const ResourceError& error)
{
RefPtr<NetscapePlugInStreamLoader> protect(this);
- m_documentLoader->removePlugInStreamLoader(this);
m_client->didFail(this, error);
+
+ // We need to remove the stream loader after the call to didFail, since didFail can
+ // spawn a new run loop and if the loader has been removed it won't be deferred when
+ // the document loader is asked to defer loading.
+ m_documentLoader->removePlugInStreamLoader(this);
+
ResourceLoader::didCancel(error);
}