diff options
Diffstat (limited to 'webkit/plugins/npapi/plugin_stream_posix.cc')
-rw-r--r-- | webkit/plugins/npapi/plugin_stream_posix.cc | 47 |
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; } |