1cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Copyright 2014 The Chromium Authors. All rights reserved. 2cef7893435aa41160dd1255c43cb8498279738ccChris Craik# Use of this source code is governed by a BSD-style license that can be 3cef7893435aa41160dd1255c43cb8498279738ccChris Craik# found in the LICENSE file. 4cef7893435aa41160dd1255c43cb8498279738ccChris Craik 5cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport logging 6cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport time 7cef7893435aa41160dd1255c43cb8498279738ccChris Craikimport unittest 8cef7893435aa41160dd1255c43cb8498279738ccChris Craik 9cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.core import platform as platform_module 10cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.internal.app import android_app 11cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.internal.backends import android_app_backend 12cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.internal.platform import android_device 13cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom telemetry.testing import options_for_unittests 14cef7893435aa41160dd1255c43cb8498279738ccChris Craik 15cef7893435aa41160dd1255c43cb8498279738ccChris Craikfrom devil.android.sdk import intent 16cef7893435aa41160dd1255c43cb8498279738ccChris Craik 17cef7893435aa41160dd1255c43cb8498279738ccChris Craik 18cef7893435aa41160dd1255c43cb8498279738ccChris Craikclass AndroidAppTest(unittest.TestCase): 19cef7893435aa41160dd1255c43cb8498279738ccChris Craik def setUp(self): 20cef7893435aa41160dd1255c43cb8498279738ccChris Craik self._options = options_for_unittests.GetCopy() 21cef7893435aa41160dd1255c43cb8498279738ccChris Craik self._device = android_device.GetDevice(self._options) 22cef7893435aa41160dd1255c43cb8498279738ccChris Craik 23cef7893435aa41160dd1255c43cb8498279738ccChris Craik def CreateAndroidApp(self, start_intent): 24cef7893435aa41160dd1255c43cb8498279738ccChris Craik platform = platform_module.GetPlatformForDevice(self._device, self._options) 25cef7893435aa41160dd1255c43cb8498279738ccChris Craik platform_backend = platform._platform_backend 26cef7893435aa41160dd1255c43cb8498279738ccChris Craik app_backend = android_app_backend.AndroidAppBackend( 27cef7893435aa41160dd1255c43cb8498279738ccChris Craik platform_backend, start_intent) 28cef7893435aa41160dd1255c43cb8498279738ccChris Craik return android_app.AndroidApp(app_backend, platform_backend) 29cef7893435aa41160dd1255c43cb8498279738ccChris Craik 30cef7893435aa41160dd1255c43cb8498279738ccChris Craik def testWebView(self): 31cef7893435aa41160dd1255c43cb8498279738ccChris Craik if self._device is None: 32cef7893435aa41160dd1255c43cb8498279738ccChris Craik logging.warning('No device found, skipping test.') 33cef7893435aa41160dd1255c43cb8498279738ccChris Craik return 34cef7893435aa41160dd1255c43cb8498279738ccChris Craik 35cef7893435aa41160dd1255c43cb8498279738ccChris Craik start_intent = intent.Intent( 36cef7893435aa41160dd1255c43cb8498279738ccChris Craik package='com.google.android.googlequicksearchbox', 37cef7893435aa41160dd1255c43cb8498279738ccChris Craik activity='.SearchActivity', 38cef7893435aa41160dd1255c43cb8498279738ccChris Craik action='com.google.android.googlequicksearchbox.GOOGLE_SEARCH', 39cef7893435aa41160dd1255c43cb8498279738ccChris Craik data=None, 40cef7893435aa41160dd1255c43cb8498279738ccChris Craik extras={'query': 'google'}, 41cef7893435aa41160dd1255c43cb8498279738ccChris Craik category=None) 42cef7893435aa41160dd1255c43cb8498279738ccChris Craik search_app = self.CreateAndroidApp(start_intent) 43cef7893435aa41160dd1255c43cb8498279738ccChris Craik search_process = search_app.GetProcess(':search') 44cef7893435aa41160dd1255c43cb8498279738ccChris Craik search_process._UpdateDevToolsClient() 45cef7893435aa41160dd1255c43cb8498279738ccChris Craik 46cef7893435aa41160dd1255c43cb8498279738ccChris Craik # TODO(ariblue): Replace the app used in this test with one in which the 47cef7893435aa41160dd1255c43cb8498279738ccChris Craik # setWebContentsDebuggingEnabled method is called on the WebView class. 48cef7893435aa41160dd1255c43cb8498279738ccChris Craik # This will configure webviews for debugging with chrome devtools inspector 49cef7893435aa41160dd1255c43cb8498279738ccChris Craik # and allow us to remove this check. 50cef7893435aa41160dd1255c43cb8498279738ccChris Craik if search_process._devtools_client is None: 51cef7893435aa41160dd1255c43cb8498279738ccChris Craik return 52cef7893435aa41160dd1255c43cb8498279738ccChris Craik 53cef7893435aa41160dd1255c43cb8498279738ccChris Craik webview = search_app.GetProcess(':search').GetWebViews().pop() 54cef7893435aa41160dd1255c43cb8498279738ccChris Craik webview.Navigate('https://www.google.com/search?q=flowers') 55cef7893435aa41160dd1255c43cb8498279738ccChris Craik time.sleep(5) 56