| Index: chrome/common/extensions/docs/server2/app_engine_handler.py
|
| diff --git a/chrome/common/extensions/docs/server2/app_engine_handler.py b/chrome/common/extensions/docs/server2/app_engine_handler.py
|
| index 993ad9d7f1cd6e0f95c4dab78aa6f10872540d39..7c45ac0e7a07d0e8b9e45040f9c93f3dfba199ce 100644
|
| --- a/chrome/common/extensions/docs/server2/app_engine_handler.py
|
| +++ b/chrome/common/extensions/docs/server2/app_engine_handler.py
|
| @@ -10,11 +10,28 @@ class AppEngineHandler(webapp2.RequestHandler):
|
| '''Top-level handler for AppEngine requests. Just converts them into our
|
| internal Servlet architecture.
|
| '''
|
| +
|
| def get(self):
|
| - request = Request(self.request.path,
|
| - self.request.url[:-len(self.request.path)],
|
| - self.request.headers)
|
| - response = Handler(request).Get()
|
| - self.response.out.write(response.content.ToString())
|
| - self.response.headers.update(response.headers)
|
| - self.response.status = response.status
|
| + profile_mode = self.request.get('profile')
|
| + if profile_mode:
|
| + import cProfile, pstats, StringIO
|
| + pr = cProfile.Profile()
|
| + pr.enable()
|
| +
|
| + try:
|
| + request = Request(self.request.path,
|
| + self.request.url[:-len(self.request.path)],
|
| + self.request.headers)
|
| + response = Handler(request).Get()
|
| + finally:
|
| + if profile_mode:
|
| + pr.disable()
|
| + s = StringIO.StringIO()
|
| + pstats.Stats(pr, stream=s).sort_stats(profile_mode).print_stats()
|
| + self.response.out.write(s.getvalue())
|
| + self.response.headers['Content-Type'] = 'text/plain'
|
| + self.response.status = 200
|
| + else:
|
| + self.response.out.write(response.content.ToString())
|
| + self.response.headers.update(response.headers)
|
| + self.response.status = response.status
|
|
|