Auto detect ethernet and hide FA utility

BUG=chrome-os-partner:18533
TEST=Manual test run AudioQuality

Change-Id: I51b839e8f617637b9023ac15b790eb0e87e6f823
Reviewed-on: https://gerrit.chromium.org/gerrit/50027
Reviewed-by: Hsinyu Chao <hychao@chromium.org>
Commit-Queue: Heng-ruey Hsu <henryhsu@chromium.org>
Tested-by: Heng-ruey Hsu <henryhsu@chromium.org>
diff --git a/client/site_tests/factory_AudioQuality/factory_AudioQuality.py b/client/site_tests/factory_AudioQuality/factory_AudioQuality.py
index 6d899c0..4b854fc 100644
--- a/client/site_tests/factory_AudioQuality/factory_AudioQuality.py
+++ b/client/site_tests/factory_AudioQuality/factory_AudioQuality.py
@@ -79,6 +79,9 @@
 # Logs
 _LABEL_FAIL_LOGS = 'Test fail, find more detail in log.'
 
+# Setting
+_INIT_COUNTDOWN = 3
+
 class factory_AudioQuality(test.test):
     version = 2
     preserve_srcdir = True
@@ -367,16 +370,21 @@
 
     def init_audio_server(self, event):
         self._eth = net_utils.FindUsableEthDevice()
-        if not self._eth:
-            raise error.TestError('No Ethernet interface available')
-        factory.console.info('Got %s for connection' % self._eth)
+        if self._eth:
+            factory.console.info('Got %s for connection' % self._eth)
 
-        # Configure local network environment to accept command from test host.
-        utils.system('ifconfig %s %s netmask 255.255.255.0 up' %
-                (self._eth, _LOCAL_IP))
-        utils.system('iptables -A INPUT -p tcp --dport %s -j ACCEPT' % _PORT)
+            # Configure local network environment to accept command
+            # from test host.
+            utils.system('ifconfig %s %s netmask 255.255.255.0 up' %
+                    (self._eth, _LOCAL_IP))
+            utils.system('iptables -A INPUT -p tcp --dport %s -j ACCEPT' %
+                    _PORT)
 
-        self.start_server()
+            self.start_server()
+        else:
+            self.ui.CallJSFunction('start_countdown',
+                    'Auto detect ethernet, countdown | 自动侦测网路,倒数\n',
+                    self._countdown)
 
     def run_once(self, input_dev='hw:0,0', output_dev='hw:0,0', eth='eth0',
             dmic_switch_mixer_settings=_DMIC_SWITCH_MIXER_SETTINGS,
@@ -384,7 +392,8 @@
             unmute_speaker_mixer_settings=_UNMUTE_SPEAKER_MIXER_SETTINGS,
             mute_right_mixer_settings=_MUTE_RIGHT_MIXER_SETTINGS,
             mute_left_mixer_settings=_MUTE_LEFT_MIXER_SETTINGS,
-            use_sox_loop=False, use_multitone=False, loop_buffer_count=10):
+            use_sox_loop=False, use_multitone=False, loop_buffer_count=10,
+            countdown=_INIT_COUNTDOWN):
         factory.console.info('%s run_once' % self.__class__)
 
         self._ah = audio_helper.AudioHelper(self)
@@ -403,6 +412,7 @@
         self._sweep_job = None
         self._tone_job = None
         self._loop_process = None
+        self._countdown = countdown
 
         # Mixer settings for different configurations.
         self._init_mixer_settings = init_mixer_settings
diff --git a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html
index 07a32d4..ce4b68f 100644
--- a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html
+++ b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.html
@@ -1,9 +1,11 @@
-<h1 id="message" style="position: absolute; top:45%">
-  Plug in ethernet and hit S to start
-  | 插上网路线后按下S键开始测试
+<h1 id="default_message" style="position: absolute; top:45%">
+  Plug in ethernet | 插上网路线开始测试
+</h1>
+<h1 id="message" style="position: absolute; top:55%">
 </h1>
 <br>
-<div>FA utility:<br>
+<div onClick="toggleFAUtility()">Click to toggle FA utility:</div>
+<div id="fa-utility" style="display: none">
   <input type="radio" id="loop_0"
       onClick="testCommand('loop_0')">
     No audio looping
diff --git a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js
index 7c35b10..89fad07 100644
--- a/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js
+++ b/client/site_tests/factory_AudioQuality/static/factory_AudioQuality.js
@@ -1,11 +1,18 @@
+/*
 window.onkeydown = function(event) {
   if (event.keyCode == 83) {
     test.sendTestEvent("init_audio_server",{});
-    window.onkeydown = null;
   }
 }
+*/
+
+window.onload = function(event) {
+  test.sendTestEvent("init_audio_server",{});
+}
 
 var active = 'loop_0';
+var display_fa_utility = false;
+var count = 3, count_timer = null, count_msg = '';
 
 function setMessage(msg) {
   document.getElementById("message").innerHTML = msg;
@@ -24,3 +31,28 @@
   testCommand('loop_0');
   document.getElementById('loop_0').checked = true;
 }
+
+function toggleFAUtility() {
+  if (display_fa_utility) {
+    document.getElementById('fa-utility').style.display = 'none';
+    display_fa_utility = false;
+  } else {
+    document.getElementById('fa-utility').style.display = 'block';
+    display_fa_utility = true;
+  }
+}
+
+function countdown() {
+  setMessage(count_msg + ' ' + count);
+  count = count - 1;
+  if (count <= 0) {
+     clearInterval(count_timer);
+     test.sendTestEvent("init_audio_server",{});
+  }
+}
+
+function start_countdown(msg, num) {
+  count = num;
+  count_msg = msg;
+  count_timer = setInterval(countdown, 1000);
+}