| 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
|
|
|
|
|