OLD | NEW |
1 #!/usr/bin/python2.4 | 1 #!/usr/bin/python2.4 |
2 # Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """This is a simple HTTP server used for testing Chrome. | 6 """This is a simple HTTP server used for testing Chrome. |
7 | 7 |
8 It supports several test URLs, as specified by the handlers in TestPageHandler. | 8 It supports several test URLs, as specified by the handlers in TestPageHandler. |
9 It defaults to living on localhost:8888. | 9 It defaults to living on localhost:8888. |
10 It can use https if you specify the flag --https=CERT where CERT is the path | 10 It can use https if you specify the flag --https=CERT where CERT is the path |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 self.ChromiumSyncConfigureHandler, | 144 self.ChromiumSyncConfigureHandler, |
145 self.ChromiumSyncCommandHandler, | 145 self.ChromiumSyncCommandHandler, |
146 self.EchoHandler] + self._get_handlers | 146 self.EchoHandler] + self._get_handlers |
147 self._put_handlers = [ | 147 self._put_handlers = [ |
148 self.WriteFile, | 148 self.WriteFile, |
149 self.EchoTitleHandler, | 149 self.EchoTitleHandler, |
150 self.EchoAllHandler, | 150 self.EchoAllHandler, |
151 self.EchoHandler] + self._get_handlers | 151 self.EchoHandler] + self._get_handlers |
152 | 152 |
153 self._mime_types = { | 153 self._mime_types = { |
| 154 'crx' : 'application/x-chrome-extension', |
154 'gif': 'image/gif', | 155 'gif': 'image/gif', |
155 'jpeg' : 'image/jpeg', | 156 'jpeg' : 'image/jpeg', |
156 'jpg' : 'image/jpeg', | 157 'jpg' : 'image/jpeg', |
157 'xml' : 'text/xml' | 158 'xml' : 'text/xml' |
158 } | 159 } |
159 self._default_mime_type = 'text/html' | 160 self._default_mime_type = 'text/html' |
160 | 161 |
161 BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, request, | 162 BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, request, |
162 client_address, | 163 client_address, |
163 socket_server) | 164 socket_server) |
164 | 165 |
165 def log_request(self, *args, **kwargs): | 166 def log_request(self, *args, **kwargs): |
166 # Disable request logging to declutter test log output. | 167 # Disable request logging to declutter test log output. |
167 pass | 168 pass |
168 | 169 |
169 def _ShouldHandleRequest(self, handler_name): | 170 def _ShouldHandleRequest(self, handler_name): |
170 """Determines if the path can be handled by the handler. | 171 """Determines if the path can be handled by the handler. |
171 | 172 |
172 We consider a handler valid if the path begins with the | 173 We consider a handler valid if the path begins with the |
173 handler name. It can optionally be followed by "?*", "/*". | 174 handler name. It can optionally be followed by "?*", "/*". |
174 """ | 175 """ |
175 | 176 |
176 pattern = re.compile('%s($|\?|/).*' % handler_name) | 177 pattern = re.compile('%s($|\?|/).*' % handler_name) |
177 return pattern.match(self.path) | 178 return pattern.match(self.path) |
178 | 179 |
179 def GetMIMETypeFromName(self, file_name): | 180 def GetMIMETypeFromName(self, file_name): |
180 """Returns the mime type for the specified file_name. So far it only looks | 181 """Returns the mime type for the specified file_name. So far it only looks |
181 at the file extension.""" | 182 at the file extension.""" |
182 | 183 |
183 (shortname, extension) = os.path.splitext(file_name) | 184 (shortname, extension) = os.path.splitext(file_name.split("?")[0]) |
184 if len(extension) == 0: | 185 if len(extension) == 0: |
185 # no extension. | 186 # no extension. |
186 return self._default_mime_type | 187 return self._default_mime_type |
187 | 188 |
188 # extension starts with a dot, so we need to remove it | 189 # extension starts with a dot, so we need to remove it |
189 return self._mime_types.get(extension[1:], self._default_mime_type) | 190 return self._mime_types.get(extension[1:], self._default_mime_type) |
190 | 191 |
191 def KillHandler(self): | 192 def KillHandler(self): |
192 """This request handler kills the server, for use when we're done" | 193 """This request handler kills the server, for use when we're done" |
193 with the a particular test.""" | 194 with the a particular test.""" |
(...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1321 option_parser.add_option('', '--file-root-url', default='/files/', | 1322 option_parser.add_option('', '--file-root-url', default='/files/', |
1322 help='Specify a root URL for files served.') | 1323 help='Specify a root URL for files served.') |
1323 option_parser.add_option('', '--never-die', default=False, | 1324 option_parser.add_option('', '--never-die', default=False, |
1324 action="store_true", | 1325 action="store_true", |
1325 help='Prevent the server from dying when visiting ' | 1326 help='Prevent the server from dying when visiting ' |
1326 'a /kill URL. Useful for manually running some ' | 1327 'a /kill URL. Useful for manually running some ' |
1327 'tests.') | 1328 'tests.') |
1328 options, args = option_parser.parse_args() | 1329 options, args = option_parser.parse_args() |
1329 | 1330 |
1330 sys.exit(main(options, args)) | 1331 sys.exit(main(options, args)) |
OLD | NEW |