Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: webkit/glue/media/web_data_source_factory.cc

Issue 8570010: Moving media-related files from webkit/glue/ to webkit/media/. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src
Patch Set: minor fixes Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/glue/media/web_data_source_factory.h ('k') | webkit/glue/media/web_video_renderer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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.
4
5 #include "webkit/glue/media/web_data_source_factory.h"
6
7 #include "base/bind.h"
8 #include "base/logging.h"
9 #include "media/base/media_log.h"
10
11 namespace webkit_glue {
12
13 class WebDataSourceFactory::BuildRequest
14 : public media::AsyncDataSourceFactoryBase::BuildRequest {
15 public:
16 BuildRequest(const std::string& url, const BuildCallback& callback,
17 WebDataSource* data_source,
18 const WebDataSourceBuildObserverHack& build_observer);
19 virtual ~BuildRequest();
20
21 protected:
22 // AsyncDataSourceFactoryBase::BuildRequest method.
23 virtual void DoStart();
24
25 private:
26 void InitDone(media::PipelineStatus status);
27
28 scoped_refptr<WebDataSource> data_source_;
29 WebDataSourceBuildObserverHack build_observer_;
30
31 DISALLOW_COPY_AND_ASSIGN(BuildRequest);
32 };
33
34 WebDataSourceFactory::WebDataSourceFactory(
35 MessageLoop* render_loop,
36 WebKit::WebFrame* frame,
37 media::MediaLog* media_log,
38 FactoryFunction factory_function,
39 const WebDataSourceBuildObserverHack& build_observer)
40 : render_loop_(render_loop),
41 frame_(frame),
42 media_log_(media_log),
43 factory_function_(factory_function),
44 build_observer_(build_observer) {
45 DCHECK(render_loop_);
46 DCHECK(frame_);
47 DCHECK(media_log_);
48 DCHECK(factory_function_);
49 }
50
51 WebDataSourceFactory::~WebDataSourceFactory() {}
52
53 media::DataSourceFactory* WebDataSourceFactory::Clone() const {
54 return new WebDataSourceFactory(render_loop_, frame_, media_log_,
55 factory_function_, build_observer_);
56 }
57
58 bool WebDataSourceFactory::AllowRequests() const {
59 return true;
60 }
61
62 media::AsyncDataSourceFactoryBase::BuildRequest*
63 WebDataSourceFactory::CreateRequest(const std::string& url,
64 const BuildCallback& callback) {
65 WebDataSource* data_source = factory_function_(render_loop_, frame_,
66 media_log_);
67
68 return new WebDataSourceFactory::BuildRequest(url, callback, data_source,
69 build_observer_);
70 }
71
72 WebDataSourceFactory::BuildRequest::BuildRequest(
73 const std::string& url,
74 const BuildCallback& callback,
75 WebDataSource* data_source,
76 const WebDataSourceBuildObserverHack& build_observer)
77 : AsyncDataSourceFactoryBase::BuildRequest(url, callback),
78 data_source_(data_source),
79 build_observer_(build_observer) {
80 }
81
82 WebDataSourceFactory::BuildRequest::~BuildRequest() {
83 if (data_source_.get()) {
84 data_source_->CancelInitialize();
85 data_source_ = NULL;
86 }
87 }
88
89 void WebDataSourceFactory::BuildRequest::DoStart() {
90 data_source_->Initialize(url(), base::Bind(&BuildRequest::InitDone,
91 base::Unretained(this)));
92 }
93
94 void WebDataSourceFactory::BuildRequest::InitDone(
95 media::PipelineStatus status) {
96 scoped_refptr<WebDataSource> data_source;
97
98 data_source = (status == media::PIPELINE_OK) ? data_source_ : NULL;
99 data_source_ = NULL;
100
101 if (!build_observer_.is_null() && data_source.get()) {
102 build_observer_.Run(data_source.get());
103 }
104
105 RequestComplete(status, data_source);
106 // Don't do anything after this line. This object is deleted by
107 // RequestComplete().
108 }
109
110 } // namespace webkit_glue
OLDNEW
« no previous file with comments | « webkit/glue/media/web_data_source_factory.h ('k') | webkit/glue/media/web_video_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698