Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(78)

Side by Side Diff: chrome/browser/resources/options2/options_page.js

Issue 10382073: Added aria-hidden attribute to elements obscured behind an overlay to aid screen readers. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 cr.define('options', function() { 5 cr.define('options', function() {
6 ///////////////////////////////////////////////////////////////////////////// 6 /////////////////////////////////////////////////////////////////////////////
7 // OptionsPage class: 7 // OptionsPage class:
8 8
9 /** 9 /**
10 * Base class for options page. 10 * Base class for options page.
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 this.showPageByName(overlay.parentPage.name, false); 244 this.showPageByName(overlay.parentPage.name, false);
245 245
246 if (!overlay.visible) { 246 if (!overlay.visible) {
247 overlay.visible = true; 247 overlay.visible = true;
248 if (overlay.didShowPage) overlay.didShowPage(); 248 if (overlay.didShowPage) overlay.didShowPage();
249 } 249 }
250 250
251 // Update tab title. 251 // Update tab title.
252 this.setTitle_(overlay.title); 252 this.setTitle_(overlay.title);
253 253
254 $('searchBox').setAttribute('aria-hidden', true);
255
254 return true; 256 return true;
255 }; 257 };
256 258
257 /** 259 /**
258 * Returns whether or not an overlay is visible. 260 * Returns whether or not an overlay is visible.
259 * @return {boolean} True if an overlay is visible. 261 * @return {boolean} True if an overlay is visible.
260 * @private 262 * @private
261 */ 263 */
262 OptionsPage.isOverlayVisible_ = function() { 264 OptionsPage.isOverlayVisible_ = function() {
263 return this.getVisibleOverlay_() != null; 265 return this.getVisibleOverlay_() != null;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 var overlay = this.getVisibleOverlay_(); 298 var overlay = this.getVisibleOverlay_();
297 if (!overlay) 299 if (!overlay)
298 return; 300 return;
299 301
300 overlay.visible = false; 302 overlay.visible = false;
301 303
302 if (overlay.didClosePage) overlay.didClosePage(); 304 if (overlay.didClosePage) overlay.didClosePage();
303 this.updateHistoryState_(false, {ignoreHash: true}); 305 this.updateHistoryState_(false, {ignoreHash: true});
304 306
305 this.restoreLastFocusedElement_(); 307 this.restoreLastFocusedElement_();
308 if (!this.isOverlayVisible_())
309 $('searchBox').removeAttribute('aria-hidden');
306 }; 310 };
307 311
308 /** 312 /**
309 * Cancels (closes) the overlay, due to the user pressing <Esc>. 313 * Cancels (closes) the overlay, due to the user pressing <Esc>.
310 */ 314 */
311 OptionsPage.cancelOverlay = function() { 315 OptionsPage.cancelOverlay = function() {
312 // Blur the active element to ensure any changed pref value is saved. 316 // Blur the active element to ensure any changed pref value is saved.
313 document.activeElement.blur(); 317 document.activeElement.blur();
314 var overlay = this.getVisibleOverlay_(); 318 var overlay = this.getVisibleOverlay_();
315 // Let the overlay handle the <Esc> if it wants to. 319 // Let the overlay handle the <Esc> if it wants to.
316 if (overlay.handleCancel) { 320 if (overlay.handleCancel) {
317 overlay.handleCancel(); 321 overlay.handleCancel();
318 this.restoreLastFocusedElement_(); 322 this.restoreLastFocusedElement_();
319 } else { 323 } else {
320 this.closeOverlay(); 324 this.closeOverlay();
321 } 325 }
322 } 326 };
323 327
324 /** 328 /**
325 * Hides the visible overlay. Does not affect the history state. 329 * Hides the visible overlay. Does not affect the history state.
326 * @private 330 * @private
327 */ 331 */
328 OptionsPage.hideOverlay_ = function() { 332 OptionsPage.hideOverlay_ = function() {
329 var overlay = this.getVisibleOverlay_(); 333 var overlay = this.getVisibleOverlay_();
330 if (overlay) 334 if (overlay)
331 overlay.visible = false; 335 overlay.visible = false;
332 }; 336 };
(...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 */ 727 */
724 get visible() { 728 get visible() {
725 // If this is an overlay dialog it is no longer considered visible while 729 // If this is an overlay dialog it is no longer considered visible while
726 // the overlay is fading out. See http://crbug.com/118629. 730 // the overlay is fading out. See http://crbug.com/118629.
727 if (this.isOverlay && 731 if (this.isOverlay &&
728 this.container.classList.contains('transparent')) { 732 this.container.classList.contains('transparent')) {
729 return false; 733 return false;
730 } 734 }
731 return !this.pageDiv.hidden; 735 return !this.pageDiv.hidden;
732 }, 736 },
737
733 /** 738 /**
734 * Sets page visibility. 739 * Sets page visibility.
735 * @type {boolean} 740 * @type {boolean}
736 */ 741 */
737 set visible(visible) { 742 set visible(visible) {
738 if ((this.visible && visible) || (!this.visible && !visible)) 743 if ((this.visible && visible) || (!this.visible && !visible))
739 return; 744 return;
740 745
741 // If using an overlay, the visibility of the dialog is toggled at the 746 // If using an overlay, the visibility of the dialog is toggled at the
742 // same time as the overlay to show the dialog's out transition. This 747 // same time as the overlay to show the dialog's out transition. This
(...skipping 11 matching lines...) Expand all
754 /** 759 /**
755 * Shows or hides an overlay (including any visible dialog). 760 * Shows or hides an overlay (including any visible dialog).
756 * @param {boolean} visible Whether the overlay should be visible or not. 761 * @param {boolean} visible Whether the overlay should be visible or not.
757 * @private 762 * @private
758 */ 763 */
759 setOverlayVisible_: function(visible) { 764 setOverlayVisible_: function(visible) {
760 assert(this.isOverlay); 765 assert(this.isOverlay);
761 var pageDiv = this.pageDiv; 766 var pageDiv = this.pageDiv;
762 var container = this.container; 767 var container = this.container;
763 768
764 if (visible) 769 if (visible) {
765 uber.invokeMethodOnParent('beginInterceptingEvents'); 770 uber.invokeMethodOnParent('beginInterceptingEvents');
771 this.pageDiv.removeAttribute('aria-hidden');
772 this.parentPage.pageDiv.setAttribute('aria-hidden', true);
773 } else {
774 this.parentPage.pageDiv.removeAttribute('aria-hidden');
775 }
766 776
767 if (container.hidden != visible) { 777 if (container.hidden != visible) {
768 if (visible) { 778 if (visible) {
769 // If the container is set hidden and then immediately set visible 779 // If the container is set hidden and then immediately set visible
770 // again, the fadeCompleted_ callback would cause it to be erroneously 780 // again, the fadeCompleted_ callback would cause it to be erroneously
771 // hidden again. Removing the transparent tag avoids that. 781 // hidden again. Removing the transparent tag avoids that.
772 container.classList.remove('transparent'); 782 container.classList.remove('transparent');
773 783
774 // Hide all dialogs in this container since a different one may have 784 // Hide all dialogs in this container since a different one may have
775 // been previously visible before fading out. 785 // been previously visible before fading out.
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 canShowPage: function() { 887 canShowPage: function() {
878 return true; 888 return true;
879 }, 889 },
880 }; 890 };
881 891
882 // Export 892 // Export
883 return { 893 return {
884 OptionsPage: OptionsPage 894 OptionsPage: OptionsPage
885 }; 895 };
886 }); 896 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698