Chromium Code Reviews| Index: content/renderer/pepper/resource_converter.cc |
| diff --git a/content/renderer/pepper/resource_converter.cc b/content/renderer/pepper/resource_converter.cc |
| index 5054c2dc3a4ff1a3679048067b0dd40eec942a1e..d2fefb1f4780164164feca6a63f77a4dfe1ecdd2 100644 |
| --- a/content/renderer/pepper/resource_converter.cc |
| +++ b/content/renderer/pepper/resource_converter.cc |
| @@ -8,6 +8,7 @@ |
| #include "base/message_loop/message_loop.h" |
| #include "content/public/renderer/renderer_ppapi_host.h" |
| #include "content/renderer/pepper/pepper_file_system_host.h" |
| +#include "content/renderer/pepper/pepper_media_stream_video_track_host.h" |
| #include "ipc/ipc_message.h" |
| #include "ppapi/host/ppapi_host.h" |
| #include "ppapi/host/resource_host.h" |
| @@ -15,8 +16,11 @@ |
| #include "ppapi/shared_impl/resource_var.h" |
| #include "ppapi/shared_impl/scoped_pp_var.h" |
| #include "third_party/WebKit/public/platform/WebFileSystem.h" |
| +#include "third_party/WebKit/public/platform/WebMediaStreamSource.h" |
| #include "third_party/WebKit/public/web/WebDOMFileSystem.h" |
| +#include "third_party/WebKit/public/web/WebDOMMediaStreamTrack.h" |
| +namespace content { |
| namespace { |
| void FlushComplete( |
| @@ -52,7 +56,7 @@ PP_FileSystemType WebFileSystemTypeToPPAPI(blink::WebFileSystem::Type type) { |
| // On error, false. |
| bool DOMFileSystemToResource( |
| PP_Instance instance, |
| - content::RendererPpapiHost* host, |
| + RendererPpapiHost* host, |
| const blink::WebDOMFileSystem& dom_file_system, |
| int* pending_renderer_id, |
| scoped_ptr<IPC::Message>* create_message, |
| @@ -71,8 +75,8 @@ bool DOMFileSystemToResource( |
| *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( |
| scoped_ptr<ppapi::host::ResourceHost>( |
| - new content::PepperFileSystemHost(host, instance, 0, root_url, |
| - file_system_type))); |
| + new PepperFileSystemHost(host, instance, 0, root_url, |
| + file_system_type))); |
| if (*pending_renderer_id == 0) |
| return false; |
| @@ -85,9 +89,35 @@ bool DOMFileSystemToResource( |
| return true; |
| } |
| -} // namespace |
| +bool DOMMediaStreamTrackToResource( |
| + PP_Instance instance, |
| + RendererPpapiHost* host, |
| + const blink::WebDOMMediaStreamTrack& dom_media_stream_track, |
| + int* pending_renderer_id, |
| + scoped_ptr<IPC::Message>* create_message) { |
| + DCHECK(!dom_media_stream_track.isNull()); |
| + *pending_renderer_id = 0; |
| + |
| + const blink::WebMediaStreamTrack track = |
| + dom_media_stream_track.component(); |
| + const std::string id = track.source().id().utf8(); |
| + |
| + if (track.source().type() == blink::WebMediaStreamSource::TypeVideo) { |
| + *pending_renderer_id = host->GetPpapiHost()->AddPendingResourceHost( |
| + scoped_ptr<ppapi::host::ResourceHost>( |
| + new PepperMediaStreamVideoTrackHost(host, instance, 0, track))); |
| + if (*pending_renderer_id == 0) |
| + return false; |
| + create_message->reset( |
| + new PpapiPluginMsg_MediaStreamVideoTrack_CreateFromPendingHost(id)); |
|
dmichael (off chromium)
2014/01/09 21:06:47
nit: should be indented 4 spaces
Peng
2014/01/10 19:14:30
Done.
|
| -namespace content { |
| + return true; |
| + } |
|
dmichael (off chromium)
2014/01/09 21:06:47
Might be worth adding a TODO, if this is also wher
Peng
2014/01/10 19:14:30
Done.
|
| + |
| + return false; |
| +} |
| + |
| +} // namespace |
| ResourceConverter::~ResourceConverter() {} |
| @@ -133,6 +163,24 @@ bool ResourceConverterImpl::FromV8Value(v8::Handle<v8::Object> val, |
| return true; |
| } |
| + blink::WebDOMMediaStreamTrack dom_media_stream_track = |
| + blink::WebDOMMediaStreamTrack::fromV8Value(val); |
|
dmichael (off chromium)
2014/01/09 21:06:47
4-space indent
Peng
2014/01/10 19:14:30
Done
I don't know why vim continue giving me 2-sp
dmichael (off chromium)
2014/01/13 21:26:47
No... when I first started, I was using the recom
|
| + if (!dom_media_stream_track.isNull()) { |
| + int pending_renderer_id; |
| + scoped_ptr<IPC::Message> create_message; |
| + scoped_ptr<IPC::Message> browser_host_create_message; |
|
dmichael (off chromium)
2014/01/09 21:06:47
It looks like this message is not necessary here;
Peng
2014/01/10 19:14:30
Done.
|
| + if (!DOMMediaStreamTrackToResource(instance_, host_, dom_media_stream_track, |
| + &pending_renderer_id, &create_message)) { |
| + return false; |
| + } |
| + DCHECK(create_message); |
| + scoped_refptr<HostResourceVar> result_var = |
| + CreateResourceVar(pending_renderer_id, *create_message); |
| + *result = result_var->GetPPVar(); |
| + *was_resource = true; |
| + return true; |
| + } |
| + |
| // The value was not convertible to a resource. Return true with |
| // |was_resource| set to false. As per the interface of FromV8Value, |result| |
| // may be left unmodified in this case. |