1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/child/npapi/plugin_string_stream.h" 6 7 #include "url/gurl.h" 8 9 namespace content { 10 11 PluginStringStream::PluginStringStream( 12 PluginInstance* instance, 13 const GURL& url, 14 bool notify_needed, 15 void* notify_data) 16 : PluginStream(instance, url.spec().c_str(), notify_needed, notify_data) { 17 } 18 19 PluginStringStream::~PluginStringStream() { 20 } 21 22 void PluginStringStream::SendToPlugin(const std::string &data, 23 const std::string &mime_type) { 24 // Protect the stream against it being destroyed or the whole plugin instance 25 // being destroyed within the plugin stream callbacks. 26 scoped_refptr<PluginStringStream> protect(this); 27 28 int length = static_cast<int>(data.length()); 29 if (Open(mime_type, std::string(), length, 0, false)) { 30 // TODO - check if it was not fully sent, and figure out a backup plan. 31 int written = Write(data.c_str(), length, 0); 32 NPReason reason = written == length ? NPRES_DONE : NPRES_NETWORK_ERR; 33 Close(reason); 34 } 35 } 36 37 } // namespace content 38