/usr/lib/python3/dist-packages/dbusmock/templates/urfkill.py is in python3-dbusmock 0.17.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | '''urfkill mock template
This creates the expected methods and properties of the main
urfkill object, but no devices. You can specify any property
such as urfkill in "parameters".
'''
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 3 of the License, or (at your option) any
# later version. See http://www.gnu.org/copyleft/lgpl.html for the full text
# of the license.
__author__ = 'Jussi Pakkanen'
__email__ = 'jussi.pakkanen@canonical.com'
__copyright__ = '(C) 2015 Canonical ltd'
__license__ = 'LGPL 3+'
import dbus
import dbusmock
SYSTEM_BUS = True
BUS_NAME = 'org.freedesktop.URfkill'
MAIN_OBJ = '/org/freedesktop/URfkill'
MAIN_IFACE = 'org.freedesktop.URfkill'
individual_objects = ['BLUETOOTH', 'FM', 'GPS', 'NFC', 'UWB', 'WIMAX', 'WLAN', 'WWAN']
type2objectname = {
1: 'WLAN',
2: 'BLUETOOTH',
3: 'UWB',
4: 'WIMAX',
5: 'WWAN',
6: 'GPS',
7: 'FM',
}
KS_NOTAVAILABLE = -1
KS_UNBLOCKED = 0
KS_SOFTBLOCKED = 1
KS_HARDBLOCKED = 2
def toggle_flight_mode(self, new_block_state):
new_block_state = bool(new_block_state)
if self.flight_mode == new_block_state:
return True
self.flight_mode = new_block_state
for i in individual_objects:
old_value = self.internal_states[i]
if old_value == 1:
continue # It was already blocked so we don't need to do anything
path = '/org/freedesktop/URfkill/' + i
obj = dbusmock.get_object(path)
if new_block_state:
obj.Set('org.freedesktop.URfkill.Killswitch', 'state', 1)
obj.EmitSignal('org.freedesktop.URfkill.Killswitch', 'StateChanged', '', [])
else:
obj.Set('org.freedesktop.URfkill.Killswitch', 'state', 0)
obj.EmitSignal('org.freedesktop.URfkill.Killswitch', 'StateChanged', '', [])
self.EmitSignal(MAIN_IFACE, 'FlightModeChanged', 'b', [self.flight_mode])
return True
def block(self, index, should_block):
should_block = bool(should_block)
if index not in type2objectname:
return False
objname = type2objectname[index]
if should_block:
new_block_state = 1
else:
new_block_state = 0
if self.internal_states[objname] != new_block_state:
path = '/org/freedesktop/URfkill/' + objname
obj = dbusmock.get_object(path)
self.internal_states[objname] = new_block_state
obj.Set('org.freedesktop.URfkill.Killswitch', 'state', new_block_state)
obj.EmitSignal('org.freedesktop.URfkill.Killswitch', 'StateChanged', '', [])
return True
def load(mock, parameters):
mock.toggle_flight_mode = toggle_flight_mode
mock.block = block
mock.flight_mode = False
mock.internal_states = {}
for oname in individual_objects:
mock.internal_states[oname] = KS_UNBLOCKED
# First we create the main urfkill object.
mock.AddMethods(MAIN_IFACE, [
('IsFlightMode', '', 'b', 'ret = self.flight_mode'),
('FlightMode', 'b', 'b', 'ret = self.toggle_flight_mode(self, args[0])'),
('Block', 'ub', 'b', 'ret = self.block(self, args[0], args[1])'),
])
mock.AddProperties(MAIN_IFACE,
dbus.Dictionary({
'DaemonVersion': parameters.get('DaemonVersion', '0.6.0'),
'KeyControl': parameters.get('KeyControl', True)
}, signature='sv'))
for i in individual_objects:
path = '/org/freedesktop/URfkill/' + i
mock.AddObject(path, 'org.freedesktop.URfkill.Killswitch', {'state': mock.internal_states[i]}, [])
|