Merge lp:~ev/errors/js-oops into lp:errors

Proposed by Evan
Status: Needs review
Proposed branch: lp:~ev/errors/js-oops
Merge into: lp:errors
Diff against target: 51 lines (+16/-1)
3 files modified
errors/templates/index.html (+6/-0)
errors/urls.py (+1/-0)
errors/views.py (+9/-1)
To merge this branch: bzr merge lp:~ev/errors/js-oops
Reviewer Review Type Date Requested Status
Daisy Pluckers Pending
Review via email: mp+166853@code.launchpad.net

Description of the change

This branch generates an OOPS report anytime we have an unhandled javascript error. Currently, this does not seem to cover nvd3 code.

To post a comment you must log in.
Revision history for this message
Evan (ev) wrote :

This fixes bug 1176116

Unmerged revisions

424. By Evan

Generate an OOPS report when we get an unhandled javascript exception.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'errors/templates/index.html'
2--- errors/templates/index.html 2013-05-17 20:32:10 +0000
3+++ errors/templates/index.html 2013-05-31 16:47:26 +0000
4@@ -2,6 +2,12 @@
5 <html>
6 <head>
7 <script type="text/javascript">
8+ window.onerror = function(message, url, line) {
9+ var img = new Image();
10+ img.src = '/jsoops/?message=' + message + '&url=' + url + '&line=' + line;
11+ }
12+</script>
13+<script type="text/javascript">
14 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
15 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
16 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
17
18=== modified file 'errors/urls.py'
19--- errors/urls.py 2013-04-15 12:58:41 +0000
20+++ errors/urls.py 2013-05-31 16:47:26 +0000
21@@ -17,6 +17,7 @@
22 url(r'^login-failed/?$', 'errors.views.login_failed'),
23 url(r'^bug/(.*)$', 'errors.views.bug'),
24 url(r'problem/(.*)$', 'errors.views.problem'),
25+ url(r'jsoops/', 'errors.views.jsoops'),
26 )
27
28 # If we get a request for static content, handle it. This will happen if Apache
29
30=== modified file 'errors/views.py'
31--- errors/views.py 2013-05-17 20:32:10 +0000
32+++ errors/views.py 2013-05-31 16:47:26 +0000
33@@ -1,5 +1,5 @@
34 from django.contrib.auth import logout
35-from django.http import HttpResponse, HttpResponseRedirect
36+from django.http import HttpResponse, HttpResponseRedirect, HttpResponseServerError
37 from django.shortcuts import render
38 from errors import cassandra
39 from daisy.launchpad import get_release_for_binary
40@@ -119,3 +119,11 @@
41 if not bucketid:
42 return HttpResponseRedirect('/?problem-not-found=' + hashed)
43 return bucket(request, bucketid, hashed)
44+
45+def jsoops(request):
46+ # Generate an OOPS report for some failing javascript.
47+ cxt = request.environ['oops.report']
48+ cxt['JavascriptMessage'] = request.GET.get('message', '')
49+ cxt['JavascriptLine'] = request.GET.get('line', '')
50+ cxt['JavascriptURL'] = request.GET.get('url', '')
51+ return HttpResponseServerError(mimetype='image/gif')

Subscribers

People subscribed via source and target branches

to all changes: