OLD | NEW |
---|---|
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 | 2 |
3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 """PyAuto: Python Interface to Chromium's Automation Proxy. | 7 """PyAuto: Python Interface to Chromium's Automation Proxy. |
8 | 8 |
9 PyAuto uses swig to expose Automation Proxy interfaces to Python. | 9 PyAuto uses swig to expose Automation Proxy interfaces to Python. |
10 For complete documentation on the functionality available, | 10 For complete documentation on the functionality available, |
(...skipping 15 matching lines...) Expand all Loading... | |
26 """ | 26 """ |
27 | 27 |
28 import cStringIO | 28 import cStringIO |
29 import functools | 29 import functools |
30 import hashlib | 30 import hashlib |
31 import inspect | 31 import inspect |
32 import logging | 32 import logging |
33 import optparse | 33 import optparse |
34 import os | 34 import os |
35 import pickle | 35 import pickle |
36 import pprint | |
36 import shutil | 37 import shutil |
37 import signal | 38 import signal |
38 import socket | 39 import socket |
39 import stat | 40 import stat |
40 import string | 41 import string |
41 import subprocess | 42 import subprocess |
42 import sys | 43 import sys |
43 import tempfile | 44 import tempfile |
44 import time | 45 import time |
45 import types | 46 import types |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
128 homepage: the home page. Defaults to "about:blank" | 129 homepage: the home page. Defaults to "about:blank" |
129 """ | 130 """ |
130 # Fetch provided keyword args, or fill in defaults. | 131 # Fetch provided keyword args, or fill in defaults. |
131 clear_profile = kwargs.get('clear_profile', True) | 132 clear_profile = kwargs.get('clear_profile', True) |
132 homepage = kwargs.get('homepage', 'about:blank') | 133 homepage = kwargs.get('homepage', 'about:blank') |
133 | 134 |
134 pyautolib.PyUITestBase.__init__(self, clear_profile, homepage) | 135 pyautolib.PyUITestBase.__init__(self, clear_profile, homepage) |
135 self.Initialize(pyautolib.FilePath(self.BrowserPath())) | 136 self.Initialize(pyautolib.FilePath(self.BrowserPath())) |
136 unittest.TestCase.__init__(self, methodName) | 137 unittest.TestCase.__init__(self, methodName) |
137 | 138 |
139 # Give all pyauto tests access to a PrettyPrinter object, and convenience | |
140 # calls to its |pprint| and |pformat| methods. | |
141 self.pretty_printer = pprint.PrettyPrinter(indent=2) | |
Nirnimesh
2011/09/22 19:35:26
I meant you should define this in pyauto.py
I real
Nirnimesh
2011/09/22 19:36:48
ok. I'm obviously high. Ignore my previous comment
dennis_jeffrey
2011/09/22 19:54:03
Done.
dennis_jeffrey
2011/09/22 19:54:03
If you've realized you're high, you're not high en
| |
142 self.pprint = self.pretty_printer.pprint | |
Nirnimesh
2011/09/22 19:36:48
Why not just self.pprint = pprint.pprint?
dennis_jeffrey
2011/09/22 19:54:03
Cool! I didn't realize I could do this directly w
| |
143 self.pformat = self.pretty_printer.pformat | |
Nirnimesh
2011/09/22 19:35:26
This is unused
dennis_jeffrey
2011/09/22 19:54:03
I use it in process_count.py in the current CL.
| |
144 | |
138 # Set up remote proxies, if they were requested. | 145 # Set up remote proxies, if they were requested. |
139 self.remotes = [] | 146 self.remotes = [] |
140 self.remote = None | 147 self.remote = None |
141 global _REMOTE_PROXY | 148 global _REMOTE_PROXY |
142 if _REMOTE_PROXY: | 149 if _REMOTE_PROXY: |
143 self.remotes = _REMOTE_PROXY | 150 self.remotes = _REMOTE_PROXY |
144 self.remote = _REMOTE_PROXY[0] | 151 self.remote = _REMOTE_PROXY[0] |
145 | 152 |
146 def __del__(self): | 153 def __del__(self): |
147 pyautolib.PyUITestBase.__del__(self) | 154 pyautolib.PyUITestBase.__del__(self) |
(...skipping 1226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1374 u'y': 44}]} | 1381 u'y': 44}]} |
1375 | 1382 |
1376 Raises: | 1383 Raises: |
1377 pyauto_errors.JSONInterfaceError if the automation call returns an error. | 1384 pyauto_errors.JSONInterfaceError if the automation call returns an error. |
1378 """ | 1385 """ |
1379 cmd_dict = { # Prepare command for the json interface | 1386 cmd_dict = { # Prepare command for the json interface |
1380 'command': 'GetBrowserInfo', | 1387 'command': 'GetBrowserInfo', |
1381 } | 1388 } |
1382 return self._GetResultFromJSONRequest(cmd_dict, windex=-1) | 1389 return self._GetResultFromJSONRequest(cmd_dict, windex=-1) |
1383 | 1390 |
1391 def GetProcessInfo(self): | |
1392 """Returns information about browser-related processes that currently exist. | |
1393 | |
1394 This will also return information about other currently-running browsers | |
1395 besides just Chrome. | |
1396 | |
1397 Returns: | |
1398 A dictionary containing browser-related process information as identified | |
1399 by class MemoryDetails in src/chrome/browser/memory_details.h. The | |
1400 dictionary contains a single key 'browsers', mapped to a list of | |
1401 dictionaries containing information about each browser process name. | |
1402 Each of those dictionaries contains a key 'processes', mapped to a list | |
1403 of dictionaries containing the specific information for each process | |
1404 with the given process name. | |
1405 | |
1406 The memory values given in |committed_mem| and |working_set_mem| are in | |
1407 KBytes. | |
1408 | |
1409 Sample: | |
1410 { 'browsers': [ { 'name': 'Chromium', | |
1411 'process_name': 'chrome', | |
1412 'processes': [ { 'child_process_type': 'Browser', | |
1413 'committed_mem': { 'image': 0, | |
1414 'mapped': 0, | |
1415 'priv': 0}, | |
1416 'is_diagnostics': False, | |
1417 'num_processes': 1, | |
1418 'pid': 7770, | |
1419 'product_name': '', | |
1420 'renderer_type': 'Unknown', | |
1421 'titles': [], | |
1422 'version': '', | |
1423 'working_set_mem': { 'priv': 43672, | |
1424 'shareable': 0, | |
1425 'shared': 59251}}, | |
1426 { 'child_process_type': 'Tab', | |
1427 'committed_mem': { 'image': 0, | |
1428 'mapped': 0, | |
1429 'priv': 0}, | |
1430 'is_diagnostics': False, | |
1431 'num_processes': 1, | |
1432 'pid': 7791, | |
1433 'product_name': '', | |
1434 'renderer_type': 'Tab', | |
1435 'titles': ['about:blank'], | |
1436 'version': '', | |
1437 'working_set_mem': { 'priv': 16768, | |
1438 'shareable': 0, | |
1439 'shared': 26256}}, | |
1440 ...<more processes>...]}]} | |
1441 | |
1442 Raises: | |
1443 pyauto_errors.JSONInterfaceError if the automation call returns an error. | |
1444 """ | |
1445 cmd_dict = { # Prepare command for the json interface. | |
1446 'command': 'GetProcessInfo', | |
1447 } | |
1448 return self._GetResultFromJSONRequest(cmd_dict, windex=-1) | |
1449 | |
1384 def GetNavigationInfo(self, tab_index=0, windex=0): | 1450 def GetNavigationInfo(self, tab_index=0, windex=0): |
1385 """Get info about the navigation state of a given tab. | 1451 """Get info about the navigation state of a given tab. |
1386 | 1452 |
1387 Args: | 1453 Args: |
1388 tab_index: The tab index, default is 0. | 1454 tab_index: The tab index, default is 0. |
1389 window_index: The window index, default is 0. | 1455 window_index: The window index, default is 0. |
1390 | 1456 |
1391 Returns: | 1457 Returns: |
1392 a dictionary. | 1458 a dictionary. |
1393 Sample: | 1459 Sample: |
(...skipping 3081 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4475 successful = result.wasSuccessful() | 4541 successful = result.wasSuccessful() |
4476 if not successful: | 4542 if not successful: |
4477 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename) | 4543 pyauto_tests_file = os.path.join(self.TestsDir(), self._tests_filename) |
4478 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \ | 4544 print >>sys.stderr, 'Tests can be disabled by editing %s. ' \ |
4479 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL) | 4545 'Ref: %s' % (pyauto_tests_file, _PYAUTO_DOC_URL) |
4480 sys.exit(not successful) | 4546 sys.exit(not successful) |
4481 | 4547 |
4482 | 4548 |
4483 if __name__ == '__main__': | 4549 if __name__ == '__main__': |
4484 Main() | 4550 Main() |
OLD | NEW |