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