Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Unified Diff: tools/telemetry/telemetry/core/chrome/desktop_browser_backend.py

Issue 14359012: Telemetry: Add option to create a dirty profile as part of a test run (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Small fix to unit tests Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/chrome/desktop_browser_backend.py
diff --git a/tools/telemetry/telemetry/core/chrome/desktop_browser_backend.py b/tools/telemetry/telemetry/core/chrome/desktop_browser_backend.py
index 5487038c13c1d8d1bf0f8a7a1fe0aa0ef7e8b418..c01478591dc769713561aa7363e452884d7b0877 100644
--- a/tools/telemetry/telemetry/core/chrome/desktop_browser_backend.py
+++ b/tools/telemetry/telemetry/core/chrome/desktop_browser_backend.py
@@ -16,10 +16,12 @@ class DesktopBrowserBackend(browser_backend.BrowserBackend):
"""The backend for controlling a locally-executed browser instance, on Linux,
Mac or Windows.
"""
- def __init__(self, options, executable, is_content_shell, use_login):
+ def __init__(self, options, executable, is_content_shell, use_login,
+ delete_profile_dir_after_run=True):
super(DesktopBrowserBackend, self).__init__(
is_content_shell=is_content_shell,
- supports_extensions=not is_content_shell, options=options)
+ supports_extensions=not is_content_shell,
+ options=options)
# Initialize fields so that an explosion during init doesn't break in Close.
self._proc = None
@@ -37,7 +39,9 @@ class DesktopBrowserBackend(browser_backend.BrowserBackend):
'Content shell does not support extensions.')
self._port = util.GetAvailableLocalPort()
+ self._profile_dir = None
self._supports_net_benchmarking = True
+ self._delete_profile_dir_after_run = delete_profile_dir_after_run
self._LaunchBrowser(options)
# For old chrome versions, might have to relaunch to have the
@@ -78,12 +82,13 @@ class DesktopBrowserBackend(browser_backend.BrowserBackend):
args.append('--enable-benchmarking')
if not self.options.dont_override_profile:
self._tmpdir = tempfile.mkdtemp()
- if self.options.profile_dir:
+ profile_dir = self._profile_dir or self.options.profile_dir
+ if profile_dir:
if self.is_content_shell:
logging.critical('Profiles cannot be used with content shell')
sys.exit(1)
shutil.rmtree(self._tmpdir)
- shutil.copytree(self.options.profile_dir, self._tmpdir)
+ shutil.copytree(profile_dir, self._tmpdir)
args.append('--user-data-dir=%s' % self._tmpdir)
if self._use_login:
ext_path = os.path.join(os.path.dirname(__file__), 'chromeos_login_ext')
@@ -92,12 +97,27 @@ class DesktopBrowserBackend(browser_backend.BrowserBackend):
'--auth-ext-path=%s' % ext_path])
return args
+ def SetProfileDirectory(self, profile_dir):
+ # Make sure _profile_dir hasn't already been set.
+ assert self._profile_dir is None
+
+ if self.is_content_shell:
+ logging.critical('Profile creation cannot be used with content shell')
+ sys.exit(1)
+
+ self._profile_dir = profile_dir
+
@property
def pid(self):
if self._proc:
return self._proc.pid
return None
+
+ @property
+ def profile_directory(self):
+ return self._tmpdir
+
def IsBrowserRunning(self):
return self._proc.poll() == None
@@ -141,7 +161,8 @@ class DesktopBrowserBackend(browser_backend.BrowserBackend):
self._proc = None
raise Exception('Could not shutdown the browser.')
- if self._tmpdir and os.path.exists(self._tmpdir):
+ if self._delete_profile_dir_after_run and \
+ self._tmpdir and os.path.exists(self._tmpdir):
shutil.rmtree(self._tmpdir, ignore_errors=True)
self._tmpdir = None

Powered by Google App Engine
This is Rietveld 408576698