diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:15 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:15 -0800 |
commit | 1cbdecfa9fc428ac2d8aca0fa91c9580b3d57353 (patch) | |
tree | 4457a7306ea5acb43fe05bfe0973b1f7faf97ba2 /WebCore/loader/NetscapePlugInStreamLoader.cpp | |
parent | 9364f22aed35e1a1e9d07c121510f80be3ab0502 (diff) | |
download | external_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.cpp | 17 |
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); } |