diff --git a/.gitmodules b/.gitmodules
index e69de29b..40d0bb03 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "http2push"]
+ path = http2push
+ url = https://github.com/GoogleChrome/http2push-gae
diff --git a/README.md b/README.md
index e1485a12..86e8398a 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,10 @@ Chrome Platform Status
[chromestatus.com](http://chromestatus.com/)
+### Get the code
+
+ git clone --recursive https://github.com/GoogleChrome/chromium-dashboard
+
### How to run the local test server
1. Install the [Google App Engine SDK for Python](https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python).
diff --git a/app.yaml b/app.yaml
index abd48f2a..10ed3479 100644
--- a/app.yaml
+++ b/app.yaml
@@ -1,5 +1,5 @@
application: cr-status
-version: polymer10-samples
+version: h2push
runtime: python27
threadsafe: true
api_version: 1
@@ -90,7 +90,9 @@ skip_files:
- ^(.*/)?.*\.sql[3]$
- ^(.*/)?.*\.sh$
- ^(.*/)?.*\.scss$
-- ^static/js/polymer-all
+- ^http2push/example
+- ^http2push/site
- ^(.*/)?node_modules
+- ^(.*/)?tests
- ^(.*/)?.[LICENSE|PATENTS|AUTHORS|CONTRIBUTING|COPYING](\.md)?
- ^(.*/)?.*\.md$
diff --git a/http2push b/http2push
new file mode 160000
index 00000000..9ab153d6
--- /dev/null
+++ b/http2push
@@ -0,0 +1 @@
+Subproject commit 9ab153d6833db5effb910ab0699a70ade4b84f78
diff --git a/package.json b/package.json
index b83fdc36..c16a888b 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
"grunt-contrib-compass": "^1.0.3",
"grunt-minified": "0.0.6",
"grunt-vulcanize": "^1.0.0",
+ "http2-push-manifest": "0.0.1",
"load-grunt-tasks": "*"
}
}
diff --git a/push_manifest.json b/push_manifest.json
new file mode 100644
index 00000000..e484b6b9
--- /dev/null
+++ b/push_manifest.json
@@ -0,0 +1,9 @@
+{
+ "/static/css/main.css": 1,
+ "/static/bower_components/webcomponentsjs/webcomponents-lite.min.js": 1,
+ "/static/css/features/features.css": 1,
+ "/static/elements/features-imports.vulcanize.html": 1,
+ "/static/elements/features-imports.vulcanize.js": 1,
+ "/features.json": 1,
+ "/omaha_data": 1
+}
diff --git a/server.py b/server.py
index bd0cc1c8..cbaeb879 100644
--- a/server.py
+++ b/server.py
@@ -28,6 +28,8 @@ import common
import models
import settings
+import http2push.http2push as http2push
+
def normalized_name(val):
return val.lower().replace(' ', '').replace('/', '')
@@ -41,7 +43,7 @@ def first_of_milestone(feature_list, milestone, start=0):
return -1
-class MainHandler(common.ContentHandler, common.JSONHandler):
+class MainHandler(http2push.PushHandler, common.ContentHandler, common.JSONHandler):
def __get_omaha_data(self):
omaha_data = memcache.get('omaha_data')
@@ -88,6 +90,7 @@ class MainHandler(common.ContentHandler, common.JSONHandler):
self.__annotate_first_of_milestones(feature_list)
return feature_list
+ @http2push.push()
def get(self, path, feature_id=None):
# Default to features page.
# TODO: remove later when we want an index.html
@@ -220,6 +223,8 @@ routes = [
]
app = webapp2.WSGIApplication(routes, debug=settings.DEBUG)
+
app.error_handlers[404] = common.handle_404
+
if settings.PROD and not settings.DEBUG:
app.error_handlers[500] = common.handle_500
diff --git a/templates/base.html b/templates/base.html
index a6f7f1e0..3a7bad4a 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -51,7 +51,7 @@
want a jumpstart on download and the GFonts API is helllla cached. -->
-
+
{% block css %}{% endblock %}
diff --git a/templates/features.html b/templates/features.html
index 41bf65f2..14993807 100644
--- a/templates/features.html
+++ b/templates/features.html
@@ -14,7 +14,7 @@
{% endblock %}
{% block css %}
-
+
{% endblock %}
{% block subheader %}
@@ -134,7 +134,7 @@ $('.legend').addEventListener('click', function(e) {
// Fire of features.json XHR right away so data can populate faster.
var featuresPromise = new Promise(function(resolve, reject) {
- var url = location.hostname == 'localhost' ? '/static/js/mockdata.json' :
+ var url = location.hostname == 'localhost' ? 'https://www.chromestatus.com/features.json' :
'/features.json';
var xhr = new XMLHttpRequest(); // Fill features list via AJAX.
xhr.open('GET', url);