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

Side by Side Diff: webkit/glue/media/simple_data_source.h

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/media_stream_client.h ('k') | webkit/glue/media/simple_data_source.cc » ('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 // An extremely simple implementation of DataSource that downloads the entire
6 // media resource into memory before signaling that initialization has finished.
7 // Primarily used to test <audio> and <video> with buffering/caching removed
8 // from the equation.
9
10 #ifndef WEBKIT_GLUE_MEDIA_SIMPLE_DATA_SOURCE_H_
11 #define WEBKIT_GLUE_MEDIA_SIMPLE_DATA_SOURCE_H_
12
13 #include <algorithm>
14 #include <string>
15
16 #include "base/memory/scoped_ptr.h"
17 #include "base/message_loop.h"
18 #include "media/base/filter_factories.h"
19 #include "media/base/filters.h"
20 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
21 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLLoader.h"
22 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLLoaderClient.h"
23 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLRequest.h"
24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURLResponse.h"
25 #include "webkit/glue/media/web_data_source.h"
26
27 class MessageLoop;
28 class WebMediaPlayerDelegateImpl;
29
30 namespace media {
31 class MediaLog;
32 }
33
34 namespace webkit_glue {
35
36 class SimpleDataSource
37 : public WebDataSource,
38 public WebKit::WebURLLoaderClient {
39 public:
40 // Creates a DataSourceFactory for building SimpleDataSource objects.
41 static media::DataSourceFactory* CreateFactory(
42 MessageLoop* render_loop,
43 WebKit::WebFrame* frame,
44 media::MediaLog* media_log,
45 const WebDataSourceBuildObserverHack& build_observer);
46
47 SimpleDataSource(MessageLoop* render_loop, WebKit::WebFrame* frame);
48 virtual ~SimpleDataSource();
49
50 // media::Filter implementation.
51 virtual void set_host(media::FilterHost* host);
52 virtual void Stop(const base::Closure& callback);
53
54 // media::DataSource implementation.
55 virtual void Read(int64 position, size_t size,
56 uint8* data, const DataSource::ReadCallback& read_callback);
57 virtual bool GetSize(int64* size_out);
58 virtual bool IsStreaming();
59 virtual void SetPreload(media::Preload preload);
60 virtual void SetBitrate(int bitrate);
61
62 // Used to inject a mock used for unittests.
63 virtual void SetURLLoaderForTest(WebKit::WebURLLoader* mock_loader);
64
65 // WebKit::WebURLLoaderClient implementations.
66 virtual void willSendRequest(
67 WebKit::WebURLLoader* loader,
68 WebKit::WebURLRequest& newRequest,
69 const WebKit::WebURLResponse& redirectResponse);
70 virtual void didSendData(
71 WebKit::WebURLLoader* loader,
72 unsigned long long bytesSent,
73 unsigned long long totalBytesToBeSent);
74 virtual void didReceiveResponse(
75 WebKit::WebURLLoader* loader,
76 const WebKit::WebURLResponse& response);
77 virtual void didDownloadData(
78 WebKit::WebURLLoader* loader,
79 int dataLength);
80 virtual void didReceiveData(
81 WebKit::WebURLLoader* loader,
82 const char* data,
83 int dataLength,
84 int encodedDataLength);
85 virtual void didReceiveCachedMetadata(
86 WebKit::WebURLLoader* loader,
87 const char* data, int dataLength);
88 virtual void didFinishLoading(
89 WebKit::WebURLLoader* loader,
90 double finishTime);
91 virtual void didFail(
92 WebKit::WebURLLoader* loader,
93 const WebKit::WebURLError&);
94
95 // webkit_glue::WebDataSource implementation.
96 virtual void Initialize(const std::string& url,
97 const media::PipelineStatusCB& callback);
98 virtual void CancelInitialize();
99 virtual bool HasSingleOrigin();
100 virtual void Abort();
101
102 private:
103 // Creates and starts the resource loading on the render thread.
104 void StartTask();
105
106 // Cancels and deletes the resource loading on the render thread.
107 void CancelTask();
108
109 // Perform initialization completion tasks under a lock.
110 void DoneInitialization_Locked(bool success);
111
112 // Update host() stats like total bytes & buffered bytes.
113 void UpdateHostState();
114
115 // Primarily used for asserting the bridge is loading on the render thread.
116 MessageLoop* render_loop_;
117
118 // A webframe for loading.
119 WebKit::WebFrame* frame_;
120
121 // Does the work of loading and sends data back to this client.
122 scoped_ptr<WebKit::WebURLLoader> url_loader_;
123
124 GURL url_;
125 std::string data_;
126 int64 size_;
127 bool single_origin_;
128
129 // Simple state tracking variable.
130 enum State {
131 UNINITIALIZED,
132 INITIALIZING,
133 INITIALIZED,
134 STOPPED,
135 };
136 State state_;
137
138 // Used for accessing |state_|.
139 base::Lock lock_;
140
141 // Filter callbacks.
142 media::PipelineStatusCB initialize_cb_;
143
144 // Used to ensure mocks for unittests are used instead of reset in Start().
145 bool keep_test_loader_;
146
147 DISALLOW_COPY_AND_ASSIGN(SimpleDataSource);
148 };
149
150 } // namespace webkit_glue
151
152 #endif // WEBKIT_GLUE_MEDIA_SIMPLE_DATA_SOURCE_H_
OLDNEW
« no previous file with comments | « webkit/glue/media/media_stream_client.h ('k') | webkit/glue/media/simple_data_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698