Index: chrome/test/functional/pdf.py |
=================================================================== |
--- chrome/test/functional/pdf.py (revision 152182) |
+++ chrome/test/functional/pdf.py (working copy) |
@@ -1,92 +0,0 @@ |
-#!/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 |
-# found in the LICENSE file. |
- |
-import os |
-import glob |
- |
-import pyauto_functional # Must be imported before pyauto |
-import pyauto |
-from pyauto_errors import JSONInterfaceError |
- |
- |
-class PDFTest(pyauto.PyUITest): |
- """PDF related tests |
- |
- This test runs only on Google Chrome build, not on Chromium. |
- """ |
- |
- unloadable_pdfs = [] |
- |
- 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 |
- """ |
- # Sometimes the zoom/fit bar is not fully loaded. We need to wait for it to |
- # load before we can perform actions. |
- js = """if (document.getElementsByName("plugin") && |
- document.getElementsByName("plugin")[0]) |
- { window.domAutomationController.send("true"); } |
- else {window.domAutomationController.send("false"); }""" |
- try: |
- self.assertTrue(self.WaitUntil(lambda: self.ExecuteJavascript(js, |
- tab_index=tab_index, windex=windex), expect_retval="true"), |
- msg='Could not find zoom/fit to page/width bar so we will not be able ' |
- 'to peform the requested action') |
- except JSONInterfaceError as e: |
- # The PDF did not load, add it to the list and move on, we don't want the |
- # test to abort so we can check all of the PDFs. |
- PDFTest.unloadable_pdfs.append(self.GetActiveTabTitle()) |
- return |
- 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, 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'] |
- |
- # Some pdfs cause known crashes. Exclude them. crbug.com/63549 |
- exclude_list = ('nullip.pdf', 'sample.pdf') |
- pdf_files = [x for x in pdf_files if |
- os.path.basename(x) not in exclude_list] |
- |
- PDFTest.unloadable_pdfs = [] |
- for url in pdf_files: |
- 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) |
- self.assertEqual(len(PDFTest.unloadable_pdfs), 0, msg='The following PDFs ' |
- 'did not load: %s' % PDFTest.unloadable_pdfs) |
- |
- |
-if __name__ == '__main__': |
- pyauto_functional.Main() |