Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Unified Diff: tools/telemetry/telemetry/core/chrome/android_browser_finder.py

Issue 23072018: [telemetry] Move telemetry/core/chrome/ to telemetry/core/backends/chrome/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix perf smoothness_unittest. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/chrome/android_browser_finder.py
diff --git a/tools/telemetry/telemetry/core/chrome/android_browser_finder.py b/tools/telemetry/telemetry/core/chrome/android_browser_finder.py
deleted file mode 100644
index 786e3962c81ff3095342babfdf46e991f9235436..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/core/chrome/android_browser_finder.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# Copyright (c) 2012 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-"""Finds android browsers that can be controlled by telemetry."""
-
-import os
-import logging as real_logging
-import re
-import subprocess
-import sys
-
-from telemetry.core import browser
-from telemetry.core import possible_browser
-from telemetry.core import util
-from telemetry.core.chrome import adb_commands
-from telemetry.core.chrome import android_browser_backend
-from telemetry.core.platform import android_platform_backend
-
-CHROME_PACKAGE_NAMES = {
- 'android-chrome': 'com.google.android.apps.chrome',
- 'android-chrome-beta': 'com.chrome.beta',
- 'android-chrome-dev': 'com.google.android.apps.chrome_dev',
- 'android-jb-system-chrome': 'com.android.chrome'
-}
-
-ALL_BROWSER_TYPES = ','.join([
- 'android-chromium-testshell',
- 'android-content-shell',
- 'android-webview',
- ] + CHROME_PACKAGE_NAMES.keys())
-
-CONTENT_SHELL_PACKAGE = 'org.chromium.content_shell_apk'
-CHROMIUM_TESTSHELL_PACKAGE = 'org.chromium.chrome.testshell'
-WEBVIEW_PACKAGE = 'com.android.webview.chromium.shell'
-
-
-# adb shell pm list packages
-# adb
-# intents to run (pass -D url for the rest)
-# com.android.chrome/.Main
-# com.google.android.apps.chrome/.Main
-
-class PossibleAndroidBrowser(possible_browser.PossibleBrowser):
- """A launchable android browser instance."""
- def __init__(self, browser_type, finder_options, backend_settings):
- super(PossibleAndroidBrowser, self).__init__(browser_type, finder_options)
- self._backend_settings = backend_settings
-
- def __repr__(self):
- return 'PossibleAndroidBrowser(browser_type=%s)' % self.browser_type
-
- def Create(self):
- backend = android_browser_backend.AndroidBrowserBackend(
- self.finder_options, self._backend_settings)
- platform_backend = android_platform_backend.AndroidPlatformBackend(
- self._backend_settings.adb.Adb(),
- self.finder_options.no_performance_mode)
- b = browser.Browser(backend, platform_backend)
- return b
-
- def SupportsOptions(self, finder_options):
- if len(finder_options.extensions_to_load) != 0:
- return False
- return True
-
-def SelectDefaultBrowser(_):
- return None
-
-adb_works = None
-def CanFindAvailableBrowsers(logging=real_logging):
- if not adb_commands.IsAndroidSupported():
- return False
-
- global adb_works
-
- if adb_works == None:
- try:
- with open(os.devnull, 'w') as devnull:
- proc = subprocess.Popen(['adb', 'devices'],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- stdin=devnull)
- stdout, _ = proc.communicate()
- if re.search(re.escape('????????????\tno permissions'), stdout) != None:
- logging.warn(
- ('adb devices reported a permissions error. Consider '
- 'restarting adb as root:'))
- logging.warn(' adb kill-server')
- logging.warn(' sudo `which adb` devices\n\n')
- adb_works = True
- except OSError:
- platform_tools_path = os.path.join(util.GetChromiumSrcDir(),
- 'third_party', 'android_tools', 'sdk', 'platform-tools')
- if (sys.platform.startswith('linux') and
- os.path.exists(os.path.join(platform_tools_path, 'adb'))):
- os.environ['PATH'] = os.pathsep.join([platform_tools_path,
- os.environ['PATH']])
- adb_works = True
- else:
- adb_works = False
- if adb_works and sys.platform.startswith('linux'):
- # Workaround for crbug.com/268450
- import psutil # pylint: disable=F0401
- adb_commands.GetAttachedDevices()
- pids = [p.pid for p in psutil.process_iter() if 'adb' in p.name]
- with open(os.devnull, 'w') as devnull:
- for pid in pids:
- ret = subprocess.call(['taskset', '-p', '0x1', str(pid)],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- stdin=devnull)
- if ret:
- logging.warn('Failed to taskset %d (%s)', pid, ret)
-
- return adb_works
-
-def FindAllAvailableBrowsers(finder_options, logging=real_logging):
- """Finds all the desktop browsers available on this machine."""
- if not CanFindAvailableBrowsers(logging=logging):
- logging.info('No adb command found. ' +
- 'Will not try searching for Android browsers.')
- return []
-
- device = None
- if finder_options.android_device:
- devices = [finder_options.android_device]
- else:
- devices = adb_commands.GetAttachedDevices()
-
- if len(devices) == 0:
- logging.info('No android devices found.')
- return []
-
- if len(devices) > 1:
- logging.warn('Multiple devices attached. ' +
- 'Please specify a device explicitly.')
- return []
-
- device = devices[0]
-
- adb = adb_commands.AdbCommands(device=device)
-
- packages = adb.RunShellCommand('pm list packages')
- possible_browsers = []
- if 'package:' + CONTENT_SHELL_PACKAGE in packages:
- b = PossibleAndroidBrowser(
- 'android-content-shell',
- finder_options, android_browser_backend.ContentShellBackendSettings(
- adb, CONTENT_SHELL_PACKAGE))
- possible_browsers.append(b)
-
- if 'package:' + CHROMIUM_TESTSHELL_PACKAGE in packages:
- b = PossibleAndroidBrowser(
- 'android-chromium-testshell',
- finder_options,
- android_browser_backend.ChromiumTestShellBackendSettings(
- adb, CHROMIUM_TESTSHELL_PACKAGE))
- possible_browsers.append(b)
-
- if 'package:' + WEBVIEW_PACKAGE in packages:
- b = PossibleAndroidBrowser(
- 'android-webview',
- finder_options,
- android_browser_backend.WebviewBackendSettings(adb, WEBVIEW_PACKAGE))
- possible_browsers.append(b)
-
- for name, package in CHROME_PACKAGE_NAMES.iteritems():
- if 'package:' + package in packages:
- b = PossibleAndroidBrowser(
- name,
- finder_options,
- android_browser_backend.ChromeBackendSettings(adb, package))
- possible_browsers.append(b)
-
- # See if the "forwarder" is installed -- we need this to host content locally
- # but make it accessible to the device.
- if len(possible_browsers) and not adb_commands.HasForwarder():
- logging.warn('telemetry detected an android device. However,')
- logging.warn('Chrome\'s port-forwarder app is not available.')
- logging.warn('To build:')
- logging.warn(' ninja -C out/Release forwarder2 md5sum')
- logging.warn('')
- logging.warn('')
- return []
- return possible_browsers

Powered by Google App Engine
This is Rietveld 408576698