blob: 800ca9951960ec215cf77cbb604b7dc635fd024d [file] [log] [blame]
#!/usr/bin/python
# Copyright (c) 2010 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.
import os
import glob
import pyauto_functional # Must be imported before pyauto
import pyauto
class PDFTest(pyauto.PyUITest):
"""PDF related tests
This test runs only on Google Chrome build, not on Chromium.
"""
def _PerformPDFAction(self, action, tab_index=0, windex=0):
"""Perform an action on a PDF tab.
Args:
action: one of "fitToHeight", "fitToWidth", "ZoomIn", "ZoomOut"
tab_index: tab index Defaults to 0
windex: window index. Defaults to 0
"""
assert action in ('fitToHeight', 'fitToWidth', 'ZoomIn', 'ZoomOut')
js = 'document.getElementsByName("plugin")[0].%s()' % action
# Add an empty string so that there's something to return back
# (or else it hangs)
return self.GetDOMValue('%s + ""' % js, 0, tab_index)
def testPDFRunner(self):
"""Navigate to pdf files and verify that browser doesn't crash"""
# bail out if not a branded build
properties = self.GetBrowserInfo()['properties']
if properties['branding'] != 'Google Chrome':
return
breakpad_folder = properties['DIR_CRASH_DUMPS']
old_dmp_files = glob.glob(os.path.join(breakpad_folder, '*.dmp'))
pdf_files_path = os.path.join(self.DataDir(), 'pyauto_private', 'pdf')
pdf_files = map(self.GetFileURLForPath,
glob.glob(os.path.join(pdf_files_path, '*.pdf')))
# Add a pdf file over http:// to the list of pdf files.
# crbug.com/70454
pdf_files += ['http://www.irs.gov/pub/irs-pdf/fw4.pdf']
for url in pdf_files:
# Some pdfs cause known crashes. Exclude them. crbug.com/63549
if os.path.basename(url) in ('nullip.pdf', 'sample.pdf'):
continue
self.AppendTab(pyauto.GURL(url))
for tab_index in range(1, len(pdf_files) + 1):
self.ActivateTab(tab_index)
self._PerformPDFAction('fitToHeight', tab_index=tab_index)
self._PerformPDFAction('fitToWidth', tab_index=tab_index)
# Assert that there is at least 1 browser window.
self.assertTrue(self.GetBrowserWindowCount(),
'Browser crashed, no window is open')
# Verify there're no crash dump files
for dmp_file in glob.glob(os.path.join(breakpad_folder, '*.dmp')):
self.assertTrue(dmp_file in old_dmp_files,
msg='Crash dump %s found' % dmp_file)
if __name__ == '__main__':
pyauto_functional.Main()