OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 <include src="../node_utils.js"> | 5 <include src="../node_utils.js"> |
6 | 6 |
7 cr.define('cr.ui.pageManager', function() { | 7 cr.define('cr.ui.pageManager', function() { |
8 var PageManager = cr.ui.pageManager.PageManager; | 8 var PageManager = cr.ui.pageManager.PageManager; |
9 | 9 |
10 /** | 10 /** |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 * Called by the PageManager when this.hash changes while the page is | 72 * Called by the PageManager when this.hash changes while the page is |
73 * already visible. This is analogous to the hashchange DOM event. | 73 * already visible. This is analogous to the hashchange DOM event. |
74 */ | 74 */ |
75 didChangeHash: function() {}, | 75 didChangeHash: function() {}, |
76 | 76 |
77 /** | 77 /** |
78 * Sets focus on the first focusable element. Override for a custom focus | 78 * Sets focus on the first focusable element. Override for a custom focus |
79 * strategy. | 79 * strategy. |
80 */ | 80 */ |
81 focus: function() { | 81 focus: function() { |
82 // Do not change focus if any control on this page is already focused. | 82 cr.ui.setInitialFocus(this.pageDiv); |
83 if (this.pageDiv.contains(document.activeElement)) | |
84 return; | |
85 | |
86 var elements = this.pageDiv.querySelectorAll( | |
87 'input, list, select, textarea, button'); | |
88 for (var i = 0; i < elements.length; i++) { | |
89 var element = elements[i]; | |
90 // Try to focus. If fails, then continue. | |
91 element.focus(); | |
92 if (document.activeElement == element) | |
93 return; | |
94 } | |
95 }, | 83 }, |
96 | 84 |
97 /** | 85 /** |
98 * Reverse any buttons strips in this page (only applies to overlays). | 86 * Reverse any buttons strips in this page (only applies to overlays). |
99 * @see cr.ui.reverseButtonStrips for an explanation of why this is | 87 * @see cr.ui.reverseButtonStrips for an explanation of why this is |
100 * necessary and when it's done. | 88 * necessary and when it's done. |
101 */ | 89 */ |
102 reverseButtonStrip: function() { | 90 reverseButtonStrip: function() { |
103 assert(this.isOverlay); | 91 assert(this.isOverlay); |
104 cr.ui.reverseButtonStrips(this.pageDiv); | 92 cr.ui.reverseButtonStrips(this.pageDiv); |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 PageManager.onPageVisibilityChanged(this); | 298 PageManager.onPageVisibilityChanged(this); |
311 } | 299 } |
312 }, | 300 }, |
313 }; | 301 }; |
314 | 302 |
315 // Export | 303 // Export |
316 return { | 304 return { |
317 Page: Page | 305 Page: Page |
318 }; | 306 }; |
319 }); | 307 }); |
OLD | NEW |