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