Commit a147c626 authored by mlamouri's avatar mlamouri Committed by Commit bot

[Media Capabilities] Rename query() to decodingInfo() and MediaDecodingAbility...

[Media Capabilities] Rename query() to decodingInfo() and MediaDecodingAbility to MediaCapabilitiesInfo

This is matching recent spec changes:
https://github.com/WICG/media-capabilities/pull/31

The MediaConfiguration changes are not reflected in this CL.

BUG=690380
R=mcasas@chromium.org,sandersd@chromium.org

Review-Url: https://codereview.chromium.org/2807713002
Cr-Commit-Position: refs/heads/master@{#463403}
parent e0f87e57
......@@ -4,7 +4,7 @@
#include "media/blink/webmediacapabilitiesclient_impl.h"
#include "third_party/WebKit/public/platform/modules/media_capabilities/WebMediaDecodingAbility.h"
#include "third_party/WebKit/public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
namespace media {
......@@ -12,17 +12,17 @@ WebMediaCapabilitiesClientImpl::WebMediaCapabilitiesClientImpl() = default;
WebMediaCapabilitiesClientImpl::~WebMediaCapabilitiesClientImpl() = default;
void WebMediaCapabilitiesClientImpl::Query(
void WebMediaCapabilitiesClientImpl::DecodingInfo(
const blink::WebMediaConfiguration& configuration,
std::unique_ptr<blink::WebMediaCapabilitiesQueryCallbacks> callbacks) {
// TODO(chcunningham, mlamouri): this is a dummy implementation that returns
// true for all the fields.
std::unique_ptr<blink::WebMediaDecodingAbility> ability(
new blink::WebMediaDecodingAbility());
ability->supported = true;
ability->smooth = true;
ability->power_efficient = true;
callbacks->OnSuccess(std::move(ability));
std::unique_ptr<blink::WebMediaCapabilitiesInfo> info(
new blink::WebMediaCapabilitiesInfo());
info->supported = true;
info->smooth = true;
info->power_efficient = true;
callbacks->OnSuccess(std::move(info));
}
} // namespace media
......@@ -19,7 +19,7 @@ class MEDIA_BLINK_EXPORT WebMediaCapabilitiesClientImpl
~WebMediaCapabilitiesClientImpl() override;
// Implementation of blink::WebMediaCapabilitiesClient.
void Query(
void DecodingInfo(
const blink::WebMediaConfiguration&,
std::unique_ptr<blink::WebMediaCapabilitiesQueryCallbacks>) override;
......
<!DOCTYPE html>
<title>MediaCapabilities.query()</title>
<title>MediaCapabilities.decodingInfo()</title>
<script src=/resources/testharness.js></script>
<script src="/resources/testharnessreport.js"></script>
<script>
......@@ -21,22 +21,22 @@ var minimalAudioConfiguration = {
};
promise_test(t => {
return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.query());
}, "Test that query rejects if it doesn't get a configuration");
return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo());
}, "Test that decodingInfo rejects if it doesn't get a configuration");
promise_test(t => {
return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.query({}));
}, "Test that query rejects if the MediaConfiguration isn't valid");
return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({}));
}, "Test that decodingInfo rejects if the MediaConfiguration isn't valid");
promise_test(t => {
return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.query({
return promise_rejects(t, new TypeError(), navigator.mediaCapabilities.decodingInfo({
video: minimalVideoConfiguration,
audio: minimalAudioConfiguration,
}));
}, "Test that query rejects if the MediaConfiguration does not have a type");
}, "Test that decodingInfo rejects if the MediaConfiguration does not have a type");
promise_test(t => {
return navigator.mediaCapabilities.query({
return navigator.mediaCapabilities.decodingInfo({
type: 'file',
video: minimalVideoConfiguration,
audio: minimalAudioConfiguration,
......@@ -45,7 +45,7 @@ promise_test(t => {
assert_idl_attribute(ability, 'smooth');
assert_idl_attribute(ability, 'powerEfficient');
});
}, "Test that query returns a valid MediaDecodingAbility objects");
}, "Test that decodingInfo returns a valid MediaCapabilitiesInfo objects");
async_test(t => {
var validTypes = [ 'file', 'media-source' ];
......@@ -55,7 +55,7 @@ async_test(t => {
var invalidCaught = 0;
validTypes.forEach(type => {
validPromises.push(navigator.mediaCapabilities.query({
validPromises.push(navigator.mediaCapabilities.decodingInfo({
type: type,
video: minimalVideoConfiguration,
audio: minimalAudioConfiguration,
......@@ -68,7 +68,7 @@ async_test(t => {
// when rejected until the amount of rejection matches the expectation.
Promise.all(validPromises).then(t.step_func(() => {
for (var i = 0; i < invalidTypes.length; ++i) {
navigator.mediaCapabilities.query({
navigator.mediaCapabilities.decodingInfo({
type: invalidTypes[i],
video: minimalVideoConfiguration,
audio: minimalAudioConfiguration,
......@@ -80,6 +80,6 @@ async_test(t => {
}));
}
}), t.unreached_func('Promise.all should not reject for valid types'));
}, "Test that query rejects if the MediaConfiguration does not have a valid type");
}, "Test that decodingInfo rejects if the MediaConfiguration does not have a valid type");
</script>
......@@ -4,20 +4,20 @@ PASS Navigator must be primary interface of navigator
PASS Stringification of navigator
PASS Navigator interface: navigator must inherit property "mediaCapabilities" with the proper type (0)
PASS WorkerNavigator interface: existence and properties of interface object
PASS MediaDecodingAbility interface: existence and properties of interface object
PASS MediaDecodingAbility interface object length
PASS MediaDecodingAbility interface object name
FAIL MediaDecodingAbility interface: existence and properties of interface prototype object assert_equals: class string of MediaDecodingAbility.prototype expected "[object MediaDecodingAbilityPrototype]" but got "[object MediaDecodingAbility]"
PASS MediaDecodingAbility interface: existence and properties of interface prototype object's "constructor" property
PASS MediaDecodingAbility interface: attribute supported
PASS MediaDecodingAbility interface: attribute smooth
PASS MediaDecodingAbility interface: attribute powerEfficient
PASS MediaCapabilitiesInfo interface: existence and properties of interface object
PASS MediaCapabilitiesInfo interface object length
PASS MediaCapabilitiesInfo interface object name
FAIL MediaCapabilitiesInfo interface: existence and properties of interface prototype object assert_equals: class string of MediaCapabilitiesInfo.prototype expected "[object MediaCapabilitiesInfoPrototype]" but got "[object MediaCapabilitiesInfo]"
PASS MediaCapabilitiesInfo interface: existence and properties of interface prototype object's "constructor" property
PASS MediaCapabilitiesInfo interface: attribute supported
PASS MediaCapabilitiesInfo interface: attribute smooth
PASS MediaCapabilitiesInfo interface: attribute powerEfficient
PASS MediaCapabilities interface: existence and properties of interface object
PASS MediaCapabilities interface object length
PASS MediaCapabilities interface object name
FAIL MediaCapabilities interface: existence and properties of interface prototype object assert_equals: class string of MediaCapabilities.prototype expected "[object MediaCapabilitiesPrototype]" but got "[object MediaCapabilities]"
PASS MediaCapabilities interface: existence and properties of interface prototype object's "constructor" property
FAIL MediaCapabilities interface: operation query(MediaConfiguration) assert_throws: calling operation with this = null didn't throw TypeError function "function () {
FAIL MediaCapabilities interface: operation decodingInfo(MediaConfiguration) assert_throws: calling operation with this = null didn't throw TypeError function "function () {
fn.apply(obj, args);
}" did not throw
Harness: the test ran to completion.
......
......@@ -50,7 +50,7 @@ dictionary AudioConfiguration {
unsigned long samplerate;
};
interface MediaDecodingAbility {
interface MediaCapabilitiesInfo {
readonly attribute boolean supported;
readonly attribute boolean smooth;
readonly attribute boolean powerEfficient;
......@@ -68,7 +68,7 @@ partial interface WorkerNavigator {
[Exposed=(Window, Worker)]
interface MediaCapabilities {
Promise<MediaDecodingAbility> query(MediaConfiguration configuration);
Promise<MediaCapabilitiesInfo> decodingInfo(MediaConfiguration configuration);
};
</pre>
<script>
......
......@@ -3899,8 +3899,8 @@ interface Magnetometer : Sensor
interface MediaCapabilities
attribute @@toStringTag
method constructor
method query
interface MediaDecodingAbility
method decodingInfo
interface MediaCapabilitiesInfo
attribute @@toStringTag
getter powerEfficient
getter smooth
......
......@@ -8,8 +8,8 @@ blink_modules_sources("media_capabilities") {
sources = [
"MediaCapabilities.cpp",
"MediaCapabilities.h",
"MediaDecodingAbility.cpp",
"MediaDecodingAbility.h",
"MediaCapabilitiesInfo.cpp",
"MediaCapabilitiesInfo.h",
"NavigatorMediaCapabilities.cpp",
"NavigatorMediaCapabilities.h",
]
......
......@@ -8,12 +8,12 @@
#include "bindings/core/v8/ScriptPromise.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
#include "modules/media_capabilities/MediaCapabilitiesInfo.h"
#include "modules/media_capabilities/MediaConfiguration.h"
#include "modules/media_capabilities/MediaDecodingAbility.h"
#include "public/platform/Platform.h"
#include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient.h"
#include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
#include "public/platform/modules/media_capabilities/WebMediaConfiguration.h"
#include "public/platform/modules/media_capabilities/WebMediaDecodingAbility.h"
namespace blink {
......@@ -88,15 +88,15 @@ WebMediaConfiguration ToWebMediaConfiguration(
MediaCapabilities::MediaCapabilities() = default;
ScriptPromise MediaCapabilities::query(
ScriptPromise MediaCapabilities::decodingInfo(
ScriptState* script_state,
const MediaConfiguration& configuration) {
ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
ScriptPromise promise = resolver->Promise();
Platform::Current()->MediaCapabilitiesClient()->Query(
Platform::Current()->MediaCapabilitiesClient()->DecodingInfo(
ToWebMediaConfiguration(configuration),
WTF::MakeUnique<CallbackPromiseAdapter<MediaDecodingAbility, void>>(
WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>(
resolver));
return promise;
......
......@@ -22,7 +22,7 @@ class MediaCapabilities final
public:
MediaCapabilities();
ScriptPromise query(ScriptState*, const MediaConfiguration&);
ScriptPromise decodingInfo(ScriptState*, const MediaConfiguration&);
DECLARE_VIRTUAL_TRACE();
};
......
......@@ -8,5 +8,5 @@
Exposed=Window,
RuntimeEnabled=MediaCapabilities
] interface MediaCapabilities {
[CallWith=ScriptState] Promise<MediaDecodingAbility> query(MediaConfiguration configuration);
[CallWith=ScriptState] Promise<MediaCapabilitiesInfo> decodingInfo(MediaConfiguration configuration);
};
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "modules/media_capabilities/MediaCapabilitiesInfo.h"
namespace blink {
// static
MediaCapabilitiesInfo* MediaCapabilitiesInfo::Take(
ScriptPromiseResolver*,
std::unique_ptr<WebMediaCapabilitiesInfo> web_media_capabilities_info) {
DCHECK(web_media_capabilities_info);
return new MediaCapabilitiesInfo(std::move(web_media_capabilities_info));
}
bool MediaCapabilitiesInfo::supported() const {
return web_media_capabilities_info_->supported;
}
bool MediaCapabilitiesInfo::smooth() const {
return web_media_capabilities_info_->smooth;
}
bool MediaCapabilitiesInfo::powerEfficient() const {
return web_media_capabilities_info_->power_efficient;
}
DEFINE_TRACE(MediaCapabilitiesInfo) {}
MediaCapabilitiesInfo::MediaCapabilitiesInfo(
std::unique_ptr<WebMediaCapabilitiesInfo> web_media_capabilities_info)
: web_media_capabilities_info_(std::move(web_media_capabilities_info)) {}
} // namespace blink
......@@ -2,28 +2,28 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MediaDecodingAbility_h
#define MediaDecodingAbility_h
#ifndef MediaCapabilitiesInfo_h
#define MediaCapabilitiesInfo_h
#include <memory>
#include "bindings/core/v8/ScriptWrappable.h"
#include "public/platform/modules/media_capabilities/WebMediaDecodingAbility.h"
#include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
namespace blink {
class ScriptPromiseResolver;
// Implementation of the MediaDecodingAbility interface.
class MediaDecodingAbility final
: public GarbageCollectedFinalized<MediaDecodingAbility>,
// Implementation of the MediaCapabilitiesInfo interface.
class MediaCapabilitiesInfo final
: public GarbageCollectedFinalized<MediaCapabilitiesInfo>,
public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO();
public:
using WebType = std::unique_ptr<WebMediaDecodingAbility>;
static MediaDecodingAbility* Take(ScriptPromiseResolver*,
std::unique_ptr<WebMediaDecodingAbility>);
using WebType = std::unique_ptr<WebMediaCapabilitiesInfo>;
static MediaCapabilitiesInfo* Take(ScriptPromiseResolver*,
std::unique_ptr<WebMediaCapabilitiesInfo>);
bool supported() const;
bool smooth() const;
......@@ -32,12 +32,12 @@ class MediaDecodingAbility final
DECLARE_VIRTUAL_TRACE();
private:
MediaDecodingAbility() = delete;
explicit MediaDecodingAbility(std::unique_ptr<WebMediaDecodingAbility>);
MediaCapabilitiesInfo() = delete;
explicit MediaCapabilitiesInfo(std::unique_ptr<WebMediaCapabilitiesInfo>);
std::unique_ptr<WebMediaDecodingAbility> web_media_decoding_ability_;
std::unique_ptr<WebMediaCapabilitiesInfo> web_media_capabilities_info_;
};
} // namespace blink
#endif // MediaDecodingAbility_h
#endif // MediaCapabilitiesInfo_h
......@@ -2,12 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://wicg.github.io/media-capabilities/#mediadecodingability
// https://wicg.github.io/media-capabilities/#mediacapabilitiesinfo
[
Exposed=Window,
RuntimeEnabled=MediaCapabilities
] interface MediaDecodingAbility {
] interface MediaCapabilitiesInfo {
readonly attribute boolean supported;
readonly attribute boolean smooth;
readonly attribute boolean powerEfficient;
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "modules/media_capabilities/MediaDecodingAbility.h"
namespace blink {
// static
MediaDecodingAbility* MediaDecodingAbility::Take(
ScriptPromiseResolver*,
std::unique_ptr<WebMediaDecodingAbility> web_media_decoding_ability) {
DCHECK(web_media_decoding_ability);
return new MediaDecodingAbility(std::move(web_media_decoding_ability));
}
bool MediaDecodingAbility::supported() const {
return web_media_decoding_ability_->supported;
}
bool MediaDecodingAbility::smooth() const {
return web_media_decoding_ability_->smooth;
}
bool MediaDecodingAbility::powerEfficient() const {
return web_media_decoding_ability_->power_efficient;
}
DEFINE_TRACE(MediaDecodingAbility) {}
MediaDecodingAbility::MediaDecodingAbility(
std::unique_ptr<WebMediaDecodingAbility> web_media_decoding_ability)
: web_media_decoding_ability_(std::move(web_media_decoding_ability)) {}
} // namespace blink
......@@ -151,7 +151,7 @@ modules_idl_files =
"indexeddb/IDBVersionChangeEvent.idl",
"installedapp/RelatedApplication.idl",
"media_capabilities/MediaCapabilities.idl",
"media_capabilities/MediaDecodingAbility.idl",
"media_capabilities/MediaCapabilitiesInfo.idl",
"mediacapturefromelement/CanvasCaptureMediaStreamTrack.idl",
"mediarecorder/BlobEvent.idl",
"mediarecorder/MediaRecorder.idl",
......
......@@ -7,7 +7,7 @@
#include <memory>
#include "public/platform/modules/media_capabilities/WebMediaDecodingAbility.h"
#include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
namespace blink {
......@@ -18,8 +18,9 @@ class WebMediaCapabilitiesClient {
public:
virtual ~WebMediaCapabilitiesClient() = default;
virtual void Query(const WebMediaConfiguration&,
std::unique_ptr<WebMediaCapabilitiesQueryCallbacks>) = 0;
virtual void DecodingInfo(
const WebMediaConfiguration&,
std::unique_ptr<WebMediaCapabilitiesQueryCallbacks>) = 0;
};
} // namespace blink
......
......@@ -2,24 +2,24 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef WebMediaDecodingAbility_h
#define WebMediaDecodingAbility_h
#ifndef WebMediaCapabilitiesInfo_h
#define WebMediaCapabilitiesInfo_h
#include "public/platform/WebCallbacks.h"
namespace blink {
// Represents a MediaDecodingAbility dictionary to be used outside of Blink.
// This is set by consumers and send back to Blink.
struct WebMediaDecodingAbility {
// Represents a MediaCapabilitiesInfo dictionary to be used outside of Blink.
// This is set by consumers and sent back to Blink.
struct WebMediaCapabilitiesInfo {
bool supported = false;
bool smooth = false;
bool power_efficient = false;
};
using WebMediaCapabilitiesQueryCallbacks =
WebCallbacks<std::unique_ptr<WebMediaDecodingAbility>, void>;
WebCallbacks<std::unique_ptr<WebMediaCapabilitiesInfo>, void>;
} // namespace blink
#endif // WebMediaDecodingAbility_h
#endif // WebMediaCapabilitiesInfo_h
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