Bug 1278205 - use preference for exposing presentation API. r=smaug.

MozReview-Commit-ID: AXkZmPe9J6k

--HG--
extra : rebase_source : 4edf7b15349f235f0f655edadbce340b22a6abf7
This commit is contained in:
Shih-Chiang Chien 2016-06-03 19:50:30 +08:00
parent 98df436e16
commit 5695b2c3e7
43 changed files with 126 additions and 126 deletions

View File

@ -482,11 +482,6 @@ this.PermissionsTable = { geolocation: {
privileged: DENY_ACTION,
certified: ALLOW_ACTION
},
"presentation": {
app: DENY_ACTION,
privileged: ALLOW_ACTION,
certified: ALLOW_ACTION
},
"open-hidden-window": {
app: DENY_ACTION,
privileged: DENY_ACTION,

View File

@ -2331,58 +2331,6 @@ Navigator::HasMobileIdSupport(JSContext* aCx, JSObject* aGlobal)
}
#endif
/* static */
bool
Navigator::HasPresentationSupport(JSContext* aCx, JSObject* aGlobal)
{
JS::Rooted<JSObject*> global(aCx, aGlobal);
nsCOMPtr<nsPIDOMWindowInner> inner = GetWindowFromGlobal(global);
if (NS_WARN_IF(!inner)) {
return false;
}
// Grant access if it has the permission.
if (CheckPermission(inner, "presentation")) {
return true;
}
// Grant access to browser receiving pages and their same-origin iframes. (App
// pages should be controlled by "presentation" permission in app manifests.)
nsCOMPtr<nsIDocShell> docshell = inner->GetDocShell();
if (!docshell) {
return false;
}
if (!docshell->GetIsInMozBrowserOrApp()) {
return false;
}
nsAutoString presentationURL;
nsContentUtils::GetPresentationURL(docshell, presentationURL);
if (presentationURL.IsEmpty()) {
return false;
}
nsCOMPtr<nsIScriptSecurityManager> securityManager =
do_GetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID);
if (!securityManager) {
return false;
}
nsCOMPtr<nsIURI> presentationURI;
nsresult rv = NS_NewURI(getter_AddRefs(presentationURI), presentationURL);
if (NS_FAILED(rv)) {
return false;
}
nsCOMPtr<nsIURI> docURI = inner->GetDocumentURI();
return NS_SUCCEEDED(securityManager->CheckSameOriginURI(presentationURI,
docURI,
false));
}
/* static */
bool
Navigator::IsE10sEnabled(JSContext* aCx, JSObject* aGlobal)

View File

@ -323,8 +323,6 @@ public:
static bool HasMobileIdSupport(JSContext* aCx, JSObject* aGlobal);
#endif
static bool HasPresentationSupport(JSContext* aCx, JSObject* aGlobal);
static bool IsE10sEnabled(JSContext* aCx, JSObject* aGlobal);
nsPIDOMWindowInner* GetParentObject() const

View File

@ -14,6 +14,9 @@
#include "nsCycleCollectionParticipant.h"
#include "nsIDocShell.h"
#include "nsIPresentationService.h"
#include "nsIScriptSecurityManager.h"
#include "nsJSUtils.h"
#include "nsNetUtil.h"
#include "nsSandboxFlags.h"
#include "nsServiceManagerUtils.h"
#include "PresentationReceiver.h"
@ -37,6 +40,53 @@ Presentation::Create(nsPIDOMWindowInner* aWindow)
return presentation.forget();
}
/* static */ bool
Presentation::HasReceiverSupport(JSContext* aCx, JSObject* aGlobal)
{
JS::Rooted<JSObject*> global(aCx, aGlobal);
nsCOMPtr<nsPIDOMWindowInner> inner =
do_QueryInterface(nsJSUtils::GetStaticScriptGlobal(global));
if (NS_WARN_IF(!inner)) {
return false;
}
// Grant access to browser receiving pages and their same-origin iframes. (App
// pages should be controlled by "presentation" permission in app manifests.)
nsCOMPtr<nsIDocShell> docshell = inner->GetDocShell();
if (!docshell) {
return false;
}
if (!docshell->GetIsInMozBrowserOrApp()) {
return false;
}
nsAutoString presentationURL;
nsContentUtils::GetPresentationURL(docshell, presentationURL);
if (presentationURL.IsEmpty()) {
return false;
}
nsCOMPtr<nsIScriptSecurityManager> securityManager =
nsContentUtils::GetSecurityManager();
if (!securityManager) {
return false;
}
nsCOMPtr<nsIURI> presentationURI;
nsresult rv = NS_NewURI(getter_AddRefs(presentationURI), presentationURL);
if (NS_FAILED(rv)) {
return false;
}
nsCOMPtr<nsIURI> docURI = inner->GetDocumentURI();
return NS_SUCCEEDED(securityManager->CheckSameOriginURI(presentationURI,
docURI,
false));
}
Presentation::Presentation(nsPIDOMWindowInner* aWindow)
: DOMEventTargetHelper(aWindow)
{

View File

@ -25,6 +25,8 @@ public:
static already_AddRefed<Presentation> Create(nsPIDOMWindowInner* aWindow);
static bool HasReceiverSupport(JSContext* aCx, JSObject* aGlobal);
virtual JSObject* WrapObject(JSContext* aCx,
JS::Handle<JSObject*> aGivenProto) override;

View File

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>Test for B2G PresentationReceiver on a non-receiver page at receiver side (OOP)</title>
<title>Test for B2G PresentationReceiver on a non-receiver page at receiver side</title>
</head>
<body>
<div id="content"></div>
@ -28,7 +28,7 @@ function finish() {
function testConnectionAvailable() {
return new Promise(function(aResolve, aReject) {
ok(!navigator.presentation, "navigator.presentation shouldn't be available in non-receiving OOP pages.");
ok(!navigator.presentation.receiver, "navigator.presentation.receiver shouldn't be available in non-receiving pages.");
aResolve();
});
}

View File

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>Test for B2G PresentationReceiver on a non-receiver inner iframe of the receiver page at receiver side (OOP)</title>
<title>Test for B2G PresentationReceiver on a non-receiver inner iframe of the receiver page at receiver side</title>
</head>
<body onload="testConnectionAvailable()">
<div id="content"></div>
@ -16,7 +16,7 @@ function ok(a, msg) {
function testConnectionAvailable() {
return new Promise(function(aResolve, aReject) {
ok(!navigator.presentation, "navigator.presentation shouldn't be available in inner iframes with different origins from receiving OOP pages.");
ok(!navigator.presentation.receiver, "navigator.presentation.receiver shouldn't be available in inner iframes with different origins from receiving pages.");
aResolve();
});
}

View File

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>Test for B2G PresentationReceiver at receiver side (OOP)</title>
<title>Test for B2G PresentationReceiver at receiver side</title>
</head>
<body>
<div id="content"></div>
@ -34,8 +34,8 @@ var connection;
function testConnectionAvailable() {
return new Promise(function(aResolve, aReject) {
ok(navigator.presentation, "navigator.presentation should be available in OOP receiving pages.");
ok(navigator.presentation.receiver, "navigator.presentation.receiver should be available in OOP receiving pages.");
ok(navigator.presentation, "navigator.presentation should be available in receiving pages.");
ok(navigator.presentation.receiver, "navigator.presentation.receiver should be available in receiving pages.");
navigator.presentation.receiver.connectionList.then(
function(aList) {

View File

@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
<title>Test for B2G PresentationReceiver in an inner iframe of the receiver page at receiver side (OOP)</title>
<title>Test for B2G PresentationReceiver in an inner iframe of the receiver page at receiver side</title>
</head>
<body onload="testConnectionAvailable()">
<div id="content"></div>
@ -16,7 +16,7 @@ function ok(a, msg) {
function testConnectionAvailable() {
return new Promise(function(aResolve, aReject) {
ok(navigator.presentation, "navigator.presentation should be available in same-origin inner iframes of receiving OOP pages.");
ok(navigator.presentation.receiver, "navigator.presentation.receiver should be available in same-origin inner iframes of receiving pages.");
aResolve();
});
}

View File

@ -14,12 +14,6 @@ var connection;
var receiverIframe;
function setup() {
SpecialPowers.addPermission("presentation",
true, { url: receiverUrl,
originAttributes: {
appId: SpecialPowers.Ci.nsIScriptSecurityManager.NO_APP_ID,
inIsolatedMozBrowser: true }});
gScript.addMessageListener('device-prompt', function devicePromptHandler() {
debug('Got message: device-prompt');
gScript.removeMessageListener('device-prompt', devicePromptHandler);
@ -154,11 +148,6 @@ function teardown() {
SimpleTest.finish();
});
SpecialPowers.removePermission("presentation",
{ url: receiverUrl,
originAttributes: {
appId: SpecialPowers.Ci.nsIScriptSecurityManager.NO_APP_ID,
inIsolatedMozBrowser: true }});
gScript.sendAsyncMessage('teardown');
}
@ -171,10 +160,11 @@ function runTests() {
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: "browser", allow: true, context: document},
], () => {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.test.enabled", true],
["dom.mozBrowserFramesEnabled", true],
["dom.ipc.tabs.disabled", false],

View File

@ -279,12 +279,13 @@ SimpleTest.waitForExplicitFinish();
SimpleTest.requestFlakyTimeout('Test for guarantee not firing async event');
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: "browser", allow: true, context: document},
], () => {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
/* Mocked TCP session transport builder in the test */
["dom.presentation.session_transport.data_channel.enable", false],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.test.enabled", true],
["dom.presentation.test.stage", 0],
["dom.mozBrowserFramesEnabled", true]]},

View File

@ -125,10 +125,11 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: "browser", allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.session_transport.data_channel.enable", true],
["dom.mozBrowserFramesEnabled", true]]},
runTests);

View File

@ -195,10 +195,11 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: 'browser', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.session_transport.data_channel.enable", true],
["dom.mozBrowserFramesEnabled", true],
["dom.ipc.browser_frames.oop_by_default", true],

View File

@ -253,9 +253,9 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.session_transport.data_channel.enable", true]]},
runTests);
});

View File

@ -69,10 +69,9 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: "presentation-device-manage", allow: false, context: document},
{type: "presentation", allow: true, context: document},
{type: "presentation", allow: true, context: iframe.contentDocument},
], function() {
SpecialPowers.pushPrefEnv({ "set": [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);
});

View File

@ -65,10 +65,11 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: "presentation-device-manage", allow: false, context: document},
{type: "presentation", allow: true, context: document},
{type: "browser", allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ "set": [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.mozBrowserFramesEnabled", true],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);

View File

@ -365,10 +365,10 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: "presentation", allow: true, context: iframe.contentDocument},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.session_transport.data_channel.enable", true]]},
runTests);
});

View File

@ -62,10 +62,10 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: "presentation-device-manage", allow: false, context: document},
{type: "presentation", allow: true, context: document},
{type: "presentation", allow: true, context: iframe.contentDocument},
], function() {
SpecialPowers.pushPrefEnv({ "set": [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", false],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);
});

View File

@ -173,9 +173,10 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", false],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);
});

View File

@ -162,6 +162,7 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false],
["dom.presentation.controller.enabled", true],
["dom.presentation.test.enabled", true],
["dom.presentation.test.stage", 0]]},
runTests);

View File

@ -121,10 +121,11 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: 'browser', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.mozBrowserFramesEnabled", true],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);

View File

@ -95,10 +95,10 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: "browser", allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false],
["dom.mozBrowserFramesEnabled", true]]},
runTests);

View File

@ -68,9 +68,9 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false],
["presentation.receiver.loading.timeout", 10]]},
runTests);

View File

@ -75,10 +75,11 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: 'browser', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [['dom.presentation.enabled', true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
['dom.presentation.session_transport.data_channel.enable', false],
['dom.mozBrowserFramesEnabled', true],
['dom.ipc.tabs.disabled', false]]},

View File

@ -161,10 +161,11 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: 'browser', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false],
["dom.mozBrowserFramesEnabled", true],
["dom.ipc.browser_frames.oop_by_default", true]]},

View File

@ -250,6 +250,7 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);

View File

@ -140,6 +140,7 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);

View File

@ -147,9 +147,9 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);
});

View File

@ -394,9 +394,9 @@ function runTests() {
SimpleTest.waitForExplicitFinish();
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
], function() {
SpecialPowers.pushPrefEnv({ 'set': [["dom.presentation.enabled", true],
["dom.presentation.controller.enabled", true],
["dom.presentation.session_transport.data_channel.enable", false]]},
runTests);
});

View File

@ -217,10 +217,11 @@ function runTests() {
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: 'browser', allow: true, context: document},
], () => {
SpecialPowers.pushPrefEnv({ 'set': [['dom.presentation.enabled', true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
['dom.presentation.test.enabled', true],
['dom.mozBrowserFramesEnabled', true],
['dom.ipc.tabs.disabled', false],

View File

@ -173,10 +173,11 @@ function runTests() {
SpecialPowers.pushPermissions([
{type: 'presentation-device-manage', allow: false, context: document},
{type: 'presentation', allow: true, context: document},
{type: 'browser', allow: true, context: document},
], () => {
SpecialPowers.pushPrefEnv({ 'set': [['dom.presentation.enabled', true],
["dom.presentation.controller.enabled", true],
["dom.presentation.receiver.enabled", true],
['dom.presentation.test.enabled', true],
['dom.mozBrowserFramesEnabled', true],
['dom.ipc.tabs.disabled', false],

View File

@ -947,15 +947,21 @@ var interfaceNamesInGlobalScope =
disabled: true,
permission: ["presentation-device-manage"]},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "Presentation", disabled: true, permission: ["presentation"]},
{name: "Presentation", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationAvailability", disabled: true, permission: ["presentation"]},
{name: "PresentationAvailability", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationRequest", disabled: true, permission: ["presentation"]},
{name: "PresentationConnection", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationSession", disabled: true, permission: ["presentation"]},
{name: "PresentationConnectionAvailableEvent", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationSessionConnectEvent", disabled: true, permission: ["presentation"]},
{name: "PresentationConnectionClosedEvent", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationConnectionList", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationReceiver", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "PresentationRequest", disabled: true},
// IMPORTANT: Do not change this list without review from a DOM peer!
"ProcessingInstruction",
// IMPORTANT: Do not change this list without review from a DOM peer!

View File

@ -431,7 +431,7 @@ partial interface Navigator {
};
partial interface Navigator {
[Throws, Pref="dom.presentation.enabled", Func="Navigator::HasPresentationSupport", SameObject]
[Throws, Pref="dom.presentation.enabled", SameObject]
readonly attribute Presentation? presentation;
};

View File

@ -4,8 +4,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
[Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
[Pref="dom.presentation.enabled"]
interface Presentation : EventTarget {
/*
* This should be used by the UA as the default presentation request for the
@ -15,12 +14,15 @@ interface Presentation : EventTarget {
*
* Only used by controlling browsing context (senders).
*/
[Pref="dom.presentation.controller.enabled"]
attribute PresentationRequest? defaultRequest;
/*
* This should be available on the receiving browsing context in order to
* access the controlling browsing context and communicate with them.
*/
[SameObject]
[SameObject,
Pref="dom.presentation.receiver.enabled",
Func="Presentation::HasReceiverSupport"]
readonly attribute PresentationReceiver? receiver;
};

View File

@ -4,8 +4,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
[Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
[Pref="dom.presentation.controller.enabled"]
interface PresentationAvailability : EventTarget {
/*
* If there is at least one device discovered by UA, the value is |true|.

View File

@ -20,8 +20,7 @@ enum PresentationConnectionState
"terminated"
};
[Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
[Pref="dom.presentation.enabled"]
interface PresentationConnection : EventTarget {
/*
* Unique id for all existing connections.

View File

@ -6,8 +6,7 @@
[Constructor(DOMString type,
PresentationConnectionAvailableEventInit eventInitDict),
Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
Pref="dom.presentation.enabled"]
interface PresentationConnectionAvailableEvent : Event
{
[SameObject]

View File

@ -20,8 +20,7 @@ enum PresentationConnectionClosedReason
[Constructor(DOMString type,
PresentationConnectionClosedEventInit eventInitDict),
Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
Pref="dom.presentation.enabled"]
interface PresentationConnectionClosedEvent : Event
{
readonly attribute PresentationConnectionClosedReason reason;

View File

@ -4,8 +4,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
[Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
[Pref="dom.presentation.receiver.enabled"]
interface PresentationConnectionList : EventTarget {
/*
* Return the non-terminated set of presentation connections in the

View File

@ -4,8 +4,7 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
[Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
[Pref="dom.presentation.receiver.enabled"]
interface PresentationReceiver {
/*
* Get a list which contains all connected presentation connections
@ -13,4 +12,4 @@ interface PresentationReceiver {
*/
[SameObject, Throws]
readonly attribute Promise<PresentationConnectionList> connectionList;
};
};

View File

@ -5,8 +5,7 @@
*/
[Constructor(DOMString url),
Pref="dom.presentation.enabled",
Func="Navigator::HasPresentationSupport"]
Pref="dom.presentation.controller.enabled"]
interface PresentationRequest : EventTarget {
/*
* A requesting page use start() to start a new connection, and it will be

View File

@ -913,7 +913,7 @@ pref("identity.fxaccounts.remote.oauth.uri", "https://oauth.accounts.firefox.com
pref("identity.sync.tokenserver.uri", "https://token.services.mozilla.com/1.0/sync/1.5");
// Enable Presentation API
pref("dom.presentation.enabled", true);
pref("dom.presentation.enabled", false);
pref("dom.presentation.discovery.enabled", true);
pref("dom.presentation.discovery.legacy.enabled", true); // for TV 2.5 backward capability

View File

@ -5256,6 +5256,10 @@ pref("dom.beforeAfterKeyboardEvent.enabled", false);
// Presentation API
pref("dom.presentation.enabled", false);
pref("dom.presentation.controller.enabled", false);
pref("dom.presentation.receiver.enabled", false);
// Presentation Device
pref("dom.presentation.tcp_server.debug", false);
pref("dom.presentation.discovery.enabled", false);
pref("dom.presentation.discovery.legacy.enabled", false);