Test and implement all direct checks of CanSeek==true
This commit is contained in:
parent
7c2d3cd541
commit
10eeb894cc
@ -282,6 +282,9 @@ class MprisObject(dbus.service.Object):
|
|||||||
@dbus.service.method(dbus_interface=PLAYER_IFACE)
|
@dbus.service.method(dbus_interface=PLAYER_IFACE)
|
||||||
def Seek(self, offset):
|
def Seek(self, offset):
|
||||||
logger.debug(u'%s.Seek called', PLAYER_IFACE)
|
logger.debug(u'%s.Seek called', PLAYER_IFACE)
|
||||||
|
if not self.get_CanSeek():
|
||||||
|
logger.debug(u'%s.Seek not allowed', PLAYER_IFACE)
|
||||||
|
return
|
||||||
offset_in_milliseconds = offset // 1000
|
offset_in_milliseconds = offset // 1000
|
||||||
current_position = self.backend.playback.time_position.get()
|
current_position = self.backend.playback.time_position.get()
|
||||||
new_position = current_position + offset_in_milliseconds
|
new_position = current_position + offset_in_milliseconds
|
||||||
@ -290,6 +293,9 @@ class MprisObject(dbus.service.Object):
|
|||||||
@dbus.service.method(dbus_interface=PLAYER_IFACE)
|
@dbus.service.method(dbus_interface=PLAYER_IFACE)
|
||||||
def SetPosition(self, track_id, position):
|
def SetPosition(self, track_id, position):
|
||||||
logger.debug(u'%s.SetPosition called', PLAYER_IFACE)
|
logger.debug(u'%s.SetPosition called', PLAYER_IFACE)
|
||||||
|
if not self.get_CanSeek():
|
||||||
|
logger.debug(u'%s.SetPosition not allowed', PLAYER_IFACE)
|
||||||
|
return
|
||||||
position = position // 1000
|
position = position // 1000
|
||||||
current_track = self.backend.playback.current_track.get()
|
current_track = self.backend.playback.current_track.get()
|
||||||
# TODO Currently the ID is assumed to be the URI of the track. This
|
# TODO Currently the ID is assumed to be the URI of the track. This
|
||||||
|
|||||||
@ -364,6 +364,23 @@ class PlayerInterfaceTest(unittest.TestCase):
|
|||||||
self.mpris.Play()
|
self.mpris.Play()
|
||||||
self.assertEquals(self.backend.playback.state.get(), STOPPED)
|
self.assertEquals(self.backend.playback.state.get(), STOPPED)
|
||||||
|
|
||||||
|
def test_seek_is_ignored_if_can_seek_is_false(self):
|
||||||
|
self.mpris.get_CanSeek = lambda *_: False
|
||||||
|
self.backend.current_playlist.append([Track(uri='a', length=40000)])
|
||||||
|
self.backend.playback.play()
|
||||||
|
|
||||||
|
before_seek = self.backend.playback.time_position.get()
|
||||||
|
self.assert_(before_seek >= 0)
|
||||||
|
|
||||||
|
milliseconds_to_seek = 10000
|
||||||
|
microseconds_to_seek = milliseconds_to_seek * 1000
|
||||||
|
|
||||||
|
self.mpris.Seek(microseconds_to_seek)
|
||||||
|
|
||||||
|
after_seek = self.backend.playback.time_position.get()
|
||||||
|
self.assert_(before_seek <= after_seek < (
|
||||||
|
before_seek + milliseconds_to_seek))
|
||||||
|
|
||||||
def test_seek_seeks_given_microseconds_forward_in_the_current_track(self):
|
def test_seek_seeks_given_microseconds_forward_in_the_current_track(self):
|
||||||
self.backend.current_playlist.append([Track(uri='a', length=40000)])
|
self.backend.current_playlist.append([Track(uri='a', length=40000)])
|
||||||
self.backend.playback.play()
|
self.backend.playback.play()
|
||||||
@ -443,6 +460,25 @@ class PlayerInterfaceTest(unittest.TestCase):
|
|||||||
self.assert_(after_seek >= 0)
|
self.assert_(after_seek >= 0)
|
||||||
self.assert_(after_seek < before_seek)
|
self.assert_(after_seek < before_seek)
|
||||||
|
|
||||||
|
def test_set_position_is_ignored_if_can_seek_is_false(self):
|
||||||
|
self.mpris.get_CanSeek = lambda *_: False
|
||||||
|
self.backend.current_playlist.append([Track(uri='a', length=40000)])
|
||||||
|
self.backend.playback.play()
|
||||||
|
|
||||||
|
before_set_position = self.backend.playback.time_position.get()
|
||||||
|
self.assert_(before_set_position <= 5000)
|
||||||
|
|
||||||
|
track_id = 'a'
|
||||||
|
|
||||||
|
position_to_set_in_milliseconds = 20000
|
||||||
|
position_to_set_in_microseconds = position_to_set_in_milliseconds * 1000
|
||||||
|
|
||||||
|
self.mpris.SetPosition(track_id, position_to_set_in_microseconds)
|
||||||
|
|
||||||
|
after_set_position = self.backend.playback.time_position.get()
|
||||||
|
self.assert_(before_set_position <= after_set_position <
|
||||||
|
position_to_set_in_milliseconds)
|
||||||
|
|
||||||
def test_set_position_sets_the_current_track_position_in_microsecs(self):
|
def test_set_position_sets_the_current_track_position_in_microsecs(self):
|
||||||
self.backend.current_playlist.append([Track(uri='a', length=40000)])
|
self.backend.current_playlist.append([Track(uri='a', length=40000)])
|
||||||
self.backend.playback.play()
|
self.backend.playback.play()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user