Merge inbound to mozilla-central r=merge a=merge
authorAttila Craciun <acraciun@mozilla.com>
Thu, 26 Oct 2017 12:20:45 +0300
changeset 388423 d734e6acf7778df7c933d33540203f08b44ff977
parent 388422 485a03afaa233e311bfb20e15bac9f50158acd00 (current diff)
parent 388250 a3785ec9a48c8c76dd98b5c5140283f8ac44c851 (diff)
child 388424 92767404525aaee96990e37309cb2791fa3d1911
child 388491 0d1e55d87931fe70ec1d007e886bcd58015ff770
child 388511 3462905e8d83b97526003f61397c5c96fb230e60
push id96616
push useracraciun@mozilla.com
push dateThu, 26 Oct 2017 09:35:17 +0000
treeherdermozilla-inbound@92767404525a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge, merge
milestone58.0a1
first release with
nightly linux32
d734e6acf777 / 58.0a1 / 20171026100047 / files
nightly linux64
d734e6acf777 / 58.0a1 / 20171026100047 / files
nightly mac
d734e6acf777 / 58.0a1 / 20171026100047 / files
nightly win32
d734e6acf777 / 58.0a1 / 20171026100047 / files
nightly win64
d734e6acf777 / 58.0a1 / 20171026100047 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge inbound to mozilla-central r=merge a=merge
js/src/tests/js1_5/extensions/toLocaleFormat-01.js
js/src/tests/js1_5/extensions/toLocaleFormat-02.js
js/src/tests/js1_5/extensions/toLocaleFormat-deprecated-no-Intl.js
js/src/tests/js1_5/extensions/toLocaleFormat-deprecated.js
layout/reftests/bugs/reftest.list
third_party/speedometer/InteractiveRunner.html
third_party/speedometer/README_MOZILLA
third_party/speedometer/index.html
third_party/speedometer/resources/benchmark-report.js
third_party/speedometer/resources/benchmark-runner.js
third_party/speedometer/resources/flightjs-example-app/LICENSE.md
third_party/speedometer/resources/flightjs-example-app/README.md
third_party/speedometer/resources/flightjs-example-app/app/boot/page.js
third_party/speedometer/resources/flightjs-example-app/app/component_data/compose_box.js
third_party/speedometer/resources/flightjs-example-app/app/component_data/mail_items.js
third_party/speedometer/resources/flightjs-example-app/app/component_data/move_to.js
third_party/speedometer/resources/flightjs-example-app/app/component_ui/compose_box.js
third_party/speedometer/resources/flightjs-example-app/app/component_ui/folders.js
third_party/speedometer/resources/flightjs-example-app/app/component_ui/mail_controls.js
third_party/speedometer/resources/flightjs-example-app/app/component_ui/mail_items.js
third_party/speedometer/resources/flightjs-example-app/app/component_ui/move_to_selector.js
third_party/speedometer/resources/flightjs-example-app/app/component_ui/with_select.js
third_party/speedometer/resources/flightjs-example-app/app/css/custom.css
third_party/speedometer/resources/flightjs-example-app/app/data.js
third_party/speedometer/resources/flightjs-example-app/app/templates.js
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap.css
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap.min.css
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/js/bootstrap.js
third_party/speedometer/resources/flightjs-example-app/components/bootstrap/js/bootstrap.min.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/.gitignore
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/CHANGES
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/LICENSE
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/README.md
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/component.json
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-sham.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-sham.min.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-shim.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-shim.min.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/package.json
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/index.html
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/json2.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-array.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-date.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-function.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-object.js
third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-string.js
third_party/speedometer/resources/flightjs-example-app/components/flight/.travis.yml
third_party/speedometer/resources/flightjs-example-app/components/flight/lib/advice.js
third_party/speedometer/resources/flightjs-example-app/components/flight/lib/component.js
third_party/speedometer/resources/flightjs-example-app/components/flight/lib/compose.js
third_party/speedometer/resources/flightjs-example-app/components/flight/lib/index.js
third_party/speedometer/resources/flightjs-example-app/components/flight/lib/logger.js
third_party/speedometer/resources/flightjs-example-app/components/flight/lib/registry.js
third_party/speedometer/resources/flightjs-example-app/components/flight/lib/utils.js
third_party/speedometer/resources/flightjs-example-app/components/flight/tools/debug/debug.js
third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/LICENSE.md
third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/README.md
third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/bower.json
third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js
third_party/speedometer/resources/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js
third_party/speedometer/resources/flightjs-example-app/components/jquery/component.json
third_party/speedometer/resources/flightjs-example-app/components/jquery/composer.json
third_party/speedometer/resources/flightjs-example-app/components/jquery/jquery.js
third_party/speedometer/resources/flightjs-example-app/components/jquery/jquery.min.js
third_party/speedometer/resources/flightjs-example-app/components/mustache/mustache.js
third_party/speedometer/resources/flightjs-example-app/components/requirejs/require.js
third_party/speedometer/resources/flightjs-example-app/index.html
third_party/speedometer/resources/flightjs-example-app/karma.conf.js
third_party/speedometer/resources/flightjs-example-app/package.json
third_party/speedometer/resources/flightjs-example-app/requireMain.js
third_party/speedometer/resources/gauge.png
third_party/speedometer/resources/gauge@2x.png
third_party/speedometer/resources/logo.png
third_party/speedometer/resources/logo@2x.png
third_party/speedometer/resources/main.css
third_party/speedometer/resources/main.js
third_party/speedometer/resources/tests.js
third_party/speedometer/resources/todomvc/architecture-examples/angular/.angular-cli.json
third_party/speedometer/resources/todomvc/architecture-examples/angular/.editorconfig
third_party/speedometer/resources/todomvc/architecture-examples/angular/README.md
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-app.css
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-common.css
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/favicon.ico
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/index.html
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/inline.3b7f8ce2e6bc2f77dd83.bundle.js
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/main.f1c5d33a6950c335064d.bundle.js
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/polyfills.3a2aed82a0c9b24e6585.bundle.js
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css
third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/vendor.9a296bbc1909830a9106.bundle.js
third_party/speedometer/resources/todomvc/architecture-examples/angular/karma.conf.js
third_party/speedometer/resources/todomvc/architecture-examples/angular/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/angular/package.json
third_party/speedometer/resources/todomvc/architecture-examples/angular/protractor.conf.js
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.html
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.spec.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.module.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.spec.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-app.css
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-common.css
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.prod.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/favicon.ico
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/index.html
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/main.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/polyfills.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/styles.css
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/test.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.app.json
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.spec.json
third_party/speedometer/resources/todomvc/architecture-examples/angular/src/typings.d.ts
third_party/speedometer/resources/todomvc/architecture-examples/angular/tsconfig.json
third_party/speedometer/resources/todomvc/architecture-examples/angular/tslint.json
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/index.html
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/app.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js.map
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js.map
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js.map
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/package.json
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/angularjs/todomvc-index.html
third_party/speedometer/resources/todomvc/architecture-examples/backbone/index.html
third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/app.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/backbone.sync.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/collections/todos.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/models/todo.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/routers/router.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/views/app-view.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/views/todo-view.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.map
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.map
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.map
third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore.js
third_party/speedometer/resources/todomvc/architecture-examples/backbone/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/backbone/package.json
third_party/speedometer/resources/todomvc/architecture-examples/backbone/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/todomvc.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.css
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/crossdomain.xml
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/index.html
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/robots.txt
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.bowerrc
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.editorconfig
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.ember-cli
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.gitignore
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.jshintrc
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.travis.yml
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.watchmanconfig
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/README.md
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/app.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-item.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-list.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/active.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/application.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/completed.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/gt.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/pluralize.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/index.html
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/instance-initializers/global.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/resolver.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/router.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/routes/application.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/memory.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/repo.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/active.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/application.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/completed.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-item.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-list.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/index.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/bower.json
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/config/environment.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/ember-cli-build.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/package.json
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/public/crossdomain.xml
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/public/robots.txt
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/testem.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/.jshintrc
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/destroy-app.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/module-for-acceptance.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/resolver.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/start-app.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/index.html
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/test-helper.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/base.css
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/index.css
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/testem.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/tests/index.html
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.bowerrc
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.editorconfig
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.ember-cli
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.gitignore
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.jshintrc
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/README.md
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/app.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/components/todo-item.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/components/todo-list.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/active.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/application.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/completed.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/helpers/gt.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/helpers/pluralize.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/index.html
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/resolver.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/router.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/routes/application.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/services/memory.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/services/repo.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/styles/.gitkeep
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/active.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/application.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/completed.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-item.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/components/todo-list.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/templates/index.hbs
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/bower.json
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/config/environment.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/dist/assets/todomvc-5d3e8eb3d5b3740a33185edcb11eeb57.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/dist/assets/vendor-820919567eb7bd4d9fac358a90a5aac4.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/dist/assets/vendor-a45c44bc56b4692cca4a96b6916c0fde.css
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/dist/crossdomain.xml
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/dist/index.html
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/dist/robots.txt
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/ember-cli-build.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/package.json
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/public/crossdomain.xml
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/public/robots.txt
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/testem.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/tests/helpers/destroy-app.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/tests/helpers/module-for-acceptance.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/tests/helpers/resolver.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/tests/helpers/start-app.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/tests/index.html
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/tests/test-helper.js
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/vendor/base.css
third_party/speedometer/resources/todomvc/architecture-examples/emberjs/vendor/index.css
third_party/speedometer/resources/todomvc/architecture-examples/inferno/dist/bundle.js
third_party/speedometer/resources/todomvc/architecture-examples/inferno/index.html
third_party/speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/package.json
third_party/speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-app-css/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/package.json
third_party/speedometer/resources/todomvc/architecture-examples/inferno/node_modules/todomvc-common/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/inferno/package.json
third_party/speedometer/resources/todomvc/architecture-examples/inferno/src/base.js
third_party/speedometer/resources/todomvc/architecture-examples/inferno/src/index.js
third_party/speedometer/resources/todomvc/architecture-examples/inferno/src/item.js
third_party/speedometer/resources/todomvc/architecture-examples/inferno/src/model.js
third_party/speedometer/resources/todomvc/architecture-examples/inferno/src/share.js
third_party/speedometer/resources/todomvc/architecture-examples/inferno/webpack.config.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/css/app.css
third_party/speedometer/resources/todomvc/architecture-examples/jquery/index.html
third_party/speedometer/resources/todomvc/architecture-examples/jquery/js/app.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/LICENSE
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/bower.json
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/director.min.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/dist/ender.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/director/package.json
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/handlebars/dist/handlebars.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/jquery/dist/jquery.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/package.json
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-app-css/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/package.json
third_party/speedometer/resources/todomvc/architecture-examples/jquery/node_modules/todomvc-common/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/jquery/package.json
third_party/speedometer/resources/todomvc/architecture-examples/jquery/readme.md
third_party/speedometer/resources/todomvc/architecture-examples/preact/.babelrc
third_party/speedometer/resources/todomvc/architecture-examples/preact/README.md
third_party/speedometer/resources/todomvc/architecture-examples/preact/dist/app.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/dist/app.js.map
third_party/speedometer/resources/todomvc/architecture-examples/preact/dist/index.html
third_party/speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc-common/base.css
third_party/speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc-common/base.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/dist/todomvc.css
third_party/speedometer/resources/todomvc/architecture-examples/preact/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/preact/package.json
third_party/speedometer/resources/todomvc/architecture-examples/preact/rollup.config.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/src/app/footer.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/src/app/index.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/src/app/item.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/src/app/model.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/src/app/util.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/src/index.html
third_party/speedometer/resources/todomvc/architecture-examples/preact/src/index.js
third_party/speedometer/resources/todomvc/architecture-examples/preact/webpack.config.babel.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/README.md
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/dist/asset-manifest.json
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/dist/index.html
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/dist/service-worker.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/css/main.21111742.css.map
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.18b409e1.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/dist/static/js/main.18b409e1.js.map
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/package.json
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/public/index.html
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/actions/index.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/actions/index.spec.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Footer.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Footer.spec.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Header.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/Header.spec.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/MainSection.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/MainSection.spec.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoItem.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoItem.spec.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoTextInput.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/components/TodoTextInput.spec.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/constants/ActionTypes.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/constants/TodoFilters.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/containers/App.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/index.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/index.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.js
third_party/speedometer/resources/todomvc/architecture-examples/react-redux/src/reducers/todos.spec.js
third_party/speedometer/resources/todomvc/architecture-examples/react/README.md
third_party/speedometer/resources/todomvc/architecture-examples/react/build.min.js
third_party/speedometer/resources/todomvc/architecture-examples/react/index.html
third_party/speedometer/resources/todomvc/architecture-examples/react/js/app.jsx
third_party/speedometer/resources/todomvc/architecture-examples/react/license.md
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/LICENSE
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/bind.js
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/bower.json
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/dedupe.js
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/classnames/index.js
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/director/LICENSE
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/director/bower.json
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/director/build/director.min.js
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/LICENSE
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/react-dom/dist/react-dom.min.js
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/react/LICENSE
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/react/dist/react-with-addons.min.js
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/react/dist/react.min.js
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/architecture-examples/react/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/architecture-examples/react/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/react/package.json
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/.babelrc
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/.editorconfig
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/.eslintignore
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/.eslintrc.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/README.md
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/build.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/check-versions.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/dev-client.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/dev-server.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/utils.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/vue-loader.conf.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.base.conf.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.dev.conf.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.prod.conf.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/build/webpack.test.conf.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/dev.env.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/index.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/config/prod.env.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/index.html
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.5b47040a23ec3fcb78037de398c53557.css
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/css/app.5b47040a23ec3fcb78037de398c53557.css.map
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.e6c010d57d53537f4ad2.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/app.e6c010d57d53537f4ad2.js.map
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.aa9978aa96ee948f2a4c.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/manifest.aa9978aa96ee948f2a4c.js.map
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.e7008001a8bed009bbf1.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/dist/static/js/vendor.e7008001a8bed009bbf1.js.map
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/index.html
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/package-lock.json
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/package.json
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/App.vue
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/Todos.vue
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/components/todo.css
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/src/main.js
third_party/speedometer/resources/todomvc/architecture-examples/vuejs-cli/yarn.lock
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/stats.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/data/todos.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/main.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/page/app.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/store.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/main_selector.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/new_item.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/stats.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/todo_list.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/toggle_all.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/ui/with_filters.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/js/utils.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/stats.html
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/app/templates/todo.html
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/index.html
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/README.md
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/depot.min.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/depot/package.json
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/LICENSE
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-sham.min.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/es5-shim/es5-shim.min.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/LICENSE
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/index.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/advice.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/base.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/component.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/compose.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/debug.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/logger.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/registry.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/flight/lib/utils.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/README.md
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/dist/jquery.min.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/jquery/package.json
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/memorystorage/memorystorage.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/LICENSE
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/README.md
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/bower.json
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/package.json
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs-text/text.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/README.md
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/package.json
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/requirejs/require.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/package.json
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-app-css/readme.md
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/package.json
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/node_modules/todomvc-common/readme.md
third_party/speedometer/resources/todomvc/dependency-examples/flight/flight/package.json
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/Todo.elm
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/Todo/Task.elm
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/dist/elm.js
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/index.html
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/package.json
third_party/speedometer/resources/todomvc/functional-prog-examples/elm/readme.md
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower.json
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/director/LICENSE
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/director/README.md
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/director/build/director.js
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/director/build/director.min.js
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/director/build/ender.js
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/react/JSXTransformer.js
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/react/bower.json
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/react/react.js
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/react/react.min.js
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.css
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/base.js
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/bower_components/todomvc-common/bg.png
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/index.html
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/js/app.jsx
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/js/footer.jsx
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/js/todoItem.jsx
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/js/utils.jsx
third_party/speedometer/resources/todomvc/labs/architecture-examples/react/readme.md
third_party/speedometer/resources/todomvc/learn.json
third_party/speedometer/resources/todomvc/license.md
third_party/speedometer/resources/todomvc/readme.md
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/.babelrc
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/.eslintignore
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/README.md
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.930ad8b83126862d7445.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.app.930ad8b83126862d7445.js.map
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.e81199b00da2921d9c94.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.manifest.e81199b00da2921d9c94.js.map
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.577c6bc09319b27fed34.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/bundle.vendor.577c6bc09319b27fed34.js.map
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/index.html
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.930ad8b83126862d7445.css
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.app.930ad8b83126862d7445.css.map
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.577c6bc09319b27fed34.css
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/dist/styles.vendor.577c6bc09319b27fed34.css.map
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package-lock.json
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/package.json
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/app.css
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/app.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/bootstrap.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/controller.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/controller.test.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/helpers.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/index.html
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/memory.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/model.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/store.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/template.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/todo.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/src/view.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015-babel-webpack/webpack.config.babel.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/README.md
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/index.html
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/package.json
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-app-css/readme.md
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/package.json
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/node_modules/todomvc-common/readme.md
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/package.json
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/.jshintrc
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/app.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/controller.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/helpers.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/model.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/store.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/template.js
third_party/speedometer/resources/todomvc/vanilla-examples/es2015/src/view.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/index.html
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/js/app.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/js/controller.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/js/helpers.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/js/model.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/js/store.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/js/template.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/js/view.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-app-css/index.css
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/base.css
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/node_modules/todomvc-common/base.js
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/package.json
third_party/speedometer/resources/todomvc/vanilla-examples/vanillajs/readme.md
--- a/browser/components/shell/test/test_headless_screenshot.html
+++ b/browser/components/shell/test/test_headless_screenshot.html
@@ -96,20 +96,16 @@ https://bugzilla.mozilla.org/show_bug.cg
       reader.readAsDataURL(blob);
     });
     await OS.File.remove(screenshotPath);
   }
 
   (async function() {
     SimpleTest.waitForExplicitFinish();
 
-    // On Windows, nsICommandLine doesn't support double-dash arguments,
-    // nor single-dash arguments whose value is specified via an equals sign,
-    // so we only test those variations on non-Windows platforms.
-
     // Test all four basic variations of the "screenshot" argument
     // when a file path is specified.
     await testFileCreationPositive(["-url", "http://mochi.test:8888/headless.html", "-screenshot", screenshotPath], screenshotPath);
     await testFileCreationPositive(["-url", "http://mochi.test:8888/headless.html", `-screenshot=${screenshotPath}`], screenshotPath);
     await testFileCreationPositive(["-url", "http://mochi.test:8888/headless.html", "--screenshot", screenshotPath], screenshotPath);
     await testFileCreationPositive(["-url", "http://mochi.test:8888/headless.html", `--screenshot=${screenshotPath}`], screenshotPath);
 
     // Test variations of the "screenshot" argument when a file path
--- a/build/pgo/index.html
+++ b/build/pgo/index.html
@@ -1,16 +1,16 @@
 <script>
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
  var list = 
      [
-  "js-input/speedometer/index.html",
+  "js-input/webkit/PerformanceTests/Speedometer/index.html",
   "blueprint/sample.html",
   "blueprint/forms.html",
   "blueprint/grid.html",
   "blueprint/elements.html",
   "js-input/3d-thingy.html",
   "js-input/crypto-otp.html",
   "js-input/sunspider/3d-cube.html",
   "js-input/sunspider/3d-morph.html",
--- a/build/pgo/profileserver.py
+++ b/build/pgo/profileserver.py
@@ -13,17 +13,17 @@ from mozfile import TemporaryDirectory
 from mozhttpd import MozHttpd
 from mozprofile import FirefoxProfile, Profile, Preferences
 from mozprofile.permissions import ServerLocations
 from mozrunner import FirefoxRunner, CLI
 
 PORT = 8888
 
 PATH_MAPPINGS = {
-    '/js-input/speedometer': 'third_party/speedometer',
+    '/js-input/webkit/PerformanceTests': 'third_party/webkit/PerformanceTests',
 }
 
 
 if __name__ == '__main__':
     cli = CLI()
     debug_args, interactive = cli.debugger_arguments()
 
     build = MozbuildObject.from_environment()
new file mode 100644
--- /dev/null
+++ b/build/win32/mozconfig.vs2017
@@ -0,0 +1,27 @@
+if [ -z "${VSPATH}" ]; then
+    TOOLTOOL_DIR=${TOOLTOOL_DIR:-$topsrcdir}
+    VSPATH="$(cd ${TOOLTOOL_DIR} && pwd)/vs2017_15.4.1"
+fi
+
+if [ -d "${VSPATH}" ]; then
+    VSWINPATH="$(cd ${VSPATH} && pwd -W)"
+
+    export WINDOWSSDKDIR="${VSWINPATH}/SDK"
+    export WIN32_REDIST_DIR="${VSPATH}/VC/redist/x86/Microsoft.VC141.CRT"
+    export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x86"
+
+    export PATH="${VSPATH}/VC/bin/Hostx86/x86:${VSPATH}/VC/bin/Hostx64/x86:${VSPATH}/VC/bin/Hostx64/x64:${VSPATH}/SDK/bin/10.0.16299.0/x64:${VSPATH}/DIA SDK/bin:${PATH}"
+    export PATH="${VSPATH}/VC/redist/x86/Microsoft.VC141.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x86:${PATH}"
+
+    export INCLUDE="${VSPATH}/VC/include:${VSPATH}/VC/atlmfc/include:${VSPATH}/SDK/Include/10.0.16299.0/ucrt:${VSPATH}/SDK/Include/10.0.16299.0/shared:${VSPATH}/SDK/Include/10.0.16299.0/um:${VSPATH}/SDK/Include/10.0.16299.0/winrt:${VSPATH}/DIA SDK/include"
+    export LIB="${VSPATH}/VC/lib/x86:${VSPATH}/VC/atlmfc/lib/x86:${VSPATH}/SDK/Lib/10.0.16299.0/ucrt/x86:${VSPATH}/SDK/Lib/10.0.16299.0/um/x86:${VSPATH}/DIA SDK/lib"
+fi
+
+. $topsrcdir/build/mozconfig.vs-common
+
+mk_export_correct_style WINDOWSSDKDIR
+mk_export_correct_style WIN32_REDIST_DIR
+mk_export_correct_style WIN_UCRT_REDIST_DIR
+mk_export_correct_style PATH
+mk_export_correct_style INCLUDE
+mk_export_correct_style LIB
new file mode 100644
--- /dev/null
+++ b/build/win64/mozconfig.vs2017
@@ -0,0 +1,26 @@
+if [ -z "${VSPATH}" ]; then
+    TOOLTOOL_DIR=${TOOLTOOL_DIR:-$topsrcdir}
+    VSPATH="$(cd ${TOOLTOOL_DIR} && pwd)/vs2017_15.4.1"
+fi
+
+if [ -d "${VSPATH}" ]; then
+    VSWINPATH="$(cd ${VSPATH} && pwd -W)"
+
+    export WINDOWSSDKDIR="${VSWINPATH}/SDK"
+    export WIN32_REDIST_DIR=${VSPATH}/VC/redist/x64/Microsoft.VC141.CRT
+    export WIN_UCRT_REDIST_DIR="${VSPATH}/SDK/Redist/ucrt/DLLs/x64"
+
+    export PATH="${VSPATH}/VC/bin/Hostx64/x64:${VSPATH}/SDK/bin/10.0.16299.0/x64:${VSPATH}/VC/redist/x64/Microsoft.VC141.CRT:${VSPATH}/SDK/Redist/ucrt/DLLs/x64:${VSPATH}/DIA SDK/bin/amd64:${PATH}"
+
+    export INCLUDE="${VSPATH}/VC/include:${VSPATH}/VC/atlmfc/include:${VSPATH}/SDK/Include/10.0.16299.0/ucrt:${VSPATH}/SDK/Include/10.0.16299.0/shared:${VSPATH}/SDK/Include/10.0.16299.0/um:${VSPATH}/SDK/Include/10.0.16299.0/winrt:${VSPATH}/DIA SDK/include"
+    export LIB="${VSPATH}/VC/lib/x64:${VSPATH}/VC/atlmfc/lib/x64:${VSPATH}/SDK/Lib/10.0.16299.0/ucrt/x64:${VSPATH}/SDK/Lib/10.0.16299.0/um/x64:${VSPATH}/DIA SDK/lib/amd64"
+fi
+
+. $topsrcdir/build/mozconfig.vs-common
+
+mk_export_correct_style WINDOWSSDKDIR
+mk_export_correct_style WIN32_REDIST_DIR
+mk_export_correct_style WIN_UCRT_REDIST_DIR
+mk_export_correct_style PATH
+mk_export_correct_style INCLUDE
+mk_export_correct_style LIB
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/actions/index.js
@@ -0,0 +1,11 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+const { createEnum } = require("devtools/client/shared/enum");
+
+createEnum([
+
+], module.exports);
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/actions/moz.build
@@ -0,0 +1,9 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DevToolsModules(
+    'index.js',
+)
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/components/Flexbox.js
@@ -0,0 +1,26 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+const {
+  DOM: dom,
+  PureComponent,
+} = require("devtools/client/shared/vendor/react");
+
+class Flexbox extends PureComponent {
+  static get propTypes() {
+    return {};
+  }
+
+  render() {
+    return dom.div(
+      {
+        id: "layout-flexbox-container",
+      }
+    );
+  }
+}
+
+module.exports = Flexbox;
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/components/moz.build
@@ -0,0 +1,9 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DevToolsModules(
+    'Flexbox.js',
+)
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/flexbox.js
@@ -0,0 +1,23 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+class FlexboxInspector {
+
+  constructor(inspector, window) {
+    this.document = window.document;
+    this.inspector = inspector;
+    this.store = inspector.store;
+  }
+
+  destroy() {
+    this.document = null;
+    this.inspector = null;
+    this.store = null;
+  }
+
+}
+
+module.exports = FlexboxInspector;
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/moz.build
@@ -0,0 +1,16 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += [
+    'actions',
+    'components',
+    'reducers',
+]
+
+DevToolsModules(
+    'flexbox.js',
+    'types.js',
+)
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/reducers/flexboxes.js
@@ -0,0 +1,19 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+const INITIAL_FLEXBOXES = [];
+
+let reducers = {
+
+};
+
+module.exports = function (flexboxes = INITIAL_FLEXBOXES, action) {
+  let reducer = reducers[action.type];
+  if (!reducer) {
+    return flexboxes;
+  }
+  return reducer(flexboxes, action);
+};
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/reducers/index.js
@@ -0,0 +1,7 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+exports.flexboxes = require("./flexboxes");
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/reducers/moz.build
@@ -0,0 +1,10 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DevToolsModules(
+    'flexboxes.js',
+    'index.js',
+)
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/flexbox/types.js
@@ -0,0 +1,9 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+exports.flexbox = {
+
+};
--- a/devtools/client/inspector/layout/components/App.js
+++ b/devtools/client/inspector/layout/components/App.js
@@ -10,30 +10,34 @@ const {
   DOM: dom,
   PropTypes,
   PureComponent,
 } = require("devtools/client/shared/vendor/react");
 const { connect } = require("devtools/client/shared/vendor/react-redux");
 const { LocalizationHelper } = require("devtools/shared/l10n");
 
 const BoxModel = createFactory(require("devtools/client/inspector/boxmodel/components/BoxModel"));
+const Flexbox = createFactory(require("devtools/client/inspector/flexbox/components/Flexbox"));
 const Grid = createFactory(require("devtools/client/inspector/grids/components/Grid"));
 
 const BoxModelTypes = require("devtools/client/inspector/boxmodel/types");
 const GridTypes = require("devtools/client/inspector/grids/types");
 
 const Accordion = createFactory(require("./Accordion"));
 
 const BOXMODEL_STRINGS_URI = "devtools/client/locales/boxmodel.properties";
 const BOXMODEL_L10N = new LocalizationHelper(BOXMODEL_STRINGS_URI);
 
 const LAYOUT_STRINGS_URI = "devtools/client/locales/layout.properties";
 const LAYOUT_L10N = new LocalizationHelper(LAYOUT_STRINGS_URI);
 
+const FLEXBOX_ENABLED_PREF = "devtools.flexboxinspector.enabled";
+
 const BOXMODEL_OPENED_PREF = "devtools.layout.boxmodel.opened";
+const FLEXBOX_OPENED_PREF = "devtools.layout.flexbox.opened";
 const GRID_OPENED_PREF = "devtools.layout.grid.opened";
 
 class App extends PureComponent {
   static get propTypes() {
     return {
       boxModel: PropTypes.shape(BoxModelTypes.boxModel).isRequired,
       getSwatchColorPickerTooltip: PropTypes.func.isRequired,
       grids: PropTypes.arrayOf(PropTypes.shape(GridTypes.grid)).isRequired,
@@ -47,41 +51,55 @@ class App extends PureComponent {
       onShowBoxModelHighlighterForNode: PropTypes.func.isRequired,
       onToggleGridHighlighter: PropTypes.func.isRequired,
       onToggleShowGridLineNumbers: PropTypes.func.isRequired,
       onToggleShowInfiniteLines: PropTypes.func.isRequired,
     };
   }
 
   render() {
-    return dom.div(
+    let items = [
       {
-        id: "layout-container",
+        component: Grid,
+        componentProps: this.props,
+        header: LAYOUT_L10N.getStr("layout.header"),
+        opened: Services.prefs.getBoolPref(GRID_OPENED_PREF),
+        onToggled: () => {
+          let opened = Services.prefs.getBoolPref(GRID_OPENED_PREF);
+          Services.prefs.setBoolPref(GRID_OPENED_PREF, !opened);
+        }
+      },
+      {
+        component: BoxModel,
+        componentProps: this.props,
+        header: BOXMODEL_L10N.getStr("boxmodel.title"),
+        opened: Services.prefs.getBoolPref(BOXMODEL_OPENED_PREF),
+        onToggled: () => {
+          let opened = Services.prefs.getBoolPref(BOXMODEL_OPENED_PREF);
+          Services.prefs.setBoolPref(BOXMODEL_OPENED_PREF, !opened);
+        }
       },
-      Accordion({
-        items: [
-          {
-            component: Grid,
-            componentProps: this.props,
-            header: LAYOUT_L10N.getStr("layout.header"),
-            opened: Services.prefs.getBoolPref(GRID_OPENED_PREF),
-            onToggled: () => {
-              let opened = Services.prefs.getBoolPref(GRID_OPENED_PREF);
-              Services.prefs.setBoolPref(GRID_OPENED_PREF, !opened);
-            }
-          },
-          {
-            component: BoxModel,
-            componentProps: this.props,
-            header: BOXMODEL_L10N.getStr("boxmodel.title"),
-            opened: Services.prefs.getBoolPref(BOXMODEL_OPENED_PREF),
-            onToggled: () => {
-              let opened = Services.prefs.getBoolPref(BOXMODEL_OPENED_PREF);
-              Services.prefs.setBoolPref(BOXMODEL_OPENED_PREF, !opened);
-            }
-          },
-        ]
-      })
+    ];
+
+    if (Services.prefs.getBoolPref(FLEXBOX_ENABLED_PREF)) {
+      items = [
+        {
+          component: Flexbox,
+          componentProps: this.props,
+          header: LAYOUT_L10N.getStr("flexbox.header"),
+          opened: Services.prefs.getBoolPref(FLEXBOX_OPENED_PREF),
+          onToggled: () => {
+            let opened =  Services.prefs.getBoolPref(FLEXBOX_OPENED_PREF);
+            Services.prefs.setBoolPref(FLEXBOX_OPENED_PREF, !opened);
+          }
+        },
+        ...items
+      ];
+    }
+
+    return dom.div(
+      { id: "layout-container" },
+      Accordion({ items })
     );
   }
 }
 
 module.exports = connect(state => state)(App);
--- a/devtools/client/inspector/layout/layout.js
+++ b/devtools/client/inspector/layout/layout.js
@@ -8,16 +8,17 @@ const { createFactory, createElement } =
 const { Provider } = require("devtools/client/shared/vendor/react-redux");
 
 const App = createFactory(require("./components/App"));
 
 const { LocalizationHelper } = require("devtools/shared/l10n");
 const INSPECTOR_L10N =
   new LocalizationHelper("devtools/client/locales/inspector.properties");
 
+loader.lazyRequireGetter(this, "FlexboxInspector", "devtools/client/inspector/flexbox/flexbox");
 loader.lazyRequireGetter(this, "GridInspector", "devtools/client/inspector/grids/grid-inspector");
 
 function LayoutView(inspector, window) {
   this.document = window.document;
   this.inspector = inspector;
   this.store = inspector.store;
 
   this.init();
--- a/devtools/client/inspector/moz.build
+++ b/devtools/client/inspector/moz.build
@@ -2,16 +2,17 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += [
     'boxmodel',
     'components',
     'computed',
     'extensions',
+    'flexbox',
     'fonts',
     'grids',
     'layout',
     'markup',
     'rules',
     'shared'
 ]
 
--- a/devtools/client/inspector/reducers.js
+++ b/devtools/client/inspector/reducers.js
@@ -4,12 +4,13 @@
 
 "use strict";
 
 // This file exposes the Redux reducers of the box model, grid and grid highlighter
 // settings.
 
 exports.boxModel = require("devtools/client/inspector/boxmodel/reducers/box-model");
 exports.extensionsSidebar = require("devtools/client/inspector/extensions/reducers/sidebar");
+exports.flexboxes = require("devtools/client/inspector/flexbox/reducers/flexboxes");
 exports.fontOptions = require("devtools/client/inspector/fonts/reducers/font-options");
 exports.fonts = require("devtools/client/inspector/fonts/reducers/fonts");
 exports.grids = require("devtools/client/inspector/grids/reducers/grids");
 exports.highlighterSettings = require("devtools/client/inspector/grids/reducers/highlighter-settings");
--- a/devtools/client/locales/en-US/layout.properties
+++ b/devtools/client/locales/en-US/layout.properties
@@ -1,15 +1,18 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 # LOCALIZATION NOTE This file contains the Layout Inspector strings.
 # The Layout Inspector is a panel accessible in the Inspector sidebar.
 
+# LOCALIZATION NOTE (flexbox.header): The accordion header for the Flexbox pane.
+flexbox.header=Flexbox
+
 # LOCALIZATION NOTE (layout.cannotShowGridOutline, layout.cannotSHowGridOutline.title):
 # In the case where the grid outline cannot be effectively displayed.
 layout.cannotShowGridOutline=Cannot show outline for this grid
 layout.cannotShowGridOutline.title=The selected grid’s outline cannot effectively fit inside the layout panel for it to be usable.
 
 # LOCALIZATION NOTE (layout.displayAreaNames): Label of the display area names setting
 # option in the CSS Grid pane.
 layout.displayAreaNames=Display area names
--- a/devtools/client/preferences/devtools.js
+++ b/devtools/client/preferences/devtools.js
@@ -56,28 +56,33 @@ pref("devtools.inspector.imagePreviewToo
 pref("devtools.inspector.showUserAgentStyles", false);
 // Show all native anonymous content (like controls in <video> tags)
 pref("devtools.inspector.showAllAnonymousContent", false);
 // Enable the new color widget
 pref("devtools.inspector.colorWidget.enabled", false);
 // Enable the CSS shapes highlighter
 pref("devtools.inspector.shapesHighlighter.enabled", true);
 
+// Enable the Flexbox Inspector
+pref("devtools.flexboxinspector.enabled", false);
+
 // Grid highlighter preferences
 pref("devtools.gridinspector.gridOutlineMaxColumns", 50);
 pref("devtools.gridinspector.gridOutlineMaxRows", 50);
 pref("devtools.gridinspector.showGridAreas", false);
 pref("devtools.gridinspector.showGridLineNumbers", false);
 pref("devtools.gridinspector.showInfiniteLines", false);
 pref("devtools.gridinspector.showNegativeLineNumbers", false);
 
 // Whether or not the box model panel is opened in the computed view
 pref("devtools.computed.boxmodel.opened", true);
 // Whether or not the box model panel is opened in the layout view
 pref("devtools.layout.boxmodel.opened", true);
+// Whether or not the flexbox panel is opened in the layout view
+pref("devtools.layout.flexbox.opened", true);
 // Whether or not the grid inspector panel is opened in the layout view
 pref("devtools.layout.grid.opened", true);
 
 // By how many times eyedropper will magnify pixels
 pref("devtools.eyedropper.zoom", 6);
 
 // Enable to collapse attributes that are too long.
 pref("devtools.markup.collapseAttributes", true);
--- a/devtools/client/shared/browser-loader.js
+++ b/devtools/client/shared/browser-loader.js
@@ -8,16 +8,17 @@ const loaders = Cu.import("resource://de
 const { devtools } = Cu.import("resource://devtools/shared/Loader.jsm", {});
 const { joinURI } = devtools.require("devtools/shared/path");
 const { assert } = devtools.require("devtools/shared/DevToolsUtils");
 const { AppConstants } = devtools.require("resource://gre/modules/AppConstants.jsm");
 
 const BROWSER_BASED_DIRS = [
   "resource://devtools/client/inspector/boxmodel",
   "resource://devtools/client/inspector/computed",
+  "resource://devtools/client/inspector/flexbox",
   "resource://devtools/client/inspector/fonts",
   "resource://devtools/client/inspector/grids",
   "resource://devtools/client/inspector/layout",
   "resource://devtools/client/jsonview",
   "resource://devtools/client/shared/source-map",
   "resource://devtools/client/shared/redux",
   "resource://devtools/client/shared/vendor",
 ];
--- a/devtools/server/actors/errordocs.js
+++ b/devtools/server/actors/errordocs.js
@@ -68,17 +68,16 @@ const ErrorDocs = {
   JSMSG_NO_VARIABLE_NAME: "No_variable_name",
   JSMSG_UNNAMED_FUNCTION_STMT: "Unnamed_function_statement",
   JSMSG_CANT_DEFINE_PROP_OBJECT_NOT_EXTENSIBLE:
     "Cant_define_property_object_not_extensible",
   JSMSG_TYPED_ARRAY_BAD_ARGS: "Typed_array_invalid_arguments",
   JSMSG_GETTER_ONLY: "Getter_only",
   JSMSG_INVALID_DATE: "Invalid_date",
   JSMSG_DEPRECATED_STRING_METHOD: "Deprecated_String_generics",
-  JSMSG_DEPRECATED_TOLOCALEFORMAT: "Deprecated_toLocaleFormat",
   JSMSG_RESERVED_ID: "Reserved_identifier",
   JSMSG_BAD_CONST_ASSIGN: "Invalid_const_assignment",
   JSMSG_BAD_CONST_DECL: "Missing_initializer_in_const",
   JSMSG_OF_AFTER_FOR_LOOP_DECL: "Invalid_for-of_initializer",
   JSMSG_BAD_URI: "Malformed_URI",
   JSMSG_DEPRECATED_DELETE_OPERAND: "Delete_in_strict_mode",
   JSMSG_MISSING_FORMAL: "Missing_formal_parameter",
   JSMSG_CANT_TRUNCATE_ARRAY: "Non_configurable_array_element",
--- a/dom/base/ShadowRoot.cpp
+++ b/dom/base/ShadowRoot.cpp
@@ -495,18 +495,16 @@ ShadowRoot::AttributeChanged(nsIDocument
                              int32_t aModType,
                              const nsAttrValue* aOldValue)
 {
   if (!IsPooledNode(aElement)) {
     return;
   }
 
   // Attributes may change insertion point matching, find its new distribution.
-  //
-  // FIXME(emilio): What about state changes?
   if (!RedistributeElement(aElement)) {
     return;
   }
 
   if (!aElement->IsInComposedDoc()) {
     return;
   }
 
--- a/dom/canvas/CanvasRenderingContext2D.cpp
+++ b/dom/canvas/CanvasRenderingContext2D.cpp
@@ -4355,22 +4355,22 @@ struct MOZ_STACK_CLASS CanvasBidiProcess
     const CanvasPattern* pat = mCtx->CurrentState().patternStyles[aStyle];
     RefPtr<gfxPattern> pattern = new gfxPattern(pat->mSurface, Matrix());
     pattern->SetExtend(CvtCanvasRepeatToGfxRepeat(pat->mRepeat));
     return pattern.forget();
   }
 
   virtual void DrawText(nscoord aXOffset, nscoord aWidth)
   {
-    gfxPoint point = mPt;
+    gfx::Point point = mPt;
     bool rtl = mTextRun->IsRightToLeft();
     bool verticalRun = mTextRun->IsVertical();
     RefPtr<gfxPattern> pattern;
 
-    gfxFloat& inlineCoord = verticalRun ? point.y : point.x;
+    float& inlineCoord = verticalRun ? point.y : point.x;
     inlineCoord += aXOffset;
 
     // offset is given in terms of left side of string
     if (rtl) {
       // Bug 581092 - don't use rounded pixel width to advance to
       // right-hand end of run, because this will cause different
       // glyph positioning for LTR vs RTL drawing of the same
       // glyph string on OS X and DWrite where textrun widths may
@@ -4470,17 +4470,17 @@ struct MOZ_STACK_CLASS CanvasBidiProcess
 
   // pointer to a screen reference context used to measure text and such
   RefPtr<DrawTarget> mDrawTarget;
 
   // Pointer to the draw target we should fill our text to
   CanvasRenderingContext2D* mCtx;
 
   // position of the left side of the string, alphabetic baseline
-  gfxPoint mPt;
+  gfx::Point mPt;
 
   // current font
   gfxFontGroup* mFontgrp;
 
   // to record any unsupported characters found in the text,
   // and notify front-end if it is interested
   nsAutoPtr<gfxMissingFontRecorder> mMissingFonts;
 
@@ -4585,17 +4585,17 @@ CanvasRenderingContext2D::DrawOrMeasureT
   processor.mTextRunFlags = canvasStyle
     ? nsLayoutUtils::GetTextRunFlagsForStyle(canvasStyle,
                                              canvasStyle->StyleFont(),
                                              canvasStyle->StyleText(),
                                              0)
     : gfx::ShapedTextFlags();
 
   GetAppUnitsValues(&processor.mAppUnitsPerDevPixel, nullptr);
-  processor.mPt = gfxPoint(aX, aY);
+  processor.mPt = gfx::Point(aX, aY);
   processor.mDrawTarget =
     gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget();
 
   // If we don't have a target then we don't have a transform. A target won't
   // be needed in the case where we're measuring the text size. This allows
   // to avoid creating a target if it's only being used to measure text sizes.
   if (mTarget) {
     processor.mDrawTarget->SetTransform(mTarget->GetTransform());
@@ -4692,17 +4692,17 @@ CanvasRenderingContext2D::DrawOrMeasureT
     }
     processor.mPt.x -= baselineAnchor;
   } else {
     processor.mPt.y += baselineAnchor;
   }
 
   // correct bounding box to get it to be the correct size/position
   processor.mBoundingBox.width = totalWidth;
-  processor.mBoundingBox.MoveBy(processor.mPt);
+  processor.mBoundingBox.MoveBy(gfxPoint(processor.mPt.x, processor.mPt.y));
 
   processor.mPt.x *= processor.mAppUnitsPerDevPixel;
   processor.mPt.y *= processor.mAppUnitsPerDevPixel;
 
   EnsureTarget();
   if (!IsTargetValid()) {
     return NS_ERROR_FAILURE;
   }
--- a/gfx/src/nsFontMetrics.cpp
+++ b/gfx/src/nsFontMetrics.cpp
@@ -359,17 +359,17 @@ nsFontMetrics::DrawString(const char *aS
     if (aLength == 0)
         return;
 
     StubPropertyProvider provider;
     AutoTextRun textRun(this, aContext->GetDrawTarget(), aString, aLength);
     if (!textRun.get()) {
         return;
     }
-    gfxPoint pt(aX, aY);
+    gfx::Point pt(aX, aY);
     Range range(0, aLength);
     if (mTextRunRTL) {
         if (mVertical) {
             pt.y += textRun->GetAdvanceWidth(range, &provider);
         } else {
             pt.x += textRun->GetAdvanceWidth(range, &provider);
         }
     }
@@ -387,17 +387,17 @@ nsFontMetrics::DrawString(const char16_t
     if (aLength == 0)
         return;
 
     StubPropertyProvider provider;
     AutoTextRun textRun(this, aTextRunConstructionDrawTarget, aString, aLength);
     if (!textRun.get()) {
         return;
     }
-    gfxPoint pt(aX, aY);
+    gfx::Point pt(aX, aY);
     Range range(0, aLength);
     if (mTextRunRTL) {
         if (mVertical) {
             pt.y += textRun->GetAdvanceWidth(range, &provider);
         } else {
             pt.x += textRun->GetAdvanceWidth(range, &provider);
         }
     }
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/1221304.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<script>
+
+function boom() {
+    var canvas = document.createElement('canvas');
+    var ctx = canvas.getContext('2d');
+    ctx.arc(32, 2, 64, 512, 1024, false);
+    ctx.scale(256, 16);
+    ctx.transform(32, 64, 16, 256, 0.5000140400370615, -0.6268189185361422);
+    ctx.scale(2, 0.33614443599622335);
+    ctx.transform(16, -64, 512, 0.5546715728833042, 4, -0.09260164319830985);
+    ctx.isPointInStroke(1024, 2048);
+}
+
+</script>
+</head>
+<body onload="boom();"></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/1228127.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<script>
+
+function boom() {
+    var canvas = document.createElement('canvas');
+    var ctx = canvas.getContext('2d');
+    ctx.scale(49572022, 5988146080);
+    ctx.rotate(243.375);
+    ctx.transform(55.3, 963, 130.57142857142858, 26, 48.4, 13.666666666666666);
+    ctx.lineWidth = 212.5;
+    ctx.strokeText("abcdefghijklmnopqrstuvw", 0, 0, 329.3333333333333);
+}
+
+</script>
+</head>
+<body onload="boom();"></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/1229972.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<script>
+
+function boom() {
+    var canvas = document.createElement('canvas');
+    var ctx = canvas.getContext('2d');
+    ctx.scale(2, 0);
+    ctx.fillText("AB", 0, 0, 1);
+}
+
+</script>
+</head>
+<body onload="boom();"></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/1242811.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<script>
+
+function boom() {
+    var canvasA = document.createElement('canvas');
+    var ctxA = (canvasA.getContext('2d'));
+
+    var canvasB = document.createElement('canvas');
+    var ctxB = (canvasB.getContext('2d'));
+
+    var canvasC = document.createElement('canvas');
+    var ctxC = (canvasC.getContext('2d'));
+
+    var canvasD = document.createElement('canvas');
+    document.body.appendChild(canvasD);
+    var ctxD = (canvasD.getContext('2d'));
+
+    ctxB.setTransform(0.11269837969744075, 0.5254615427752635, 0.2, 4, 0.8446743569440848, 0.144);
+    ctxB.strokeText("DDDD",2,16);
+
+    ctxC.setTransform(8,0.10555935723370857,-2,0.35743616669379086,8,0.6599638731358489);
+    ctxC.strokeText("CCCC",0.309,0.7226920560287992);
+
+    ctxD.setTransform(-6, -0.40335219665508537, -32, -16, 8, 0.06330341125449711);
+    ctxD.fillText("AAAAAAAA",0.749783522856837,3);
+
+    setTimeout(function() {
+
+        canvasC.height = 400;
+
+        setTimeout(function() {
+
+            ctxA.setTransform(-0.2578973174095154, 0, 8, -41.83665466308594, 4.02983283996582, 1041.4510498046875);
+            ctxA.fillText("AA",16,0.417);
+
+            ctxC.setTransform(0.22722245734818802, 0.04656468332897981, 8, 8, 2, 256);
+            ctxC.strokeText("QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ",2048,-0.903);
+
+        }, 0);
+
+    }, 0);
+}
+
+</script>
+</head>
+<body onload="boom();"></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/1242822.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<script>
+
+function boom() {
+    var canvas = document.createElement('canvas');
+    var ctx = canvas.getContext('2d');
+    ctx.shadowBlur = 1024;
+    ctx.shadowColor = "red"
+    ctx.transform(16384,-0.6842606067657471,32768,-1.0760749578475952,2048,-1.9289406538009644);
+    ctx.strokeText("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",0.691153419364978,0.7370920539221475);
+}
+
+</script>
+</head>
+<body onload="boom();"></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/1248222.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<script>
+
+function boom() {
+    var canvas = document.createElement('canvas');
+    var ctx = canvas.getContext('2d');
+    ctx.setTransform(0.1393438068077303, 0.25634277175561127, 512, 32, 0.5548660053300825, 8);
+    ctx.transform(16, 1024, -0.958697722982312, 6, 32, 256);
+    ctx.fillRect(0.20365260220217812, -0.8620547922006936, 1, 0.6929549739446852);
+}
+
+</script>
+</head>
+<body onload="boom();"></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/746491.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.lineTo(0, 3);
+  ctx.moveTo(0, 1);
+  ctx.isPointInPath(0, 2);
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/746495.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.scale(69.25, 61);
+  ctx.transform(87.875, 89.5, 317.6666666666667, 86.5, 93, 196);
+  ctx.bezierCurveTo(30.142857142857142, 13926147670, 66.66666666666667, 243.66666666666666, 42.6, 85.5);
+  ctx.arc(1.6, 364955956612165500, 110.375, 15.1, 80.55555555555556, 0);
+  ctx.shadowColor = "green";
+  ctx.shadowOffsetY = 754;
+  ctx.lineJoin = 'round';
+  ctx.setTransform(95.125, 11, 834, 34.5, 265.3333333333333, 26.4);
+  ctx.stroke();
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/746497.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.arc(112.75, 22.8, 10.142857142857142, 20.5, 196, 1);
+  ctx.translate(48.22222222222222, 18.25);
+  ctx.lineTo(7, 50);
+  ctx.scale(445, 24.22222222222222);
+  ctx.stroke();
+  ctx.stroke();
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/746844.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.rotate(108);
+  ctx.shadowBlur = 220.75;
+  ctx.shadowColor = "#777777";
+  ctx.bezierCurveTo(450, 24.857142857142858, 191, 75.71428571428571, -1125899906842623, 0);
+  ctx.transform(843, 152.66666666666666, 42.7, 65.33333333333333, 86.66666666666667, 30.714285714285715);
+  ctx.transform(204, 112.5, 159, 96.75, 239.33333333333334, 0);
+  ctx.bezierCurveTo(42.4, 96.44444444444444, 480.5, 185.5, 44.666666666666664, 90.14285714285714);
+  ctx.isPointInPath(71.5, 81);
+  ctx.fill();
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/746847.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.setTransform(75.875, 113.8, 144, 55, 185.4, 310);
+  ctx.translate(26.5, 72.6);
+  ctx.arcTo(183.6, 29.6, 94.33333333333333, 1, 72057594037927940);
+  ctx.arcTo(75.83333333333333, 73.71428571428571, 40.4, 88.8, 23.285714285714285);
+  ctx.fill();
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/746849.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.rect(1, 2, 3, 4);
+  ctx.fill();
+  for (var i = 0; i < 48; ++i) {
+    ctx.scale(100, 100); 
+  }
+  ctx.isPointInPath(5, 6);
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/746866.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.rotate(17);
+  ctx.closePath();
+  ctx.setTransform(107, 16, 113, 76, 0, 165);
+  ctx.lineTo(4, 0);
+  ctx.arc(104, -8191, 35, 50, 359, 0);
+  ctx.scale(74.75, 729);
+  ctx.stroke();
+  ctx.stroke();
+  ctx.lineTo(-1, 40);
+  ctx.isPointInPath(92, 463);
+  ctx.clip();
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/747132.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.strokeRect(0.5, 1, 2, 3);
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="100" height="100"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/747302.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+function boom()
+{
+  var ctx = document.querySelector("canvas").getContext('2d');
+  ctx.rotate(470);
+  ctx.clearRect(71.5, -0.5, 666, 380);
+}
+
+</script>
+</head>
+<body onload="boom();"><canvas width="41700" height="500"></canvas></body>
+</html>
new file mode 100644
--- /dev/null
+++ b/gfx/tests/crashtests/895233.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<script>
+
+function boom()
+{
+  var canvas = document.createElement('canvas');
+  var ctx = canvas.getContext('2d');
+  ctx.isPointInPath(7.5, 900);
+  ctx.setTransform(44.333333333333336, 61, 256.3333333333333, 135.8, 810, 200);
+  ctx.save();
+  ctx.bezierCurveTo(63, 91, 520, 83, 213.66666666666666, 384);
+  ctx.closePath();
+  ctx.bezierCurveTo(0.5, 83.16666666666667, 209, 276, 3.6, 453.5);
+  ctx.stroke();
+  ctx.restore();
+  ctx.isPointInStroke(0, 0);
+  ctx.setTransform(445, 33, 0, 403.5, 175.2, 49.4);
+  ctx.rotate(83.125);
+  ctx.transform(2097153, 477.5, 34.888888888888886, 63, 9.5, 914);
+  ctx.isPointInStroke(0, 0);
+}
+
+</script>
+</head>
+<body onload="boom();"></body>
+</html>
--- a/gfx/tests/crashtests/crashtests.list
+++ b/gfx/tests/crashtests/crashtests.list
@@ -100,16 +100,25 @@ load 665218.html
 load 675550-1.html
 load 686190-1.html
 load 691330.svg
 load 691581-1.html
 load 693143-1.html
 load 696936-1.html
 load 699563-1.html
 load 710149-1.html
+load 746491.html
+load 746495.html
+load 746497.html
+load 746844.html
+load 746847.html
+load 746849.html
+load 746866.html
+load 747132.html
+load 747302.html
 load 766452-1.html
 load 766452-2.html
 load 768079-1.html
 load 783041-1.html
 load 783041-2.html
 load 783041-3.html
 load 783041-4.html
 load 798853.html # bug 868792
@@ -117,27 +126,34 @@ load 805760-1.html
 skip-if(Android) load 815489.html # bug 1216304
 load 836225-1.html
 load 839745-1.html
 load 856784-1.html
 load 893572-1.html
 load 893572-2.html
 load 893572-3.html
 load 893572-4.html
+load 895233.html
 pref(layers.force-active,true) load 914457-1.html
 load 944579.svg
 load 944579.html
 pref(security.fileuri.strict_origin_policy,false) load 950000.html
 load 1011218.html
 load 1034403-1.html
 load 1056516.html
 load 1205900.html
 load 1134549-1.svg
 load balinese-letter-spacing.html
 load 1216832-1.html
+load 1221304.html
 load 1225125-1.html
+load 1228127.html
+load 1229972.html
+load 1242811.html
+load 1242822.html
+load 1248222.html
 load 1278305.html
 load 1308394.html
 load 1317403-1.html # bug 1331533
 load 1325159-1.html
 load 1331683.html
 skip-if(Android) pref(dom.disable_open_during_load,false) load 1343666.html
 load 1408078-1.html
--- a/gfx/thebes/gfxFont.cpp
+++ b/gfx/thebes/gfxFont.cpp
@@ -1580,84 +1580,101 @@ static AntialiasMode Get2DAAMode(gfxFont
     return AntialiasMode::NONE;
   default:
     return AntialiasMode::DEFAULT;
   }
 }
 
 class GlyphBufferAzure
 {
+#define AUTO_BUFFER_SIZE (2048/sizeof(Glyph))
+
     typedef mozilla::image::imgDrawingParams imgDrawingParams;
 
 public:
     GlyphBufferAzure(const TextRunDrawParams& aRunParams,
                      const FontDrawParams&    aFontParams)
         : mRunParams(aRunParams)
         , mFontParams(aFontParams)
+        , mBuffer(*mAutoBuffer.addr())
+        , mBufSize(AUTO_BUFFER_SIZE)
+        , mCapacity(0)
         , mNumGlyphs(0)
     {
     }
 
     ~GlyphBufferAzure()
     {
-        Flush(true); // flush any remaining buffered glyphs
+        if (mNumGlyphs > 0) {
+            Flush();
+        }
+
+        if (mBuffer != *mAutoBuffer.addr()) {
+            free(mBuffer);
+        }
     }
 
-    void OutputGlyph(uint32_t aGlyphID, const gfxPoint& aPt)
+    // Ensure the buffer has enough space for aGlyphCount glyphs to be added.
+    // This MUST be called before OutputGlyph is used to actually store glyph
+    // records in the buffer. It may be called repeated to add further capacity
+    // in case we don't know up-front exactly what will be needed.
+    void AddCapacity(uint32_t aGlyphCount)
     {
-        Glyph *glyph = AppendGlyph();
+        // See if the required capacity fits within the already-allocated space
+        if (mCapacity + aGlyphCount <= mBufSize) {
+            mCapacity += aGlyphCount;
+            return;
+        }
+        // We need to grow the buffer: determine a new size, allocate, and
+        // copy the existing data over if we didn't use realloc (which would
+        // do it automatically).
+        mBufSize = std::max(mCapacity + aGlyphCount, mBufSize * 2);
+        if (mBuffer == *mAutoBuffer.addr()) {
+            // switching from autobuffer to malloc, so we need to copy
+            mBuffer =
+                reinterpret_cast<Glyph*>(moz_xmalloc(mBufSize * sizeof(Glyph)));
+            std::memcpy(mBuffer, *mAutoBuffer.addr(),
+                        mNumGlyphs * sizeof(Glyph));
+        } else {
+            mBuffer =
+                reinterpret_cast<Glyph*>(moz_xrealloc(mBuffer,
+                                                      mBufSize * sizeof(Glyph)));
+        }
+        mCapacity += aGlyphCount;
+    }
+
+    void OutputGlyph(uint32_t aGlyphID, const gfx::Point& aPt)
+    {
+        // Check that AddCapacity has been used appropriately!
+        MOZ_ASSERT(mNumGlyphs < mCapacity);
+        Glyph* glyph = mBuffer + mNumGlyphs++;
         glyph->mIndex = aGlyphID;
-        glyph->mPosition.x = aPt.x;
-        glyph->mPosition.y = aPt.y;
-        glyph->mPosition = mFontParams.matInv.TransformPoint(glyph->mPosition);
-        Flush(false); // this will flush only if the buffer is full
+        glyph->mPosition = mFontParams.matInv.TransformPoint(aPt);
     }
 
     const TextRunDrawParams& mRunParams;
     const FontDrawParams& mFontParams;
 
 private:
-#define GLYPH_BUFFER_SIZE (2048/sizeof(Glyph))
-
-    Glyph* GlyphBuffer()
-    {
-        return *mGlyphBuffer.addr();
-    }
-
-
-    Glyph *AppendGlyph()
-    {
-        return &GlyphBuffer()[mNumGlyphs++];
-    }
-
     static DrawMode
     GetStrokeMode(DrawMode aMode)
     {
         return aMode & (DrawMode::GLYPH_STROKE |
                         DrawMode::GLYPH_STROKE_UNDERNEATH);
     }
 
-    // Render the buffered glyphs to the draw target and clear the buffer.
-    // This actually flushes the glyphs only if the buffer is full, or if the
-    // aFinish parameter is true; otherwise it simply returns.
-    void Flush(bool aFinish)
+    // Render the buffered glyphs to the draw target.
+    void Flush()
     {
-        // Ensure there's enough room for a glyph to be added to the buffer
-        if ((!aFinish && mNumGlyphs < GLYPH_BUFFER_SIZE) || !mNumGlyphs) {
-            return;
-        }
-
         if (mRunParams.isRTL) {
-            Glyph *begin = &GlyphBuffer()[0];
-            Glyph *end = &GlyphBuffer()[mNumGlyphs];
-            std::reverse(begin, end);
+            std::reverse(mBuffer, mBuffer + mNumGlyphs);
         }
 
         gfx::GlyphBuffer buf;
-        buf.mGlyphs = GlyphBuffer();
+        buf.mGlyphs = mBuffer;
         buf.mNumGlyphs = mNumGlyphs;
 
         const gfxContext::AzureState &state = mRunParams.context->CurrentState();
         if (mRunParams.drawMode & DrawMode::GLYPH_FILL) {
             if (state.pattern || mFontParams.contextPaint) {
                 Pattern *pat;
 
                 RefPtr<gfxPattern> fillPattern;
@@ -1776,35 +1793,73 @@ private:
             }
         }
         if (mRunParams.drawMode & DrawMode::GLYPH_PATH) {
             mRunParams.context->EnsurePathBuilder();
             Matrix mat = mRunParams.dt->GetTransform();
             mFontParams.scaledFont->CopyGlyphsToBuilder(
                 buf, mRunParams.context->mPathBuilder, &mat);
         }
-
-        mNumGlyphs = 0;
     }
 
     void FlushStroke(gfx::GlyphBuffer& aBuf, const Pattern& aPattern)
     {
         mRunParams.dt->StrokeGlyphs(mFontParams.scaledFont, aBuf,
                                     aPattern,
                                     *mRunParams.strokeOpts,
                                     mFontParams.drawOptions,
                                     mFontParams.renderingOptions);
     }
 
+    // We use an "inline" buffer automatically allocated (on the stack) as part
+    // of the GlyphBufferAzure object to hold the glyphs in most cases, falling
+    // back to a separately-allocated heap buffer if the count of buffered
+    // glyphs gets too big.
+    //
+    // This is basically a rudimentary AutoTArray; so why not use AutoTArray
+    // itself?
+    //
+    // If we used an AutoTArray, we'd want to avoid using SetLength or
+    // AppendElements to allocate the space we actually need, because those
+    // methods would default-construct the new elements.
+    //
+    // Could we use SetCapacity to reserve the necessary buffer space without
+    // default-constructing all the Glyph records? No, because of a failure
+    // that could occur when we need to grow the buffer, which happens when we
+    // encounter a DetailedGlyph in the textrun that refers to a sequence of
+    // several real glyphs. At that point, we need to add some extra capacity
+    // to the buffer we initially allocated based on the length of the textrun
+    // range we're rendering.
+    //
+    // This buffer growth would work fine as long as it still fits within the
+    // array's inline buffer (we just use a bit more of it), or if the buffer
+    // was already heap-allocated (in which case AutoTArray will use realloc(),
+    // preserving its contents). But a problem will arise when the initial
+    // capacity we allocated (based on the length of the run) fits within the
+    // array's inline buffer, but subsequently we need to extend the buffer
+    // beyond the inline buffer size, so we reallocate to the heap. Because we
+    // haven't "officially" filled the array with SetLength or AppendElements,
+    // its mLength is still zero; as far as it's concerned the buffer is just
+    // uninitialized space, and when it switches to use a malloc'd buffer it
+    // won't copy the existing contents.
+
     // Allocate space for a buffer of Glyph records, without initializing them.
-    AlignedStorage2<Glyph[GLYPH_BUFFER_SIZE]> mGlyphBuffer;
-
-    unsigned int mNumGlyphs;
-
-#undef GLYPH_BUFFER_SIZE
+    AlignedStorage2<Glyph[AUTO_BUFFER_SIZE]> mAutoBuffer;
+
+    // Pointer to the buffer we're currently using -- initially mAutoBuffer,
+    // but may be changed to a malloc'd buffer, in which case that buffer must
+    // be free'd on destruction.
+    Glyph* mBuffer;
+
+    uint32_t mBufSize;   // size of allocated buffer; capacity can grow to
+                         // this before reallocation is needed
+    uint32_t mCapacity;  // amount of buffer size reserved
+    uint32_t mNumGlyphs; // number of glyphs actually present in the buffer
+
+#undef AUTO_BUFFER_SIZE
 };
 
 // Bug 674909. When synthetic bolding text by drawing twice, need to
 // render using a pixel offset in device pixels, otherwise text
 // doesn't appear bolded, it appears as if a bad text shadow exists
 // when a non-identity transform exists.  Use an offset factor so that
 // the second draw occurs at a constant offset in device pixels.
 
@@ -1824,249 +1879,254 @@ gfxFont::CalcXScale(DrawTarget* aDrawTar
     if (m == 0.0) {
         return 0.0; // effectively disables offset
     }
 
     // scale factor so that offsets are 1px in device pixels
     return 1.0 / m;
 }
 
-// Draw an individual glyph at a specific location.
-// *aPt is the glyph position in appUnits; it is converted to device
-// coordinates (devPt) here.
-void
-gfxFont::DrawOneGlyph(uint32_t aGlyphID, double aAdvance, gfxPoint *aPt,
-                      GlyphBufferAzure& aBuffer, bool *aEmittedGlyphs) const
-{
-    const TextRunDrawParams& runParams(aBuffer.mRunParams);
-    const FontDrawParams& fontParams(aBuffer.mFontParams);
-
-    double glyphX, glyphY;
-    if (fontParams.isVerticalFont) {
-        glyphX = aPt->x;
-        if (runParams.isRTL) {
-            aPt->y -= aAdvance;
-            glyphY = aPt->y;
-        } else {
-            glyphY = aPt->y;
-            aPt->y += aAdvance;
-        }
-    } else {
-        glyphY = aPt->y;
-        if (runParams.isRTL) {
-            aPt->x -= aAdvance;
-            glyphX = aPt->x;
-        } else {
-            glyphX = aPt->x;
-            aPt->x += aAdvance;
-        }
-    }
-    gfxPoint devPt(ToDeviceUnits(glyphX, runParams.devPerApp),
-                   ToDeviceUnits(glyphY, runParams.devPerApp));
-
-    if (fontParams.haveSVGGlyphs) {
-        if (!runParams.paintSVGGlyphs) {
-            return;
-        }
-        NS_WARNING_ASSERTION(
-          runParams.drawMode != DrawMode::GLYPH_PATH,
-          "Rendering SVG glyph despite request for glyph path");
-        if (RenderSVGGlyph(runParams.context, devPt,
-                           aGlyphID, fontParams.contextPaint,
-                           runParams.callbacks, *aEmittedGlyphs)) {
-            return;
-        }
-    }
-
-    if (fontParams.haveColorGlyphs &&
-        RenderColorGlyph(runParams.dt, runParams.context,
-                         fontParams.scaledFont, fontParams.renderingOptions,
-                         fontParams.drawOptions,
-                         fontParams.matInv.TransformPoint(gfx::Point(devPt.x, devPt.y)),
-                         aGlyphID)) {
-        return;
-    }
-
-    aBuffer.OutputGlyph(aGlyphID, devPt);
-
-    // Synthetic bolding (if required) by multi-striking.
-    for (int32_t i = 0; i < fontParams.extraStrikes; ++i) {
-        if (fontParams.isVerticalFont) {
-            devPt.y += fontParams.synBoldOnePixelOffset;
-        } else {
-            devPt.x += fontParams.synBoldOnePixelOffset;
-        }
-        aBuffer.OutputGlyph(aGlyphID, devPt);
-    }
-
-    *aEmittedGlyphs = true;
-}
-
 // Draw a run of CharacterGlyph records from the given offset in aShapedText.
 // Returns true if glyph paths were actually emitted.
+template<gfxFont::FontComplexityT FC, gfxFont::SpacingT S>
 bool
-gfxFont::DrawGlyphs(const gfxShapedText      *aShapedText,
-                    uint32_t                  aOffset, // offset in the textrun
-                    uint32_t                  aCount, // length of run to draw
-                    gfxPoint                 *aPt,
-                    const TextRunDrawParams&  aRunParams,
-                    const FontDrawParams&     aFontParams)
+gfxFont::DrawGlyphs(const gfxShapedText*     aShapedText,
+                    uint32_t                 aOffset, // offset in the textrun
+                    uint32_t                 aCount, // length of run to draw
+                    gfx::Point*              aPt,
+                    GlyphBufferAzure&        aBuffer)
 {
-    bool emittedGlyphs = false;
-    GlyphBufferAzure buffer(aRunParams, aFontParams);
-
-    gfxFloat& inlineCoord = aFontParams.isVerticalFont ? aPt->y : aPt->x;
-
-    if (aRunParams.spacing) {
-        inlineCoord += aRunParams.isRTL ? -aRunParams.spacing[0].mBefore
-                                        : aRunParams.spacing[0].mBefore;
-    }
+    float& inlineCoord = aBuffer.mFontParams.isVerticalFont ? aPt->y : aPt->x;
 
     const gfxShapedText::CompressedGlyph *glyphData =
         &aShapedText->GetCharacterGlyphs()[aOffset];
 
+    if (S == SpacingT::HasSpacing) {
+        float space = aBuffer.mRunParams.spacing[0].mBefore;
+        inlineCoord += aBuffer.mRunParams.isRTL ? - space : space;
+    }
+
+    // Allocate buffer space for the run, assuming all simple glyphs.
+    uint32_t capacityMult = 1 + aBuffer.mFontParams.extraStrikes;
+    aBuffer.AddCapacity(capacityMult * aCount);
+
+    bool emittedGlyphs = false;
+
     for (uint32_t i = 0; i < aCount; ++i, ++glyphData) {
         if (glyphData->IsSimpleGlyph()) {
-            DrawOneGlyph(glyphData->GetSimpleGlyph(),
-                         glyphData->GetSimpleAdvance(),
-                         aPt, buffer, &emittedGlyphs);
+            float advance = glyphData->GetSimpleAdvance();
+            if (aBuffer.mRunParams.isRTL) {
+                inlineCoord -= advance;
+            }
+            DrawOneGlyph<FC>(glyphData->GetSimpleGlyph(), *aPt, aBuffer,
+                             &emittedGlyphs);
+            if (!aBuffer.mRunParams.isRTL) {
+                inlineCoord += advance;
+            }
         } else {
             uint32_t glyphCount = glyphData->GetGlyphCount();
             if (glyphCount > 0) {
+                // Add extra buffer capacity to allow for multiple-glyph entry.
+                aBuffer.AddCapacity(capacityMult * (glyphCount - 1));
                 const gfxShapedText::DetailedGlyph *details =
                     aShapedText->GetDetailedGlyphs(aOffset + i);
-                NS_ASSERTION(details, "detailedGlyph should not be missing!");
+                MOZ_ASSERT(details, "missing DetailedGlyph!");
                 for (uint32_t j = 0; j < glyphCount; ++j, ++details) {
-                    double advance = details->mAdvance;
-
+                    float advance = details->mAdvance;
+                    if (aBuffer.mRunParams.isRTL) {
+                        inlineCoord -= advance;
+                    }
                     if (glyphData->IsMissing()) {
-                        // Default-ignorable chars will have zero advance width;
-                        // we don't have to draw the hexbox for them.
-                        if (aRunParams.drawMode != DrawMode::GLYPH_PATH &&
-                            advance > 0) {
-
-                            if (auto* textDrawer = aRunParams.context->GetTextDrawer()) {
-                                textDrawer->FoundUnsupportedFeature();
-                                return false;
-                            }
-
-                            double glyphX = aPt->x;
-                            double glyphY = aPt->y;
-                            if (aRunParams.isRTL) {
-                                if (aFontParams.isVerticalFont) {
-                                    glyphY -= advance;
-                                } else {
-                                    glyphX -= advance;
-                                }
-                            }
-                            Point pt(Float(ToDeviceUnits(glyphX, aRunParams.devPerApp)),
-                                     Float(ToDeviceUnits(glyphY, aRunParams.devPerApp)));
-                            Float advanceDevUnits =
-                                Float(ToDeviceUnits(advance, aRunParams.devPerApp));
-                            Float height = GetMetrics(eHorizontal).maxAscent;
-                            Rect glyphRect = aFontParams.isVerticalFont ?
-                                Rect(pt.x - height / 2, pt.y,
-                                     height, advanceDevUnits) :
-                                Rect(pt.x, pt.y - height,
-                                     advanceDevUnits, height);
-
-                            // If there's a fake-italic skew in effect as part
-                            // of the drawTarget's transform, we need to remove
-                            // this before drawing the hexbox. (Bug 983985)
-                            Matrix oldMat;
-                            if (aFontParams.passedInvMatrix) {
-                                oldMat = aRunParams.dt->GetTransform();
-                                aRunParams.dt->SetTransform(
-                                    *aFontParams.passedInvMatrix * oldMat);
-                            }
-
-                            gfxFontMissingGlyphs::DrawMissingGlyph(
-                                details->mGlyphID, glyphRect, *aRunParams.dt,
-                                PatternFromState(aRunParams.context),
-                                aShapedText->GetAppUnitsPerDevUnit());
-
-                            // Restore the matrix, if we modified it before
-                            // drawing the hexbox.
-                            if (aFontParams.passedInvMatrix) {
-                                aRunParams.dt->SetTransform(oldMat);
-                            }
+                        if (!DrawMissingGlyph(aBuffer.mRunParams,
+                                              aBuffer.mFontParams,
+                                              details, *aPt)) {
+                            return false;
                         }
                     } else {
-                        gfxPoint glyphXY(*aPt);
-                        if (aFontParams.isVerticalFont) {
-                            glyphXY.x += details->mYOffset;
-                            glyphXY.y += details->mXOffset;
+                        gfx::Point glyphPt(*aPt);
+                        if (aBuffer.mFontParams.isVerticalFont) {
+                            glyphPt.x += details->mYOffset;
+                            glyphPt.y += details->mXOffset;
                         } else {
-                            glyphXY.x += details->mXOffset;
-                            glyphXY.y += details->mYOffset;
+                            glyphPt.x += details->mXOffset;
+                            glyphPt.y += details->mYOffset;
                         }
-                        DrawOneGlyph(details->mGlyphID, advance, &glyphXY,
-                                     buffer, &emittedGlyphs);
+                        DrawOneGlyph<FC>(details->mGlyphID, glyphPt, aBuffer,
+                                         &emittedGlyphs);
                     }
-
-                    inlineCoord += aRunParams.isRTL ? -advance : advance;
+                    if (!aBuffer.mRunParams.isRTL) {
+                        inlineCoord += advance;
+                    }
                 }
             }
         }
 
-        if (aRunParams.spacing) {
-            double space = aRunParams.spacing[i].mAfter;
+        if (S == SpacingT::HasSpacing) {
+            float space = aBuffer.mRunParams.spacing[i].mAfter;
             if (i + 1 < aCount) {
-                space += aRunParams.spacing[i + 1].mBefore;
+                space += aBuffer.mRunParams.spacing[i + 1].mBefore;
             }
-            inlineCoord += aRunParams.isRTL ? -space : space;
+            inlineCoord += aBuffer.mRunParams.isRTL ? -space : space;
         }
     }
 
     return emittedGlyphs;
 }
 
+// Draw an individual glyph at a specific location.
+// *aPt is the glyph position in appUnits; it is converted to device
+// coordinates (devPt) here.
+template<gfxFont::FontComplexityT FC>
+void
+gfxFont::DrawOneGlyph(uint32_t aGlyphID, const gfx::Point& aPt,
+                      GlyphBufferAzure& aBuffer, bool *aEmittedGlyphs) const
+{
+    const TextRunDrawParams& runParams(aBuffer.mRunParams);
+
+    gfx::Point devPt(ToDeviceUnits(aPt.x, runParams.devPerApp),
+                     ToDeviceUnits(aPt.y, runParams.devPerApp));
+
+    if (FC == FontComplexityT::ComplexFont) {
+        const FontDrawParams& fontParams(aBuffer.mFontParams);
+        if (fontParams.haveSVGGlyphs) {
+            if (!runParams.paintSVGGlyphs) {
+                return;
+            }
+            NS_WARNING_ASSERTION(
+              runParams.drawMode != DrawMode::GLYPH_PATH,
+              "Rendering SVG glyph despite request for glyph path");
+            if (RenderSVGGlyph(runParams.context, devPt,
+                               aGlyphID, fontParams.contextPaint,
+                               runParams.callbacks, *aEmittedGlyphs)) {
+                return;
+            }
+        }
+
+        if (fontParams.haveColorGlyphs &&
+            RenderColorGlyph(runParams.dt, runParams.context,
+                             fontParams.scaledFont,
+                             fontParams.renderingOptions,
+                             fontParams.drawOptions,
+                             fontParams.matInv.TransformPoint(devPt),
+                             aGlyphID)) {
+            return;
+        }
+    }
+
+    aBuffer.OutputGlyph(aGlyphID, devPt);
+
+    if (FC == FontComplexityT::ComplexFont) {
+        const FontDrawParams& fontParams(aBuffer.mFontParams);
+        // Synthetic bolding (if required) by multi-striking.
+        for (int32_t i = 0; i < fontParams.extraStrikes; ++i) {
+            if (fontParams.isVerticalFont) {
+                devPt.y += fontParams.synBoldOnePixelOffset;
+            } else {
+                devPt.x += fontParams.synBoldOnePixelOffset;
+            }
+            aBuffer.OutputGlyph(aGlyphID, devPt);
+        }
+    }
+
+    *aEmittedGlyphs = true;
+}
+
+bool
+gfxFont::DrawMissingGlyph(const TextRunDrawParams&            aRunParams,
+                          const FontDrawParams&               aFontParams,
+                          const gfxShapedText::DetailedGlyph* aDetails,
+                          const gfx::Point&                   aPt)
+{
+    // Default-ignorable chars will have zero advance width;
+    // we don't have to draw the hexbox for them.
+    float advance = aDetails->mAdvance;
+    if (aRunParams.drawMode != DrawMode::GLYPH_PATH && advance > 0) {
+        if (auto* textDrawer = aRunParams.context->GetTextDrawer()) {
+            textDrawer->FoundUnsupportedFeature();
+            return false;
+        }
+
+        Point pt(Float(ToDeviceUnits(aPt.x, aRunParams.devPerApp)),
+                 Float(ToDeviceUnits(aPt.y, aRunParams.devPerApp)));
+        Float advanceDevUnits =
+            Float(ToDeviceUnits(advance, aRunParams.devPerApp));
+        Float height = GetMetrics(eHorizontal).maxAscent;
+        Rect glyphRect = aFontParams.isVerticalFont ?
+            Rect(pt.x - height / 2, pt.y,
+                 height, advanceDevUnits) :
+            Rect(pt.x, pt.y - height,
+                 advanceDevUnits, height);
+
+        // If there's a fake-italic skew in effect as part
+        // of the drawTarget's transform, we need to remove
+        // this before drawing the hexbox. (Bug 983985)
+        Matrix oldMat;
+        if (aFontParams.passedInvMatrix) {
+            oldMat = aRunParams.dt->GetTransform();
+            aRunParams.dt->SetTransform(
+                *aFontParams.passedInvMatrix * oldMat);
+        }
+
+        gfxFontMissingGlyphs::DrawMissingGlyph(
+            aDetails->mGlyphID, glyphRect, *aRunParams.dt,
+            PatternFromState(aRunParams.context),
+            1.0 / aRunParams.devPerApp);
+
+        // Restore the matrix, if we modified it before
+        // drawing the hexbox.
+        if (aFontParams.passedInvMatrix) {
+            aRunParams.dt->SetTransform(oldMat);
+        }
+    }
+    return true;
+}
+
 // This method is mostly parallel to DrawGlyphs.
 void
-gfxFont::DrawEmphasisMarks(const gfxTextRun* aShapedText, gfxPoint* aPt,
+gfxFont::DrawEmphasisMarks(const gfxTextRun* aShapedText, gfx::Point* aPt,
                            uint32_t aOffset, uint32_t aCount,
                            const EmphasisMarkDrawParams& aParams)
 {
-    gfxFloat& inlineCoord = aParams.isVertical ? aPt->y : aPt->x;
+    float& inlineCoord = aParams.isVertical ? aPt->y : aPt->x;
     gfxTextRun::Range markRange(aParams.mark);
     gfxTextRun::DrawParams params(aParams.context);
 
-    gfxFloat clusterStart = -std::numeric_limits<gfxFloat>::infinity();
+    float clusterStart = -std::numeric_limits<float>::infinity();
     bool shouldDrawEmphasisMark = false;
     for (uint32_t i = 0, idx = aOffset; i < aCount; ++i, ++idx) {
         if (aParams.spacing) {
             inlineCoord += aParams.direction * aParams.spacing[i].mBefore;
         }
         if (aShapedText->IsClusterStart(idx) ||
-            clusterStart == -std::numeric_limits<gfxFloat>::infinity()) {
+            clusterStart == -std::numeric_limits<float>::infinity()) {
             clusterStart = inlineCoord;
         }
         if (aShapedText->CharMayHaveEmphasisMark(idx)) {
             shouldDrawEmphasisMark = true;
         }
         inlineCoord += aParams.direction * aShapedText->GetAdvanceForGlyph(idx);
         if (shouldDrawEmphasisMark &&
             (i + 1 == aCount || aShapedText->IsClusterStart(idx + 1))) {
-            gfxFloat clusterAdvance = inlineCoord - clusterStart;
+            float clusterAdvance = inlineCoord - clusterStart;
             // Move the coord backward to get the needed start point.
-            gfxFloat delta = (clusterAdvance + aParams.advance) / 2;
+            float delta = (clusterAdvance + aParams.advance) / 2;
             inlineCoord -= delta;
             aParams.mark->Draw(markRange, *aPt, params);
             inlineCoord += delta;
             shouldDrawEmphasisMark = false;
         }
         if (aParams.spacing) {
             inlineCoord += aParams.direction * aParams.spacing[i].mAfter;
         }
     }
 }
 
 void
 gfxFont::Draw(const gfxTextRun *aTextRun, uint32_t aStart, uint32_t aEnd,
-              gfxPoint *aPt, const TextRunDrawParams& aRunParams,
+              gfx::Point* aPt, const TextRunDrawParams& aRunParams,
               gfx::ShapedTextFlags aOrientation)
 {
     NS_ASSERTION(aRunParams.drawMode == DrawMode::GLYPH_PATH ||
                  !(int(aRunParams.drawMode) & int(DrawMode::GLYPH_PATH)),
                  "GLYPH_PATH cannot be used with GLYPH_FILL, GLYPH_STROKE or GLYPH_STROKE_UNDERNEATH");
 
     if (aStart >= aEnd) {
         return;
@@ -2094,17 +2154,17 @@ gfxFont::Draw(const gfxTextRun *aTextRun
     fontParams.haveColorGlyphs = GetFontEntry()->TryGetColorGlyphs();
     fontParams.contextPaint = aRunParams.runContextPaint;
     fontParams.isVerticalFont =
         aOrientation == gfx::ShapedTextFlags::TEXT_ORIENT_VERTICAL_UPRIGHT;
 
     bool sideways = false;
     gfxContextMatrixAutoSaveRestore matrixRestore;
 
-    gfxPoint origPt = *aPt;
+    gfx::Point origPt = *aPt;
     if (aRunParams.isVerticalRun && !fontParams.isVerticalFont) {
 
         if (textDrawer) {
             textDrawer->FoundUnsupportedFeature();
             return;
         }
 
         sideways = true;
@@ -2216,50 +2276,85 @@ gfxFont::Draw(const gfxTextRun *aTextRun
 
             fontParams.matInv = mat;
             fontParams.matInv.Invert();
 
             fontParams.passedInvMatrix = &fontParams.matInv;
         }
     }
 
-    gfxFloat& baseline = fontParams.isVerticalFont ? aPt->x : aPt->y;
-    gfxFloat origBaseline = baseline;
+    float& baseline = fontParams.isVerticalFont ? aPt->x : aPt->y;
+    float origBaseline = baseline;
     if (mStyle.baselineOffset != 0.0) {
         baseline +=
             mStyle.baselineOffset * aTextRun->GetAppUnitsPerDevUnit();
     }
 
-    bool emittedGlyphs =
-        DrawGlyphs(aTextRun, aStart, aEnd - aStart, aPt,
-                   aRunParams, fontParams);
+    bool emittedGlyphs;
+    {
+        // Select appropriate version of the templated DrawGlyphs method
+        // to output glyphs to the buffer, depending on complexity needed
+        // for the type of font, and whether added inter-glyph spacing
+        // is specified.
+        GlyphBufferAzure buffer(aRunParams, fontParams);
+        if (fontParams.haveSVGGlyphs || fontParams.haveColorGlyphs ||
+            fontParams.extraStrikes) {
+            if (aRunParams.spacing) {
+                emittedGlyphs =
+                    DrawGlyphs<FontComplexityT::ComplexFont,
+                               SpacingT::HasSpacing>(aTextRun, aStart,
+                                                     aEnd - aStart, aPt,
+                                                     buffer);
+            } else {
+                emittedGlyphs =
+                    DrawGlyphs<FontComplexityT::ComplexFont,
+                               SpacingT::NoSpacing>(aTextRun, aStart,
+                                                    aEnd - aStart, aPt,
+                                                    buffer);
+            }
+        } else {
+            if (aRunParams.spacing) {
+                emittedGlyphs =
+                    DrawGlyphs<FontComplexityT::SimpleFont,
+                               SpacingT::HasSpacing>(aTextRun, aStart,
+                                                     aEnd - aStart, aPt,
+                                                     buffer);
+            } else {
+                emittedGlyphs =
+                    DrawGlyphs<FontComplexityT::SimpleFont,
+                               SpacingT::NoSpacing>(aTextRun, aStart,
+                                                    aEnd - aStart, aPt,
+                                                    buffer);
+            }
+        }
+    }
 
     baseline = origBaseline;
 
     if (aRunParams.callbacks && emittedGlyphs) {
         aRunParams.callbacks->NotifyGlyphPathEmitted();
     }
 
     aRunParams.dt->SetTransform(oldMat);
     aRunParams.dt->SetPermitSubpixelAA(oldSubpixelAA);
 
     if (sideways) {
         // adjust updated aPt to account for the transform we were using
-        gfxFloat advance = aPt->x - origPt.x;
+        float advance = aPt->x - origPt.x;
         if (aOrientation ==
             gfx::ShapedTextFlags::TEXT_ORIENT_VERTICAL_SIDEWAYS_LEFT) {
-            *aPt = gfxPoint(origPt.x, origPt.y - advance);
+            *aPt = gfx::Point(origPt.x, origPt.y - advance);
         } else {
-            *aPt = gfxPoint(origPt.x, origPt.y + advance);
+            *aPt = gfx::Point(origPt.x, origPt.y + advance);
         }
     }
 }
 
 bool
-gfxFont::RenderSVGGlyph(gfxContext *aContext, gfxPoint aPoint,
+gfxFont::RenderSVGGlyph(gfxContext *aContext, gfx::Point aPoint,
                         uint32_t aGlyphId, SVGContextPaint* aContextPaint) const
 {
     if (!GetFontEntry()->HasSVGGlyph(aGlyphId)) {
         return false;
     }
 
     const gfxFloat devUnitsPerSVGUnit =
         GetAdjustedSize() / GetFontEntry()->UnitsPerEm();
@@ -2272,17 +2367,17 @@ gfxFont::RenderSVGGlyph(gfxContext *aCon
     aContextPaint->InitStrokeGeometry(aContext, devUnitsPerSVGUnit);
 
     GetFontEntry()->RenderSVGGlyph(aContext, aGlyphId, aContextPaint);
     aContext->NewPath();
     return true;
 }
 
 bool
-gfxFont::RenderSVGGlyph(gfxContext *aContext, gfxPoint aPoint,
+gfxFont::RenderSVGGlyph(gfxContext *aContext, gfx::Point aPoint,
                         uint32_t aGlyphId, SVGContextPaint* aContextPaint,
                         gfxTextRunDrawCallbacks *aCallbacks,
                         bool& aEmittedGlyphs) const
 {
     if (aCallbacks && aEmittedGlyphs) {
         aCallbacks->NotifyGlyphPathEmitted();
         aEmittedGlyphs = false;
     }
--- a/gfx/thebes/gfxFont.h
+++ b/gfx/thebes/gfxFont.h
@@ -1696,26 +1696,27 @@ public:
      * .context  the Thebes graphics context to which we're drawing
      * .dt  Moz2D DrawTarget to which we're drawing
      *
      * Callers guarantee:
      * -- aStart and aEnd are aligned to cluster and ligature boundaries
      * -- all glyphs use this font
      */
     void Draw(const gfxTextRun *aTextRun, uint32_t aStart, uint32_t aEnd,
-              gfxPoint *aPt, const TextRunDrawParams& aRunParams,
+              mozilla::gfx::Point* aPt, const TextRunDrawParams& aRunParams,
               mozilla::gfx::ShapedTextFlags aOrientation);
 
     /**
      * Draw the emphasis marks for the given text run. Its prerequisite
      * and output are similiar to the method Draw().
      * @param aPt the baseline origin of the emphasis marks.
      * @param aParams some drawing parameters, see EmphasisMarkDrawParams.
      */
-    void DrawEmphasisMarks(const gfxTextRun* aShapedText, gfxPoint* aPt,
+    void DrawEmphasisMarks(const gfxTextRun* aShapedText,
+                           mozilla::gfx::Point* aPt,
                            uint32_t aOffset, uint32_t aCount,
                            const EmphasisMarkDrawParams& aParams);
 
     /**
      * Measure a run of characters. See gfxTextRun::Metrics.
      * @param aTight if false, then return the union of the glyph extents
      * with the font-box for the characters (the rectangle with x=0,width=
      * the advance width for the character run,y=-(font ascent), and height=
@@ -1946,35 +1947,53 @@ public:
      */
     static cairo_t* RefCairo(mozilla::gfx::DrawTarget* aDT);
 
 protected:
     virtual const Metrics& GetHorizontalMetrics() = 0;
 
     mozilla::UniquePtr<const Metrics> CreateVerticalMetrics();
 
-    // Output a single glyph at *aPt, which is updated by the glyph's advance.
-    // Normal glyphs are simply accumulated in aBuffer until it is full and
-    // gets flushed, but SVG or color-font glyphs will instead be rendered
-    // directly to the destination (found from the buffer's parameters).
-    void DrawOneGlyph(uint32_t           aGlyphID,
-                      double             aAdvance,
-                      gfxPoint          *aPt,
-                      GlyphBufferAzure&  aBuffer,
-                      bool              *aEmittedGlyphs) const;
+    // Template parameters for DrawGlyphs/DrawOneGlyph, used to select
+    // simplified versions of the methods in the most common cases.
+    enum class FontComplexityT {
+        SimpleFont,
+        ComplexFont
+    };
+    enum class SpacingT {
+        NoSpacing,
+        HasSpacing
+    };
 
     // Output a run of glyphs at *aPt, which is updated to follow the last glyph
     // in the run. This method also takes account of any letter-spacing provided
     // in aRunParams.
-    bool DrawGlyphs(const gfxShapedText      *aShapedText,
-                    uint32_t                  aOffset, // offset in the textrun
-                    uint32_t                  aCount, // length of run to draw
-                    gfxPoint                 *aPt,
-                    const TextRunDrawParams&  aRunParams,
-                    const FontDrawParams&     aFontParams);
+    template<FontComplexityT FC, SpacingT S>
+    bool DrawGlyphs(const gfxShapedText*     aShapedText,
+                    uint32_t                 aOffset, // offset in the textrun
+                    uint32_t                 aCount, // length of run to draw
+                    mozilla::gfx::Point*     aPt,
+                    GlyphBufferAzure&        aBuffer);
+
+    // Output a single glyph at *aPt.
+    // Normal glyphs are simply accumulated in aBuffer until it is full and
+    // gets flushed, but SVG or color-font glyphs will instead be rendered
+    // directly to the destination (found from the buffer's parameters).
+    template<FontComplexityT FC>
+    void DrawOneGlyph(uint32_t                   aGlyphID,
+                      const mozilla::gfx::Point& aPt,
+                      GlyphBufferAzure&          aBuffer,
+                      bool*                      aEmittedGlyphs) const;
+
+    // Helper for DrawOneGlyph to handle missing glyphs, rendering either
+    // nothing (for default-ignorables) or a missing-glyph hexbox.
+    bool DrawMissingGlyph(const TextRunDrawParams&            aRunParams,
+                          const FontDrawParams&               aFontParams,
+                          const gfxShapedText::DetailedGlyph* aDetails,
+                          const mozilla::gfx::Point&          aPt);
 
     // set the font size and offset used for
     // synthetic subscript/superscript glyphs
     void CalculateSubSuperSizeAndOffset(int32_t aAppUnitsPerDevPixel,
                                         gfxFloat& aSubSuperSizeRatio,
                                         float& aBaselineOffset);
 
     // Return a font that is a "clone" of this one, but reduced to 80% size
@@ -2238,19 +2257,19 @@ protected:
     // Helper to calculate various derived metrics from the results of
     // InitMetricsFromSfntTables or equivalent platform code
     void CalculateDerivedMetrics(Metrics& aMetrics);
 
     // some fonts have bad metrics, this method sanitize them.
     // if this font has bad underline offset, aIsBadUnderlineFont should be true.
     void SanitizeMetrics(Metrics *aMetrics, bool aIsBadUnderlineFont);
 
-    bool RenderSVGGlyph(gfxContext *aContext, gfxPoint aPoint,
+    bool RenderSVGGlyph(gfxContext *aContext, mozilla::gfx::Point aPoint,
                         uint32_t aGlyphId, SVGContextPaint* aContextPaint) const;
-    bool RenderSVGGlyph(gfxContext *aContext, gfxPoint aPoint,
+    bool RenderSVGGlyph(gfxContext *aContext, mozilla::gfx::Point aPoint,
                         uint32_t aGlyphId, SVGContextPaint* aContextPaint,
                         gfxTextRunDrawCallbacks *aCallbacks,
                         bool& aEmittedGlyphs) const;
 
     bool RenderColorGlyph(DrawTarget* aDrawTarget,
                           gfxContext* aContext,
                           mozilla::gfx::ScaledFont* scaledFont,
                           mozilla::gfx::GlyphRenderingOptions* renderingOptions,
--- a/gfx/thebes/gfxTextRun.cpp
+++ b/gfx/thebes/gfxTextRun.cpp
@@ -423,18 +423,18 @@ gfxTextRun::ShrinkToLigatureBoundaries(R
         while (aRange->end > aRange->start &&
                !charGlyphs[aRange->end].IsLigatureGroupStart()) {
             --aRange->end;
         }
     }
 }
 
 void
-gfxTextRun::DrawGlyphs(gfxFont *aFont, Range aRange, gfxPoint *aPt,
-                       PropertyProvider *aProvider, Range aSpacingRange,
+gfxTextRun::DrawGlyphs(gfxFont* aFont, Range aRange, gfx::Point* aPt,
+                       PropertyProvider* aProvider, Range aSpacingRange,
                        TextRunDrawParams& aParams,
                        gfx::ShapedTextFlags aOrientation) const
 {
     AutoTArray<PropertyProvider::Spacing,200> spacingBuffer;
     bool haveSpacing = GetAdjustedSpacingArray(aRange, aProvider,
                                                aSpacingRange, &spacingBuffer);
     aParams.spacing = haveSpacing ? spacingBuffer.Elements() : nullptr;
     aFont->Draw(this, aRange.start, aRange.end, aPt, aParams, aOrientation);
@@ -460,18 +460,18 @@ ClipPartialLigature(const gfxTextRun* aT
             *aStart = std::max(*aStart, endEdge);
         } else {
             *aEnd = std::min(*aEnd, endEdge);
         }
     }
 }
 
 void
-gfxTextRun::DrawPartialLigature(gfxFont *aFont, Range aRange,
-                                gfxPoint *aPt, PropertyProvider *aProvider,
+gfxTextRun::DrawPartialLigature(gfxFont* aFont, Range aRange,
+                                gfx::Point* aPt, PropertyProvider* aProvider,
                                 TextRunDrawParams& aParams,
                                 gfx::ShapedTextFlags aOrientation) const
 {
     if (aRange.start >= aRange.end) {
         return;
     }
 
     if (auto* textDrawer = aParams.context->GetTextDrawer()) {
@@ -502,21 +502,21 @@ gfxTextRun::DrawPartialLigature(gfxFont 
                clipExtents.Width(), (end - start) / mAppUnitsPerDevUnit) :
           Rect(start / mAppUnitsPerDevUnit, clipExtents.Y(),
                (end - start) / mAppUnitsPerDevUnit, clipExtents.Height());
       MaybeSnapToDevicePixels(clipRect, *aParams.dt, true);
 
       aParams.context->Clip(clipRect);
     }
 
-    gfxPoint pt;
+    gfx::Point pt;
     if (aParams.isVerticalRun) {
-        pt = gfxPoint(aPt->x, aPt->y - aParams.direction * data.mPartAdvance);
+        pt = Point(aPt->x, aPt->y - aParams.direction * data.mPartAdvance);
     } else {
-        pt = gfxPoint(aPt->x - aParams.direction * data.mPartAdvance, aPt->y);
+        pt = Point(aPt->x - aParams.direction * data.mPartAdvance, aPt->y);
     }
 
     DrawGlyphs(aFont, data.mRange, &pt,
                aProvider, aRange, aParams, aOrientation);
     aParams.context->PopClip();
 
     if (aParams.isVerticalRun) {
         aPt->y += aParams.direction * data.mPartWidth;
@@ -595,17 +595,17 @@ struct MOZ_STACK_CLASS BufferAlphaColor 
         mContext->PopGroupAndBlend();
         mContext->Restore();
     }
 
     gfxContext *mContext;
 };
 
 void
-gfxTextRun::Draw(Range aRange, gfxPoint aPt, const DrawParams& aParams) const
+gfxTextRun::Draw(Range aRange, gfx::Point aPt, const DrawParams& aParams) const
 {
     NS_ASSERTION(aRange.end <= GetLength(), "Substring out of range");
     NS_ASSERTION(aParams.drawMode == DrawMode::GLYPH_PATH ||
                  !(aParams.drawMode & DrawMode::GLYPH_PATH),
                  "GLYPH_PATH cannot be used with GLYPH_FILL, GLYPH_STROKE or GLYPH_STROKE_UNDERNEATH");
     NS_ASSERTION(aParams.drawMode == DrawMode::GLYPH_PATH || !aParams.callbacks,
                  "callback must not be specified unless using GLYPH_PATH");
 
@@ -650,17 +650,17 @@ gfxTextRun::Draw(Range aRange, gfxPoint 
         // to buffer.
         gfxTextRun::Metrics metrics = MeasureText(
             aRange, gfxFont::LOOSE_INK_EXTENTS,
             aParams.context->GetDrawTarget(), aParams.provider);
         if (IsRightToLeft()) {
             metrics.mBoundingBox.MoveBy(gfxPoint(aPt.x - metrics.mAdvanceWidth,
                                                  aPt.y));
         } else {
-            metrics.mBoundingBox.MoveBy(aPt);
+            metrics.mBoundingBox.MoveBy(gfxPoint(aPt.x, aPt.y));
         }
         syntheticBoldBuffer.PushSolidColor(metrics.mBoundingBox, currentColor,
                                            GetAppUnitsPerDevUnit());
     }
 
     // Set up parameters that will be constant across all glyph runs we need
     // to draw, regardless of the font used.
     TextRunDrawParams params;
@@ -690,17 +690,17 @@ gfxTextRun::Draw(Range aRange, gfxPoint 
         uint32_t start = iter.GetStringStart();
         uint32_t end = iter.GetStringEnd();
         Range ligatureRange(start, end);
         ShrinkToLigatureBoundaries(&ligatureRange);
 
         bool drawPartial = (aParams.drawMode & DrawMode::GLYPH_FILL) ||
                            (aParams.drawMode == DrawMode::GLYPH_PATH &&
                             aParams.callbacks);
-        gfxPoint origPt = aPt;
+        gfx::Point origPt = aPt;
 
         if (drawPartial) {
             DrawPartialLigature(font, Range(start, ligatureRange.start),
                                 &aPt, aParams.provider, params,
                                 iter.GetGlyphRun()->mOrientation);
         }
 
         DrawGlyphs(font, ligatureRange, &aPt,
@@ -729,30 +729,30 @@ gfxTextRun::Draw(Range aRange, gfxPoint 
         *aParams.advanceWidth = advance;
     }
 }
 
 // This method is mostly parallel to Draw().
 void
 gfxTextRun::DrawEmphasisMarks(gfxContext *aContext,
                               gfxTextRun* aMark,
-                              gfxFloat aMarkAdvance, gfxPoint aPt,
+                              gfxFloat aMarkAdvance, gfx::Point aPt,
                               Range aRange, PropertyProvider* aProvider) const
 {
     MOZ_ASSERT(aRange.end <= GetLength());
 
     EmphasisMarkDrawParams params;
     params.context = aContext;
     params.mark = aMark;
     params.advance = aMarkAdvance;
     params.direction = GetDirection();
     params.isVertical = IsVertical();
 
-    gfxFloat& inlineCoord = params.isVertical ? aPt.y : aPt.x;
-    gfxFloat direction = params.direction;
+    float& inlineCoord = params.isVertical ? aPt.y : aPt.x;
+    float direction = params.direction;
 
     GlyphRunIterator iter(this, aRange);
     while (iter.NextRun()) {
         gfxFont* font = iter.GetGlyphRun()->mFont;
         uint32_t start = iter.GetStringStart();
         uint32_t end = iter.GetStringEnd();
         Range ligatureRange(start, end);
         ShrinkToLigatureBoundaries(&ligatureRange);
--- a/gfx/thebes/gfxTextRun.h
+++ b/gfx/thebes/gfxTextRun.h
@@ -272,26 +272,27 @@ public:
      *   Draw(Range(middle, end), pt, ...) followed by
      *   Draw(Range(start, middle), gfxPoint(pt.x + advance, pt.y), ...)
      * should have the same effect as
      *   Draw(Range(start, end), pt, ...)
      *
      * Glyphs should be drawn in logical content order, which can be significant
      * if they overlap (perhaps due to negative spacing).
      */
-    void Draw(Range aRange, gfxPoint aPt, const DrawParams& aParams) const;
+    void Draw(Range aRange, mozilla::gfx::Point aPt,
+              const DrawParams& aParams) const;
 
     /**
      * Draws the emphasis marks for this text run. Uses only GetSpacing
      * from aProvider. The provided point is the baseline origin of the
      * line of emphasis marks.
      */
     void DrawEmphasisMarks(gfxContext* aContext,
                            gfxTextRun* aMark,
-                           gfxFloat aMarkAdvance, gfxPoint aPt,
+                           gfxFloat aMarkAdvance, mozilla::gfx::Point aPt,
                            Range aRange, PropertyProvider* aProvider) const;
 
     /**
      * Computes the ReflowMetrics for a substring.
      * Uses GetSpacing from aBreakProvider.
      * @param aBoundingBoxType which kind of bounding box (loose/tight)
      */
     Metrics MeasureText(Range aRange,
@@ -751,18 +752,19 @@ private:
     // (Platforms do the actual ligaturization, but we need to do a bunch of stuff
     // to handle requests that begin or end inside a ligature)
 
     // if aProvider is null then mBeforeSpacing and mAfterSpacing are set to zero
     LigatureData ComputeLigatureData(Range aPartRange,
                                      PropertyProvider *aProvider) const;
     gfxFloat ComputePartialLigatureWidth(Range aPartRange,
                                          PropertyProvider *aProvider) const;
-    void DrawPartialLigature(gfxFont *aFont, Range aRange,
-                             gfxPoint *aPt, PropertyProvider *aProvider,
+    void DrawPartialLigature(gfxFont* aFont, Range aRange,
+                             mozilla::gfx::Point* aPt,
+                             PropertyProvider* aProvider,
                              TextRunDrawParams& aParams,
                              mozilla::gfx::ShapedTextFlags aOrientation) const;
     // Advance aRange.start to the start of the nearest ligature, back
     // up aRange.end to the nearest ligature end; may result in
     // aRange->start == aRange->end.
     void ShrinkToLigatureBoundaries(Range* aRange) const;
     // result in appunits
     gfxFloat GetPartialLigatureWidth(Range aRange,
@@ -779,18 +781,18 @@ private:
                                  gfxFont::BoundingBoxType aBoundingBoxType,
                                  DrawTarget* aRefDrawTarget,
                                  PropertyProvider *aProvider,
                                  Range aSpacingRange,
                                  mozilla::gfx::ShapedTextFlags aOrientation,
                                  Metrics *aMetrics) const;
 
     // **** drawing helper ****
-    void DrawGlyphs(gfxFont *aFont, Range aRange, gfxPoint *aPt,
-                    PropertyProvider *aProvider, Range aSpacingRange,
+    void DrawGlyphs(gfxFont* aFont, Range aRange, mozilla::gfx::Point* aPt,
+                    PropertyProvider* aProvider, Range aSpacingRange,
                     TextRunDrawParams& aParams,
                     mozilla::gfx::ShapedTextFlags aOrientation) const;
 
     // The textrun holds either a single GlyphRun -or- an array;
     // the flag mHasGlyphRunArray tells us which is present.
     union {
         GlyphRun           mSingleGlyphRun;
         nsTArray<GlyphRun> mGlyphRunArray;
--- a/js/src/jit-test/tests/basic/testCrossCompartmentTransparency.js
+++ b/js/src/jit-test/tests/basic/testCrossCompartmentTransparency.js
@@ -143,16 +143,15 @@ test("new Date()", d => justDontThrow(Da
 test("new Date()", d => justDontThrow(Date.prototype.setFullYear.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.setUTCFullYear.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.setYear.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toGMTString.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toISOString.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toLocaleString.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toLocaleDateString.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toLocaleTimeString.call(d)));
-test("new Date()", d => justDontThrow(Date.prototype.toLocaleFormat.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toTimeString.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toDateString.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toSource.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.toString.call(d)));
 test("new Date()", d => justDontThrow(Date.prototype.valueOf.call(d)));
 
 throw "done";
--- a/js/src/js.msg
+++ b/js/src/js.msg
@@ -119,17 +119,16 @@ MSG_DEF(JSMSG_TOO_MANY_CON_SPREADARGS, 0
 MSG_DEF(JSMSG_TOO_MANY_FUN_SPREADARGS, 0, JSEXN_RANGEERR, "too many function arguments")
 MSG_DEF(JSMSG_UNINITIALIZED_LEXICAL,   1, JSEXN_REFERENCEERR, "can't access lexical declaration `{0}' before initialization")
 MSG_DEF(JSMSG_BAD_CONST_ASSIGN,        1, JSEXN_TYPEERR, "invalid assignment to const `{0}'")
 MSG_DEF(JSMSG_CANT_DECLARE_GLOBAL_BINDING, 2, JSEXN_TYPEERR, "cannot declare global binding `{0}': {1}")
 
 // Date
 MSG_DEF(JSMSG_INVALID_DATE,            0, JSEXN_RANGEERR, "invalid date")
 MSG_DEF(JSMSG_BAD_TOISOSTRING_PROP,    0, JSEXN_TYPEERR, "toISOString property is not callable")
-MSG_DEF(JSMSG_DEPRECATED_TOLOCALEFORMAT, 0, JSEXN_WARN, "Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead")
 
 // String
 MSG_DEF(JSMSG_BAD_URI,                 0, JSEXN_URIERR, "malformed URI sequence")
 MSG_DEF(JSMSG_INVALID_NORMALIZE_FORM,  0, JSEXN_RANGEERR, "form must be one of 'NFC', 'NFD', 'NFKC', or 'NFKD'")
 MSG_DEF(JSMSG_NEGATIVE_REPETITION_COUNT, 0, JSEXN_RANGEERR, "repeat count must be non-negative")
 MSG_DEF(JSMSG_NOT_A_CODEPOINT,         1, JSEXN_RANGEERR, "{0} is not a valid code point")
 MSG_DEF(JSMSG_RESULTING_STRING_TOO_LARGE, 0, JSEXN_RANGEERR, "repeat count must be less than infinity and not overflow maximum string size")
 MSG_DEF(JSMSG_DEPRECATED_STRING_METHOD, 2, JSEXN_WARN, "String.{0} is deprecated; use String.prototype.{1} instead")
--- a/js/src/jscompartment.cpp
+++ b/js/src/jscompartment.cpp
@@ -50,17 +50,16 @@ JSCompartment::JSCompartment(Zone* zone,
     behaviors_(options.behaviors()),
     zone_(zone),
     runtime_(zone->runtimeFromAnyThread()),
     principals_(nullptr),
     isSystem_(false),
     isAtomsCompartment_(false),
     isSelfHosting(false),
     marked(true),
-    warnedAboutDateToLocaleFormat(false),
     warnedAboutExprClosure(false),
     warnedAboutForEach(false),
     warnedAboutLegacyGenerator(false),
     warnedAboutStringGenericsMethods(0),
 #ifdef DEBUG
     firedOnNewGlobalObject(false),
 #endif
     global_(nullptr),
--- a/js/src/jscompartment.h
+++ b/js/src/jscompartment.h
@@ -617,17 +617,16 @@ struct JSCompartment
   private:
     JSPrincipals*                principals_;
     bool                         isSystem_;
     bool                         isAtomsCompartment_;
 
   public:
     bool                         isSelfHosting;
     bool                         marked;
-    bool                         warnedAboutDateToLocaleFormat : 1;
     bool                         warnedAboutExprClosure : 1;
     bool                         warnedAboutForEach : 1;
     bool                         warnedAboutLegacyGenerator : 1;
     uint32_t                     warnedAboutStringGenericsMethods;
 
 #ifdef DEBUG
     bool                         firedOnNewGlobalObject;
 #endif
--- a/js/src/jsdate.cpp
+++ b/js/src/jsdate.cpp
@@ -2728,16 +2728,17 @@ FormatDate(JSContext* cx, double utcTime
     }
 
     if (!str)
         return false;
     rval.setString(str);
     return true;
 }
 
+#if !EXPOSE_INTL_API
 static bool
 ToLocaleFormatHelper(JSContext* cx, HandleObject obj, const char* format, MutableHandleValue rval)
 {
     double utcTime = obj->as<DateObject>().UTCTime().toNumber();
 
     char buf[100];
     if (!IsFinite(utcTime)) {
         strcpy(buf, js_NaN_date_str);
@@ -2773,17 +2774,17 @@ ToLocaleFormatHelper(JSContext* cx, Hand
 
     JSString* str = NewStringCopyZ<CanGC>(cx, buf);
     if (!str)
         return false;
     rval.setString(str);
     return true;
 }
 
-#if !EXPOSE_INTL_API
+
 /* ES5 15.9.5.5. */
 MOZ_ALWAYS_INLINE bool
 date_toLocaleString_impl(JSContext* cx, const CallArgs& args)
 {
     /*
      * Use '%#c' for windows, because '%c' is backward-compatible and non-y2k
      * with msvc; '%#c' requests that a full year be used in the result string.
      */
@@ -2844,66 +2845,16 @@ date_toLocaleTimeString_impl(JSContext* 
 static bool
 date_toLocaleTimeString(JSContext* cx, unsigned argc, Value* vp)
 {
     CallArgs args = CallArgsFromVp(argc, vp);
     return CallNonGenericMethod<IsDate, date_toLocaleTimeString_impl>(cx, args);
 }
 #endif /* !EXPOSE_INTL_API */
 
-MOZ_ALWAYS_INLINE bool
-date_toLocaleFormat_impl(JSContext* cx, const CallArgs& args)
-{
-    Rooted<DateObject*> dateObj(cx, &args.thisv().toObject().as<DateObject>());
-
-#if EXPOSE_INTL_API
-    if (!cx->compartment()->warnedAboutDateToLocaleFormat) {
-        if (!JS_ReportErrorFlagsAndNumberASCII(cx, JSREPORT_WARNING, GetErrorMessage, nullptr,
-                                               JSMSG_DEPRECATED_TOLOCALEFORMAT))
-        {
-            return false;
-        }
-        cx->compartment()->warnedAboutDateToLocaleFormat = true;
-    }
-#endif
-
-    if (args.length() == 0) {
-        /*
-         * Use '%#c' for windows, because '%c' is backward-compatible and non-y2k
-         * with msvc; '%#c' requests that a full year be used in the result string.
-         */
-        static const char format[] =
-#if defined(_WIN32) && !defined(__MWERKS__)
-                                       "%#c"
-#else
-                                       "%c"
-#endif
-                                       ;
-
-        return ToLocaleFormatHelper(cx, dateObj, format, args.rval());
-    }
-
-    RootedString fmt(cx, ToString<CanGC>(cx, args[0]));
-    if (!fmt)
-        return false;
-
-    JSAutoByteString fmtbytes(cx, fmt);
-    if (!fmtbytes)
-        return false;
-
-    return ToLocaleFormatHelper(cx, dateObj, fmtbytes.ptr(), args.rval());
-}
-
-static bool
-date_toLocaleFormat(JSContext* cx, unsigned argc, Value* vp)
-{
-    CallArgs args = CallArgsFromVp(argc, vp);
-    return CallNonGenericMethod<IsDate, date_toLocaleFormat_impl>(cx, args);
-}
-
 /* ES5 15.9.5.4. */
 MOZ_ALWAYS_INLINE bool
 date_toTimeString_impl(JSContext* cx, const CallArgs& args)
 {
     return FormatDate(cx, args.thisv().toObject().as<DateObject>().UTCTime().toNumber(),
                       FormatSpec::Time, args.rval());
 }
 
@@ -3050,17 +3001,16 @@ static const JSFunctionSpec date_methods
     JS_FN("setUTCHours",         date_setUTCHours,        4,0),
     JS_FN("setMinutes",          date_setMinutes,         3,0),
     JS_FN("setUTCMinutes",       date_setUTCMinutes,      3,0),
     JS_FN("setSeconds",          date_setSeconds,         2,0),
     JS_FN("setUTCSeconds",       date_setUTCSeconds,      2,0),
     JS_FN("setMilliseconds",     date_setMilliseconds,    1,0),
     JS_FN("setUTCMilliseconds",  date_setUTCMilliseconds, 1,0),
     JS_FN("toUTCString",         date_toGMTString,        0,0),
-    JS_FN("toLocaleFormat",      date_toLocaleFormat,     0,0),
 #if EXPOSE_INTL_API
     JS_SELF_HOSTED_FN(js_toLocaleString_str, "Date_toLocaleString", 0,0),
     JS_SELF_HOSTED_FN("toLocaleDateString", "Date_toLocaleDateString", 0,0),
     JS_SELF_HOSTED_FN("toLocaleTimeString", "Date_toLocaleTimeString", 0,0),
 #else
     JS_FN(js_toLocaleString_str, date_toLocaleString,     0,0),
     JS_FN("toLocaleDateString",  date_toLocaleDateString, 0,0),
     JS_FN("toLocaleTimeString",  date_toLocaleTimeString, 0,0),
--- a/js/src/tests/ecma_5/extensions/extension-methods-reject-null-undefined-this.js
+++ b/js/src/tests/ecma_5/extensions/extension-methods-reject-null-undefined-this.js
@@ -29,18 +29,17 @@ var ClassToMethodMap =
                "toSource"],
     Function: ["toSource"],
     Array:    ["toSource"],
     String:   ["toSource", "quote", "bold", "italics", "fixed", "fontsize",
                "fontcolor", "link", "anchor", "strike", "small", "big", "blink",
                "sup", "sub", "substr", "trimLeft", "trimRight", "toJSON"],
     Boolean:  ["toSource", "toJSON"],
     Number:   ["toSource", "toJSON"],
-    Date:     ["toSource", "toLocaleFormat", "getYear", "setYear",
-               "toGMTString"],
+    Date:     ["toSource", "getYear", "setYear",  "toGMTString"],
     RegExp:   ["toSource"],
     Error:    ["toSource"],
   };
 
 var badThisValues = [null, undefined];
 
 function testMethod(Class, className, method)
 {
deleted file mode 100644
--- a/js/src/tests/js1_5/extensions/toLocaleFormat-01.js
+++ /dev/null
@@ -1,230 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//-----------------------------------------------------------------------------
-var BUGNUMBER = 291494;
-var summary = 'Date.prototype.toLocaleFormat extension';
-var actual = '';
-var expect = '';
-var temp;
-
-/*
- * SpiderMonkey only.
- *
- * When the output of toLocaleFormat exceeds 100 bytes toLocaleFormat
- * defaults to using toString to produce the result.
-*/
-
-enterFunc ('test');
-printBugNumber(BUGNUMBER);
-printStatus (summary);
-
-var date = new Date("06/05/2005 00:00:00 GMT-0000");
-
-expect = date.getTimezoneOffset() > 0 ? 'Sat' : 'Sun';
-actual = date.toLocaleFormat('%a');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%a")');
-
-expect = date.getTimezoneOffset() > 0 ? 'Saturday' : 'Sunday';
-actual = date.toLocaleFormat('%A');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%A")');
-
-expect = 'Jun';
-actual = date.toLocaleFormat('%b');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%b")');
-
-expect = 'June';
-actual = date.toLocaleFormat('%B');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%B")');
-
-expect = (date.getTimezoneOffset() > 0) ? '04' : '05';
-actual = date.toLocaleFormat('%d');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%d")');
-
-expect = '0';
-actual = String((Number(date.toLocaleFormat('%H')) +
-                 date.getTimezoneOffset()/60) % 24);
-reportCompare(expect, actual, 'Date.toLocaleFormat(%H)');
-
-expect = '12';
-actual = String(Number(date.toLocaleFormat('%I')) +
-                date.getTimezoneOffset()/60);
-reportCompare(expect, actual, 'Date.toLocaleFormat(%I)');
-
-expect = String(155 + ((date.getTimezoneOffset() > 0) ? 0 : 1));
-actual = date.toLocaleFormat('%j');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%j")');
-
-expect = '06';
-actual = date.toLocaleFormat('%m');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%m")');
-
-expect = '00';
-actual = date.toLocaleFormat('%M');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%M")');
-
-expect = true;
-temp   = date.toLocaleFormat('%p');
-actual = temp == 'AM' || date.toLocaleFormat('%p') == 'PM';
-reportCompare(expect, actual, 'Date.toLocaleFormat("%p") is AM or PM');
-
-expect = '00';
-actual = date.toLocaleFormat('%S');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%S")');
-
-expect = String(22 + ((date.getTimezoneOffset() > 0) ? 0 : 1));
-actual = date.toLocaleFormat('%U');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%U")');
-
-expect = String((6 + ((date.getTimezoneOffset() > 0) ? 0 : 1))%7);
-actual = date.toLocaleFormat('%w');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%w")');
-
-expect = '22';
-actual = date.toLocaleFormat('%W');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%W")');
-
-expect = '05';
-actual = date.toLocaleFormat('%y');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%y")');
-
-expect = '2005';
-actual = date.toLocaleFormat('%Y');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%Y")');
-
-expect = '%';
-actual = date.toLocaleFormat('%%');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%%")');
-
-
-expect = '1899 99';
-temp='%Y %y';
-actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '1899189918991899189918991899189918991899189918991899189918991899189918991899189918991899';
-temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = 'xxx189918991899189918991899189918991899189918991899189918991899189918991899189918991899189918991899';
-temp = 'xxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = new Date(0, 0, 0, 13, 14, 15, 0).toString();
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = 'xxxx189918991899189918991899189918991899';
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(0, 0, 0, 13, 14, 15, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-
-expect = '-51 49';
-temp = '%Y %y';
-actual = new Date(-51, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51';
-temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(-51, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = 'xxx-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51-51';
-temp = 'xxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(-51, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = new Date(-51, 0).toString();
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(-51, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-
-expect = '1851 51';
-temp = '%Y %y';
-actual = new Date(1851, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '1851185118511851185118511851185118511851185118511851185118511851185118511851185118511851';
-temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(1851, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = 'xxx185118511851185118511851185118511851185118511851185118511851185118511851185118511851185118511851';
-temp = 'xxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(1851, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = new Date(1851, 0).toString();
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(1851, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-
-expect = '-1 99';
-temp = '%Y %y';
-actual = new Date(-1, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '-100 00';
-temp = '%Y %y';
-actual = new Date(-100, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '1900 00';
-temp = '%Y %y';
-actual = new Date(0, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '1901 01';
-temp = '%Y %y';
-actual = new Date(1, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '1970 70';
-temp = '%Y %y';
-actual = new Date(1970, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-
-expect = new Date(32767, 0).toString();
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(32767, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = '32767327673276732767327673276732767327673276732767327673276732767327673276732767327673276732767';
-temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(32767, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = 'xxxx32767327673276732767327673276732767327673276732767327673276732767327673276732767327673276732767';
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(32767, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = new Date(32767, 0).toString();
-temp = 'xxxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(32767, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-
-expect = '-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999';
-temp = '%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(-9999, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = 'xxxx-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999-9999';
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(-9999, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
-
-expect = new Date(-9999, 0).toString();
-temp = 'xxxx%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y%Y';
-actual = new Date(-9999, 0).toLocaleFormat(temp);
-reportCompare(expect, actual, 'Date.toLocaleFormat("'+temp+'")');
deleted file mode 100644
--- a/js/src/tests/js1_5/extensions/toLocaleFormat-02.js
+++ /dev/null
@@ -1,105 +0,0 @@
-// |reftest| skip-if(xulRuntime.OS=="WINNT")
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-//-----------------------------------------------------------------------------
-var BUGNUMBER = 291494;
-var summary = 'Date.prototype.toLocaleFormat extension';
-var actual = '';
-var expect = '';
-var temp;
-
-/*
- * SpiderMonkey only.
- *
- * This test uses format strings which are not supported cross
- * platform and are expected to fail on at least some platforms
- * however they all currently pass on Linux (Fedora Core 6). They are
- * included here in order to increase coverage for cases where a crash
- * may occur.  These failures will be tracked in the
- * mozilla/js/tests/public-failures.txt list.
- * 
- */
-
-enterFunc ('test');
-printBugNumber(BUGNUMBER);
-printStatus (summary);
- 
-var date = new Date("06/05/2005 00:00:00 GMT-0000");
-
-expect = '20';
-actual = date.toLocaleFormat('%C');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%C")');
-
-expect = date.toLocaleFormat('%C%y');
-actual = date.toLocaleFormat('%Y');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%C%y") == ' +
-              'Date.toLocaleFormat("%Y")');
-
-expect = date.toLocaleFormat('%m/%d/%y');
-actual = date.toLocaleFormat('%D');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%m/%d/%y") == ' +
-              'Date.toLocaleFormat("%D")');
-
-expect = (date.getTimezoneOffset() > 0) ? ' 4' : ' 5';
-actual = date.toLocaleFormat('%e');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%e")');
-
-expect = date.toLocaleFormat('%Y-%m-%d');
-actual = date.toLocaleFormat('%F');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%Y-%m-%d") == ' +
-              'Date.toLocaleFormat("%F")');
-
-expect = '05';
-actual = date.toLocaleFormat('%g');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%g")');
-
-expect = '2005';
-actual = date.toLocaleFormat('%G');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%G")');
-
-expect = date.toLocaleFormat('%b');
-actual = date.toLocaleFormat('%h');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%b") == ' +
-              'Date.toLocaleFormat("%h")');
-
-expect = '\n';
-actual = date.toLocaleFormat('%n');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%n") == "\\n"');
-
-expect = date.toLocaleFormat('%I:%M:%S %p');
-actual = date.toLocaleFormat('%r');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%I:%M:%S %p") == ' +
-              'Date.toLocaleFormat("%r")');
-
-expect = date.toLocaleFormat('%H:%M');
-actual = date.toLocaleFormat('%R');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%H:%M") == ' +
-              'Date.toLocaleFormat("%R")');
-
-expect = '\t';
-actual = date.toLocaleFormat('%t');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%t") == "\\t"');
-
-expect = date.toLocaleFormat('%H:%M:%S');
-actual = date.toLocaleFormat('%T');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%H:%M:%S") == ' +
-              'Date.toLocaleFormat("%T")');
-
-expect = String(6 + ((date.getTimezoneOffset() > 0) ? 0 : 1));
-actual = date.toLocaleFormat('%u');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%u")');
-
-expect = '22';
-actual = date.toLocaleFormat('%V');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%V")');
-
-print('Note: For Date.toLocaleFormat("%m/%d/%y") == Date.toLocaleFormat("%x") ' + 
-      'to pass in Windows, the Regional Setting for the short date must be ' + 
-      'set to mm/dd/yyyy');
-expect = date.toLocaleFormat('%m/%d/%Y');
-actual = date.toLocaleFormat('%x');
-reportCompare(expect, actual, 'Date.toLocaleFormat("%m/%d/%Y") == ' +
-              'Date.toLocaleFormat("%x")');
deleted file mode 100644
--- a/js/src/tests/js1_5/extensions/toLocaleFormat-deprecated-no-Intl.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// |reftest| skip-if(!xulRuntime.shell||this.hasOwnProperty("Intl"))
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// Don't warn about Date.prototype.toLocaleFormat() when Intl isn't supported.
-
-enableLastWarning();
-
-new Date().toLocaleFormat("%Y");
-
-var warning = getLastWarning();
-assertEq(warning, null, "warning shouldn't be emitted for toLocaleFormat");
-
-disableLastWarning();
-
-if (typeof reportCompare === 'function')
-    reportCompare(0, 0);
deleted file mode 100644
--- a/js/src/tests/js1_5/extensions/toLocaleFormat-deprecated.js
+++ /dev/null
@@ -1,28 +0,0 @@
-// |reftest| skip-if(!xulRuntime.shell||!this.hasOwnProperty("Intl"))
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-// Warn once about Date.prototype.toLocaleFormat().
-
-enableLastWarning();
-
-new Date().toLocaleFormat("%Y");
-
-var warning = getLastWarning();
-assertEq(warning !== null, true, "warning should be emitted for toLocaleFormat");
-assertEq(warning.name, "Warning");
-assertEq(warning.message.indexOf("toLocaleFormat") !== -1, true,
-         "warning should mention toLocaleFormat");
-
-clearLastWarning();
-
-new Date().toLocaleFormat("%Y");
-
-warning = getLastWarning();
-assertEq(warning, null, "warning shouldn't be emitted for 2nd call to toLocaleFormat");
-
-disableLastWarning();
-
-if (typeof reportCompare === 'function')
-    reportCompare(0, 0);
--- a/js/src/vm/Time.cpp
+++ b/js/src/vm/Time.cpp
@@ -317,18 +317,16 @@ PRMJ_FormatTime(char* buf, int buflen, c
 
     /*
      * Years before 1900 and after 9999 cause strftime() to abort on Windows.
      * To avoid that we replace it with FAKE_YEAR_BASE + year % 100 and then
      * replace matching substrings in the strftime() result with the real year.
      * Note that FAKE_YEAR_BASE should be a multiple of 100 to make 2-digit
      * year formats (%y) work correctly (since we won't find the fake year
      * in that case).
-     * e.g. new Date(1873, 0).toLocaleFormat('%Y %y') => "1873 73"
-     * See bug 327869.
      */
 #define FAKE_YEAR_BASE 9900
     if (prtm->tm_year < 1900 || prtm->tm_year > 9999) {
         fake_tm_year = FAKE_YEAR_BASE + prtm->tm_year % 100;
         a.tm_year = fake_tm_year - 1900;
     }
     else {
         a.tm_year = prtm->tm_year - 1900;
--- a/js/xpconnect/src/XPCLocale.cpp
+++ b/js/xpconnect/src/XPCLocale.cpp
@@ -3,21 +3,18 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #include "mozilla/Assertions.h"
 
 #include "jsapi.h"
 
-#include "nsCollationCID.h"
 #include "nsJSUtils.h"
-#include "nsICollation.h"
 #include "nsIObserver.h"
-#include "nsNativeCharsetUtils.h"
 #include "nsComponentManagerUtils.h"
 #include "nsServiceManagerUtils.h"
 #include "mozilla/CycleCollectedJSContext.h"
 #include "mozilla/intl/LocaleService.h"
 #include "mozilla/Preferences.h"
 
 #include "xpcpublic.h"
 
@@ -71,142 +68,61 @@ XPCLocaleObserver::Observe(nsISupports* 
 struct XPCLocaleCallbacks : public JSLocaleCallbacks
 {
   XPCLocaleCallbacks()
   {
     MOZ_COUNT_CTOR(XPCLocaleCallbacks);
 
     // Disable the toLocaleUpper/Lower case hooks to use the standard,
     // locale-insensitive definition from String.prototype. (These hooks are
-    // only consulted when EXPOSE_INTL_API is not set.)
+    // only consulted when EXPOSE_INTL_API is not set.) Since EXPOSE_INTL_API
+    // is always set, these hooks should be disabled.
     localeToUpperCase = nullptr;
     localeToLowerCase = nullptr;
-    localeCompare = LocaleCompare;
-    localeToUnicode = LocaleToUnicode;
+    localeCompare = nullptr;
+    localeToUnicode = nullptr;
 
     // It's going to be retained by the ObserverService.
     RefPtr<XPCLocaleObserver> locObs = new XPCLocaleObserver();
     locObs->Init();
   }
 
   ~XPCLocaleCallbacks()
   {
     AssertThreadSafety();
     MOZ_COUNT_DTOR(XPCLocaleCallbacks);
   }
 
   /**
-   * Return the XPCLocaleCallbacks from |cx|'s runtime (see below).
-   */
-  static XPCLocaleCallbacks*
-  This(JSContext* cx)
-  {
-    return This(JS_GetRuntime(cx));
-  }
-
-  /**
    * Return the XPCLocaleCallbacks that's hidden away in |rt|. (This impl uses
    * the locale callbacks struct to store away its per-context data.)
    */
   static XPCLocaleCallbacks*
   This(JSRuntime* rt)
   {
     // Locale information for |cx| was associated using xpc_LocalizeContext;
     // assert and double-check this.
     const JSLocaleCallbacks* lc = JS_GetLocaleCallbacks(rt);
     MOZ_ASSERT(lc);
     MOZ_ASSERT(lc->localeToUpperCase == nullptr);
     MOZ_ASSERT(lc->localeToLowerCase == nullptr);
-    MOZ_ASSERT(lc->localeCompare == LocaleCompare);
-    MOZ_ASSERT(lc->localeToUnicode == LocaleToUnicode);
+    MOZ_ASSERT(lc->localeCompare == nullptr);
+    MOZ_ASSERT(lc->localeToUnicode == nullptr);
 
     const XPCLocaleCallbacks* ths = static_cast<const XPCLocaleCallbacks*>(lc);
     ths->AssertThreadSafety();
     return const_cast<XPCLocaleCallbacks*>(ths);
   }
 
-  static bool
-  LocaleToUnicode(JSContext* cx, const char* src, MutableHandleValue rval)
-  {
-    return This(cx)->ToUnicode(cx, src, rval);
-  }
-
-  static bool
-  LocaleCompare(JSContext* cx, HandleString src1, HandleString src2, MutableHandleValue rval)
-  {
-    return This(cx)->Compare(cx, src1, src2, rval);
-  }
-
 private:
-  bool
-  Compare(JSContext* cx, HandleString src1, HandleString src2, MutableHandleValue rval)
-  {
-    nsresult rv;
-
-    if (!mCollation) {
-      nsCOMPtr<nsICollationFactory> colFactory =
-        do_CreateInstance(NS_COLLATIONFACTORY_CONTRACTID, &rv);
-
-      if (NS_SUCCEEDED(rv)) {
-        rv = colFactory->CreateCollation(getter_AddRefs(mCollation));
-      }
-
-      if (NS_FAILED(rv)) {
-        xpc::Throw(cx, rv);
-        return false;
-      }
-    }
-
-    nsAutoJSString autoStr1, autoStr2;
-    if (!autoStr1.init(cx, src1) || !autoStr2.init(cx, src2)) {
-      return false;
-    }
-
-    int32_t result;
-    rv = mCollation->CompareString(nsICollation::kCollationStrengthDefault,
-                                   autoStr1, autoStr2, &result);
-
-    if (NS_FAILED(rv)) {
-      xpc::Throw(cx, rv);
-      return false;
-    }
-
-    rval.setInt32(result);
-    return true;
-  }
-
-  bool
-  ToUnicode(JSContext* cx, const char* src, MutableHandleValue rval)
-  {
-    // This code is only used by our prioprietary toLocaleFormat method
-    // and should be removed once we get rid of it.
-    // toLocaleFormat is used in non-ICU scenarios where we don't have
-    // access to any other date/time than the OS one, so we have to also
-    // use the OS locale for unicode conversions.
-    // See bug 1349470 for more details.
-    nsAutoString result;
-    NS_CopyNativeToUnicode(nsDependentCString(src), result);
-    JSString* ucstr =
-      JS_NewUCStringCopyN(cx, result.get(), result.Length());
-    if (ucstr) {
-      rval.setString(ucstr);
-      return true;
-    }
-
-    xpc::Throw(cx, NS_ERROR_OUT_OF_MEMORY);
-    return false;
-  }
-
   void AssertThreadSafety() const
   {
     NS_ASSERT_OWNINGTHREAD(XPCLocaleCallbacks);
   }
 
-  nsCOMPtr<nsICollation> mCollation;
-
   NS_DECL_OWNINGTHREAD
 };
 
 bool
 xpc_LocalizeRuntime(JSRuntime* rt)
 {
   // We want to assign the locale callbacks only the first time we
   // localize the context.
--- a/js/xpconnect/tests/chrome/test_xrayToJS.xul
+++ b/js/xpconnect/tests/chrome/test_xrayToJS.xul
@@ -177,17 +177,17 @@ https://bugzilla.mozilla.org/show_bug.cg
   gPrototypeProperties['Date'] =
     ["getTime", "getTimezoneOffset", "getYear", "getFullYear", "getUTCFullYear",
     "getMonth", "getUTCMonth", "getDate", "getUTCDate", "getDay", "getUTCDay",
     "getHours", "getUTCHours", "getMinutes", "getUTCMinutes", "getSeconds",
     "getUTCSeconds", "getMilliseconds", "getUTCMilliseconds", "setTime",
     "setYear", "setFullYear", "setUTCFullYear", "setMonth", "setUTCMonth",
     "setDate", "setUTCDate", "setHours", "setUTCHours", "setMinutes",
     "setUTCMinutes", "setSeconds", "setUTCSeconds", "setMilliseconds",
-    "setUTCMilliseconds", "toUTCString", "toLocaleFormat", "toLocaleString",
+    "setUTCMilliseconds", "toUTCString", "toLocaleString",
     "toLocaleDateString", "toLocaleTimeString", "toDateString", "toTimeString",
     "toISOString", "toJSON", "toSource", "toString", "valueOf", "constructor",
     "toGMTString", Symbol.toPrimitive];
   gConstructorProperties['Date'] = constructorProps(["UTC", "parse", "now"]);
   gPrototypeProperties['Object'] =
     ["constructor", "toSource", "toString", "toLocaleString", "valueOf",
      "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable",
      "__defineGetter__", "__defineSetter__", "__lookupGetter__", "__lookupSetter__",
--- a/layout/generic/TextOverflow.cpp
+++ b/layout/generic/TextOverflow.cpp
@@ -274,17 +274,17 @@ nsDisplayTextOverflowMarker::PaintTextTo
   }
   pt += aOffsetFromRect;
 
   if (mStyle->mType == NS_STYLE_TEXT_OVERFLOW_ELLIPSIS) {
     gfxTextRun* textRun = GetEllipsisTextRun(mFrame);
     if (textRun) {
       NS_ASSERTION(!textRun->IsRightToLeft(),
                    "Ellipsis textruns should always be LTR!");
-      gfxPoint gfxPt(pt.x, pt.y);
+      gfx::Point gfxPt(pt.x, pt.y);
       textRun->Draw(gfxTextRun::Range(textRun), gfxPt,
                     gfxTextRun::DrawParams(aCtx));
     }
   } else {
     RefPtr<nsFontMetrics> fm =
       nsLayoutUtils::GetInflatedFontMetricsForFrame(mFrame);
     nsLayoutUtils::DrawString(mFrame, *fm, aCtx, mStyle->mString.get(),
                               mStyle->mString.Length(), pt);
--- a/layout/generic/nsTextFrame.cpp
+++ b/layout/generic/nsTextFrame.cpp
@@ -5191,17 +5191,17 @@ nsDisplayText::RenderToContext(gfxContex
       // compressed at the same time as text.
       gfxPoint pt = nsLayoutUtils::PointToGfxPoint(framePt, A2D);
       gfxMatrix mat = aCtx->CurrentMatrix()
         .PreTranslate(pt).PreScale(scaleFactor, 1.0).PreTranslate(-pt);
       aCtx->SetMatrix (mat);
     }
   }
   nsTextFrame::PaintTextParams params(aCtx);
-  params.framePt = gfxPoint(framePt.x, framePt.y);
+  params.framePt = gfx::Point(framePt.x, framePt.y);
   params.dirtyRect = extraVisible;
 
   if (aBuilder->IsForGenerateGlyphMask()) {
     MOZ_ASSERT(!aBuilder->IsForPaintingSelectionBG());
     params.state = nsTextFrame::PaintTextParams::GenerateTextMask;
   } else if (aBuilder->IsForPaintingSelectionBG()) {
     params.state = nsTextFrame::PaintTextParams::PaintTextBGColor;
   } else {
@@ -6266,17 +6266,17 @@ AddHyphenToMetrics(nsTextFrame* aTextFra
 
 void
 nsTextFrame::PaintOneShadow(const PaintShadowParams& aParams,
                             nsCSSShadowItem* aShadowDetails,
                             gfxRect& aBoundingBox, uint32_t aBlurFlags)
 {
   AUTO_PROFILER_LABEL("nsTextFrame::PaintOneShadow", GRAPHICS);
 
-  gfxPoint shadowOffset(aShadowDetails->mXOffset, aShadowDetails->mYOffset);
+  gfx::Point shadowOffset(aShadowDetails->mXOffset, aShadowDetails->mYOffset);
   nscoord blurRadius = std::max(aShadowDetails->mRadius, 0);
 
   nscolor shadowColor = aShadowDetails->mHasColor ? aShadowDetails->mColor
                                                   : aParams.foregroundColor;
 
   if (auto* textDrawer = aParams.context->GetTextDrawer()) {
     wr::Shadow wrShadow;
 
@@ -6307,17 +6307,17 @@ nsTextFrame::PaintOneShadow(const PaintS
     }
     shadowGfxRect += gfxPoint(aParams.textBaselinePt.x,
                               aParams.framePt.y + aParams.leftSideOffset);
   } else {
     shadowGfxRect =
       aBoundingBox + gfxPoint(aParams.framePt.x + aParams.leftSideOffset,
                               aParams.textBaselinePt.y);
   }
-  shadowGfxRect += shadowOffset;
+  shadowGfxRect += gfxPoint(shadowOffset.x, shadowOffset.y);
 
   nsRect shadowRect(NSToCoordRound(shadowGfxRect.X()),
                     NSToCoordRound(shadowGfxRect.Y()),
                     NSToCoordRound(shadowGfxRect.Width()),
                     NSToCoordRound(shadowGfxRect.Height()));
 
   nsContextBoxBlur contextBoxBlur;
   const auto A2D = PresContext()->AppUnitsPerDevPixel();
@@ -6492,19 +6492,19 @@ nsTextFrame::PaintTextWithSelectionColor
     nscolor foreground, background;
     if (aParams.IsGenerateTextMask()) {
       foreground = NS_RGBA(0, 0, 0, 255);
     } else {
       GetSelectionTextColors(selectionType, *aParams.textPaintStyle,
                              rangeStyle, &foreground, &background);
     }
 
-    gfxPoint textBaselinePt = vertical ?
-      gfxPoint(aParams.textBaselinePt.x, aParams.framePt.y + iOffset) :
-      gfxPoint(aParams.framePt.x + iOffset, aParams.textBaselinePt.y);
+    gfx::Point textBaselinePt = vertical ?
+      gfx::Point(aParams.textBaselinePt.x, aParams.framePt.y + iOffset) :
+      gfx::Point(aParams.framePt.x + iOffset, aParams.textBaselinePt.y);
 
     // Determine what shadow, if any, to draw - either from textStyle
     // or from the ::-moz-selection pseudo-class if specified there
     nsCSSShadowArray* shadow = textStyle->GetTextShadow();
     GetSelectionTextShadow(this, selectionType, *aParams.textPaintStyle,
                            &shadow);
     if (shadow) {
       nscoord startEdge = iOffset;
@@ -6662,31 +6662,31 @@ nsTextFrame::PaintTextWithSelection(
   }
 
   return true;
 }
 
 void
 nsTextFrame::DrawEmphasisMarks(gfxContext* aContext,
                                WritingMode aWM,
-                               const gfxPoint& aTextBaselinePt,
-                               const gfxPoint& aFramePt, Range aRange,
+                               const gfx::Point& aTextBaselinePt,
+                               const gfx::Point& aFramePt, Range aRange,
                                const nscolor* aDecorationOverrideColor,
                                PropertyProvider* aProvider)
 {
   const EmphasisMarkInfo* info = GetProperty(EmphasisMarkProperty());
   if (!info) {
     return;
   }
 
   bool isTextCombined = StyleContext()->IsTextCombined();
   nscolor color = aDecorationOverrideColor ? *aDecorationOverrideColor :
     nsLayoutUtils::GetColor(this, &nsStyleText::mTextEmphasisColor);
   aContext->SetColor(Color::FromABGR(color));
-  gfxPoint pt;
+  gfx::Point pt;
   if (!isTextCombined) {
     pt = aTextBaselinePt;
   } else {
     MOZ_ASSERT(aWM.IsVertical());
     pt = aFramePt;
     if (aWM.IsVerticalRL()) {
       pt.x += GetSize().width - GetLogicalBaseline(aWM);
     } else {
@@ -6982,35 +6982,35 @@ nsTextFrame::PaintText(const PaintTextPa
   }
   // Trim trailing whitespace, unless we're painting a selection highlight,
   // which should include trailing spaces if present (bug 1146754).
   provider.InitializeForDisplay(!aItem.mIsFrameSelected.value());
 
   const bool reversed = mTextRun->IsInlineReversed();
   const bool verticalRun = mTextRun->IsVertical();
   WritingMode wm = GetWritingMode();
-  const gfxFloat frameWidth = GetSize().width;
-  const gfxFloat frameHeight = GetSize().height;
-  gfxPoint textBaselinePt;
+  const float frameWidth = GetSize().width;
+  const float frameHeight = GetSize().height;
+  gfx::Point textBaselinePt;
   if (verticalRun) {
     if (wm.IsVerticalLR()) {
       textBaselinePt.x = nsLayoutUtils::GetSnappedBaselineX(
         this, aParams.context, nscoord(aParams.framePt.x), mAscent);
     } else {
       textBaselinePt.x = nsLayoutUtils::GetSnappedBaselineX(
         this, aParams.context, nscoord(aParams.framePt.x) + frameWidth,
         -mAscent);
     }
     textBaselinePt.y = reversed ? aParams.framePt.y + frameHeight
                                 : aParams.framePt.y;
   } else {
     textBaselinePt =
-      gfxPoint(reversed ? aParams.framePt.x + frameWidth : aParams.framePt.x,
-               nsLayoutUtils::GetSnappedBaselineY(
-                 this, aParams.context, aParams.framePt.y, mAscent));
+      gfx::Point(reversed ? aParams.framePt.x + frameWidth : aParams.framePt.x,
+                 nsLayoutUtils::GetSnappedBaselineY(
+                   this, aParams.context, aParams.framePt.y, mAscent));
   }
   Range range = ComputeTransformedRange(provider);
   uint32_t startOffset = range.start;
   uint32_t maxLength = range.Length();
   nscoord snappedStartEdge, snappedEndEdge;
   if (!MeasureCharClippedText(provider, aItem.mVisIStartEdge, aItem.mVisIEndEdge,
          &startOffset, &maxLength, &snappedStartEdge, &snappedEndEdge)) {
     return;
@@ -7095,17 +7095,17 @@ nsTextFrame::PaintText(const PaintTextPa
   aParams.context->SetFontSmoothingBackgroundColor(
     Color::FromABGR(StyleUserInterface()->mFontSmoothingBackgroundColor));
   DrawText(range, textBaselinePt, params);
   aParams.context->SetFontSmoothingBackgroundColor(Color());
 }
 
 static void
 DrawTextRun(const gfxTextRun* aTextRun,
-            const gfxPoint& aTextBaselinePt,
+            const gfx::Point& aTextBaselinePt,
             gfxTextRun::Range aRange,
             const nsTextFrame::DrawTextRunParams& aParams)
 {
   gfxTextRun::DrawParams params(aParams.context);
   params.provider = aParams.provider;
   params.advanceWidth = aParams.advanceWidth;
   params.contextPaint = aParams.contextPaint;
   params.callbacks = aParams.callbacks;
@@ -7136,47 +7136,47 @@ DrawTextRun(const gfxTextRun* aTextRun,
       aTextRun->Draw(aRange, aTextBaselinePt, params);
     } else {
       aTextRun->Draw(aRange, aTextBaselinePt, params);
     }
   }
 }
 
 void
-nsTextFrame::DrawTextRun(Range aRange, const gfxPoint& aTextBaselinePt,
+nsTextFrame::DrawTextRun(Range aRange, const gfx::Point& aTextBaselinePt,
                          const DrawTextRunParams& aParams)
 {
   MOZ_ASSERT(aParams.advanceWidth, "Must provide advanceWidth");
 
   ::DrawTextRun(mTextRun, aTextBaselinePt, aRange, aParams);
 
   if (aParams.drawSoftHyphen) {
     // Don't use ctx as the context, because we need a reference context here,
     // ctx may be transformed.
     RefPtr<gfxTextRun> hyphenTextRun =
       GetHyphenTextRun(mTextRun, nullptr, this);
     if (hyphenTextRun) {
       // For right-to-left text runs, the soft-hyphen is positioned at the left
       // of the text, minus its own width
-      gfxFloat hyphenBaselineX = aTextBaselinePt.x +
+      float hyphenBaselineX = aTextBaselinePt.x +
         mTextRun->GetDirection() * (*aParams.advanceWidth) -
         (mTextRun->IsRightToLeft() ? hyphenTextRun->GetAdvanceWidth() : 0);
       DrawTextRunParams params = aParams;
       params.provider = nullptr;
       params.advanceWidth = nullptr;
       ::DrawTextRun(hyphenTextRun.get(),
-                    gfxPoint(hyphenBaselineX, aTextBaselinePt.y),
+                    gfx::Point(hyphenBaselineX, aTextBaselinePt.y),
                     Range(hyphenTextRun.get()), params);
     }
   }
 }
 
 void
 nsTextFrame::DrawTextRunAndDecorations(Range aRange,
-                                       const gfxPoint& aTextBaselinePt,
+                                       const gfx::Point& aTextBaselinePt,
                                        const DrawTextParams& aParams,
                                        const TextDecorations& aDecorations)
 {
     const gfxFloat app =
       aParams.textStyle->PresContext()->AppUnitsPerDevPixel();
     // Writing mode of parent frame is used because the text frame may
     // be orthogonal to its parent when text-combine-upright is used or
     // its parent has "display: contents", and in those cases, we want
@@ -7307,17 +7307,17 @@ nsTextFrame::DrawTextRunAndDecorations(R
     params.decoration = NS_STYLE_TEXT_DECORATION_LINE_LINE_THROUGH;
     for (const LineDecoration& dec : Reversed(aDecorations.mStrikes)) {
       paintDecorationLine(dec, &Metrics::strikeoutSize,
                           &Metrics::strikeoutOffset);
     }
 }
 
 void
-nsTextFrame::DrawText(Range aRange, const gfxPoint& aTextBaselinePt,
+nsTextFrame::DrawText(Range aRange, const gfx::Point& aTextBaselinePt,
                       const DrawTextParams& aParams)
 {
   TextDecorations decorations;
   GetTextDecorations(aParams.textStyle->PresContext(),
                      aParams.callbacks ? eUnresolvedColors : eResolvedColors,
                      decorations);
 
   // Hide text decorations if we're currently hiding @font-face fallback text
--- a/layout/generic/nsTextFrame.h
+++ b/layout/generic/nsTextFrame.h
@@ -436,17 +436,17 @@ public:
      * has been emitted to the gfxContext.
      */
     virtual void NotifySelectionDecorationLinePathEmitted() {}
   };
 
   struct PaintTextParams
   {
     gfxContext* context;
-    gfxPoint framePt;
+    mozilla::gfx::Point framePt;
     LayoutDeviceRect dirtyRect;
     mozilla::SVGContextPaint* contextPaint = nullptr;
     DrawPathCallbacks* callbacks = nullptr;
     enum
     {
       PaintText,        // Normal text painting.
       PaintTextBGColor, // Only paint background color of the selected text
                         // range in this state.
@@ -463,17 +463,17 @@ public:
 
     bool IsPaintText() const { return state == PaintText; }
     bool IsGenerateTextMask() const { return state == GenerateTextMask; }
     bool IsPaintBGColor() const { return state == PaintTextBGColor; }
   };
 
   struct PaintTextSelectionParams : PaintTextParams
   {
-    gfxPoint textBaselinePt;
+    mozilla::gfx::Point textBaselinePt;
     PropertyProvider* provider = nullptr;
     Range contentRange;
     nsTextPaintStyle* textPaintStyle = nullptr;
     explicit PaintTextSelectionParams(const PaintTextParams& aParams)
       : PaintTextParams(aParams)
     {}
   };
 
@@ -490,17 +490,17 @@ public:
     bool drawSoftHyphen = false;
     explicit DrawTextRunParams(gfxContext* aContext)
       : context(aContext)
     {}
   };
 
   struct DrawTextParams : DrawTextRunParams
   {
-    gfxPoint framePt;
+    mozilla::gfx::Point framePt;
     LayoutDeviceRect dirtyRect;
     const nsTextPaintStyle* textStyle = nullptr;
     const nsCharClipDisplayItem::ClipEdges* clipEdges = nullptr;
     const nscolor* decorationOverrideColor = nullptr;
     explicit DrawTextParams(gfxContext* aContext)
       : DrawTextRunParams(aContext)
     {}
   };
@@ -530,18 +530,18 @@ public:
     const nsCharClipDisplayItem::ClipEdges& aClipEdges);
   // helper: paint text decorations for text selected by aSelectionType
   void PaintTextSelectionDecorations(const PaintTextSelectionParams& aParams,
                                      const mozilla::UniquePtr<SelectionDetails>& aDetails,
                                      SelectionType aSelectionType);
 
   void DrawEmphasisMarks(gfxContext* aContext,
                          mozilla::WritingMode aWM,
-                         const gfxPoint& aTextBaselinePt,
-                         const gfxPoint& aFramePt,
+                         const mozilla::gfx::Point& aTextBaselinePt,
+                         const mozilla::gfx::Point& aFramePt,
                          Range aRange,
                          const nscolor* aDecorationOverrideColor,
                          PropertyProvider* aProvider);
 
   nscolor GetCaretColorAt(int32_t aOffset) override;
 
   int16_t GetSelectionStatus(int16_t* aSelectionFlags);
 
@@ -698,18 +698,18 @@ protected:
   // overflow rect of the emphasis marks.
   nsRect UpdateTextEmphasis(mozilla::WritingMode aWM,
                             PropertyProvider& aProvider);
 
   struct PaintShadowParams
   {
     gfxTextRun::Range range;
     LayoutDeviceRect dirtyRect;
-    gfxPoint framePt;
-    gfxPoint textBaselinePt;
+    mozilla::gfx::Point framePt;
+    mozilla::gfx::Point textBaselinePt;
     gfxContext* context;
     nscolor foregroundColor = NS_RGBA(0, 0, 0, 0);
     const nsCharClipDisplayItem::ClipEdges* clipEdges = nullptr;
     PropertyProvider* provider = nullptr;
     nscoord leftSideOffset = 0;
     explicit PaintShadowParams(const PaintTextParams& aParams)
       : dirtyRect(aParams.dirtyRect)
       , framePt(aParams.framePt)
@@ -796,26 +796,26 @@ protected:
     eResolvedColors,
     eUnresolvedColors
   };
   void GetTextDecorations(nsPresContext* aPresContext,
                           TextDecorationColorResolution aColorResolution,
                           TextDecorations& aDecorations);
 
   void DrawTextRun(Range aRange,
-                   const gfxPoint& aTextBaselinePt,
+                   const mozilla::gfx::Point& aTextBaselinePt,
                    const DrawTextRunParams& aParams);
 
   void DrawTextRunAndDecorations(Range aRange,
-                                 const gfxPoint& aTextBaselinePt,
+                                 const mozilla::gfx::Point& aTextBaselinePt,
                                  const DrawTextParams& aParams,
                                  const TextDecorations& aDecorations);
 
   void DrawText(Range aRange,
-                const gfxPoint& aTextBaselinePt,
+                const mozilla::gfx::Point& aTextBaselinePt,
                 const DrawTextParams& aParams);
 
   // Set non empty rect to aRect, it should be overflow rect or frame rect.
   // If the result rect is larger than the given rect, this returns true.
   bool CombineSelectionUnderlineRect(nsPresContext* aPresContext,
                                      nsRect& aRect);
 
   /**
--- a/layout/mathml/nsMathMLChar.cpp
+++ b/layout/mathml/nsMathMLChar.cpp
@@ -2074,17 +2074,18 @@ nsMathMLChar::PaintForeground(nsIFrame* 
 
   switch(mDraw)
   {
     case DRAW_NORMAL:
     case DRAW_VARIANT:
       // draw a single glyph (base size or size variant)
       // XXXfredw verify if mGlyphs[0] is non-null to workaround bug 973322.
       if (mGlyphs[0]) {
-        mGlyphs[0]->Draw(Range(mGlyphs[0].get()), gfxPoint(0.0, mUnscaledAscent),
+        mGlyphs[0]->Draw(Range(mGlyphs[0].get()),
+                         gfx::Point(0.0, mUnscaledAscent),
                          gfxTextRun::DrawParams(&aRenderingContext));
       }
       break;
     case DRAW_PARTS: {
       // paint by parts
       if (NS_STRETCH_DIRECTION_VERTICAL == mDirection)
         PaintVertically(presContext, &aRenderingContext, r, fgColor);
       else if (NS_STRETCH_DIRECTION_HORIZONTAL == mDirection)
@@ -2232,17 +2233,17 @@ nsMathMLChar::PaintVertically(nsPresCont
         }
         else { // middle
           clipRect.y = start[i];
           clipRect.height = end[i] - start[i];
         }
       }
       if (!clipRect.IsEmpty()) {
         AutoPushClipRect clip(aThebesContext, oneDevPixel, clipRect);
-        mGlyphs[i]->Draw(Range(mGlyphs[i].get()), gfxPoint(dx, dy), params);
+        mGlyphs[i]->Draw(Range(mGlyphs[i].get()), gfx::Point(dx, dy), params);
       }
     }
   }
 
   ///////////////
   // fill the gap between top and middle, and between middle and bottom.
   if (!mGlyphs[3]) { // null glue : draw a rule
     // figure out the dimensions of the rule to be drawn :
@@ -2298,17 +2299,17 @@ nsMathMLChar::PaintVertically(nsPresCont
       // Make sure not to draw outside the character
       nscoord dy = std::max(end[i], aRect.y);
       nscoord fillEnd = std::min(start[i+1], aRect.YMost());
       while (dy < fillEnd) {
         clipRect.y = dy;
         clipRect.height = std::min(bm.ascent + bm.descent, fillEnd - dy);
         AutoPushClipRect clip(aThebesContext, oneDevPixel, clipRect);
         dy += bm.ascent;
-        mGlyphs[3]->Draw(Range(mGlyphs[3].get()), gfxPoint(dx, dy), params);
+        mGlyphs[3]->Draw(Range(mGlyphs[3].get()), gfx::Point(dx, dy), params);
         dy += bm.descent;
       }
     }
   }
 #ifdef DEBUG
   else {
     for (i = 0; i < 2; ++i) {
       NS_ASSERTION(end[i] >= start[i+1],
@@ -2402,17 +2403,17 @@ nsMathMLChar::PaintHorizontally(nsPresCo
         }
         else { // middle
           clipRect.x = start[i];
           clipRect.width = end[i] - start[i];
         }
       }
       if (!clipRect.IsEmpty()) {
         AutoPushClipRect clip(aThebesContext, oneDevPixel, clipRect);
-        mGlyphs[i]->Draw(Range(mGlyphs[i].get()), gfxPoint(dx, dy), params);
+        mGlyphs[i]->Draw(Range(mGlyphs[i].get()), gfx::Point(dx, dy), params);
       }
     }
   }
 
   ////////////////
   // fill the gap between left and middle, and between middle and right.
   if (!mGlyphs[3]) { // null glue : draw a rule
     // figure out the dimensions of the rule to be drawn :
@@ -2466,17 +2467,17 @@ nsMathMLChar::PaintHorizontally(nsPresCo
       // Make sure not to draw outside the character
       nscoord dx = std::max(end[i], aRect.x);
       nscoord fillEnd = std::min(start[i+1], aRect.XMost());
       while (dx < fillEnd) {
         clipRect.x = dx;
         clipRect.width = std::min(bm.rightBearing - bm.leftBearing, fillEnd - dx);
         AutoPushClipRect clip(aThebesContext, oneDevPixel, clipRect);
         dx -= bm.leftBearing;
-        mGlyphs[3]->Draw(Range(mGlyphs[3].get()), gfxPoint(dx, dy), params);
+        mGlyphs[3]->Draw(Range(mGlyphs[3].get()), gfx::Point(dx, dy), params);
         dx += bm.rightBearing;
       }
     }
   }
 #ifdef DEBUG
   else { // no glue
     for (i = 0; i < 2; ++i) {
       NS_ASSERTION(end[i] >= start[i+1],
new file mode 100644
--- /dev/null
+++ b/layout/reftests/bugs/1410028-ref.html
@@ -0,0 +1,2 @@
+<!doctype html>
+<div style="background-color: blue; width: 100px; height: 100px; padding: 10px"></div>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/bugs/1410028.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<div></div>
+<script>
+let setStyle = (el, props) => {
+  for (prop in props)
+    el.style.setProperty(prop, props[prop]);
+};
+
+setStyle(document.querySelector('div'), {
+  all: 'initial',
+  'background-color': 'blue',
+  display: 'block',
+  width: '100px',
+  height: '100px',
+  padding: '10px'
+});
+</script>
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -2041,8 +2041,9 @@ needs-focus != 1377447-1.html 1377447-2.
 == 1395650-1.html 1395650-1-ref.html
 == 1398500-1.html 1398500-1-ref.html
 == 1401317.html 1401317-ref.html
 == 1401992.html 1401992-ref.html
 == 1405878-1.xml 1405878-1-ref.xml
 == 1404057.html 1404057-ref.html
 != 1404057.html 1404057-noref.html
 == 1406183-1.html 1406183-1-ref.html
+== 1410028.html 1410028-ref.html
--- a/layout/style/ServoKeyframeRule.cpp
+++ b/layout/style/ServoKeyframeRule.cpp
@@ -26,17 +26,17 @@ public:
   }
 
   NS_DECL_CYCLE_COLLECTING_ISUPPORTS
   NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(
     ServoKeyframeDeclaration, nsICSSDeclaration)
 
   NS_IMETHOD GetParentRule(nsIDOMCSSRule** aParent) final
   {
-    *aParent = mRule;
+    NS_IF_ADDREF(*aParent = mRule);
     return NS_OK;
   }
 
   void DropReference() { mRule = nullptr; }
 
   DeclarationBlock* GetCSSDeclaration(Operation aOperation) final
   {
     return mDecls;
--- a/layout/svg/SVGTextFrame.cpp
+++ b/layout/svg/SVGTextFrame.cpp
@@ -3686,17 +3686,17 @@ SVGTextFrame::PaintSVG(gfxContext& aCont
     gfxMatrix runTransform =
       run.GetTransformFromUserSpaceForPainting(presContext, item) *
       currentMatrix;
     aContext.SetMatrix(runTransform);
 
     if (drawMode != DrawMode(0)) {
       bool paintSVGGlyphs;
       nsTextFrame::PaintTextParams params(&aContext);
-      params.framePt = gfxPoint();
+      params.framePt = gfx::Point();
       params.dirtyRect = LayoutDevicePixel::
         FromAppUnits(frame->GetVisualOverflowRect(), auPerDevPx);
       params.contextPaint = contextPaint;
       if (ShouldRenderAsPath(frame, paintSVGGlyphs)) {
         SVGTextDrawPathCallbacks callbacks(this, aContext, frame,
                                            matrixForPaintServers,
                                            paintSVGGlyphs);
         params.callbacks = &callbacks;
--- a/media/webrtc/signaling/src/media-conduit/WebrtcMediaCodecVP8VideoCodec.cpp
+++ b/media/webrtc/signaling/src/media-conduit/WebrtcMediaCodecVP8VideoCodec.cpp
@@ -87,17 +87,17 @@ public:
     CSFLogDebug(LOGTAG,  "%s %p", __FUNCTION__, this);
   }
 
   void HandleOutputFormatChanged(MediaFormat::Param aFormat) override
   {
     CSFLogDebug(LOGTAG,  "%s %p", __FUNCTION__, this);
   }
 
-  void HandleOutput(Sample::Param aSample)
+  void HandleOutput(Sample::Param aSample) override
   {
     CSFLogDebug(LOGTAG,  "%s %p", __FUNCTION__, this);
     BufferInfo::LocalRef info = aSample->Info();
 
     int32_t size;
     bool ok = NS_SUCCEEDED(info->Size(&size));
     MOZ_RELEASE_ASSERT(ok);
 
--- a/mobile/android/modules/Prompt.jsm
+++ b/mobile/android/modules/Prompt.jsm
@@ -30,17 +30,19 @@ function getRootWindow(win) {
 
 function Prompt(aOptions) {
   this.window = "window" in aOptions ? aOptions.window : null;
 
   this.msg = { async: true };
 
   if (this.window) {
     let window = getRootWindow(this.window);
-    var tab = window &&
+    let tab = window &&
+              window.document.documentElement
+                    .getAttribute("windowtype") === "navigator:browser" &&
               window.BrowserApp &&
               window.BrowserApp.getTabForWindow(this.window);
     if (tab) {
       this.msg.tabId = tab.id;
     }
   }
 
   if (aOptions.priority === 1)
--- a/python/mozboot/mozboot/stylo.py
+++ b/python/mozboot/mozboot/stylo.py
@@ -1,8 +1,8 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 from __future__ import absolute_import, print_function, unicode_literals
 
 WINDOWS = 'win64-clang-cl'
-LINUX = 'linux64-clang'
+LINUX = 'linux64-clang-3.9'
--- a/python/mozbuild/mozbuild/action/test_archive.py
+++ b/python/mozbuild/mozbuild/action/test_archive.py
@@ -367,19 +367,19 @@ ARCHIVE_FILES = {
     'talos': [
         {
             'source': buildconfig.topsrcdir,
             'base': 'testing',
             'pattern': 'talos/**',
         },
         {
             'source': buildconfig.topsrcdir,
-            'base': 'third_party/speedometer',
+            'base': 'third_party/webkit/PerformanceTests',
             'pattern': '**',
-            'dest': 'talos/talos/tests/speedometer/',
+            'dest': 'talos/talos/tests/webkit/PerformanceTests/',
         },
     ],
     'awsy': [
         {
             'source': buildconfig.topsrcdir,
             'base': 'testing',
             'pattern': 'awsy/**',
         },
--- a/testing/talos/talos/tests/speedometer/speedometer.manifest
+++ b/testing/talos/talos/tests/speedometer/speedometer.manifest
@@ -1,1 +1,1 @@
-% http://localhost/tests/speedometer/index.html?gecko
+% http://localhost/tests/webkit/PerformanceTests/Speedometer/index.html?gecko
--- a/testing/web-platform/meta/speech-api/SpeechSynthesis-speak-ownership.html.ini
+++ b/testing/web-platform/meta/speech-api/SpeechSynthesis-speak-ownership.html.ini
@@ -1,4 +1,5 @@
 [SpeechSynthesis-speak-ownership.html]
+  disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1410248
   [Using the same SpeechSynthesisUtterance with two SpeechSynthesis instances]
     expected: FAIL
 
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/meta/speech-api/historical.html.ini
@@ -0,0 +1,3 @@
+[historical.html]
+  disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1410248
+
--- a/third_party/moz.build
+++ b/third_party/moz.build
@@ -2,10 +2,10 @@ with Files('moz.build'):
     BUG_COMPONENT = ('Core', 'Build Config')
 
 with Files('aom/**'):
     BUG_COMPONENT = ('Core', 'Audio/Video: Playback')
 
 with Files('rust/**'):
     BUG_COMPONENT = ('Core', 'Build Config')
 
-with Files('speedometer/**'):
+with Files('webkit/**'):
     BUG_COMPONENT = ('Core', 'Build Config')
rename from third_party/speedometer/InteractiveRunner.html
rename to third_party/webkit/PerformanceTests/Speedometer/InteractiveRunner.html
rename from third_party/speedometer/README_MOZILLA
rename to third_party/webkit/PerformanceTests/Speedometer/README_MOZILLA
rename from third_party/speedometer/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/index.html
rename from third_party/speedometer/resources/benchmark-report.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/benchmark-report.js
rename from third_party/speedometer/resources/benchmark-runner.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/benchmark-runner.js
rename from third_party/speedometer/resources/flightjs-example-app/LICENSE.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/LICENSE.md
rename from third_party/speedometer/resources/flightjs-example-app/README.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/README.md
rename from third_party/speedometer/resources/flightjs-example-app/app/boot/page.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/boot/page.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_data/compose_box.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/compose_box.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_data/mail_items.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/mail_items.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_data/move_to.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_data/move_to.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_ui/compose_box.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/compose_box.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_ui/folders.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/folders.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_ui/mail_controls.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/mail_controls.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_ui/mail_items.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/mail_items.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_ui/move_to_selector.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/move_to_selector.js
rename from third_party/speedometer/resources/flightjs-example-app/app/component_ui/with_select.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/with_select.js
rename from third_party/speedometer/resources/flightjs-example-app/app/css/custom.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/css/custom.css
rename from third_party/speedometer/resources/flightjs-example-app/app/data.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/data.js
rename from third_party/speedometer/resources/flightjs-example-app/app/templates.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/templates.js
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.css
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap-responsive.min.css
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap.css
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap.min.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/css/bootstrap.min.css
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/img/glyphicons-halflings-white.png
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/img/glyphicons-halflings.png
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/js/bootstrap.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/js/bootstrap.js
rename from third_party/speedometer/resources/flightjs-example-app/components/bootstrap/js/bootstrap.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/bootstrap/js/bootstrap.min.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/.gitignore
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/.gitignore
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/CHANGES
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/CHANGES
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/CONTRIBUTORS.md
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/LICENSE
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/LICENSE
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/README.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/README.md
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/component.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/component.json
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-sham.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/es5-sham.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-sham.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/es5-sham.min.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-shim.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/es5-shim.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/es5-shim.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/es5-shim.min.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/package.json
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h-kill.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h-matchers.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/helpers/h.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/index.html
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine-html.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine.css
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/jasmine_favicon.png
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/json2.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/lib/json2.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-array.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-array.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-date.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-date.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-function.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-function.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-object.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-object.js
rename from third_party/speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-string.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/es5-shim/tests/spec/s-string.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/.travis.yml
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/.travis.yml
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/lib/advice.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/advice.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/lib/component.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/component.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/lib/compose.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/compose.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/lib/index.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/index.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/lib/logger.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/logger.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/lib/registry.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/registry.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/lib/utils.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/utils.js
rename from third_party/speedometer/resources/flightjs-example-app/components/flight/tools/debug/debug.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/tools/debug/debug.js
rename from third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/LICENSE.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jasmine-flight/LICENSE.md
rename from third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/README.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jasmine-flight/README.md
rename from third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/bower.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jasmine-flight/bower.json
rename from third_party/speedometer/resources/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jasmine-flight/lib/jasmine-flight.js
rename from third_party/speedometer/resources/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jasmine-jquery/lib/jasmine-jquery.js
rename from third_party/speedometer/resources/flightjs-example-app/components/jquery/component.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jquery/component.json
rename from third_party/speedometer/resources/flightjs-example-app/components/jquery/composer.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jquery/composer.json
rename from third_party/speedometer/resources/flightjs-example-app/components/jquery/jquery.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jquery/jquery.js
rename from third_party/speedometer/resources/flightjs-example-app/components/jquery/jquery.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/jquery/jquery.min.js
rename from third_party/speedometer/resources/flightjs-example-app/components/mustache/mustache.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/mustache/mustache.js
rename from third_party/speedometer/resources/flightjs-example-app/components/requirejs/require.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/requirejs/require.js
rename from third_party/speedometer/resources/flightjs-example-app/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/index.html
rename from third_party/speedometer/resources/flightjs-example-app/karma.conf.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/karma.conf.js
rename from third_party/speedometer/resources/flightjs-example-app/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/package.json
rename from third_party/speedometer/resources/flightjs-example-app/requireMain.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/requireMain.js
rename from third_party/speedometer/resources/gauge.png
rename to third_party/webkit/PerformanceTests/Speedometer/resources/gauge.png
rename from third_party/speedometer/resources/gauge@2x.png
rename to third_party/webkit/PerformanceTests/Speedometer/resources/gauge@2x.png
rename from third_party/speedometer/resources/logo.png
rename to third_party/webkit/PerformanceTests/Speedometer/resources/logo.png
rename from third_party/speedometer/resources/logo@2x.png
rename to third_party/webkit/PerformanceTests/Speedometer/resources/logo@2x.png
rename from third_party/speedometer/resources/main.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/main.css
rename from third_party/speedometer/resources/main.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/main.js
rename from third_party/speedometer/resources/tests.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/tests.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/.angular-cli.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/.angular-cli.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/.editorconfig
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/.editorconfig
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/README.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/README.md
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-app.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-app.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-common.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/assets/css/todomvc-common.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/favicon.ico
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/favicon.ico
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/inline.3b7f8ce2e6bc2f77dd83.bundle.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/inline.3b7f8ce2e6bc2f77dd83.bundle.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/main.f1c5d33a6950c335064d.bundle.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/main.f1c5d33a6950c335064d.bundle.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/polyfills.3a2aed82a0c9b24e6585.bundle.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/polyfills.3a2aed82a0c9b24e6585.bundle.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/styles.d41d8cd98f00b204e980.bundle.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/dist/vendor.9a296bbc1909830a9106.bundle.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/dist/vendor.9a296bbc1909830a9106.bundle.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/karma.conf.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/karma.conf.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/package-lock.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/package-lock.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/package.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/protractor.conf.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/protractor.conf.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.spec.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.spec.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.component.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/app.module.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/app.module.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.spec.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo-data.service.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.spec.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.spec.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/app/todo.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-app.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-app.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-common.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/assets/css/todomvc-common.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.prod.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.prod.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/environments/environment.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/favicon.ico
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/favicon.ico
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/main.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/main.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/polyfills.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/polyfills.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/styles.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/styles.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/test.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/test.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.app.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.app.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.spec.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/tsconfig.spec.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/src/typings.d.ts
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/src/typings.d.ts
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/tsconfig.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/tsconfig.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angular/tslint.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angular/tslint.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/app.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/app.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/controllers/todoCtrl.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoEscape.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/directives/todoFocus.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/js/services/todoStorage.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js.map
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-resource/angular-resource.min.js.map
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js.map
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular-route/angular-route.min.js.map
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js.map
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/angular/angular.min.js.map
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/index.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/index.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/package.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/readme.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-app-css/readme.md
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/base.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/package.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/readme.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/node_modules/todomvc-common/readme.md
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/package-lock.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/package-lock.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/package.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/readme.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/readme.md
rename from third_party/speedometer/resources/todomvc/architecture-examples/angularjs/todomvc-index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/angularjs/todomvc-index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/app.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/js/app.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/backbone.sync.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/js/backbone.sync.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/collections/todos.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/js/collections/todos.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/models/todo.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/js/models/todo.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/routers/router.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/js/routers/router.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/views/app-view.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/js/views/app-view.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/js/views/todo-view.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/js/views/todo-view.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.map
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone-min.map
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/backbone/backbone.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.map
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/jquery/dist/jquery.min.map
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-app-css/index.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/todomvc-common/base.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.map
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore-min.map
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/node_modules/underscore/underscore.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/package-lock.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/package-lock.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/package.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/backbone/readme.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/backbone/readme.md
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/todomvc.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/todomvc.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/assets/vendor.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/crossdomain.xml
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/crossdomain.xml
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/robots.txt
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/robots.txt
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.bowerrc
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.bowerrc
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.editorconfig
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.editorconfig
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.ember-cli
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.ember-cli
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.gitignore
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.gitignore
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.jshintrc
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.jshintrc
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.travis.yml
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.travis.yml
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.watchmanconfig
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/.watchmanconfig
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/README.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/README.md
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/app.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/app.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-item.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-item.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-list.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/components/todo-list.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/active.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/active.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/application.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/application.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/completed.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/controllers/completed.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/gt.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/gt.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/pluralize.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/helpers/pluralize.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/instance-initializers/global.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/instance-initializers/global.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/resolver.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/resolver.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/router.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/router.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/routes/application.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/routes/application.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/memory.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/memory.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/repo.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/services/repo.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/active.hbs
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/active.hbs
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/application.hbs
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/application.hbs
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/completed.hbs
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/completed.hbs
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-item.hbs
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-item.hbs
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-list.hbs
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/components/todo-list.hbs
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/index.hbs
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/app/templates/index.hbs
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/bower.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/bower.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/config/environment.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/config/environment.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/ember-cli-build.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/ember-cli-build.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/package.json
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/package.json
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/public/crossdomain.xml
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/public/crossdomain.xml
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/public/robots.txt
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/public/robots.txt
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/testem.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/testem.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/.jshintrc
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/.jshintrc
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/destroy-app.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/destroy-app.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/module-for-acceptance.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/module-for-acceptance.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/resolver.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/resolver.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/start-app.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/helpers/start-app.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/test-helper.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/tests/test-helper.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/base.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/base.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/index.css
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/source/vendor/index.css
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/testem.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/testem.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs-debug/tests/index.html
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs-debug/tests/index.html
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.bowerrc
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/.bowerrc
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.editorconfig
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/.editorconfig
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.ember-cli
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/.ember-cli
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.gitignore
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/.gitignore
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/.jshintrc
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/.jshintrc
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/README.md
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/README.md
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/app.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/app/app.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/components/todo-item.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/app/components/todo-item.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/components/todo-list.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/app/components/todo-list.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/active.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/active.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/application.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/application.js
rename from third_party/speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/completed.js
rename to third_party/webkit/PerformanceTests/Speedometer/resources/todomvc/architecture-examples/emberjs/app/controllers/completed.js
rename from third_party/speedometer/resources/todomvc/architecture-examp