Index: tools/bisect-builds.py |
diff --git a/tools/bisect-builds.py b/tools/bisect-builds.py |
index b8b1b6a694acccf8235f03b3754ee5800a902ec8..ad1907b78821e1a072ce69eb1b22e13416697c2f 100755 |
--- a/tools/bisect-builds.py |
+++ b/tools/bisect-builds.py |
@@ -79,7 +79,8 @@ class PathContext(object): |
"""A PathContext is used to carry the information used to construct URLs and |
paths when dealing with the storage server and archives.""" |
def __init__(self, base_url, platform, good_revision, bad_revision, |
- is_official, is_aura, use_local_repo, flash_path = None): |
+ is_official, is_aura, use_local_repo, flash_path = None, |
+ pdf_path = None): |
super(PathContext, self).__init__() |
# Store off the input parameters. |
self.base_url = base_url |
@@ -94,6 +95,7 @@ class PathContext(object): |
# _FetchAndParse and used later in GetDownloadURL while downloading |
# the build. |
self.githash_svn_dict = {} |
+ self.pdf_path = pdf_path |
# The name of the ZIP file in a revision directory on the server. |
self.archive_name = None |
@@ -452,7 +454,7 @@ def RunRevision(context, revision, zipfile, profile, num_runs, command, args): |
# Run the build as many times as specified. |
testargs = ['--user-data-dir=%s' % profile] + args |
# The sandbox must be run as root on Official Chrome, so bypass it. |
- if ((context.is_official or context.flash_path) and |
+ if ((context.is_official or context.flash_path or context.pdf_path) and |
context.platform.startswith('linux')): |
testargs.append('--no-sandbox') |
if context.flash_path: |
@@ -462,6 +464,11 @@ def RunRevision(context, revision, zipfile, profile, num_runs, command, args): |
# pass the correct version we just spoof it. |
testargs.append('--ppapi-flash-version=99.9.999.999') |
+ # TODO(vitalybuka): Remove in the future. See crbug.com/395687. |
+ if context.pdf_path: |
+ shutil.copy(context.pdf_path, os.path.dirname(context.GetLaunchPath())) |
+ testargs.append('--enable-print-preview') |
+ |
runcommand = [] |
for token in shlex.split(command): |
if token == "%a": |
@@ -555,6 +562,7 @@ def Bisect(base_url, |
try_args=(), |
profile=None, |
flash_path=None, |
+ pdf_path=None, |
interactive=True, |
evaluate=AskIsGoodBuild): |
"""Given known good and known bad revisions, run a binary search on all |
@@ -591,7 +599,8 @@ def Bisect(base_url, |
profile = 'profile' |
context = PathContext(base_url, platform, good_rev, bad_rev, |
- official_builds, is_aura, use_local_repo, flash_path) |
+ official_builds, is_aura, use_local_repo, flash_path, |
+ pdf_path) |
cwd = os.getcwd() |
print "Downloading list of known revisions..." |
@@ -852,6 +861,12 @@ def main(): |
'binary to be used in this bisection (e.g. ' + |
'on Windows C:\...\pepflashplayer.dll and on Linux ' + |
'/opt/google/chrome/PepperFlash/libpepflashplayer.so).') |
+ parser.add_option('-d', '--pdf_path', type = 'str', |
+ help = 'Absolute path to a recent PDF pluggin ' + |
+ 'binary to be used in this bisection (e.g. ' + |
+ 'on Windows C:\...\pdf.dll and on Linux ' + |
+ '/opt/google/chrome/libpdf.so). Option also enables ' + |
+ 'print preview.') |
parser.add_option('-g', '--good', type = 'str', |
help = 'A good revision to start bisection. ' + |
'May be earlier or later than the bad revision. ' + |
@@ -930,6 +945,11 @@ def main(): |
msg = 'Could not find Flash binary at %s' % flash_path |
assert os.path.exists(flash_path), msg |
+ if opts.pdf_path: |
+ pdf_path = opts.pdf_path |
+ msg = 'Could not find PDF binary at %s' % pdf_path |
+ assert os.path.exists(pdf_path), msg |
+ |
if opts.official_builds: |
good_rev = LooseVersion(good_rev) |
bad_rev = LooseVersion(bad_rev) |
@@ -946,7 +966,8 @@ def main(): |
(min_chromium_rev, max_chromium_rev) = Bisect( |
base_url, opts.archive, opts.official_builds, opts.aura, |
opts.use_local_repo, good_rev, bad_rev, opts.times, opts.command, |
- args, opts.profile, opts.flash_path, not opts.not_interactive) |
+ args, opts.profile, opts.flash_path, opts.pdf_path, |
+ not opts.not_interactive) |
# Get corresponding blink revisions. |
try: |