Clean up visible test handling (including GTK tests).

This will be used for backgrounding (e.g., for runin).

BUG=None
TEST=Manual

Change-Id: Id5e7988f73285fc62407e2d36f15619421983250
Reviewed-on: https://gerrit.chromium.org/gerrit/26801
Tested-by: Jon Salz <jsalz@chromium.org>
Reviewed-by: Chinyue Chen <chinyue@chromium.org>
Reviewed-by: Jon Salz <jsalz@chromium.org>
Commit-Ready: Jon Salz <jsalz@chromium.org>
diff --git a/py/goofy/goofy.py b/py/goofy/goofy.py
index cebd415..a73d982 100755
--- a/py/goofy/goofy.py
+++ b/py/goofy/goofy.py
@@ -203,6 +203,9 @@
         lambda event: self.update_factory(),
       Event.Type.STOP:
         lambda event: self.stop(),
+      Event.Type.SET_VISIBLE_TEST:
+        lambda event: self.set_visible_test(
+          self.test_list.lookup_path(event.path)),
     }
 
     self.exceptions = []
@@ -1030,8 +1033,7 @@
       # Already running: just bring to the front if it
       # has a UI.
       logging.info('Setting visible test to %s', test.path)
-      self.event_client.post_event(
-        Event(Event.Type.SET_VISIBLE_TEST, path=test.path))
+      self.set_visible_test(test)
       return
 
     self.abort_active_tests()