Run dismiss dialogs only on ios bots.

This is to prevent trying to run the dismiss dialogs logic that is
mac/ios only.

CP Request: https://github.com/flutter/flutter/issues/144951
Change-Id: Iec95d2b659c0ce4ceb7bf57cb2639d5da7e58ea6
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/54104
Commit-Queue: Godofredo Contreras <godofredoc@google.com>
Reviewed-by: Keyong Han <keyonghan@google.com>
Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/55960
Commit-Queue: Victoria Ashworth <vashworth@google.com>
diff --git a/recipe_modules/os_utils/api.py b/recipe_modules/os_utils/api.py
index 6d0ff4d..be69ce9 100644
--- a/recipe_modules/os_utils/api.py
+++ b/recipe_modules/os_utils/api.py
@@ -231,7 +231,7 @@
 
   def shutdown_simulators(self):
     """It stops simulators if task is running on a devicelab bot."""
-    if self._is_devicelab() and self.m.platform.is_mac:
+    if self.is_devicelab() and self.is_ios() and self.m.platform.is_mac:
       with self.m.step.nest('Shutdown simulators'):
         self.m.step(
             'Shutdown simulators',
@@ -268,7 +268,8 @@
       diagnose_first:
         (bool) Whether diagnosis will be run initially before attempting to recover.
     """
-    if not self._is_devicelab() or not self.m.platform.is_mac:
+    if not self.is_devicelab() or not self.m.platform.is_mac or not self.is_ios(
+    ):
       # if no iPhone is attached, we don't need to recover ios debug symbols
       return
     with self.m.step.nest('ios_debug_symbol_doctor'):
@@ -328,8 +329,7 @@
     Args:
       flutter_path(Path): A path to the checkout of the flutter sdk repository.
     """
-    if str(self.m.swarming.bot_id
-          ).startswith('flutter-devicelab') and self.m.platform.is_mac:
+    if self.is_devicelab() and self.is_ios() and self.m.platform.is_mac:
       with self.m.step.nest('Dismiss dialogs'):
         # Get list of wired CoreDevices.
         # Allow any return code and ignore failure since this command will only
@@ -607,8 +607,7 @@
 
   def reset_automation_dialogs(self):
     """Reset Xcode Automation permissions."""
-    if str(self.m.swarming.bot_id
-          ).startswith('flutter-devicelab') and self.m.platform.is_mac:
+    if self.is_devicelab() and self.m.platform.is_mac:
       with self.m.step.nest('Reset Xcode automation dialogs'):
         tcc_directory_path, db_path, backup_db_path = self._get_tcc_path()
 
@@ -679,5 +678,9 @@
         ],
     )
 
-  def _is_devicelab(self):
+  def is_devicelab(self):
     return str(self.m.swarming.bot_id).startswith('flutter-devicelab')
+
+  def is_ios(self):
+    device_os = self.m.properties.get('device_os', '')
+    return device_os.lower().startswith('ios-')
diff --git a/recipe_modules/os_utils/examples/full.py b/recipe_modules/os_utils/examples/full.py
index 29f37e5..c192a02 100644
--- a/recipe_modules/os_utils/examples/full.py
+++ b/recipe_modules/os_utils/examples/full.py
@@ -63,6 +63,7 @@
       xcode_dismiss_dialog_find_db_step,
       xcode_dismiss_dialog_query_db_step,
       api.platform('mac', 64),
+      api.properties(device_os='iOS-16'),
       api.properties.environ(
           properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1')
       ),
@@ -75,6 +76,7 @@
       api.step_data('ios_debug_symbol_doctor.diagnose (4)', retcode=1),
       api.step_data('ios_debug_symbol_doctor.diagnose (5)', retcode=1),
       api.platform('mac', 64),
+      api.properties(device_os='iOS-16'),
       api.properties.environ(
           properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1')
       ),
@@ -92,6 +94,7 @@
       'clean_derived_data', api.platform('mac', 64),
       xcode_dismiss_dialog_find_db_step,
       xcode_dismiss_dialog_query_db_step,
+      api.properties(device_os='iOS-16'),
       api.properties.environ(
           properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1')
       )
@@ -103,6 +106,7 @@
           stdout=api.raw_io.output_text(''),
       ),
       api.platform('mac', 64),
+      api.properties(device_os='iOS-16'),
       api.properties.environ(
           properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1')
       ),
@@ -113,6 +117,7 @@
       xcode_dismiss_dialog_find_db_step,
       # xcode_dismiss_dialog_query_db_step,
       api.platform('mac', 64),
+      api.properties(device_os='iOS-16'),
       api.properties.environ(
           properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1')
       ),
@@ -127,6 +132,7 @@
           stdout=api.raw_io.output_text('TCC.db.backup'),
       ),
       api.platform('mac', 64),
+      api.properties(device_os='iOS-16'),
       api.properties.environ(
           properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1')
       ),
@@ -142,7 +148,7 @@
           stdout=api.raw_io.output_text('No devices found.'),
       ),
       api.platform('mac', 64),
-      api.properties(buildername='Mac flutter_gallery_ios__start_up',),
+      api.properties(buildername='Mac flutter_gallery_ios__start_up', device_os='iOS-16'),
       api.properties.environ(
           properties.EnvProperties(SWARMING_BOT_ID='flutter-devicelab-mac-1')
       ),
diff --git a/recipes/devicelab/devicelab_drone.py b/recipes/devicelab/devicelab_drone.py
index 44c2dfd..d50a5e3 100644
--- a/recipes/devicelab/devicelab_drone.py
+++ b/recipes/devicelab/devicelab_drone.py
@@ -400,6 +400,7 @@
           buildername='Mac_ios abc',
           task_name='abc',
           tags=['ios'],
+          device_os='iOS-16',
           git_branch='master',
           **{'$flutter/osx_sdk': {'sdk_version': 'deadbeef',}}
       ),
@@ -422,7 +423,9 @@
       ),
       api.step_data(
           'Dismiss dialogs.Dismiss Xcode automation dialogs.Query TCC db (2)',
-          stdout=api.raw_io.output_text('service|client|client_type|auth_value|auth_reason|auth_version|com.apple.dt.Xcode|flags|last_modified'),
+          stdout=api.raw_io.output_text(
+              'service|client|client_type|auth_value|auth_reason|auth_version|com.apple.dt.Xcode|flags|last_modified'
+          ),
       ),
   )
   yield api.test(
@@ -431,6 +434,7 @@
           buildername='Mac_ios abc',
           task_name='abc',
           tags=['ios'],
+          device_os='iOS-16',
           test_timeout_secs=1,
           git_branch='master',
           **{'$flutter/osx_sdk': {'sdk_version': 'deadbeef',}}
@@ -453,7 +457,9 @@
       ),
       api.step_data(
           'Dismiss dialogs.Dismiss Xcode automation dialogs.Query TCC db (2)',
-          stdout=api.raw_io.output_text('service|client|client_type|auth_value|auth_reason|auth_version|com.apple.dt.Xcode|flags|last_modified'),
+          stdout=api.raw_io.output_text(
+              'service|client|client_type|auth_value|auth_reason|auth_version|com.apple.dt.Xcode|flags|last_modified'
+          ),
       ),
       api.swarming.properties(bot_id='flutter-devicelab-mac-1'),
       status='FAILURE',