@@ -1,7 +1,7 @@
11# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
22#
33# Unity Autopilot Test Suite
4−# Copyright (C) 2012-2013 Canonical
4+# Copyright (C) 2012, 2013, 2014 Canonical
55#
66# This program is free software: you can redistribute it and/or modify
77# it under the terms of the GNU General Public License as published by
@@ -17,85 +17,103 @@
1717# along with this program. If not, see <http://www.gnu.org/licenses/>.
1818#
1919
20+import logging
2021
22+from autopilot import logging as autopilot_logging
23+
24+from unity8.shell import emulators
2125from unity8.shell.emulators.greeter import Greeter
2226from unity8.shell.emulators.hud import Hud
2327from unity8.shell.emulators.dash import Dash
2428from unity8.shell.emulators.launcher import Launcher
2529
30+logger = logging.getLogger(__name__)
2631
27−class MainWindow(object):
28− """An emulator class that makes it easy to interact with the shell"""
29−
30− def __init__(self, app):
31− self.app = app
3232
33− def get_qml_view(self):
34− """Get the main QML view"""
35− return self.app.select_single("QQuickView")
33+class QQuickView(emulators.UnityEmulatorBase):
34+ """An emulator class that makes it easy to interact with the shell"""
3635
3736 def get_greeter(self):
38− return self.app.select_single(Greeter)
37+ return self.select_single(Greeter)
3938
4039 def get_greeter_content_loader(self):
41− return self.app.wait_select_single(
40+ return self.wait_select_single(
4241 "QQuickLoader",
4342 objectName="greeterContentLoader"
4443 )
4544
4645 def get_greeter_background(self):
47− return self.app.select_single("CrossFadeImage", objectName="greeterBackground")
46+ return self.select_single(
47+ "CrossFadeImage", objectName="greeterBackground")
4848
4949 def get_login_loader(self):
50− return self.app.select_single("QQuickLoader", objectName="loginLoader")
50+ return self.select_single("QQuickLoader", objectName="loginLoader")
5151
5252 def get_login_list(self):
53− return self.app.select_single("LoginList")
53+ return self.select_single("LoginList")
5454
5555 def get_hud(self):
56− return self.app.select_single(Hud)
56+ return self.select_single(Hud)
5757
5858 def get_hud_showable(self):
59− return self.app.select_single("Showable", objectName="hudShowable")
59+ return self.select_single("Showable", objectName="hudShowable")
6060
6161 def get_hud_show_button(self):
62− return self.app.select_single("HudButton")
62+ return self.select_single("HudButton")
6363
6464 def get_hud_edge_drag_area(self):
65− return self.app.select_single(objectName="hudDragArea")
65+ return self.select_single(objectName="hudDragArea")
6666
6767 def get_dash(self):
68− return self.app.select_single(Dash)
68+ return self.select_single(Dash)
6969
7070 def get_bottombar(self):
71− return self.app.select_single("Bottombar")
71+ return self.select_single("Bottombar")
7272
7373 def get_launcher(self):
74− return self.app.select_single(Launcher)
74+ return self.select_single(Launcher)
7575
7676 def get_pinPadLoader(self):
77− return self.app.select_single(
77+ return self.select_single(
7878 "QQuickLoader",
7979 objectName="pinPadLoader"
8080 )
8181
8282 def get_pinPadButton(self, buttonId):
83− return self.app.select_single(
83+ return self.select_single(
8484 "PinPadButton",
8585 objectName="pinPadButton%i" % buttonId
8686 )
8787
8888 def get_lockscreen(self):
89− return self.app.select_single("Lockscreen")
89+ return self.select_single("Lockscreen")
9090
9191 def get_pinentryField(self):
92− return self.app.select_single(objectName="pinentryField")
92+ return self.select_single(objectName="pinentryField")
9393
9494 def get_indicator(self, indicator_name):
95− return self.app.wait_select_single(
95+ return self.wait_select_single(
9696 'DefaultIndicatorWidget',
9797 objectName=indicator_name+'-widget'
9898 )
9999
100100 def get_shell_background(self):
101− return self.app.select_single("CrossFadeImage", objectName="backgroundImage")
101+ return self.select_single(
102+ "CrossFadeImage", objectName="backgroundImage")
103+
104+ @autopilot_logging.log_action(logger.info)
105+ def show_dash_swiping(self):
106+ """Show the dash swiping from the left."""
107+ width = self.width
108+ height = self.height
109+ start_x = 0
110+ start_y = height // 2
111+ end_x = width
112+ end_y = start_y
113+
114+ self.pointing_device.drag(start_x, start_y, end_x, end_y)
115+ return self.get_dash()
116+
117+ def get_current_focused_app_id(self):
118+ """Return the id of the focused application."""
119+ return self.select_single('Shell').currentFocusedAppId