Bug 1162844 - Add meta name="viewmode" to have configurable VR experiences. r=fabrice

--HG--
extra : rebase_source : cfabbfd656966e42b8bc00dfaf1bb6356118c5e0
This commit is contained in:
Kevin Grandon 2015-05-29 05:58:00 +02:00
Родитель 21c81346cc
Коммит 930310e210
7 изменённых файлов: 132 добавлений и 0 удалений

Просмотреть файл

@ -530,6 +530,7 @@ BrowserElementChild.prototype = {
debug('Got metaChanged: (' + e.target.name + ') ' + e.target.content);
let handlers = {
'viewmode': this._viewmodeChangedHandler,
'theme-color': this._themeColorChangedHandler,
'application-name': this._applicationNameChangedHandler
};
@ -702,6 +703,16 @@ BrowserElementChild.prototype = {
sendAsyncMsg('selectionstatechanged', detail);
},
_viewmodeChangedHandler: function(eventType, target) {
let meta = {
name: 'viewmode',
content: target.content,
type: eventType.replace('DOMMeta', '').toLowerCase()
};
sendAsyncMsg('metachange', meta);
},
_themeColorChangedHandler: function(eventType, target) {
let meta = {
name: 'theme-color',

Просмотреть файл

@ -0,0 +1,71 @@
/* Any copyright is dedicated to the public domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
// Test that the onmozbrowsermetachange event for viewmode works.
"use strict";
SimpleTest.waitForExplicitFinish();
browserElementTestHelpers.setEnabledPref(true);
browserElementTestHelpers.addPermission();
function runTest() {
function loadFrameScript(script) {
SpecialPowers.getBrowserFrameMessageManager(iframe1)
.loadFrameScript('data:,' + script,
/* allowDelayedLoad = */ false);
}
let iframe1 = document.createElement('iframe');
iframe1.setAttribute('mozbrowser', 'true');
iframe1.src = "http://test/tests/dom/browser-element/mochitest/file_browserElement_Viewmode.html";
iframe1.addEventListener('mozbrowsermetachange', tests);
document.body.appendChild(iframe1);
let numMetaChanges = 0;
function tests(e) {
let detail = e.detail;
switch (numMetaChanges++) {
case 0: {
is(detail.name, 'viewmode', 'name matches');
is(detail.content, 'projection=stereo', 'content matches');
is(detail.type, 'added', 'type matches');
let script =
"var meta = content.document.head.querySelector('meta');" +
"meta.content = 'projection=mono';";
loadFrameScript(script);
break;
}
case 1: {
is(detail.name, 'viewmode', 'name matches');
is(detail.content, 'projection=mono', 'content matches');
is(detail.type, 'changed', 'type matches');
let script =
"var meta = content.document.head.querySelector('meta');" +
"meta.parentNode.removeChild(meta);";
loadFrameScript(script);
break;
}
case 2: {
is(detail.name, 'viewmode', 'name matches');
is(detail.content, 'projection=mono', 'content matches');
is(detail.type, 'removed', 'type matches');
SimpleTest.finish();
break;
}
default: {
ok(false, 'Too many metachange events.');
break;
}
}
};
}
window.addEventListener('testready', runTest);

Просмотреть файл

@ -0,0 +1,8 @@
<html>
<head>
<meta name="viewmode" content="projection=stereo">
</head>
<body>
</body>
</html>

Просмотреть файл

@ -9,6 +9,7 @@ support-files =
file_browserElement_OpenMixedProcess.html
browserElement_OpenTab.js
[test_browserElement_oop_Viewmode.html]
[test_browserElement_oop_ThemeColor.html]
[test_browserElement_inproc_ErrorSecurity.html]
skip-if = toolkit=='gonk'

Просмотреть файл

@ -12,6 +12,7 @@ support-files =
browserElement_Auth.js
browserElement_BackForward.js
browserElement_BadScreenshot.js
browserElement_Viewmode.js
browserElement_ThemeColor.js
browserElement_BrowserWindowNamespace.js
browserElement_BrowserWindowResize.js
@ -77,6 +78,7 @@ support-files =
file_browserElement_AllowEmbedAppsInNestedOOIframe.html
file_browserElement_AppFramePermission.html
file_browserElement_AppWindowNamespace.html
file_browserElement_Viewmode.html
file_browserElement_ThemeColor.html
file_browserElement_BrowserWindowNamespace.html
file_browserElement_CloseApp.html
@ -126,6 +128,7 @@ support-files =
[test_browserElement_NoPref.html]
[test_browserElement_NoPermission.html]
[test_browserElement_inproc_Alert.html]
[test_browserElement_inproc_Viewmode.html]
[test_browserElement_inproc_ThemeColor.html]
skip-if = buildapp == 'b2g'
[test_browserElement_inproc_AlertInFrame.html]

Просмотреть файл

@ -0,0 +1,19 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1162844
-->
<head>
<title>Test for Bug 1162844</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="browserElementTestHelpers.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1162844">Mozilla Bug 1162844</a>
<script type="application/javascript;version=1.7" src="browserElement_Viewmode.js">
</script>
</body>
</html>

Просмотреть файл

@ -0,0 +1,19 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1162844
-->
<head>
<title>Test for Bug 1162844</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="browserElementTestHelpers.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1162844">Mozilla Bug 1162844</a>
<script type="application/javascript;version=1.7" src="browserElement_Viewmode.js">
</script>
</body>
</html>