2 Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
3 This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
4 The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
5 The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
6 Code distributed by Google as part of the polymer project is also
7 subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9 <link rel=
"import" href=
"../polymer/polymer.html">
11 <link rel=
"import" href=
"route.html">
12 <link rel=
"import" href=
"routing.html">
16 MoreRouting
.ContextAware
= {
20 this._makeRoutingReady();
24 * Calls `routingReady`, and ensures that it is called in a top-down manner.
26 * We need to be sure that parent nodes have `routingReady` triggered before
27 * their children so that they can properly configure nested routes.
29 * Unfortunately, `ready` is sometimes bottom-up, sometimes top-down.
30 * Ideally, this wouldn't be necessary.
32 * @see https://github.com/Polymer/polymer/pull/1448
34 _makeRoutingReady: function() {
35 if (this.routingIsReady
) return;
38 while (node
= Polymer
.dom(node
).parentNode
) {
39 if (typeof node
._makeRoutingReady
=== 'function') break;
41 if (node
) node
._makeRoutingReady();
43 this.parentRoute
= this._findParentRoute();
44 this.routingIsReady
= true;
45 if (typeof this.routingReady
=== 'function') this.routingReady();
48 _findParentRoute: function() {
51 node
= Polymer
.dom(node
).parentNode
;
52 if (node
&& node
.nodeType
!== Node
.ELEMENT_NODE
) {
56 var route
= node
&& node
.moreRouteContext
;
57 if (route
instanceof MoreRouting
.Route
) {