Commit afcfc05a authored by mcasas's avatar mcasas Committed by Commit bot

Reland: ImageCapture: move mojom from WebKit/public to media/

Reverted after its own LayoutTests timed out in WebKit Win7 bot.
This is due to media/mojo/interfaces not being in the generated
bindings path, and that's being addressed in
https://codereview.chromium.org/2045573002/.

Original landed as https://crrev.com/2027023002
Original description ---------------------------------------------------
ImageCapture: move mojom from WebKit/public to media/

This CL moves image_capture.mojom from
{third_party/WebKit/public/platform/modules => media/mojo/interfaces}
so the generated data types (e.g. PhotoCapabilities{Ptr})
can be used from both Blink and media/capture locations.

Also capture.gypi is trivially relocated to capture/ folder.

Note that gyp files are -yay!- close to being finally
removed.

BUG=518807
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel,mac_blink_rel,win_blink_rel

TBR=rockot@chromium.org, avi@chromium.org, dcheng@chromium.org, haraken@chromium.org, xhwang@chromium.org  (no code changes).

Review-Url: https://codereview.chromium.org/2040963004
Cr-Commit-Position: refs/heads/master@{#398117}
parent 06e66ef3
...@@ -66,6 +66,7 @@ source_set("browser") { ...@@ -66,6 +66,7 @@ source_set("browser") {
"//media", "//media",
"//media/gpu/ipc/client", "//media/gpu/ipc/client",
"//media/midi", "//media/midi",
"//media/mojo/interfaces:image_capture",
"//mojo/common", "//mojo/common",
"//mojo/common:url_type_converters", "//mojo/common:url_type_converters",
"//mojo/public/cpp/bindings", "//mojo/public/cpp/bindings",
......
...@@ -26,9 +26,9 @@ void RunMojoCallback(const mojo::Callback<R(Args...)>& callback, Args... args) { ...@@ -26,9 +26,9 @@ void RunMojoCallback(const mojo::Callback<R(Args...)>& callback, Args... args) {
void RunFailedGetCapabilitiesCallback( void RunFailedGetCapabilitiesCallback(
const ImageCaptureImpl::GetCapabilitiesCallback& cb) { const ImageCaptureImpl::GetCapabilitiesCallback& cb) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
blink::mojom::PhotoCapabilitiesPtr empty_capabilities = media::mojom::PhotoCapabilitiesPtr empty_capabilities =
blink::mojom::PhotoCapabilities::New(); media::mojom::PhotoCapabilities::New();
empty_capabilities->zoom = blink::mojom::Range::New(); empty_capabilities->zoom = media::mojom::Range::New();
cb.Run(std::move(empty_capabilities)); cb.Run(std::move(empty_capabilities));
} }
...@@ -66,7 +66,7 @@ void TakePhotoOnIOThread( ...@@ -66,7 +66,7 @@ void TakePhotoOnIOThread(
// static // static
void ImageCaptureImpl::Create( void ImageCaptureImpl::Create(
mojo::InterfaceRequest<blink::mojom::ImageCapture> request) { mojo::InterfaceRequest<media::mojom::ImageCapture> request) {
// |binding_| will take ownership of ImageCaptureImpl. // |binding_| will take ownership of ImageCaptureImpl.
new ImageCaptureImpl(std::move(request)); new ImageCaptureImpl(std::move(request));
} }
...@@ -100,7 +100,7 @@ void ImageCaptureImpl::TakePhoto(const mojo::String& source_id, ...@@ -100,7 +100,7 @@ void ImageCaptureImpl::TakePhoto(const mojo::String& source_id,
} }
ImageCaptureImpl::ImageCaptureImpl( ImageCaptureImpl::ImageCaptureImpl(
mojo::InterfaceRequest<blink::mojom::ImageCapture> request) mojo::InterfaceRequest<media::mojom::ImageCapture> request)
: binding_(this, std::move(request)) {} : binding_(this, std::move(request)) {}
} // namespace content } // namespace content
...@@ -5,17 +5,17 @@ ...@@ -5,17 +5,17 @@
#ifndef CONTENT_BROWSER_MEDIA_CAPTURE_IMAGE_CAPTURE_IMPL_H_ #ifndef CONTENT_BROWSER_MEDIA_CAPTURE_IMAGE_CAPTURE_IMPL_H_
#define CONTENT_BROWSER_MEDIA_CAPTURE_IMAGE_CAPTURE_IMPL_H_ #define CONTENT_BROWSER_MEDIA_CAPTURE_IMAGE_CAPTURE_IMPL_H_
#include "media/mojo/interfaces/image_capture.mojom.h"
#include "mojo/public/cpp/bindings/interface_request.h" #include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/bindings/string.h" #include "mojo/public/cpp/bindings/string.h"
#include "mojo/public/cpp/bindings/strong_binding.h" #include "mojo/public/cpp/bindings/strong_binding.h"
#include "third_party/WebKit/public/platform/modules/imagecapture/image_capture.mojom.h"
namespace content { namespace content {
class ImageCaptureImpl : public blink::mojom::ImageCapture { class ImageCaptureImpl : public media::mojom::ImageCapture {
public: public:
static void Create( static void Create(
mojo::InterfaceRequest<blink::mojom::ImageCapture> request); mojo::InterfaceRequest<media::mojom::ImageCapture> request);
~ImageCaptureImpl() override; ~ImageCaptureImpl() override;
void GetCapabilities(const mojo::String& source_id, void GetCapabilities(const mojo::String& source_id,
...@@ -26,9 +26,9 @@ class ImageCaptureImpl : public blink::mojom::ImageCapture { ...@@ -26,9 +26,9 @@ class ImageCaptureImpl : public blink::mojom::ImageCapture {
private: private:
explicit ImageCaptureImpl( explicit ImageCaptureImpl(
mojo::InterfaceRequest<blink::mojom::ImageCapture> request); mojo::InterfaceRequest<media::mojom::ImageCapture> request);
mojo::StrongBinding<blink::mojom::ImageCapture> binding_; mojo::StrongBinding<media::mojom::ImageCapture> binding_;
DISALLOW_COPY_AND_ASSIGN(ImageCaptureImpl); DISALLOW_COPY_AND_ASSIGN(ImageCaptureImpl);
}; };
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
'../gpu/gpu.gyp:gpu', '../gpu/gpu.gyp:gpu',
'../gpu/gpu.gyp:gpu_ipc_client', '../gpu/gpu.gyp:gpu_ipc_client',
'../gpu/gpu.gyp:gpu_ipc_common', '../gpu/gpu.gyp:gpu_ipc_common',
'../media/mojo/interfaces/mojo_bindings.gyp:image_capture_mojo_bindings',
'../mojo/mojo_base.gyp:mojo_url_type_converters', '../mojo/mojo_base.gyp:mojo_url_type_converters',
'../mojo/mojo_public.gyp:mojo_cpp_bindings', '../mojo/mojo_public.gyp:mojo_cpp_bindings',
'../mojo/mojo_public.gyp:mojo_js_bindings', '../mojo/mojo_public.gyp:mojo_js_bindings',
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
], ],
}, },
'includes': [ 'includes': [
'capture.gypi', 'capture/capture.gypi',
'media_cdm.gypi', 'media_cdm.gypi',
'media_variables.gypi', 'media_variables.gypi',
], ],
...@@ -104,7 +104,7 @@ ...@@ -104,7 +104,7 @@
'..', '..',
], ],
'includes': [ 'includes': [
'capture.gypi', 'capture/capture.gypi',
], ],
'sources': [ 'sources': [
'<@(capture_sources)', '<@(capture_sources)',
......
...@@ -31,3 +31,9 @@ mojom("interfaces") { ...@@ -31,3 +31,9 @@ mojom("interfaces") {
"//ui/gfx/geometry/mojo", "//ui/gfx/geometry/mojo",
] ]
} }
mojom("image_capture") {
sources = [
"image_capture.mojom",
]
}
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
module blink.mojom; module media.mojom;
// Equivalent to idl MediaSettingsRange, arbitrary range representing the // Equivalent to idl MediaSettingsRange, arbitrary range representing the
// allowed variations of a Capability or an Option. // allowed variations of a Capability or an Option.
...@@ -13,15 +13,23 @@ struct Range { ...@@ -13,15 +13,23 @@ struct Range {
uint32 current; uint32 current;
}; };
// Equivalent to idl PhotoCapabilities,
// http://w3c.github.io/mediacapture-image/#photocapabilities
struct PhotoCapabilities { struct PhotoCapabilities {
Range zoom; Range zoom;
}; };
// |source_id| is the renderer-side UUID identifier of the image capture device.
interface ImageCapture interface ImageCapture
{ {
// Retrieves the image capture device capabilities and current settings.
// http://w3c.github.io/mediacapture-image/index.html#widl-ImageCapture-getPhotoCapabilities-Promise-PhotoCapabilities
GetCapabilities(string source_id) GetCapabilities(string source_id)
=> (PhotoCapabilities capabilities); => (PhotoCapabilities capabilities);
// Takes a Photo from the given |source_id|, returning it encoded in |data|
// with the format specified in |mime_type|.
// http://w3c.github.io/mediacapture-image/index.html#widl-ImageCapture-takePhoto-Promise-Blob
TakePhoto(string source_id) TakePhoto(string source_id)
=> (string mime_type, array<uint8> data); => (string mime_type, array<uint8> data);
}; };
...@@ -70,5 +70,30 @@ ...@@ -70,5 +70,30 @@
'../../../services/shell/shell_public.gyp:shell_public', '../../../services/shell/shell_public.gyp:shell_public',
], ],
}, },
{
# GN version: //media/mojo/interfaces:image_capture
'target_name': 'image_capture_mojo_bindings',
'type': 'static_library',
'includes': [
'../../../mojo/mojom_bindings_generator.gypi',
],
'sources': [
'image_capture.mojom',
],
},
{
# GN version: //media/mojo/interfaces:image_capture
'target_name': 'image_capture_mojo_bindings_for_blink',
'type': 'static_library',
'variables': {
'for_blink': 'true',
},
'includes': [
'../../../mojo/mojom_bindings_generator.gypi',
],
'sources': [
'image_capture.mojom',
],
},
], ],
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
let mockImageCaptureReady = define( let mockImageCaptureReady = define(
'mockImageCapture', 'mockImageCapture',
['third_party/WebKit/public/platform/modules/imagecapture/image_capture.mojom', ['media/mojo/interfaces/image_capture.mojom',
'mojo/public/js/bindings', 'mojo/public/js/bindings',
'mojo/public/js/connection', 'mojo/public/js/connection',
'content/public/renderer/service_registry', 'content/public/renderer/service_registry',
......
...@@ -49,6 +49,7 @@ component("modules") { ...@@ -49,6 +49,7 @@ component("modules") {
"//device/battery:mojo_bindings_blink", "//device/battery:mojo_bindings_blink",
"//device/usb/public/interfaces:interfaces_blink", "//device/usb/public/interfaces:interfaces_blink",
"//device/vibration:mojo_bindings_blink", "//device/vibration:mojo_bindings_blink",
"//media/mojo/interfaces:image_capture_blink",
"//mojo/public/c/system:for_component", "//mojo/public/c/system:for_component",
"//third_party/WebKit/Source/core", "//third_party/WebKit/Source/core",
"//third_party/WebKit/public:mojo_bindings", "//third_party/WebKit/public:mojo_bindings",
......
include_rules = [
"+media/mojo/interfaces/image_capture.mojom-blink.h",
]
...@@ -92,7 +92,7 @@ ScriptPromise ImageCapture::getPhotoCapabilities(ScriptState* scriptState, Excep ...@@ -92,7 +92,7 @@ ScriptPromise ImageCapture::getPhotoCapabilities(ScriptState* scriptState, Excep
// m_streamTrack->component()->source()->id() is the renderer "name" of the camera; // m_streamTrack->component()->source()->id() is the renderer "name" of the camera;
// TODO(mcasas) consider sending the security origin as well: // TODO(mcasas) consider sending the security origin as well:
// scriptState->getExecutionContext()->getSecurityOrigin()->toString() // scriptState->getExecutionContext()->getSecurityOrigin()->toString()
m_service->GetCapabilities(m_streamTrack->component()->source()->id(), createBaseCallback(bind<mojom::blink::PhotoCapabilitiesPtr>(&ImageCapture::onCapabilities, this, resolver))); m_service->GetCapabilities(m_streamTrack->component()->source()->id(), createBaseCallback(bind<media::mojom::blink::PhotoCapabilitiesPtr>(&ImageCapture::onCapabilities, this, resolver)));
return promise; return promise;
} }
...@@ -161,7 +161,7 @@ ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track) ...@@ -161,7 +161,7 @@ ImageCapture::ImageCapture(ExecutionContext* context, MediaStreamTrack* track)
} }
void ImageCapture::onCapabilities(ScriptPromiseResolver* resolver, mojom::blink::PhotoCapabilitiesPtr capabilities) void ImageCapture::onCapabilities(ScriptPromiseResolver* resolver, media::mojom::blink::PhotoCapabilitiesPtr capabilities)
{ {
DVLOG(1) << __FUNCTION__; DVLOG(1) << __FUNCTION__;
if (!m_serviceRequests.contains(resolver)) if (!m_serviceRequests.contains(resolver))
......
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
#include "bindings/core/v8/ScriptPromise.h" #include "bindings/core/v8/ScriptPromise.h"
#include "core/dom/ContextLifecycleObserver.h" #include "core/dom/ContextLifecycleObserver.h"
#include "core/events/EventTarget.h" #include "core/events/EventTarget.h"
#include "media/mojo/interfaces/image_capture.mojom-blink.h"
#include "modules/EventTargetModules.h" #include "modules/EventTargetModules.h"
#include "modules/ModulesExport.h" #include "modules/ModulesExport.h"
#include "platform/AsyncMethodRunner.h" #include "platform/AsyncMethodRunner.h"
#include "public/platform/modules/imagecapture/image_capture.mojom-blink.h"
namespace blink { namespace blink {
...@@ -55,13 +55,13 @@ public: ...@@ -55,13 +55,13 @@ public:
private: private:
ImageCapture(ExecutionContext*, MediaStreamTrack*); ImageCapture(ExecutionContext*, MediaStreamTrack*);
void onCapabilities(ScriptPromiseResolver*, mojom::blink::PhotoCapabilitiesPtr); void onCapabilities(ScriptPromiseResolver*, media::mojom::blink::PhotoCapabilitiesPtr);
void onTakePhoto(ScriptPromiseResolver*, const String& mimeType, mojo::WTFArray<uint8_t> data); void onTakePhoto(ScriptPromiseResolver*, const String& mimeType, mojo::WTFArray<uint8_t> data);
void onServiceConnectionError(); void onServiceConnectionError();
Member<MediaStreamTrack> m_streamTrack; Member<MediaStreamTrack> m_streamTrack;
OwnPtr<WebImageCaptureFrameGrabber> m_frameGrabber; OwnPtr<WebImageCaptureFrameGrabber> m_frameGrabber;
mojom::blink::ImageCapturePtr m_service; media::mojom::blink::ImageCapturePtr m_service;
HeapHashSet<Member<ScriptPromiseResolver>> m_serviceRequests; HeapHashSet<Member<ScriptPromiseResolver>> m_serviceRequests;
}; };
......
...@@ -42,6 +42,7 @@ ...@@ -42,6 +42,7 @@
'<(DEPTH)/device/battery/battery.gyp:device_battery_mojo_bindings_for_blink', '<(DEPTH)/device/battery/battery.gyp:device_battery_mojo_bindings_for_blink',
'<(DEPTH)/device/usb/usb.gyp:device_usb_mojo_bindings_for_blink', '<(DEPTH)/device/usb/usb.gyp:device_usb_mojo_bindings_for_blink',
'<(DEPTH)/device/vibration/vibration.gyp:device_vibration_mojo_bindings_for_blink', '<(DEPTH)/device/vibration/vibration.gyp:device_vibration_mojo_bindings_for_blink',
'<(DEPTH)/media/mojo/interfaces/mojo_bindings.gyp:image_capture_mojo_bindings_for_blink',
'<(DEPTH)/mojo/mojo_edk.gyp:mojo_system_impl', '<(DEPTH)/mojo/mojo_edk.gyp:mojo_system_impl',
'<(DEPTH)/mojo/mojo_public.gyp:mojo_cpp_bindings', '<(DEPTH)/mojo/mojo_public.gyp:mojo_cpp_bindings',
'<(DEPTH)/third_party/icu/icu.gyp:icui18n', '<(DEPTH)/third_party/icu/icu.gyp:icui18n',
......
...@@ -176,7 +176,6 @@ mojom("mojo_bindings") { ...@@ -176,7 +176,6 @@ mojom("mojo_bindings") {
"platform/modules/background_sync/background_sync.mojom", "platform/modules/background_sync/background_sync.mojom",
"platform/modules/bluetooth/web_bluetooth.mojom", "platform/modules/bluetooth/web_bluetooth.mojom",
"platform/modules/geolocation/geolocation.mojom", "platform/modules/geolocation/geolocation.mojom",
"platform/modules/imagecapture/image_capture.mojom",
"platform/modules/notifications/notification.mojom", "platform/modules/notifications/notification.mojom",
"platform/modules/notifications/notification_service.mojom", "platform/modules/notifications/notification_service.mojom",
"platform/modules/permissions/permission.mojom", "platform/modules/permissions/permission.mojom",
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
'platform/modules/background_sync/background_sync.mojom', 'platform/modules/background_sync/background_sync.mojom',
'platform/modules/bluetooth/web_bluetooth.mojom', 'platform/modules/bluetooth/web_bluetooth.mojom',
'platform/modules/geolocation/geolocation.mojom', 'platform/modules/geolocation/geolocation.mojom',
'platform/modules/imagecapture/image_capture.mojom',
'platform/modules/notifications/notification.mojom', 'platform/modules/notifications/notification.mojom',
'platform/modules/notifications/notification_service.mojom', 'platform/modules/notifications/notification_service.mojom',
'platform/modules/permissions/permission.mojom', 'platform/modules/permissions/permission.mojom',
......
# Changes to Mojo interfaces require a security review to avoid
# introducing new sandbox escapes.
per-file *.mojom=set noparent
per-file *.mojom=dcheng@chromium.org
per-file *.mojom=inferno@chromium.org
per-file *.mojom=jln@chromium.org
per-file *.mojom=jschuh@chromium.org
per-file *.mojom=kenrb@chromium.org
per-file *.mojom=mkwst@chromium.org
per-file *.mojom=nasko@chromium.org
per-file *.mojom=palmer@chromium.org
per-file *.mojom=tsepez@chromium.org
per-file *.mojom=wfh@chromium.org
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment