| // Copyright (c) 2009 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. |
| |
| #ifndef CHROME_FRAME_NPAPI_URL_REQUEST_H_ |
| #define CHROME_FRAME_NPAPI_URL_REQUEST_H_ |
| |
| #include "base/platform_thread.h" |
| #include "chrome_frame/plugin_url_request.h" |
| #include "third_party/WebKit/WebCore/bridge/npapi.h" |
| |
| class NPAPIUrlRequest : public PluginUrlRequest { |
| public: |
| explicit NPAPIUrlRequest(NPP instance); |
| ~NPAPIUrlRequest(); |
| |
| virtual bool Start(); |
| virtual void Stop(); |
| virtual bool Read(int bytes_to_read); |
| |
| // Called from NPAPI |
| bool OnStreamCreated(const char* mime_type, NPStream* stream); |
| void OnStreamDestroyed(NPReason reason); |
| int OnWriteReady(); |
| int OnWrite(void* buffer, int len); |
| |
| // Thread unsafe implementation of ref counting, since |
| // this will be called on the plugin UI thread only. |
| virtual unsigned long API_CALL AddRef(); |
| virtual unsigned long API_CALL Release(); |
| |
| private: |
| unsigned long ref_count_; |
| NPP instance_; |
| NPStream* stream_; |
| size_t pending_read_size_; |
| URLRequestStatus status_; |
| |
| PlatformThreadId thread_; |
| static int instance_count_; |
| DISALLOW_COPY_AND_ASSIGN(NPAPIUrlRequest); |
| }; |
| |
| #endif // CHROME_FRAME_NPAPI_URL_REQUEST_H_ |
| |