| // Copyright (c) 2011 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 WEBKIT_GLUE_MEDIA_WEB_DATA_SOURCE_H_ |
| #define WEBKIT_GLUE_MEDIA_WEB_DATA_SOURCE_H_ |
| |
| #include "media/base/filters.h" |
| #include "media/base/pipeline_status.h" |
| |
| namespace webkit_glue { |
| |
| // An interface that allows WebMediaPlayerImpl::Proxy to communicate with the |
| // DataSource in the pipeline. |
| class WebDataSource : public media::DataSource { |
| public: |
| WebDataSource(); |
| virtual ~WebDataSource(); |
| |
| // Initialize this object using |url|. This object calls |callback| when |
| // initialization has completed. |
| virtual void Initialize(const std::string& url, |
| media::PipelineStatusCallback* callback) = 0; |
| |
| // Called to cancel initialization. The callback passed in Initialize() will |
| // be destroyed and will not be called after this method returns. Once this |
| // method returns, the object will be in an uninitialized state and |
| // Initialize() cannot be called again. The caller is expected to release |
| // its handle to this object and never call it again. |
| virtual void CancelInitialize() = 0; |
| |
| // Returns true if the media resource has a single origin, false otherwise. |
| // |
| // Method called on the render thread. |
| virtual bool HasSingleOrigin() = 0; |
| |
| // This method is used to unblock any read calls that would cause the |
| // media pipeline to stall. |
| // |
| // Method called on the render thread. |
| virtual void Abort() = 0; |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(WebDataSource); |
| }; |
| |
| // Temporary hack to allow WebMediaPlayerImpl::Proxy::AddDataSource() to |
| // be called when WebDataSource objects are created. This can be removed |
| // once WebMediaPlayerImpl::Proxy is fixed so it doesn't have to track |
| // WebDataSources. Proxy only has to track WebDataSources so it can call Abort() |
| // on them at shutdown. Once cancellation is added to DataSource and pause |
| // support in Demuxers cancel pending reads, Proxy shouldn't have to keep |
| // a WebDataSource list or call Abort(). |
| typedef Callback1<WebDataSource*>::Type WebDataSourceBuildObserverHack; |
| |
| } // namespace webkit_glue |
| |
| #endif // WEBKIT_GLUE_MEDIA_WEB_DATA_SOURCE_H_ |