summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/WebCore/plugins/PluginStream.cpp8
-rw-r--r--Source/WebCore/plugins/PluginStream.h1
-rw-r--r--Source/WebCore/plugins/PluginView.cpp5
-rw-r--r--Source/WebCore/plugins/PluginView.h2
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;