1# Copyright 2019 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4import logging
5
6from autotest_lib.client.common_lib.cros import assistant_util
7# TODO (crbug.com/949874): Remove this when we make sure assistant_util_private
8# is available.
9try:
10    from autotest_lib.client.common_lib.cros import assistant_util_private
11except ImportError:
12    logging.error("Failed to import assistant_util_private")
13
14class AssistantNativeError(Exception):
15    """Error in AssistantFacadeNative."""
16    pass
17
18class AssistantFacadeNative(object):
19    """Facade to access the assistant-related functionality.
20
21    The methods inside this class only accept Python native types.
22
23    """
24    def __init__(self, resource):
25        self._resource = resource
26
27
28    def restart_chrome_for_assistant(self, enable_dsp_hotword=True):
29        """Restarts Chrome with Google assistant enabled.
30
31        @param enable_dsp_hotword: A bool to control the usage of dsp for
32                hotword.
33        """
34        # TODO (paulhsia): Remove this when voice command is ready for non
35        # gaia_login environment.
36        cred = assistant_util_private.get_login_credential()
37        custom_chrome_setup = {
38                "autotest_ext": True,
39                "gaia_login": True,
40                "enable_assistant": True,
41                "username": cred.username,
42                "password": cred.password,
43        }
44
45        if enable_dsp_hotword:
46            custom_chrome_setup["extra_browser_args"] = (
47                ["--enable-features=EnableDspHotword"])
48        self._resource.start_custom_chrome(custom_chrome_setup)
49
50
51    def send_text_query(self, text):
52        """Sends text query to Google assistant and gets response.
53
54        @param text: A str object for text qeury.
55
56        @returns: A str object for query response.
57        """
58        ext = self._resource.get_extension()
59        return assistant_util.send_text_query(ext, text)
60
61
62    def enable_hotword(self):
63        """Enables hotword in Google assistant."""
64        ext = self._resource.get_extension()
65        assistant_util.enable_hotword(ext)
66