diff options
| -rw-r--r-- | Source/WebCore/plugins/PluginStream.cpp | 8 | ||||
| -rw-r--r-- | Source/WebCore/plugins/PluginStream.h | 1 | ||||
| -rw-r--r-- | Source/WebCore/plugins/PluginView.cpp | 5 | ||||
| -rw-r--r-- | Source/WebCore/plugins/PluginView.h | 2 |
4 files changed, 14 insertions, 2 deletions
diff --git a/Source/WebCore/plugins/PluginStream.cpp b/Source/WebCore/plugins/PluginStream.cpp index b03436166..8fb5d6e34 100644 --- a/Source/WebCore/plugins/PluginStream.cpp +++ b/Source/WebCore/plugins/PluginStream.cpp @@ -307,8 +307,12 @@ void PluginStream::destroyStream() if (!m_loadManually && m_client) m_client->streamDidFinishLoading(this); - if (!m_path.isNull()) - deleteFile(m_path); + if (!m_path.isNull()) { + if (m_client) + m_client->streamDidSaveTempFile(m_path); + else + deleteFile(m_path); + } } void PluginStream::delayDeliveryTimerFired(Timer<PluginStream>* timer) diff --git a/Source/WebCore/plugins/PluginStream.h b/Source/WebCore/plugins/PluginStream.h index 55d1702bf..52606b8be 100644 --- a/Source/WebCore/plugins/PluginStream.h +++ b/Source/WebCore/plugins/PluginStream.h @@ -52,6 +52,7 @@ namespace WebCore { class PluginStreamClient { public: virtual ~PluginStreamClient() {} + virtual void streamDidSaveTempFile(const String &) {} virtual void streamDidFinishLoading(PluginStream*) {} }; diff --git a/Source/WebCore/plugins/PluginView.cpp b/Source/WebCore/plugins/PluginView.cpp index 74fd5d79a..237cda701 100644 --- a/Source/WebCore/plugins/PluginView.cpp +++ b/Source/WebCore/plugins/PluginView.cpp @@ -383,6 +383,11 @@ void PluginView::stop() LOG_NPERROR(npErr); PluginView::setCurrentPluginView(0); + Vector<String>::iterator e = m_streamTempFilePaths.end(); + for (Vector<String>::iterator it = m_streamTempFilePaths.begin(); it != e; ++it) + deleteFile(*it); + m_streamTempFilePaths.clear(); + #if ENABLE(NETSCAPE_PLUGIN_API) if (savedData) { // TODO: Actually save this data instead of just discarding it diff --git a/Source/WebCore/plugins/PluginView.h b/Source/WebCore/plugins/PluginView.h index a81bd0ad4..0fa2436d4 100644 --- a/Source/WebCore/plugins/PluginView.h +++ b/Source/WebCore/plugins/PluginView.h @@ -194,6 +194,7 @@ namespace WebCore { void privateBrowsingStateChanged(bool); void disconnectStream(PluginStream*); + void streamDidSaveTempFile(const String &path) { m_streamTempFilePaths.append(path); } void streamDidFinishLoading(PluginStream* stream) { disconnectStream(stream); } // Widget functions @@ -364,6 +365,7 @@ namespace WebCore { HashSet<RefPtr<PluginStream> > m_streams; Vector<OwnPtr<PluginRequest> > m_requests; + Vector<String> m_streamTempFilePaths; bool m_isWindowed; bool m_isTransparent; |
