OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_CHILD_NPAPI_PLUGIN_STREAM_H_ | 5 #ifndef CONTENT_CHILD_NPAPI_PLUGIN_STREAM_H_ |
6 #define CONTENT_CHILD_NPAPI_PLUGIN_STREAM_H_ | 6 #define CONTENT_CHILD_NPAPI_PLUGIN_STREAM_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 11 matching lines...) Expand all Loading... |
22 // of a stream for NPAPI notifications and stream position. | 22 // of a stream for NPAPI notifications and stream position. |
23 class PluginStream : public base::RefCounted<PluginStream> { | 23 class PluginStream : public base::RefCounted<PluginStream> { |
24 public: | 24 public: |
25 // Create a new PluginStream object. If needNotify is true, then the | 25 // Create a new PluginStream object. If needNotify is true, then the |
26 // plugin will be notified when the stream has been fully sent. | 26 // plugin will be notified when the stream has been fully sent. |
27 PluginStream(PluginInstance* instance, | 27 PluginStream(PluginInstance* instance, |
28 const char* url, | 28 const char* url, |
29 bool need_notify, | 29 bool need_notify, |
30 void* notify_data); | 30 void* notify_data); |
31 | 31 |
32 // In case of a redirect, this can be called to update the url. But it must | |
33 // be called before Open(). | |
34 void UpdateUrl(const char* url); | |
35 | |
36 // Opens the stream to the Plugin. | 32 // Opens the stream to the Plugin. |
37 // If the mime-type is not specified, we'll try to find one based on the | 33 // If the mime-type is not specified, we'll try to find one based on the |
38 // mime-types table and the extension (if any) in the URL. | 34 // mime-types table and the extension (if any) in the URL. |
39 // If the size of the stream is known, use length to set the size. If | 35 // If the size of the stream is known, use length to set the size. If |
40 // not known, set length to 0. | 36 // not known, set length to 0. |
41 // The request_is_seekable parameter indicates whether byte range requests | 37 // The request_is_seekable parameter indicates whether byte range requests |
42 // can be issued on the stream. | 38 // can be issued on the stream. |
43 bool Open(const std::string &mime_type, | 39 bool Open(const std::string &mime_type, |
44 const std::string &headers, | 40 const std::string &headers, |
45 uint32 length, | 41 uint32 length, |
(...skipping 10 matching lines...) Expand all Loading... |
56 void Notify(NPReason reason); | 52 void Notify(NPReason reason); |
57 | 53 |
58 // Close the stream. | 54 // Close the stream. |
59 virtual bool Close(NPReason reason); | 55 virtual bool Close(NPReason reason); |
60 | 56 |
61 virtual WebPluginResourceClient* AsResourceClient(); | 57 virtual WebPluginResourceClient* AsResourceClient(); |
62 | 58 |
63 // Cancels any HTTP requests initiated by the stream. | 59 // Cancels any HTTP requests initiated by the stream. |
64 virtual void CancelRequest() {} | 60 virtual void CancelRequest() {} |
65 | 61 |
66 const NPStream* stream() const { return &stream_; } | 62 NPStream* stream() { return &stream_; } |
| 63 |
| 64 PluginInstance* instance() { return instance_.get(); } |
67 | 65 |
68 // setter/getter for the seekable attribute on the stream. | 66 // setter/getter for the seekable attribute on the stream. |
69 bool seekable() const { return seekable_stream_; } | 67 bool seekable() const { return seekable_stream_; } |
70 | 68 |
71 void set_seekable(bool seekable) { seekable_stream_ = seekable; } | 69 void set_seekable(bool seekable) { seekable_stream_ = seekable; } |
72 | 70 |
73 // getters for reading the notification related attributes on the stream. | 71 // getters for reading the notification related attributes on the stream. |
74 bool notify_needed() const { return notify_needed_; } | 72 bool notify_needed() const { return notify_needed_; } |
75 | 73 |
76 void* notify_data() const { return notify_data_; } | 74 void* notify_data() const { return notify_data_; } |
77 | 75 |
78 std::string pending_redirect_url() const { return pending_redirect_url_; } | |
79 | |
80 protected: | 76 protected: |
81 friend class base::RefCounted<PluginStream>; | 77 friend class base::RefCounted<PluginStream>; |
82 | 78 |
83 virtual ~PluginStream(); | 79 virtual ~PluginStream(); |
84 | 80 |
85 PluginInstance* instance() { return instance_.get(); } | |
86 | |
87 // Check if the stream is open. | 81 // Check if the stream is open. |
88 bool open() { return opened_; } | 82 bool open() { return opened_; } |
89 | 83 |
90 // If the plugin participates in HTTP URL redirect handling then this member | |
91 // holds the url being redirected to while we wait for the plugin to make a | |
92 // decision on whether to allow or deny the redirect. | |
93 std::string pending_redirect_url_; | |
94 | |
95 private: | 84 private: |
96 // Per platform method to reset the temporary file handle. | 85 // Per platform method to reset the temporary file handle. |
97 void ResetTempFileHandle(); | 86 void ResetTempFileHandle(); |
98 | 87 |
99 // Per platform method to reset the temporary file name. | 88 // Per platform method to reset the temporary file name. |
100 void ResetTempFileName(); | 89 void ResetTempFileName(); |
101 | 90 |
102 // Open a temporary file for this stream. | 91 // Open a temporary file for this stream. |
103 // If successful, will set temp_file_name_, temp_file_handle_, and | 92 // If successful, will set temp_file_name_, temp_file_handle_, and |
104 // return true. | 93 // return true. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 std::vector<char> delivery_data_; | 139 std::vector<char> delivery_data_; |
151 int data_offset_; | 140 int data_offset_; |
152 bool seekable_stream_; | 141 bool seekable_stream_; |
153 std::string mime_type_; | 142 std::string mime_type_; |
154 DISALLOW_COPY_AND_ASSIGN(PluginStream); | 143 DISALLOW_COPY_AND_ASSIGN(PluginStream); |
155 }; | 144 }; |
156 | 145 |
157 } // namespace content | 146 } // namespace content |
158 | 147 |
159 #endif // CONTENT_CHILD_NPAPI_PLUGIN_STREAM_H_ | 148 #endif // CONTENT_CHILD_NPAPI_PLUGIN_STREAM_H_ |
OLD | NEW |