1 // Copyright (c) 2011 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.
5 #ifndef WEBKIT_GLUE_MEDIA_BUFFERED_DATA_SOURCE_FACTORY_H_
6 #define WEBKIT_GLUE_MEDIA_BUFFERED_DATA_SOURCE_FACTORY_H_
8 #include "base/memory/ref_counted.h"
9 #include "media/base/async_filter_factory_base.h"
10 #include "webkit/glue/media/web_data_source.h"
22 namespace webkit_glue
{
24 class WebDataSourceFactory
: public media::AsyncDataSourceFactoryBase
{
26 typedef WebDataSource
* (*FactoryFunction
)(MessageLoop
* render_loop
,
27 WebKit::WebFrame
* frame
,
28 media::MediaLog
* media_log
);
30 WebDataSourceFactory(MessageLoop
* render_loop
, WebKit::WebFrame
* frame
,
31 media::MediaLog
* media_log
,
32 FactoryFunction factory_function
,
33 const WebDataSourceBuildObserverHack
& build_observer
);
34 virtual ~WebDataSourceFactory();
36 // DataSourceFactory method.
37 virtual media::DataSourceFactory
* Clone() const;
40 // AsyncDataSourceFactoryBase methods.
41 virtual bool AllowRequests() const;
42 virtual AsyncDataSourceFactoryBase::BuildRequest
* CreateRequest(
43 const std::string
& url
, const BuildCallback
& callback
);
48 MessageLoop
* render_loop_
;
49 WebKit::WebFrame
* frame_
;
50 scoped_refptr
<media::MediaLog
> media_log_
;
51 FactoryFunction factory_function_
;
52 WebDataSourceBuildObserverHack build_observer_
;
54 DISALLOW_COPY_AND_ASSIGN(WebDataSourceFactory
);
57 } // namespace webkit_glue
59 #endif // WEBKIT_GLUE_MEDIA_BUFFERED_DATA_SOURCE_FACTORY_H_