Index: chrome/test/pyautolib/pyauto.py |
diff --git a/chrome/test/pyautolib/pyauto.py b/chrome/test/pyautolib/pyauto.py |
index c8b5270fa57f3c564e30e54e80d42d2bf5872c2b..5c83b894ce2d384e3ab032a5dbde54fc8047c73d 100644 |
--- a/chrome/test/pyautolib/pyauto.py |
+++ b/chrome/test/pyautolib/pyauto.py |
@@ -33,6 +33,7 @@ import logging |
import optparse |
import os |
import pickle |
+import pprint |
import shutil |
import signal |
import socket |
@@ -135,6 +136,12 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase): |
self.Initialize(pyautolib.FilePath(self.BrowserPath())) |
unittest.TestCase.__init__(self, methodName) |
+ # Give all pyauto tests access to a PrettyPrinter object, and convenience |
+ # calls to its |pprint| and |pformat| methods. |
+ 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
|
+ 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
|
+ 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.
|
+ |
# Set up remote proxies, if they were requested. |
self.remotes = [] |
self.remote = None |
@@ -1381,6 +1388,65 @@ class PyUITest(pyautolib.PyUITestBase, unittest.TestCase): |
} |
return self._GetResultFromJSONRequest(cmd_dict, windex=-1) |
+ def GetProcessInfo(self): |
+ """Returns information about browser-related processes that currently exist. |
+ |
+ This will also return information about other currently-running browsers |
+ besides just Chrome. |
+ |
+ Returns: |
+ A dictionary containing browser-related process information as identified |
+ by class MemoryDetails in src/chrome/browser/memory_details.h. The |
+ dictionary contains a single key 'browsers', mapped to a list of |
+ dictionaries containing information about each browser process name. |
+ Each of those dictionaries contains a key 'processes', mapped to a list |
+ of dictionaries containing the specific information for each process |
+ with the given process name. |
+ |
+ The memory values given in |committed_mem| and |working_set_mem| are in |
+ KBytes. |
+ |
+ Sample: |
+ { 'browsers': [ { 'name': 'Chromium', |
+ 'process_name': 'chrome', |
+ 'processes': [ { 'child_process_type': 'Browser', |
+ 'committed_mem': { 'image': 0, |
+ 'mapped': 0, |
+ 'priv': 0}, |
+ 'is_diagnostics': False, |
+ 'num_processes': 1, |
+ 'pid': 7770, |
+ 'product_name': '', |
+ 'renderer_type': 'Unknown', |
+ 'titles': [], |
+ 'version': '', |
+ 'working_set_mem': { 'priv': 43672, |
+ 'shareable': 0, |
+ 'shared': 59251}}, |
+ { 'child_process_type': 'Tab', |
+ 'committed_mem': { 'image': 0, |
+ 'mapped': 0, |
+ 'priv': 0}, |
+ 'is_diagnostics': False, |
+ 'num_processes': 1, |
+ 'pid': 7791, |
+ 'product_name': '', |
+ 'renderer_type': 'Tab', |
+ 'titles': ['about:blank'], |
+ 'version': '', |
+ 'working_set_mem': { 'priv': 16768, |
+ 'shareable': 0, |
+ 'shared': 26256}}, |
+ ...<more processes>...]}]} |
+ |
+ Raises: |
+ pyauto_errors.JSONInterfaceError if the automation call returns an error. |
+ """ |
+ cmd_dict = { # Prepare command for the json interface. |
+ 'command': 'GetProcessInfo', |
+ } |
+ return self._GetResultFromJSONRequest(cmd_dict, windex=-1) |
+ |
def GetNavigationInfo(self, tab_index=0, windex=0): |
"""Get info about the navigation state of a given tab. |