summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2013-10-22 16:41:35 +0100
committerTorne (Richard Coles) <torne@google.com>2013-10-22 16:41:35 +0100
commit8bcbed890bc3ce4d7a057a8f32cab53fa534672e (patch)
tree1390b6675d21328859f01f50203d9bde09105298 /build
parent116fa16b45c9efe30e785b9fc32f09780ca23bec (diff)
downloadchromium_org-8bcbed890bc3ce4d7a057a8f32cab53fa534672e.tar.gz
Merge from Chromium at DEPS revision 230120
This commit was generated by merge_to_master.py. Change-Id: I54bc06b7ee8a07092e74ce3b68c6893508349042
Diffstat (limited to 'build')
-rw-r--r--build/all.gyp112
-rw-r--r--build/all_android.gyp20
-rwxr-xr-xbuild/android/adb_profile_chrome.py20
-rwxr-xr-xbuild/android/buildbot/bb_device_status_check.py46
-rwxr-xr-xbuild/android/buildbot/bb_device_steps.py41
-rwxr-xr-xbuild/android/buildbot/bb_host_steps.py14
-rwxr-xr-xbuild/android/buildbot/bb_run_bot.py12
-rw-r--r--build/android/buildbot/bb_utils.py3
-rwxr-xr-xbuild/android/gyp/gcc_preprocess.py9
-rw-r--r--build/android/pylib/android_commands.py20
-rw-r--r--build/android/pylib/gtest/filter/breakpad_unittests_disabled2
-rw-r--r--build/android/pylib/gtest/filter/content_browsertests_disabled4
-rw-r--r--build/android/pylib/gtest/gtest_config.py6
-rw-r--r--build/android/pylib/linker/setup.py3
-rw-r--r--build/android/pylib/linker/test_case.py133
-rw-r--r--build/android/pylib/perf/setup.py6
-rw-r--r--build/android/pylib/perf/test_runner.py39
-rw-r--r--build/build_config.h2
-rw-r--r--build/common.gypi18
-rw-r--r--build/filename_rules.gypi5
-rwxr-xr-xbuild/install-build-deps.sh4
-rw-r--r--build/ios/grit_whitelist.txt3
-rw-r--r--build/java_apk.gypi60
-rw-r--r--build/linux/system.gyp14
-rw-r--r--build/linux/unbundle/icu.gyp52
-rwxr-xr-xbuild/mac/strip_save_dsym2
-rw-r--r--build/util/LASTCHANGE2
-rw-r--r--build/util/LASTCHANGE.blink2
-rw-r--r--build/whitespace_file.txt3
29 files changed, 516 insertions, 141 deletions
diff --git a/build/all.gyp b/build/all.gyp
index d7ecdd63d8..7e8fa4d3bd 100644
--- a/build/all.gyp
+++ b/build/all.gyp
@@ -193,6 +193,11 @@
'../ui/app_list/app_list.gyp:*',
],
}],
+ ['OS!="android" and OS!="ios"', {
+ 'dependencies': [
+ '../google_apis/gcm/gcm.gyp:*',
+ ],
+ }],
],
}, # target_name: All
{
@@ -200,11 +205,10 @@
'type': 'none',
'conditions': [
['OS=="win" and fastbuild==0 and target_arch=="ia32"', {
- 'dependencies': [
- '../chrome/installer/mini_installer_syzygy.gyp:*',
- ],
- },
- ],
+ 'dependencies': [
+ '../chrome/installer/mini_installer_syzygy.gyp:*',
+ ],
+ }],
],
}, # target_name: All_syzygy
{
@@ -233,9 +237,9 @@
'../chrome/chrome.gyp:sync_integration_tests',
'../cloud_print/cloud_print.gyp:cloud_print_unittests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_shell',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_shell',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../device/device_tests.gyp:device_unittests',
'../google_apis/google_apis.gyp:google_apis_unittests',
'../gpu/gles2_conform_support/gles2_conform_support.gyp:gles2_conform_support',
@@ -338,6 +342,11 @@
'chromium_swarm_tests',
],
}],
+ ['OS!="android" and OS!="ios"', {
+ 'dependencies': [
+ '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
+ ],
+ }],
],
}, # target_name: chromium_builder_tests
{
@@ -356,7 +365,7 @@
'type': 'none',
'dependencies': [
'../third_party/WebKit/public/all.gyp:all_blink',
- '../content/content.gyp:content_shell',
+ '../content/content_shell_and_tests.gyp:content_shell',
],
}, # target_name: all_webkit
{
@@ -395,11 +404,11 @@
'target_name': 'chromium_gpu_builder',
'type': 'none',
'dependencies': [
- '../chrome/chrome.gyp:gpu_tests',
+ '../chrome/chrome.gyp:chrome',
'../chrome/chrome.gyp:performance_browser_tests',
'../chrome/chrome.gyp:performance_ui_tests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_gl_tests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_gl_tests',
'../gpu/gpu.gyp:gl_tests',
],
'conditions': [
@@ -408,15 +417,25 @@
'../gpu/gles2_conform_test/gles2_conform_test.gyp:gles2_conform_test',
],
}], # internal_gles2_conform
+ ['OS!="ios" and OS!="win"', {
+ 'dependencies': [
+ '../breakpad/breakpad.gyp:minidump_stackwalk',
+ ],
+ }],
+ ['OS=="linux"', {
+ 'dependencies': [
+ '../chrome/chrome.gyp:linux_symbols'
+ ],
+ }],
],
}, # target_name: chromium_gpu_builder
{
'target_name': 'chromium_gpu_debug_builder',
'type': 'none',
'dependencies': [
- '../chrome/chrome.gyp:gpu_tests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_gl_tests',
+ '../chrome/chrome.gyp:chrome',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_gl_tests',
'../gpu/gpu.gyp:gl_tests',
],
'conditions': [
@@ -425,6 +444,16 @@
'../gpu/gles2_conform_test/gles2_conform_test.gyp:gles2_conform_test',
],
}], # internal_gles2_conform
+ ['OS!="ios" and OS!="win"', {
+ 'dependencies': [
+ '../breakpad/breakpad.gyp:minidump_stackwalk',
+ ],
+ }],
+ ['OS=="linux"', {
+ 'dependencies': [
+ '../chrome/chrome.gyp:linux_symbols'
+ ],
+ }],
],
}, # target_name: chromium_gpu_debug_builder
{
@@ -434,15 +463,9 @@
'../chrome/chrome.gyp:chrome',
# Dependencies of pyauto_functional tests.
'../remoting/remoting.gyp:remoting_webapp',
+ '../chrome/chrome.gyp:pyautolib',
],
'conditions': [
- # If you change this condition, make sure you also change it
- # in chrome_tests.gypi
- ['enable_automation==1 and (OS=="mac" or ((OS=="win" or os_posix==1) and target_arch==python_arch))', {
- 'dependencies': [
- '../chrome/chrome.gyp:pyautolib',
- ],
- }],
['OS=="mac"', {
'dependencies': [
'../remoting/remoting.gyp:remoting_me2me_host_archive',
@@ -482,8 +505,8 @@
'dependencies': [
'chromium_builder_qa', # needed for perf pyauto tests
'../chrome/chrome.gyp:browser_tests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../third_party/libjingle/libjingle.gyp:peerconnection_server',
'../third_party/webrtc/tools/tools.gyp:frame_analyzer',
'../third_party/webrtc/tools/tools.gyp:rgba_to_i420_converter',
@@ -513,19 +536,19 @@
# We refer to content_shell directly rather than all_webkit
# because we don't want the _unittests binaries.
- '../content/content.gyp:content_shell',
+ '../content/content_shell_and_tests.gyp:content_shell',
],
'conditions': [
['OS!="win"', {
'dependencies': [
- '../content/content.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
'../net/net.gyp:dns_fuzz_stub',
],
}],
['OS=="win" and fastbuild==0 and target_arch=="ia32"', {
'dependencies': [
'../chrome/chrome_syzygy.gyp:chrome_dll_syzygy',
- '../content/content.gyp:content_shell_syzyasan',
+ '../content/content_shell_and_tests.gyp:content_shell_syzyasan',
],
'conditions': [
['chrome_multiple_dll==1', {
@@ -564,9 +587,10 @@
'../chrome/chrome.gyp:unit_tests',
'../cloud_print/cloud_print.gyp:cloud_print_unittests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../device/device_tests.gyp:device_unittests',
+ '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
'../gpu/gpu.gyp:gpu_unittests',
'../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests',
@@ -597,9 +621,10 @@
'../chrome/chrome.gyp:unit_tests',
'../cloud_print/cloud_print.gyp:cloud_print_unittests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../device/device_tests.gyp:device_unittests',
+ '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
'../gpu/gpu.gyp:gpu_unittests',
'../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests',
@@ -651,13 +676,14 @@
'../chrome/chrome.gyp:unit_tests',
'../cloud_print/cloud_print.gyp:cloud_print_unittests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../crypto/crypto.gyp:crypto_unittests',
'../device/device_tests.gyp:device_unittests',
'../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests',
'../net/net.gyp:net_unittests',
+ '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../sql/sql.gyp:sql_unittests',
@@ -690,14 +716,15 @@
'../chrome/chrome.gyp:unit_tests',
'../cloud_print/cloud_print.gyp:cloud_print_unittests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
# mini_installer_tests depends on mini_installer. This should be
# defined in installer.gyp.
'../chrome/installer/mini_installer.gyp:mini_installer',
'../chrome_frame/chrome_frame.gyp:npchrome_frame',
'../courgette/courgette.gyp:courgette_unittests',
'../device/device_tests.gyp:device_unittests',
+ '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
'../gpu/gpu.gyp:gpu_unittests',
'../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests',
@@ -758,7 +785,7 @@
'../base/base.gyp:base_unittests',
'../cloud_print/cloud_print.gyp:cloud_print_unittests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../crypto/crypto.gyp:crypto_unittests',
'../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests',
@@ -781,13 +808,14 @@
'../chrome/chrome.gyp:browser_tests',
'../cloud_print/cloud_print.gyp:cloud_print_unittests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../crypto/crypto.gyp:crypto_unittests',
'../device/device_tests.gyp:device_unittests',
'../ipc/ipc.gyp:ipc_tests',
'../jingle/jingle.gyp:jingle_unittests',
'../media/media.gyp:media_unittests',
'../net/net.gyp:net_unittests',
+ '../google_apis/gcm/gcm.gyp:gcm_unit_tests',
'../printing/printing.gyp:printing_unittests',
'../remoting/remoting.gyp:remoting_unittests',
'../sql/sql.gyp:sql_unittests',
@@ -820,15 +848,9 @@
'../cloud_print/cloud_print.gyp:cloud_print',
'../remoting/remoting.gyp:remoting_webapp',
'../third_party/widevine/cdm/widevine_cdm.gyp:widevinecdmadapter',
+ '../chrome/chrome.gyp:pyautolib',
],
'conditions': [
- # If you change this condition, make sure you also change it
- # in chrome_tests.gypi
- ['enable_automation==1 and (OS=="mac" or (os_posix==1 and target_arch==python_arch))', {
- 'dependencies': [
- '../chrome/chrome.gyp:pyautolib',
- ],
- }],
['internal_pdf', {
'dependencies': [
'../pdf/pdf.gyp:pdf',
@@ -871,8 +893,8 @@
'../chrome/chrome.gyp:interactive_ui_tests',
'../chrome/chrome.gyp:unit_tests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../device/device_tests.gyp:device_unittests',
'../ppapi/ppapi_internal.gyp:ppapi_unittests',
'../remoting/remoting.gyp:remoting_unittests',
diff --git a/build/all_android.gyp b/build/all_android.gyp
index 0e67fb4fb5..708646c260 100644
--- a/build/all_android.gyp
+++ b/build/all_android.gyp
@@ -17,7 +17,7 @@
'target_name': 'All',
'type': 'none',
'dependencies': [
- '../content/content.gyp:content_shell_apk',
+ '../content/content_shell_and_tests.gyp:content_shell_apk',
'<@(android_app_targets)',
'android_builder_tests',
'../android_webview/android_webview.gyp:android_webview_apk',
@@ -34,7 +34,7 @@
'type': 'none',
'dependencies': [
'../third_party/WebKit/public/all.gyp:all_blink',
- '../content/content.gyp:content_shell_apk',
+ '../content/content_shell_and_tests.gyp:content_shell_apk',
],
}, # target_name: all_webkit
{
@@ -64,10 +64,10 @@
'../cc/cc_tests.gyp:cc_unittests',
'../chrome/chrome.gyp:unit_tests',
'../components/components.gyp:components_unittests',
- '../content/content.gyp:content_browsertests',
- '../content/content.gyp:content_gl_tests',
- '../content/content.gyp:content_shell_test_apk',
- '../content/content.gyp:content_unittests',
+ '../content/content_shell_and_tests.gyp:content_browsertests',
+ '../content/content_shell_and_tests.gyp:content_gl_tests',
+ '../content/content_shell_and_tests.gyp:content_shell_test_apk',
+ '../content/content_shell_and_tests.gyp:content_unittests',
'../gpu/gpu.gyp:gl_tests',
'../gpu/gpu.gyp:gpu_unittests',
'../ipc/ipc.gyp:ipc_tests',
@@ -96,10 +96,10 @@
'../cc/cc_tests.gyp:cc_unittests_apk',
'../chrome/chrome.gyp:unit_tests_apk',
'../components/components.gyp:components_unittests_apk',
- '../content/content.gyp:content_browsertests_apk',
- '../content/content.gyp:content_gl_tests_apk',
- '../content/content.gyp:content_unittests_apk',
- '../content/content.gyp:video_decode_accelerator_unittest_apk',
+ '../content/content_shell_and_tests.gyp:content_browsertests_apk',
+ '../content/content_shell_and_tests.gyp:content_gl_tests_apk',
+ '../content/content_shell_and_tests.gyp:content_unittests_apk',
+ '../content/content_shell_and_tests.gyp:video_decode_accelerator_unittest_apk',
'../gpu/gpu.gyp:gl_tests_apk',
'../gpu/gpu.gyp:gpu_unittests_apk',
'../ipc/ipc.gyp:ipc_tests_apk',
diff --git a/build/android/adb_profile_chrome.py b/build/android/adb_profile_chrome.py
index c28c04000c..ead6741488 100755
--- a/build/android/adb_profile_chrome.py
+++ b/build/android/adb_profile_chrome.py
@@ -9,6 +9,7 @@ import logging
import optparse
import os
import re
+import shutil
import sys
import threading
import time
@@ -21,6 +22,9 @@ from pylib import constants
from pylib import pexpect
+_DEFAULT_CHROME_CATEGORIES = '_DEFAULT_CHROME_CATEGORIES'
+
+
def _GetTraceTimestamp():
return time.strftime('%Y-%m-%d-%H%M%S', time.localtime())
@@ -218,7 +222,7 @@ def _PullTraces(controllers, output, compress):
_ArchiveFiles(trace_files, result)
elif output:
result = output
- os.rename(trace_files[0], result)
+ shutil.move(trace_files[0], result)
else:
result = trace_files[0]
@@ -287,15 +291,19 @@ def main():
parser.add_option_group(cont_options)
categories = optparse.OptionGroup(parser, 'Trace categories')
- categories.add_option('-c', '--categories', help='Select categories to trace '
- 'with comma-delimited wildcards, e.g., '
- '"*", "cat1*,-cat1a". Default is "*".', default='*',
- dest='chrome_categories')
+ categories.add_option('-c', '--categories', help='Select Chrome tracing '
+ 'categories with comma-delimited wildcards, '
+ 'e.g., "*", "cat1*,-cat1a". Omit this option to trace '
+ 'Chrome\'s default categories. Chrome tracing can be '
+ 'disabled with "--categories=\'\'".',
+ metavar='CHROME_CATEGORIES', dest='chrome_categories',
+ default=_DEFAULT_CHROME_CATEGORIES)
categories.add_option('-s', '--systrace', help='Capture a systrace with the '
'chosen comma-delimited systrace categories. You can '
'also capture a combined Chrome + systrace by enabling '
'both types of categories. Use "list" to see the '
- 'available categories.', metavar='SYS_CATEGORIES',
+ 'available categories. Systrace is disabled by '
+ 'default.', metavar='SYS_CATEGORIES',
dest='systrace_categories', default='')
categories.add_option('--trace-cc', help='Enable extra trace categories for '
'compositor frame viewer data.', action='store_true')
diff --git a/build/android/buildbot/bb_device_status_check.py b/build/android/buildbot/bb_device_status_check.py
index a5ef54b34c..e279b5095c 100755
--- a/build/android/buildbot/bb_device_status_check.py
+++ b/build/android/buildbot/bb_device_status_check.py
@@ -9,11 +9,13 @@ import logging
import optparse
import os
import smtplib
+import subprocess
import sys
import re
import urllib
import bb_annotations
+import bb_utils
sys.path.append(os.path.join(os.path.dirname(__file__),
os.pardir, os.pardir, 'util', 'lib',
@@ -203,6 +205,42 @@ def SendDeviceStatusAlert(msg):
print 'Failed to send alert email. Error: %s' % e
+def RestartUsb():
+ if not os.path.isfile('/usr/bin/restart_usb'):
+ print ('ERROR: Could not restart usb. /usr/bin/restart_usb not installed '
+ 'on host (see BUG=305769).')
+ return 1
+
+ lsusb_proc = bb_utils.SpawnCmd(['lsusb'], stdout=subprocess.PIPE)
+ lsusb_output, _ = lsusb_proc.communicate()
+ if lsusb_proc.returncode:
+ print ('Error: Could not get list of USB ports (i.e. lsusb).')
+ return lsusb_proc.returncode
+
+ usb_devices = [re.findall('Bus (\d\d\d) Device (\d\d\d)', lsusb_line)[0]
+ for lsusb_line in lsusb_output.strip().split('\n')]
+
+ failed_restart = False
+ # Walk USB devices from leaves up (i.e reverse sorted) restarting the
+ # connection. If a parent node (e.g. usb hub) is restarted before the
+ # devices connected to it, the (bus, dev) for the hub can change, making the
+ # output we have wrong. This way we restart the devices before the hub.
+ for (bus, dev) in reversed(sorted(usb_devices)):
+ # Can not restart root usb connections
+ if dev != '001':
+ return_code = bb_utils.RunCmd(['/usr/bin/restart_usb', bus, dev])
+ if return_code:
+ print 'Error restarting USB device /dev/bus/usb/%s/%s' % (bus, dev)
+ failed_restart = True
+ else:
+ print 'Restarted USB device /dev/bus/usb/%s/%s' % (bus, dev)
+
+ if failed_restart:
+ return 1
+
+ return 0
+
+
def main():
parser = optparse.OptionParser()
parser.add_option('', '--out-dir',
@@ -212,9 +250,17 @@ def main():
help='Will not check if devices are provisioned properly.')
parser.add_option('--device-status-dashboard', action='store_true',
help='Output device status data for dashboard.')
+ parser.add_option('--restart-usb', action='store_true',
+ help='Restart USB ports before running device check.')
options, args = parser.parse_args()
if args:
parser.error('Unknown options %s' % args)
+
+ if options.restart_usb:
+ rc = RestartUsb()
+ if rc:
+ return 1
+
devices = android_commands.GetAttachedDevices()
# TODO(navabi): Test to make sure this fails and then fix call
offline_devices = android_commands.GetAttachedDevices(hardware=False,
diff --git a/build/android/buildbot/bb_device_steps.py b/build/android/buildbot/bb_device_steps.py
index cb09e90815..f80a2a46b3 100755
--- a/build/android/buildbot/bb_device_steps.py
+++ b/build/android/buildbot/bb_device_steps.py
@@ -73,7 +73,7 @@ INSTRUMENTATION_TESTS = dict((suite.name, suite) for suite in [
])
VALID_TESTS = set(['chromedriver', 'gpu', 'ui', 'unit', 'webkit',
- 'webkit_layout', 'webrtc'])
+ 'webkit_layout', 'webrtc_chromium', 'webrtc_native'])
RunCmd = bb_utils.RunCmd
@@ -263,8 +263,12 @@ def RunWebkitLayoutTests(options):
exit_code = RunCmd(['webkit/tools/layout_tests/run_webkit_tests.py'] +
cmd_args)
- if exit_code == 254: # AKA -1, internal error.
+ if exit_code == 255: # test_run_results.UNEXPECTED_ERROR_EXIT_STATUS
bb_annotations.PrintMsg('?? (crashed or hung)')
+ elif exit_code == 254: # test_run_results.NO_DEVICES_EXIT_STATUS
+ bb_annotations.PrintMsg('?? (no devices found)')
+ elif exit_code == 253: # test_run_results.NO_TESTS_EXIT_STATUS
+ bb_annotations.PrintMsg('?? (no tests found)')
else:
full_results_path = os.path.join('..', 'layout-test-results',
'full_results.json')
@@ -392,10 +396,12 @@ def ProvisionDevices(options):
RunCmd(provision_cmd)
-def DeviceStatusCheck(_):
+def DeviceStatusCheck(options):
bb_annotations.PrintNamedStep('device_status_check')
- RunCmd(['build/android/buildbot/bb_device_status_check.py'],
- halt_on_failure=True)
+ cmd = ['build/android/buildbot/bb_device_status_check.py']
+ if options.restart_usb:
+ cmd.append('--restart-usb')
+ RunCmd(cmd, halt_on_failure=True)
def GetDeviceSetupStepCmds():
@@ -419,15 +425,25 @@ def RunWebkitTests(options):
RunWebkitLint(options.target)
-def RunWebRTCTests(options):
- RunTestSuites(options, gtest_config.WEBRTC_TEST_SUITES)
+def RunWebRTCChromiumTests(options):
+ RunTestSuites(options, gtest_config.WEBRTC_CHROMIUM_TEST_SUITES)
+
+
+def RunWebRTCNativeTests(options):
+ RunTestSuites(options, gtest_config.WEBRTC_NATIVE_TEST_SUITES)
def RunGPUTests(options):
InstallApk(options, INSTRUMENTATION_TESTS['ContentShell'], False)
- bb_annotations.PrintNamedStep('gpu_tests')
- RunCmd(['content/test/gpu/run_gpu_test',
- '--browser=android-content-shell', 'pixel'])
+
+ # Pixel tests require that the browser implements GrabWindowSnapshot and
+ # GrabViewSnapshot, which android-content-shell currently does not.
+ # (crbug.com/285932)
+
+ # bb_annotations.PrintNamedStep('gpu_tests')
+ # RunCmd(['content/test/gpu/run_gpu_test',
+ # '--browser=android-content-shell', 'pixel'])
+
bb_annotations.PrintNamedStep('webgl_conformance_tests')
RunCmd(['content/test/gpu/run_gpu_test',
'--browser=android-content-shell', 'webgl_conformance',
@@ -442,7 +458,8 @@ def GetTestStepCmds():
('ui', RunInstrumentationTests),
('webkit', RunWebkitTests),
('webkit_layout', RunWebkitLayoutTests),
- ('webrtc', RunWebRTCTests),
+ ('webrtc_chromium', RunWebRTCChromiumTests),
+ ('webrtc_native', RunWebRTCNativeTests),
]
@@ -550,6 +567,8 @@ def GetDeviceStepsOptParser():
parser.add_option('--coverage-bucket',
help=('Bucket name to store coverage results. Coverage is '
'only run if this is set.'))
+ parser.add_option('--restart-usb', action='store_true',
+ help='Restart usb ports before device status check.')
parser.add_option(
'--flakiness-server',
help=('The flakiness dashboard server to which the results should be '
diff --git a/build/android/buildbot/bb_host_steps.py b/build/android/buildbot/bb_host_steps.py
index e27ba08bbc..8fccbda851 100755
--- a/build/android/buildbot/bb_host_steps.py
+++ b/build/android/buildbot/bb_host_steps.py
@@ -17,6 +17,8 @@ SLAVE_SCRIPTS_DIR = os.path.join(bb_utils.BB_BUILD_DIR, 'scripts', 'slave')
VALID_HOST_TESTS = set(['check_webview_licenses', 'findbugs'])
EXPERIMENTAL_TARGETS = ['android_experimental']
+DIR_BUILD_ROOT = os.path.dirname(constants.DIR_SOURCE_ROOT)
+
# Short hand for RunCmd which is used extensively in this file.
RunCmd = bb_utils.RunCmd
@@ -58,11 +60,15 @@ def Compile(options):
build_targets = options.build_targets.split(',')
bb_annotations.PrintNamedStep('compile')
for build_target in build_targets:
- RunCmd(cmd + ['--build-args=%s' % build_target], halt_on_failure=True)
+ RunCmd(cmd + ['--build-args=%s' % build_target],
+ halt_on_failure=True,
+ cwd=DIR_BUILD_ROOT)
if options.experimental:
for compile_target in EXPERIMENTAL_TARGETS:
bb_annotations.PrintNamedStep('Experimental Compile %s' % compile_target)
- RunCmd(cmd + ['--build-args=%s' % compile_target], flunk_on_failure=False)
+ RunCmd(cmd + ['--build-args=%s' % compile_target],
+ flunk_on_failure=False,
+ cwd=DIR_BUILD_ROOT)
def ZipBuild(options):
@@ -72,7 +78,7 @@ def ZipBuild(options):
'--src-dir', constants.DIR_SOURCE_ROOT,
'--build-dir', SrcPath('out'),
'--exclude-files', 'lib.target,gen,android_webview,jingle_unittests']
- + bb_utils.EncodeProperties(options))
+ + bb_utils.EncodeProperties(options), cwd=DIR_BUILD_ROOT)
def ExtractBuild(options):
@@ -81,7 +87,7 @@ def ExtractBuild(options):
[os.path.join(SLAVE_SCRIPTS_DIR, 'extract_build.py'),
'--build-dir', SrcPath('build'), '--build-output-dir',
SrcPath('out')] + bb_utils.EncodeProperties(options),
- warning_code=1)
+ warning_code=1, cwd=DIR_BUILD_ROOT)
def FindBugs(options):
diff --git a/build/android/buildbot/bb_run_bot.py b/build/android/buildbot/bb_run_bot.py
index dbe453a8f0..10a6df11a0 100755
--- a/build/android/buildbot/bb_run_bot.py
+++ b/build/android/buildbot/bb_run_bot.py
@@ -169,12 +169,18 @@ def GetBotStepMap():
B('webkit-latest-contentshell', H(compile_step),
T(['webkit_layout'], ['--auto-reconnect'])),
B('builder-unit-tests', H(compile_step), T(['unit'])),
- B('webrtc-builder',
+ B('webrtc-chromium-builder',
+ H(std_build_steps,
+ extra_args=['--build-targets=content_browsertests_apk'])),
+ B('webrtc-native-builder',
H(std_build_steps,
extra_args=['--build-targets=android_builder_webrtc'],
extra_gyp='include_tests=1 enable_tracing=1')),
- B('webrtc-tests', H(['download_webrtc_resources'] + std_test_steps),
- T(['webrtc'], [flakiness_server])),
+ B('webrtc-chromium-tests', H(std_test_steps),
+ T(['webrtc_chromium'], [flakiness_server])),
+ B('webrtc-native-tests',
+ H(['download_webrtc_resources'] + std_test_steps),
+ T(['webrtc_native'], [flakiness_server])),
# Generic builder config (for substring match).
B('builder', H(std_build_steps)),
diff --git a/build/android/buildbot/bb_utils.py b/build/android/buildbot/bb_utils.py
index f901103310..3c16cc2bc5 100644
--- a/build/android/buildbot/bb_utils.py
+++ b/build/android/buildbot/bb_utils.py
@@ -45,6 +45,9 @@ def SpawnCmd(command, stdout=None, cwd=CHROME_SRC):
@staticmethod
def wait():
return 0
+ @staticmethod
+ def communicate():
+ return '', ''
return MockPopen()
return subprocess.Popen(command, cwd=cwd, stdout=stdout)
diff --git a/build/android/gyp/gcc_preprocess.py b/build/android/gyp/gcc_preprocess.py
index 93efdb3a74..d4e30fc5fe 100755
--- a/build/android/gyp/gcc_preprocess.py
+++ b/build/android/gyp/gcc_preprocess.py
@@ -14,8 +14,10 @@ from util import build_utils
def DoGcc(options):
build_utils.MakeDirectory(os.path.dirname(options.output))
- gcc_cmd = [
- 'gcc', # invoke host gcc.
+ gcc_cmd = [ 'gcc' ] # invoke host gcc.
+ if options.defines:
+ gcc_cmd.extend(sum(map(lambda w: ['-D', w], options.defines), []))
+ gcc_cmd.extend([
'-E', # stop after preprocessing.
'-D', 'ANDROID', # Specify ANDROID define for pre-processor.
'-x', 'c-header', # treat sources as C header files
@@ -23,7 +25,7 @@ def DoGcc(options):
'-I', options.include_path,
'-o', options.output,
options.template
- ]
+ ])
build_utils.CheckCallDie(gcc_cmd)
@@ -34,6 +36,7 @@ def main(argv):
parser.add_option('--template', help='Path to template.')
parser.add_option('--output', help='Path for generated file.')
parser.add_option('--stamp', help='Path to touch on success.')
+ parser.add_option('--defines', help='Pre-defines macros', action='append')
# TODO(newt): remove this once http://crbug.com/177552 is fixed in ninja.
parser.add_option('--ignore', help='Ignored.')
diff --git a/build/android/pylib/android_commands.py b/build/android/pylib/android_commands.py
index 20684b7b07..1650398800 100644
--- a/build/android/pylib/android_commands.py
+++ b/build/android/pylib/android_commands.py
@@ -13,6 +13,7 @@ import logging
import os
import re
import shlex
+import signal
import subprocess
import sys
import tempfile
@@ -458,6 +459,13 @@ class AndroidCommands(object):
if out.strip() != 'remount succeeded':
raise errors.MsgException('Remount failed: %s' % out)
+ def RestartAdbdOnDevice(self):
+ logging.info('Killing adbd on the device...')
+ adb_pids = self.KillAll('adbd', signal=signal.SIGTERM, with_su=True)
+ assert adb_pids, 'Unable to obtain adbd pid'
+ logging.info('Waiting for device to settle...')
+ self._adb.SendCommand('wait-for-device')
+
def RestartAdbServer(self):
"""Restart the adb server."""
ret = self.KillAdbServer()
@@ -596,18 +604,24 @@ class AndroidCommands(object):
lines = lines[:-1] + [last_line[:status_pos]]
return (status, lines)
- def KillAll(self, process):
+ def KillAll(self, process, signal=9, with_su=False):
"""Android version of killall, connected via adb.
Args:
- process: name of the process to kill off
+ process: name of the process to kill off.
+ signal: signal to use, 9 (SIGKILL) by default.
+ with_su: wether or not to use su to kill the processes.
Returns:
the number of processes killed
"""
pids = self.ExtractPid(process)
if pids:
- self.RunShellCommand('kill -9 ' + ' '.join(pids))
+ cmd = 'kill -%d %s' % (signal, ' '.join(pids))
+ if with_su:
+ self.RunShellCommandWithSU(cmd)
+ else:
+ self.RunShellCommand(cmd)
return len(pids)
def KillAllBlocking(self, process, timeout_sec):
diff --git a/build/android/pylib/gtest/filter/breakpad_unittests_disabled b/build/android/pylib/gtest/filter/breakpad_unittests_disabled
index de73439477..f1650a3ab5 100644
--- a/build/android/pylib/gtest/filter/breakpad_unittests_disabled
+++ b/build/android/pylib/gtest/filter/breakpad_unittests_disabled
@@ -1,3 +1,5 @@
FileIDStripTest.StripSelf
# crbug.com/171419
MinidumpWriterTest.MappingInfoContained
+# crbug.com/310088
+MinidumpWriterTest.MinidumpSizeLimit
diff --git a/build/android/pylib/gtest/filter/content_browsertests_disabled b/build/android/pylib/gtest/filter/content_browsertests_disabled
index 87470972b2..bf1fcf0195 100644
--- a/build/android/pylib/gtest/filter/content_browsertests_disabled
+++ b/build/android/pylib/gtest/filter/content_browsertests_disabled
@@ -2,14 +2,12 @@
# Timeouts
Http/MediaTest.*
File/MediaTest.*
-ExternalClearKey/EncryptedMediaTest.*
-ClearKey/EncryptedMediaTest.*
WorkerTest.*
MediaTest.*
MediaSourceTest.*
WebGLConformanceTest.*
MessagePortTest.Tests
-EncryptedMediaTest.*
+*EncryptedMediaTest.*
CrossPlatformAccessibilityBrowserTest.*
DatabaseTest.*
ResourceDispatcherHostBrowserTest.SyncXMLHttpRequest_DuringUnload
diff --git a/build/android/pylib/gtest/gtest_config.py b/build/android/pylib/gtest/gtest_config.py
index b677761e95..c373ed9dd6 100644
--- a/build/android/pylib/gtest/gtest_config.py
+++ b/build/android/pylib/gtest/gtest_config.py
@@ -33,7 +33,11 @@ STABLE_TEST_SUITES = [
'sandbox_linux_unittests',
]
-WEBRTC_TEST_SUITES = [
+WEBRTC_CHROMIUM_TEST_SUITES = [
+ 'content_browsertests',
+]
+
+WEBRTC_NATIVE_TEST_SUITES = [
'audio_decoder_unittests',
'common_audio_unittests',
'common_video_unittests',
diff --git a/build/android/pylib/linker/setup.py b/build/android/pylib/linker/setup.py
index a13ea4d78b..4024fa7e3b 100644
--- a/build/android/pylib/linker/setup.py
+++ b/build/android/pylib/linker/setup.py
@@ -27,7 +27,8 @@ def Setup(options, devices):
test_cases = [
test_case.LinkerLibraryAddressTest,
test_case.LinkerSharedRelroTest,
- test_case.LinkerRandomizationTest ]
+ test_case.LinkerRandomizationTest,
+ test_case.LinkerLowMemoryThresholdTest ]
low_memory_modes = [False, True]
all_tests = [t(is_low_memory=m) for t in test_cases for m in low_memory_modes]
diff --git a/build/android/pylib/linker/test_case.py b/build/android/pylib/linker/test_case.py
index b8a2566763..3f8ea73212 100644
--- a/build/android/pylib/linker/test_case.py
+++ b/build/android/pylib/linker/test_case.py
@@ -42,6 +42,7 @@ import subprocess
import tempfile
import time
+from pylib import constants
from pylib import android_commands
from pylib import flag_changer
from pylib.base import base_test_result
@@ -52,6 +53,17 @@ _PACKAGE_NAME='org.chromium.content_linker_test_apk'
_ACTIVITY_NAME='.ContentLinkerTestActivity'
_COMMAND_LINE_FILE='/data/local/tmp/content-linker-test-command-line'
+# Path to the Linker.java source file.
+_LINKER_JAVA_SOURCE_PATH = \
+ 'content/public/android/java/src/org/chromium/content/app/Linker.java'
+
+# A regular expression used to extract the browser shared RELRO configuration
+# from the Java source file above.
+_RE_LINKER_BROWSER_CONFIG = \
+ re.compile(r'.*BROWSER_SHARED_RELRO_CONFIG\s+=\s+' + \
+ 'BROWSER_SHARED_RELRO_CONFIG_(\S+)\s*;.*',
+ re.MULTILINE | re.DOTALL)
+
# Logcat filters used during each test. Only the 'chromium' one is really
# needed, but the logs are added to the TestResult in case of error, and
# it is handy to have the 'content_android_linker' ones as well when
@@ -67,6 +79,38 @@ re_library_address = re.compile(
r'(BROWSER|RENDERER)_LIBRARY_ADDRESS: (\S+) ([0-9A-Fa-f]+)')
+def _GetBrowserSharedRelroConfig():
+ """Returns a string corresponding to the Linker's configuration of shared
+ RELRO sections in the browser process. This parses the Java linker source
+ file to get the appropriate information.
+ Return:
+ None in case of error (e.g. could not locate the source file).
+ 'NEVER' if the browser process shall never use shared RELROs.
+ 'LOW_RAM_ONLY' if if uses it only on low-end devices.
+ 'ALWAYS' if it always uses a shared RELRO.
+ """
+ source_path = \
+ os.path.join(constants.DIR_SOURCE_ROOT, _LINKER_JAVA_SOURCE_PATH)
+ if not os.path.exists(source_path):
+ logging.error('Could not find linker source file: ' + source_path)
+ return None
+
+ with open(source_path) as f:
+ configs = _RE_LINKER_BROWSER_CONFIG.findall(f.read())
+ if not configs:
+ logging.error(
+ 'Can\'t find browser shared RELRO configuration value in ' + \
+ source_path)
+ return None
+
+ if configs[0] not in ['NEVER', 'LOW_RAM_ONLY', 'ALWAYS']:
+ logging.error('Unexpected browser config value: ' + configs[0])
+ return None
+
+ logging.info('Found linker browser shared RELRO config: ' + configs[0])
+ return configs[0]
+
+
def _WriteCommandLineFile(adb, command_line, command_line_file):
"""Create a command-line file on the device. This does not use FlagChanger
because its implementation assumes the device has 'su', and thus does
@@ -401,10 +445,14 @@ class LinkerLibraryAddressTest(LinkerTestCaseBase):
logging.error('Renderer libraries loaded at high addresses: %s', bad_libs)
return ResultType.FAIL, logs
- if self.is_low_memory:
- # For low-memory devices, the libraries must all be loaded at the same
- # addresses. This also implicitly checks that the browser libraries are at
- # low addresses.
+ browser_config = _GetBrowserSharedRelroConfig()
+ if not browser_config:
+ return ResultType.FAIL, 'Bad linker source configuration'
+
+ if browser_config == 'ALWAYS' or \
+ (browser_config == 'LOW_RAM_ONLY' and self.is_low_memory):
+ # The libraries must all be loaded at the same addresses. This also
+ # implicitly checks that the browser libraries are at low addresses.
addr_mismatches = []
for lib_name, lib_address in browser_libs.iteritems():
lib_address2 = renderer_libs[lib_name]
@@ -416,10 +464,10 @@ class LinkerLibraryAddressTest(LinkerTestCaseBase):
addr_mismatches)
return ResultType.FAIL, logs
- # For regular devices, check that libraries are loaded at 'high-addresses'.
+ # Otherwise, check that libraries are loaded at 'high-addresses'.
# Note that for low-memory devices, the previous checks ensure that they
# were loaded at low-addresses.
- if not self.is_low_memory:
+ else:
bad_libs = []
for lib_name, lib_address in browser_libs.iteritems():
if lib_address < memory_boundary:
@@ -473,9 +521,14 @@ class LinkerRandomizationTest(LinkerTestCaseBase):
renderer_status, renderer_logs = _CheckLoadAddressRandomization(
renderer_lib_map_list, 'Renderer')
+ browser_config = _GetBrowserSharedRelroConfig()
+ if not browser_config:
+ return ResultType.FAIL, 'Bad linker source configuration'
+
if not browser_status:
- if self.is_low_memory:
- return ResultType.FAIL, browser_logs
+ if browser_config == 'ALWAYS' or \
+ (browser_config == 'LOW_RAM_ONLY' and self.is_low_memory):
+ return ResultType.FAIL, browser_logs
# IMPORTANT NOTE: The system's ASLR implementation seems to be very poor
# when starting an activity process in a loop with "adb shell am start".
@@ -501,3 +554,67 @@ class LinkerRandomizationTest(LinkerTestCaseBase):
return ResultType.FAIL, renderer_logs
return ResultType.PASS, logs
+
+
+class LinkerLowMemoryThresholdTest(LinkerTestCaseBase):
+ """This test checks that the definitions for the low-memory device physical
+ RAM threshold are identical in the base/ and linker sources. Because these
+ two components should absolutely not depend on each other, it's difficult
+ to perform this check correctly at runtime inside the linker test binary
+ without introducing hairy dependency issues in the build, or complicated
+ plumbing at runtime.
+
+ To work-around this, this test looks directly into the sources for a
+ definition of the same constant that should look like:
+
+ #define ANDROID_LOW_MEMORY_DEVICE_THRESHOLD_MB <number>
+
+ And will check that the values for <number> are identical in all of
+ them."""
+
+ # A regular expression used to find the definition of the threshold in all
+ # sources:
+ _RE_THRESHOLD_DEFINITION = re.compile(
+ r'^\s*#\s*define\s+ANDROID_LOW_MEMORY_DEVICE_THRESHOLD_MB\s+(\d+)\s*$',
+ re.MULTILINE)
+
+ # The list of source files, relative to DIR_SOURCE_ROOT, which must contain
+ # a line that matches the re above.
+ _SOURCES_LIST = [
+ 'base/android/sys_utils.cc',
+ 'content/common/android/linker/linker_jni.cc' ]
+
+ def _RunTest(self, adb):
+ failure = False
+ values = []
+ # First, collect all the values in all input sources.
+ re = LinkerLowMemoryThresholdTest._RE_THRESHOLD_DEFINITION
+ for source in LinkerLowMemoryThresholdTest._SOURCES_LIST:
+ source_path = os.path.join(constants.DIR_SOURCE_ROOT, source);
+ if not os.path.exists(source_path):
+ logging.error('Missing source file: ' + source_path)
+ failure = True
+ continue
+ with open(source_path) as f:
+ source_text = f.read()
+ # For some reason, re.match() never works here.
+ source_values = re.findall(source_text)
+ if not source_values:
+ logging.error('Missing low-memory threshold definition in ' + \
+ source_path)
+ logging.error('Source:\n%s\n' % source_text)
+ failure = True
+ continue
+ values += source_values
+
+ # Second, check that they are all the same.
+ if not failure:
+ for value in values[1:]:
+ if value != values[0]:
+ logging.error('Value mismatch: ' + repr(values))
+ failure = True
+
+ if failure:
+ return ResultType.FAIL, 'Incorrect low-end memory threshold definitions!'
+
+ return ResultType.PASS, ''
diff --git a/build/android/pylib/perf/setup.py b/build/android/pylib/perf/setup.py
index 74bf79fdd6..39e50980d9 100644
--- a/build/android/pylib/perf/setup.py
+++ b/build/android/pylib/perf/setup.py
@@ -10,6 +10,7 @@ import logging
import os
import psutil
import signal
+import shutil
import time
from pylib import android_commands
@@ -58,8 +59,9 @@ def Setup(test_options):
Returns:
A tuple of (TestRunnerFactory, tests).
"""
- if not os.path.exists(constants.PERF_OUTPUT_DIR):
- os.makedirs(constants.PERF_OUTPUT_DIR)
+ if os.path.exists(constants.PERF_OUTPUT_DIR):
+ shutil.rmtree(constants.PERF_OUTPUT_DIR)
+ os.makedirs(constants.PERF_OUTPUT_DIR)
# Before running the tests, kill any leftover server.
_KillPendingServers()
diff --git a/build/android/pylib/perf/test_runner.py b/build/android/pylib/perf/test_runner.py
index c1ad07f7c5..21f1d4916c 100644
--- a/build/android/pylib/perf/test_runner.py
+++ b/build/android/pylib/perf/test_runner.py
@@ -2,7 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-"""Runs a perf test on a single device.
+"""Runs perf tests.
Our buildbot infrastructure requires each slave to run steps serially.
This is sub-optimal for android, where these steps can run independently on
@@ -37,19 +37,18 @@ be ignored:
]
Note that script_to_execute necessarily have to take at least the following
-options:
+option:
--device: the serial number to be passed to all adb commands.
- --keep_test_server_ports: indicates it's being run as a shard, and shouldn't
- reset test server port allocation.
"""
import datetime
import logging
-import pickle
import os
+import pickle
import sys
from pylib import constants
+from pylib import forwarder
from pylib import pexpect
from pylib.base import base_test_result
from pylib.base import base_test_runner
@@ -96,10 +95,23 @@ class TestRunner(base_test_runner.BaseTestRunner):
self._flaky_tests = flaky_tests
@staticmethod
+ def _IsBetter(result):
+ if result['actual_exit_code'] == 0:
+ return True
+ pickled = os.path.join(constants.PERF_OUTPUT_DIR,
+ result['name'])
+ if not os.path.exists(pickled):
+ return True
+ with file(pickled, 'r') as f:
+ previous = pickle.loads(f.read())
+ return result['actual_exit_code'] < previous['actual_exit_code']
+
+ @staticmethod
def _SaveResult(result):
- with file(os.path.join(constants.PERF_OUTPUT_DIR,
- result['name']), 'w') as f:
- f.write(pickle.dumps(result))
+ if TestRunner._IsBetter(result):
+ with file(os.path.join(constants.PERF_OUTPUT_DIR,
+ result['name']), 'w') as f:
+ f.write(pickle.dumps(result))
def _LaunchPerfTest(self, test_name):
"""Runs a perf test.
@@ -110,7 +122,14 @@ class TestRunner(base_test_runner.BaseTestRunner):
Returns:
A tuple containing (Output, base_test_result.ResultType)
"""
- cmd = ('%s --device %s --keep_test_server_ports' %
+ try:
+ logging.warning('Unmapping device ports')
+ forwarder.Forwarder.UnmapAllDevicePorts(self.adb)
+ self.adb.RestartAdbdOnDevice()
+ except Exception as e:
+ logging.error('Exception when tearing down device %s', e)
+
+ cmd = ('%s --device %s' %
(self._tests[test_name], self.device))
logging.info('%s : %s', test_name, cmd)
start_time = datetime.datetime.now()
@@ -135,6 +154,7 @@ class TestRunner(base_test_runner.BaseTestRunner):
result_type = base_test_result.ResultType.FAIL
if exit_code == 0:
result_type = base_test_result.ResultType.PASS
+ actual_exit_code = exit_code
if test_name in self._flaky_tests:
# The exit_code is used at the second stage when printing the
# test output. If the test is flaky, force to "0" to get that step green
@@ -146,6 +166,7 @@ class TestRunner(base_test_runner.BaseTestRunner):
'name': test_name,
'output': output,
'exit_code': exit_code,
+ 'actual_exit_code': actual_exit_code,
'result_type': result_type,
'total_time': (end_time - start_time).seconds,
'device': self.device,
diff --git a/build/build_config.h b/build/build_config.h
index 3ea3ddca4b..4856614050 100644
--- a/build/build_config.h
+++ b/build/build_config.h
@@ -31,7 +31,7 @@
#elif defined(__linux__)
#define OS_LINUX 1
// Use TOOLKIT_GTK on linux if TOOLKIT_VIEWS isn't defined.
-#if !defined(TOOLKIT_VIEWS) && defined(USE_X11)
+#if !defined(TOOLKIT_VIEWS) && defined(USE_X11) && !defined(USE_AURA)
#define TOOLKIT_GTK
#endif
#if defined(__GLIBC__) && !defined(__UCLIBC__)
diff --git a/build/common.gypi b/build/common.gypi
index 2cc022421a..4a1c3d89e4 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -39,6 +39,7 @@
'use_ash%': '<(use_ash)',
'use_cras%': '<(use_cras)',
'use_ozone%': '<(use_ozone)',
+ 'use_ozone_evdev%': '<(use_ozone)',
# Whether we are using Views Toolkit
'toolkit_views%': 0,
@@ -102,6 +103,7 @@
'use_ash%': '<(use_ash)',
'use_cras%': '<(use_cras)',
'use_ozone%': '<(use_ozone)',
+ 'use_ozone_evdev%': '<(use_ozone_evdev)',
'use_openssl%': '<(use_openssl)',
'enable_viewport%': '<(enable_viewport)',
'enable_hidpi%': '<(enable_hidpi)',
@@ -183,6 +185,7 @@
'use_ash%': '<(use_ash)',
'use_cras%': '<(use_cras)',
'use_ozone%': '<(use_ozone)',
+ 'use_ozone_evdev%': '<(use_ozone_evdev)',
'use_openssl%': '<(use_openssl)',
'enable_viewport%': '<(enable_viewport)',
'enable_hidpi%': '<(enable_hidpi)',
@@ -350,7 +353,7 @@
# 0: Don't specify the version. This option is for the Finch testing.
# 1: Use only CLD1.
# 2: Use only CLD2.
- 'cld_version%': 0,
+ 'cld_version%': 2,
# Enable spell checker.
'enable_spellcheck%': 1,
@@ -724,9 +727,9 @@
# on android_clang, where we're hitting a weird linker error.
# TODO(dpranke): http://crbug.com/266155 .
['OS=="android"', {
- 'v8_optimized_debug': 1,
+ 'v8_optimized_debug%': 1,
}, {
- 'v8_optimized_debug': 2,
+ 'v8_optimized_debug%': 2,
}],
],
@@ -797,6 +800,7 @@
'use_glib%': '<(use_glib)',
'use_pango%': '<(use_pango)',
'use_ozone%': '<(use_ozone)',
+ 'use_ozone_evdev%': '<(use_ozone_evdev)',
'toolkit_uses_gtk%': '<(toolkit_uses_gtk)',
'desktop_linux%': '<(desktop_linux)',
'use_x11%': '<(use_x11)',
@@ -885,7 +889,7 @@
'data_reduction_proxy_probe_url%': '<(data_reduction_proxy_probe_url)',
'enable_mdns%' : '<(enable_mdns)',
'enable_enhanced_bookmarks%' : '<(enable_enhanced_bookmarks)',
- 'v8_optimized_debug': '<(v8_optimized_debug)',
+ 'v8_optimized_debug%': '<(v8_optimized_debug)',
'proprietary_codecs%': '<(proprietary_codecs)',
# Use system nspr instead of the bundled one.
@@ -3198,9 +3202,6 @@
# http://crbug.com/255186
'-Wno-deprecated-register',
- # TODO(hans): Remove once we've cleaned up the warnings.
- '-Wno-unused-const-variable',
-
# This warns about auto_ptr<>, used in third-party code.
'-Wno-deprecated-declarations',
],
@@ -3907,9 +3908,6 @@
# http://crbug.com/255186
'-Wno-deprecated-register',
- # TODO(hans): Remove once we've cleaned up the warnings.
- '-Wno-unused-const-variable',
-
# This warns about auto_ptr<>, used in third-party code.
'-Wno-deprecated-declarations',
],
diff --git a/build/filename_rules.gypi b/build/filename_rules.gypi
index e7259c6740..7f7a1e6d26 100644
--- a/build/filename_rules.gypi
+++ b/build/filename_rules.gypi
@@ -102,5 +102,10 @@
['exclude', '(^|/)ozone/'],
]
}],
+ ['<(use_ozone_evdev)==0 or >(nacl_untrusted_build)==1', {
+ 'sources/': [ ['exclude', '_evdev(_browsertest|_unittest)?\\.(h|cc)$'],
+ ['exclude', '(^|/)evdev/'],
+ ]
+ }],
]
}
diff --git a/build/install-build-deps.sh b/build/install-build-deps.sh
index d9a7af296b..cda72a6697 100755
--- a/build/install-build-deps.sh
+++ b/build/install-build-deps.sh
@@ -86,10 +86,10 @@ dev_list="apache2.2-bin bison curl elfutils fakeroot flex g++ gperf
libnss3-dev libpam0g-dev libpci-dev libpulse-dev libsctp-dev
libspeechd-dev libsqlite3-dev libssl-dev libudev-dev libwww-perl
libxslt1-dev libxss-dev libxt-dev libxtst-dev mesa-common-dev
- metacity patch perl php5-cgi pkg-config python python-cherrypy3
+ openbox patch perl php5-cgi pkg-config python python-cherrypy3
python-dev python-psutil rpm ruby subversion ttf-dejavu-core
ttf-indic-fonts ttf-kochi-gothic ttf-kochi-mincho ttf-thai-tlwg
- wdiff git-core
+ wdiff git-core libdrm-dev
$chromeos_dev_list"
# 64-bit systems need a minimum set of 32-bit compat packages for the pre-built
diff --git a/build/ios/grit_whitelist.txt b/build/ios/grit_whitelist.txt
index 992daded9a..29fe4a29e2 100644
--- a/build/ios/grit_whitelist.txt
+++ b/build/ios/grit_whitelist.txt
@@ -42,6 +42,7 @@ IDR_PRERENDER
IDR_PRINTER_FAVICON
IDR_PRODUCT_LOGO_26
IDR_SAD_TAB
+IDR_SSL_BLOCKING_HTML
IDR_SSL_ROAD_BLOCK_HTML
IDR_SYNC_INTERNALS_ABOUT_JS
IDR_SYNC_INTERNALS_CHROME_SYNC_JS
@@ -625,6 +626,8 @@ IDS_FLAGS_FORCE_FULLSCREEN_APP_DESCRIPTION
IDS_FLAGS_FORCE_FULLSCREEN_APP_NAME
IDS_FLAGS_FORCE_HIGH_DPI_DESCRIPTION
IDS_FLAGS_FORCE_HIGH_DPI_NAME
+IDS_FLAGS_FORCE_UNIVERSAL_ACCELERATED_OVERFLOW_SCROLL_MODE_DESCRIPTION
+IDS_FLAGS_FORCE_UNIVERSAL_ACCELERATED_OVERFLOW_SCROLL_MODE_NAME
IDS_FLAGS_FULL_HISTORY_SYNC_DESCRIPTION
IDS_FLAGS_FULL_HISTORY_SYNC_NAME
IDS_FLAGS_HIDE_LAUNCHER_ALIGNMENT_MENU_DESCRIPTION
diff --git a/build/java_apk.gypi b/build/java_apk.gypi
index 81984472af..de54c76e77 100644
--- a/build/java_apk.gypi
+++ b/build/java_apk.gypi
@@ -48,7 +48,11 @@
# strings.xml files, if any.
# library_manifest_paths'- Paths to additional AndroidManifest.xml files from
# libraries.
-
+# use_content_linker - Enable the content dynamic linker that allows sharing the
+# RELRO section of the native libraries between the different processes.
+# enable_content_linker_tests - Enable the content dynamic linker test support
+# code. This allows a test APK to inject a Linker.TestRunner instance at
+# runtime. Should only be used by the content_linker_test_apk target!!
{
'variables': {
'additional_input_paths': [],
@@ -116,6 +120,8 @@
'variables': {
'variables': {
'native_lib_target%': '',
+ 'use_content_linker%': 0,
+ 'enable_content_linker_tests%': 0,
},
'conditions': [
['gyp_managed_install == 1 and native_lib_target != ""', {
@@ -131,6 +137,8 @@
],
},
'native_lib_target%': '',
+ 'use_content_linker%': 0,
+ 'enable_content_linker_tests%': 0,
'emma_instrument': '<(emma_coverage)',
'apk_package_native_libs_dir': '<(apk_package_native_libs_dir)',
'unsigned_standalone_apk_path': '<(unsigned_standalone_apk_path)',
@@ -164,6 +172,11 @@
'<(DEPTH)/build/android/setup.gyp:copy_system_libraries',
],
}],
+ ['use_content_linker == 1', {
+ 'dependencies': [
+ '<(DEPTH)/content/content.gyp:content_android_linker',
+ ],
+ }],
['native_lib_target != ""', {
'variables': {
'compile_input_paths': [ '<(native_libraries_java_stamp)' ],
@@ -190,9 +203,23 @@
'actions': [
{
'variables': {
+ 'conditions': [
+ ['use_content_linker == 1', {
+ 'variables': {
+ 'linker_input_libraries': [
+ '<(SHARED_LIB_DIR)/libcontent_android_linker.>(android_product_extension)',
+ ],
+ }
+ }, {
+ 'variables': {
+ 'linker_input_libraries': [],
+ },
+ }],
+ ],
'input_libraries': [
'<@(native_libs_paths)',
'<@(extra_native_libs)',
+ '<@(linker_input_libraries)',
],
},
'includes': ['../build/android/write_ordered_libraries.gypi'],
@@ -217,6 +244,36 @@
},
{
'action_name': 'native_libraries_<(_target_name)',
+ 'variables': {
+ 'conditions': [
+ ['use_content_linker == 1', {
+ 'variables': {
+ 'linker_gcc_preprocess_defines': [
+ '--defines', 'ENABLE_CONTENT_LINKER',
+ ],
+ }
+ }, {
+ 'variables': {
+ 'linker_gcc_preprocess_defines': [],
+ },
+ }],
+ ['enable_content_linker_tests == 1', {
+ 'variables': {
+ 'linker_tests_gcc_preprocess_defines': [
+ '--defines', 'ENABLE_CONTENT_LINKER_TESTS',
+ ],
+ }
+ }, {
+ 'variables': {
+ 'linker_tests_gcc_preprocess_defines': [],
+ },
+ }],
+ ],
+ 'gcc_preprocess_defines': [
+ '<@(linker_gcc_preprocess_defines)',
+ '<@(linker_tests_gcc_preprocess_defines)',
+ ],
+ },
'message': 'Creating NativeLibraries.java for <(_target_name).',
'inputs': [
'<(DEPTH)/build/android/gyp/util/build_utils.py',
@@ -233,6 +290,7 @@
'--output=<(native_libraries_java_file)',
'--template=<(native_libraries_template)',
'--stamp=<(native_libraries_java_stamp)',
+ '<@(gcc_preprocess_defines)',
],
},
{
diff --git a/build/linux/system.gyp b/build/linux/system.gyp
index 72f7dc261e..d31172843d 100644
--- a/build/linux/system.gyp
+++ b/build/linux/system.gyp
@@ -869,5 +869,19 @@
}],
],
},
+ {
+ 'target_name': 'dridrm',
+ 'type': 'none',
+ 'direct_dependent_settings': {
+ 'cflags': [
+ '<!@(<(pkg-config) --cflags libdrm)',
+ ],
+ },
+ 'link_settings': {
+ 'libraries': [
+ '<!@(<(pkg-config) --libs-only-l libdrm)',
+ ],
+ },
+ },
],
}
diff --git a/build/linux/unbundle/icu.gyp b/build/linux/unbundle/icu.gyp
index 1e84bb2a1c..16c36df5ae 100644
--- a/build/linux/unbundle/icu.gyp
+++ b/build/linux/unbundle/icu.gyp
@@ -5,35 +5,45 @@
{
'targets': [
{
- 'target_name': 'system_icu',
+ 'target_name': 'icudata',
'type': 'none',
- 'toolsets': ['host', 'target'],
'direct_dependent_settings': {
+ 'cflags': [
+ '<!@(pkg-config --cflags icu-uc)',
+ ],
'defines': [
'U_USING_ICU_NAMESPACE=0',
],
},
'link_settings': {
'ldflags': [
- '<!@(icu-config --ldflags)',
+ '<!@(pkg-config --libs-only-L --libs-only-other icu-uc)',
],
'libraries': [
- '<!@(icu-config --ldflags-libsonly)',
+ '<!@(pkg-config --libs-only-l icu-uc)',
],
},
},
{
- 'target_name': 'icudata',
- 'type': 'none',
- 'dependencies': ['system_icu'],
- 'export_dependent_settings': ['system_icu'],
- },
- {
'target_name': 'icui18n',
'type': 'none',
'toolsets': ['host', 'target'],
- 'dependencies': ['system_icu'],
- 'export_dependent_settings': ['system_icu'],
+ 'direct_dependent_settings': {
+ 'cflags': [
+ '<!@(pkg-config --cflags icu-i18n)',
+ ],
+ 'defines': [
+ 'U_USING_ICU_NAMESPACE=0',
+ ],
+ },
+ 'link_settings': {
+ 'ldflags': [
+ '<!@(pkg-config --libs-only-L --libs-only-other icu-i18n)',
+ ],
+ 'libraries': [
+ '<!@(pkg-config --libs-only-l icu-i18n)',
+ ],
+ },
'variables': {
'headers_root_path': 'source/i18n',
'header_filenames': [
@@ -119,8 +129,22 @@
'target_name': 'icuuc',
'type': 'none',
'toolsets': ['host', 'target'],
- 'dependencies': ['system_icu'],
- 'export_dependent_settings': ['system_icu'],
+ 'direct_dependent_settings': {
+ 'cflags': [
+ '<!@(pkg-config --cflags icu-uc)',
+ ],
+ 'defines': [
+ 'U_USING_ICU_NAMESPACE=0',
+ ],
+ },
+ 'link_settings': {
+ 'ldflags': [
+ '<!@(pkg-config --libs-only-L --libs-only-other icu-uc)',
+ ],
+ 'libraries': [
+ '<!@(pkg-config --libs-only-l icu-uc)',
+ ],
+ },
'variables': {
'headers_root_path': 'source/common',
'header_filenames': [
diff --git a/build/mac/strip_save_dsym b/build/mac/strip_save_dsym
index c325aa8010..c9cf226637 100755
--- a/build/mac/strip_save_dsym
+++ b/build/mac/strip_save_dsym
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# Copyright (c) 2011 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
diff --git a/build/util/LASTCHANGE b/build/util/LASTCHANGE
index a4dae2a009..e74f78a0c6 100644
--- a/build/util/LASTCHANGE
+++ b/build/util/LASTCHANGE
@@ -1 +1 @@
-LASTCHANGE=228962
+LASTCHANGE=230120
diff --git a/build/util/LASTCHANGE.blink b/build/util/LASTCHANGE.blink
index fe29cc7221..9f16e015b2 100644
--- a/build/util/LASTCHANGE.blink
+++ b/build/util/LASTCHANGE.blink
@@ -1 +1 @@
-LASTCHANGE=159695
+LASTCHANGE=160175
diff --git a/build/whitespace_file.txt b/build/whitespace_file.txt
index 0c4497ac55..6a50cd210e 100644
--- a/build/whitespace_file.txt
+++ b/build/whitespace_file.txt
@@ -25,7 +25,7 @@ Silence. Oblivious to his silence, she continued, "Did Mr. Usagi enjoy the
waffles you brought him?""You know him, he's not one to forego a waffle,
no matter how burnt," he snickered.
-The pause was filled with the sound of thunder.
+The pause was filled with the sound of compile errors.
CHAPTER 2:
The jelly was as dark as night, and just as runny.
@@ -74,4 +74,5 @@ AN INFLEXIBLE POSITION SOMETIMES IS A SIGN OF PARALYSIS
IT IS MANS FATE TO OUTSMART HIMSELF
BEING SURE OF YOURSELF MEANS YOU'RE A FOOL
AM NOT
+ARE TOO
IF AT FIRST YOU DON'T SUCCEED: TRY, EXCEPT, FINALLY