summaryrefslogtreecommitdiffstats
path: root/webkit/plugins/npapi/plugin_stream_posix.cc
diff options
context:
space:
mode:
Diffstat (limited to 'webkit/plugins/npapi/plugin_stream_posix.cc')
-rw-r--r--webkit/plugins/npapi/plugin_stream_posix.cc47
1 files changed, 16 insertions, 31 deletions
diff --git a/webkit/plugins/npapi/plugin_stream_posix.cc b/webkit/plugins/npapi/plugin_stream_posix.cc
index 7a89ff1..fd275a2 100644
--- a/webkit/plugins/npapi/plugin_stream_posix.cc
+++ b/webkit/plugins/npapi/plugin_stream_posix.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -14,61 +14,46 @@
namespace webkit {
namespace npapi {
-PluginStream::PluginStream(
- PluginInstance *instance,
- const char *url,
- bool need_notify,
- void *notify_data)
- : instance_(instance),
- notify_needed_(need_notify),
- notify_data_(notify_data),
- close_on_write_data_(false),
- requested_plugin_mode_(NP_NORMAL),
- opened_(false),
- temp_file_(NULL),
- temp_file_path_(),
- data_offset_(0),
- seekable_stream_(false) {
- memset(&stream_, 0, sizeof(stream_));
- stream_.url = strdup(url);
-}
-
-void PluginStream::UpdateUrl(const char* url) {
- DCHECK(!opened_);
- free(const_cast<char*>(stream_.url));
- stream_.url = strdup(url);
+void PluginStream::ResetTempFilenameAndHandle() {
+ temp_file_path_ = FilePath();
+ temp_file_ = NULL;
}
void PluginStream::WriteAsFile() {
if (requested_plugin_mode_ == NP_ASFILE ||
- requested_plugin_mode_ == NP_ASFILEONLY)
+ requested_plugin_mode_ == NP_ASFILEONLY) {
instance_->NPP_StreamAsFile(&stream_, temp_file_path_.value().c_str());
+ }
}
-size_t PluginStream::WriteBytes(const char *buf, size_t length) {
+size_t PluginStream::WriteBytes(const char* buf, size_t length) {
return fwrite(buf, sizeof(char), length, temp_file_);
}
bool PluginStream::OpenTempFile() {
- DCHECK(temp_file_ == NULL);
+ DCHECK_EQ(static_cast<FILE*>(NULL), temp_file_);
if (file_util::CreateTemporaryFile(&temp_file_path_))
temp_file_ = file_util::OpenFile(temp_file_path_, "a");
if (!temp_file_) {
- temp_file_path_ = FilePath("");
+ file_util::Delete(temp_file_path_, false);
+ temp_file_path_ = FilePath();
return false;
}
-
return true;
}
void PluginStream::CloseTempFile() {
+ if (!TempFileIsValid())
+ return;
+
file_util::CloseFile(temp_file_);
- temp_file_ = NULL;
+ file_util::Delete(temp_file_path_, false);
+ ResetTempFilenameAndHandle();
}
-bool PluginStream::TempFileIsValid() {
+bool PluginStream::TempFileIsValid() const {
return temp_file_ != NULL;
}