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

Unified Diff: content/renderer/pepper/resource_converter.cc

Issue 101463008: [NOT FOR REVIEW][PPAPI] Implement MediaStreamVideoTrack pepper API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Update Created 6 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/pepper/plugin_module.cc ('k') | ppapi/api/ppb_media_stream_video_track.idl » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
-namespace content {
+ return true;
+ }
+
+ 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);
+ if (!dom_media_stream_track.isNull()) {
+ int pending_renderer_id;
+ scoped_ptr<IPC::Message> create_message;
+ scoped_ptr<IPC::Message> browser_host_create_message;
+ 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.
« no previous file with comments | « content/renderer/pepper/plugin_module.cc ('k') | ppapi/api/ppb_media_stream_video_track.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698