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

Unified Diff: tools/chrome_remote_control/chrome_remote_control/temporary_http_server.py

Issue 10916227: More polish in prep for CrOS support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: for landing Created 8 years, 3 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/chrome_remote_control/chrome_remote_control/temporary_http_server.py
diff --git a/tools/chrome_remote_control/chrome_remote_control/temporary_http_server.py b/tools/chrome_remote_control/chrome_remote_control/temporary_http_server.py
new file mode 100644
index 0000000000000000000000000000000000000000..9a6b069be8a126d3f828f4039a95a9787e46ba73
--- /dev/null
+++ b/tools/chrome_remote_control/chrome_remote_control/temporary_http_server.py
@@ -0,0 +1,74 @@
+# Copyright (c) 2012 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 socket
+import subprocess
+import sys
+import urllib2
+import urlparse
+
+import util
+
+class TemporaryHTTPServer(object):
+ def __init__(self, browser_backend, path):
+ self._server = None
+ self._devnull = None
+ self._path = path
+ self._forwarder = None
+
+ tmp = socket.socket()
+ tmp.bind(('', 0))
+ port = tmp.getsockname()[1]
+ tmp.close()
+ self._host_port = port
+
+ assert os.path.exists(path)
+ assert os.path.isdir(path)
+
+ self._devnull = open(os.devnull, 'w')
+ self._server = subprocess.Popen(
+ [sys.executable, '-m', 'SimpleHTTPServer', str(self._host_port)],
+ cwd=self._path,
+ stdout=self._devnull, stderr=self._devnull)
+
+ self._forwarder = browser_backend.CreateForwarder(self._host_port)
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, *args):
+ self.Close()
+
+ def __del__(self):
+ self.Close()
+
+ def Close(self):
+ if self._forwarder:
+ self._forwarder.Close()
+ self._forwarder = None
+ if self._server:
+ self._server.kill()
+ self._server = None
+ if self._devnull:
+ self._devnull.close()
+ self._devnull = None
+
+ @property
+ def url(self):
+ return self._forwarder.url
+
+
+ def UrlOf(self, path):
+ return urlparse.urljoin(self.url, path)
+
+
+class NullBackend(object):
+ def testBasic(self):
+ options = browser_options.options_for_unittests
+ options.browser_to_use = browser_finder.ALL_BROWSER_TYPES
+ browser_to_create = browser_finder.FindBrowser(options)
+ if not browser_to_create:
+ raise Exception('No browser found, cannot continue test.')
+ with browser_to_create.Create() as b:
+ self.assertEquals(1, b.num_tabs)

Powered by Google App Engine
This is Rietveld 408576698