401401</hierarchy>
402402"""
403403
404+ UIAUTOMATOR_DUMP_API27 = '''<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
405+ <hierarchy rotation="0">
406+ <node index="0" text="" resource-id="" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1794]">
407+ <node index="0" text="" resource-id="" class="android.widget.LinearLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1794]">
408+ <node index="0" text="" resource-id="android:id/content" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1794]">
409+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/launcher" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1794]">
410+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/drag_layer" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1794]">
411+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/workspace" class="com.android.launcher3.Workspace" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1794]">
412+ <node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[21,84][1059,1395]">
413+ <node index="0" text="" resource-id="" class="android.view.ViewGroup" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[35,84][1045,1395]">
414+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/search_container_workspace" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[35,84][1045,346]">
415+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/smartspace_content" class="android.widget.LinearLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[166,84][913,346]">
416+ <node index="0" text="Sunday, May 19" resource-id="com.google.android.apps.nexuslauncher:id/clock" class="android.widget.TextView" package="com.google.android.apps.nexuslauncher" content-desc="Sunday, May 19" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[166,84][655,346]"/>
417+ <node index="1" text="" resource-id="com.google.android.apps.nexuslauncher:id/title_sep" class="android.view.View" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[655,188][658,241]"/>
418+ <node index="2" text="" resource-id="com.google.android.apps.nexuslauncher:id/title_weather_content" class="android.widget.LinearLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[658,84][913,346]">
419+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/title_weather_icon" class="android.widget.ImageView" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[684,183][747,246]"/>
420+ <node index="1" text="56°F" resource-id="com.google.android.apps.nexuslauncher:id/title_weather_text" class="android.widget.TextView" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[758,172][887,257]"/>
421+ </node>
422+ </node>
423+ </node>
424+ </node>
425+ <node index="1" text="" resource-id="" class="android.view.View" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[35,84][268,377]"/>
426+ </node>
427+ </node>
428+ <node index="1" text="" resource-id="com.google.android.apps.nexuslauncher:id/gradient_bg" class="android.view.View" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,0][1080,1794]"/>
429+ <node index="2" text="" resource-id="com.google.android.apps.nexuslauncher:id/page_indicator" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,1395][1080,1479]">
430+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/all_apps_handle" class="android.widget.ImageView" package="com.google.android.apps.nexuslauncher" content-desc="Apps list" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[477,1395][603,1479]"/>
431+ </node>
432+ <node index="3" text="" resource-id="com.google.android.apps.nexuslauncher:id/hotseat" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[0,1479][1080,1794]">
433+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/layout" class="android.view.ViewGroup" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[0,1479][1080,1794]">
434+ <node index="0" text="" resource-id="" class="android.view.View" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[35,1479][268,1694]"/>
435+ <node index="1" text="" resource-id="" class="android.view.ViewGroup" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[35,1479][1045,1663]">
436+ <node index="0" text="Phone" resource-id="" class="android.widget.TextView" package="com.google.android.apps.nexuslauncher" content-desc="Phone" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[35,1479][237,1663]"/>
437+ <node index="1" text="Messages" resource-id="" class="android.widget.TextView" package="com.google.android.apps.nexuslauncher" content-desc="Messages" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[237,1479][439,1663]"/>
438+ <node index="2" text="Play Store" resource-id="" class="android.widget.TextView" package="com.google.android.apps.nexuslauncher" content-desc="Play Store" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[439,1479][641,1663]"/>
439+ <node index="3" text="Chrome" resource-id="" class="android.widget.TextView" package="com.google.android.apps.nexuslauncher" content-desc="Chrome" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="true" password="false" selected="false" bounds="[641,1479][843,1663]"/>
440+ </node>
441+ </node>
442+ <node index="1" text="" resource-id="com.google.android.apps.nexuslauncher:id/search_container_hotseat" class="android.widget.FrameLayout" package="com.google.android.apps.nexuslauncher" content-desc="Search" checkable="false" checked="false" clickable="true" enabled="true" focusable="true" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[53,1664][1026,1794]">
443+ <node index="0" text="" resource-id="com.google.android.apps.nexuslauncher:id/g_icon" class="android.widget.ImageView" package="com.google.android.apps.nexuslauncher" content-desc="" checkable="false" checked="false" clickable="false" enabled="true" focusable="false" focused="false" scrollable="false" long-clickable="false" password="false" selected="false" bounds="[93,1695][178,1780]"/>
444+ </node>
445+ </node>
446+ </node>
447+ </node>
448+ </node>
449+ </node>
450+ </node>
451+ </hierarchy>
452+ '''
453+
404454UIAUTOMATOR_DUMP_API17_CHINESE = '''<?xml version=\'1.0\' encoding=\'UTF-8\' standalone=\'yes\' ?>
405455<hierarchy rotation="0">
406456 <node index="0" text="" class="android.widget.FrameLayout"
@@ -672,7 +722,6 @@ class MockDevice(object):
672722 Mocks an Android device
673723 '''
674724
675-
676725 def __init__(self, serialno="MOCK12345678", version=15, startviewserver=False, uiautomatorkilled=False, language='en'):
677726 '''
678727 Constructor
@@ -690,13 +739,11 @@ def __init__(self, serialno="MOCK12345678", version=15, startviewserver=False, u
690739 self.viewServer = None
691740 self.uiAutomatorKilled = uiautomatorkilled
692741 self.language = language
693- self.uiAutomatorDump = {}
694- self.uiAutomatorDump['en'] = UIAUTOMATOR_DUMP
695742 # FIXME: MockDevice could not be API17
696- self.uiAutomatorDump['zh'] = UIAUTOMATOR_DUMP_API17_CHINESE
697-
698- # def __del__(self) :
699- # self.shutdownMockViewServer()
743+ if version < 27:
744+ self.uiAutomatorDump = {'en': UIAUTOMATOR_DUMP, 'zh': UIAUTOMATOR_DUMP_API17_CHINESE}
745+ else :
746+ self.uiAutomatorDump = {'en': UIAUTOMATOR_DUMP_API27}
700747
701748 def shell(self, cmd):
702749 if cmd == 'service call window 3':
0 commit comments