Skip to content
This repository has been archived by the owner on Jun 19, 2020. It is now read-only.

Commit

Permalink
Volume up/down keys did not control video volume on Samsung smart TV
Browse files Browse the repository at this point in the history
The bug occurred because volume controls are implemented via <object>
tags and the CSS had a "body > object { display: none; }" rule.

The <object> do take space though. Moving them to the end of the
body places them out of view.

Related bug in Pivotal:
https://www.pivotaltracker.com/story/show/55292032
  • Loading branch information
François Daoust committed Aug 20, 2013
1 parent 3ee2498 commit b9a0501
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 58 deletions.
106 changes: 52 additions & 54 deletions app/index.samsung.optimized.html
Expand Up @@ -13,58 +13,6 @@
<!-- Remote key codes -->
<script type='text/javascript' language='javascript' src='$MANAGER_WIDGET/Common/API/TVKeyValue.js'></script>
<script type="text/javascript" language="javascript" src="$MANAGER_WIDGET/Common/API/Plugin.js"></script>
</head>

<body class="device-tv" onload="window.launch()">

<object id="pluginObjectTVMW" border="0" classid="clsid:SAMSUNG-INFOLINK-TVMW"></object>
<object id="audio-plugin" border="0" classid="clsid:SAMSUNG-INFOLINK-AUDIO"></object>
<object id="window-plugin" border="0" classid="clsid:SAMSUNG-INFOLINK-WINDOW"></object>
<object id="network-plugin" border="0" classid="clsid:SAMSUNG-INFOLINK-NETWORK"></object>
<!-- The id has to be exactly 'pluginObjectNNavi' -->
<object id="pluginObjectNNavi" border="0" classid="clsid:SAMSUNG-INFOLINK-NNAVI"></object>

<div id="dummysamsungdiv" style="display:none"></div>
<div id="container">

<div id="console"></div>

<div id="cards"></div>

<div id="top-gradient-overlay"></div>

<div id="bottom-gradient-overlay"></div>

<div id="toolbar"></div>

<div id="photos-detail"></div>
</div>

<div id="youtube-detail">
<object class='embed' type='application/x-shockwave-flash' data='http://www.youtube.com/apiplayer?enablejsapi=1&amp;version=3&amp;controls=0' id='ytplayer' style="width:960px; height:540px; position:absolute; top:0px; left:0px; background-color: #000000">
<param name="allowscriptaccess" value="always" />
</object>
</div>

<div id="dailymotion-detail">
<object class='embed' type='application/x-shockwave-flash'
style="width:960px; height:540px; position:absolute; top:0px; left:0px; background-color: #000000">
<param name="movie" value="http://www.dailymotion.com/swf?enableApi=1&amp;chromeless=1"></param>
<param name="allowScriptAccess" value="always"></param>
</object>
</div>

<div id="navHelper"></div>

<script type="text/javascript" src="vendor/json2.js"></script>

<script data-joshfire-bootstrap src="http://factory.joshfire.com/bootstrap/520a267b64c8f80200000029/auto/phone-web/"></script>

<script type="text/javascript" src="todate.js"></script>
<script type="text/javascript" src="vendor/moment.js"></script>
<script type="text/javascript" src="vendor/sidjs-0.1.js"></script>
<script type="text/javascript" src="prettystatus.js"></script>
<script src="app.tv.samsung.samsungtv.optimized.js"></script>
<script type="text/javascript">
// Console.log hack
window.console = {
Expand All @@ -90,7 +38,6 @@
// Initialize the Samsung widget API.
window.widgetAPI = new Common.API.Widget();

var launched = false;
// Called on body.onload
window.launch = function () {
window.onshow = window.onShow = function () {
Expand All @@ -99,7 +46,7 @@
// Enable default volume keys behavior.
// Needed to display the volume overlay.
var navPlugin = document.getElementById('pluginObjectNNavi');
navPlugin.SetBannerState(2);
navPlugin.SetBannerState(1);

// Tell the API we don't handle the volume keys and default behavior should be used.
pluginAPI.unregistKey(window.VK_VOL_UP);
Expand All @@ -117,6 +64,57 @@
}
}
</script>
</head>

<body class="device-tv" onload="window.launch()">
<div id="dummysamsungdiv" style="display:none"></div>
<div id="container">

<div id="console"></div>

<div id="cards"></div>

<div id="top-gradient-overlay"></div>

<div id="bottom-gradient-overlay"></div>

<div id="toolbar"></div>

<div id="photos-detail"></div>
</div>

<div id="youtube-detail">
<object class='embed' type='application/x-shockwave-flash' data='http://www.youtube.com/apiplayer?enablejsapi=1&amp;version=3&amp;controls=0' id='ytplayer' style="width:960px; height:540px; position:absolute; top:0px; left:0px; background-color: #000000">
<param name="allowscriptaccess" value="always" />
</object>
</div>

<div id="dailymotion-detail">
<object class='embed' type='application/x-shockwave-flash'
style="width:960px; height:540px; position:absolute; top:0px; left:0px; background-color: #000000">
<param name="movie" value="http://www.dailymotion.com/swf?enableApi=1&amp;chromeless=1"></param>
<param name="allowScriptAccess" value="always"></param>
</object>
</div>

<div id="navHelper"></div>

<object id="pluginObjectTVMW" border="0" classid="clsid:SAMSUNG-INFOLINK-TVMW"></object>
<object id="audio-plugin" border="0" classid="clsid:SAMSUNG-INFOLINK-AUDIO"></object>
<object id="window-plugin" border="0" classid="clsid:SAMSUNG-INFOLINK-WINDOW"></object>
<object id="network-plugin" border="0" classid="clsid:SAMSUNG-INFOLINK-NETWORK"></object>
<!-- The id has to be exactly 'pluginObjectNNavi' -->
<object id="pluginObjectNNavi" border="0" classid="clsid:SAMSUNG-INFOLINK-NNAVI"></object>

<script type="text/javascript" src="vendor/json2.js"></script>

<script data-joshfire-bootstrap src="http://factory.joshfire.com/bootstrap/520a267b64c8f80200000029/auto/phone-web/"></script>

<script type="text/javascript" src="todate.js"></script>
<script type="text/javascript" src="vendor/moment.js"></script>
<script type="text/javascript" src="vendor/sidjs-0.1.js"></script>
<script type="text/javascript" src="prettystatus.js"></script>
<script src="app.tv.samsung.samsungtv.optimized.js"></script>
</body>
</html>

4 changes: 0 additions & 4 deletions app/less/samsung.less
Expand Up @@ -14,10 +14,6 @@ body.device-tv {
background: none!important;
}

body > object {
display: none;
}


#container {
//.vertical-gradient(fade(@background-color, 90%), fade(darken(@background-color, 17%), 90%));
Expand Down

0 comments on commit b9a0501

Please sign in to comment.