Fix playing of 8-bit sample files via webaudio.
[chromium-blink-merge.git] / webkit / glue / media / web_data_source_factory.h
blob0e32621234ad11e14294bb5bd47a038e2e6ca974
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"
12 class MessageLoop;
14 namespace media {
15 class MediaLog;
18 namespace WebKit {
19 class WebFrame;
22 namespace webkit_glue {
24 class WebDataSourceFactory : public media::AsyncDataSourceFactoryBase {
25 public:
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;
39 protected:
40 // AsyncDataSourceFactoryBase methods.
41 virtual bool AllowRequests() const;
42 virtual AsyncDataSourceFactoryBase::BuildRequest* CreateRequest(
43 const std::string& url, const BuildCallback& callback);
45 private:
46 class BuildRequest;
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_