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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/panel.js

Issue 2621773003: Fix ISearch regressions (Closed)
Patch Set: Select search query when re-focused Created 3 years, 11 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 /** 5 /**
6 * @fileoverview The ChromeVox panel and menus. 6 * @fileoverview The ChromeVox panel and menus.
7 */ 7 */
8 8
9 goog.provide('Panel'); 9 goog.provide('Panel');
10 10
(...skipping 18 matching lines...) Expand all
29 * @enum {string} 29 * @enum {string}
30 */ 30 */
31 Panel.Mode = { 31 Panel.Mode = {
32 COLLAPSED: 'collapsed', 32 COLLAPSED: 'collapsed',
33 FOCUSED: 'focused', 33 FOCUSED: 'focused',
34 FULLSCREEN_MENUS: 'menus', 34 FULLSCREEN_MENUS: 'menus',
35 FULLSCREEN_TUTORIAL: 'tutorial' 35 FULLSCREEN_TUTORIAL: 'tutorial'
36 }; 36 };
37 37
38 /** 38 /**
39 * A callback function to be executed to perform the action from selecting
40 * a menu item after the menu has been closed and focus has been restored
41 * to the page or wherever it was previously.
42 * @param {?Function} callback
43 */
44 Panel.setPendingCallback = function(callback) {
45 /** @type {?Function} @private */
46 Panel.pendingCallback_ = callback;
47 };
48
49 /**
39 * Initialize the panel. 50 * Initialize the panel.
40 */ 51 */
41 Panel.init = function() { 52 Panel.init = function() {
42 /** @type {Element} @private */ 53 /** @type {Element} @private */
43 this.speechContainer_ = $('speech-container'); 54 this.speechContainer_ = $('speech-container');
44 55
45 /** @type {Element} @private */ 56 /** @type {Element} @private */
46 this.speechElement_ = $('speech'); 57 this.speechElement_ = $('speech');
47 58
48 /** @type {Element} @private */ 59 /** @type {Element} @private */
(...skipping 28 matching lines...) Expand all
77 88
78 /** 89 /**
79 * True if the menu button in the panel is enabled at all. It's disabled if 90 * True if the menu button in the panel is enabled at all. It's disabled if
80 * ChromeVox Next is not active. 91 * ChromeVox Next is not active.
81 * @type {boolean} 92 * @type {boolean}
82 * @private 93 * @private
83 */ 94 */
84 this.menusEnabled_ = localStorage['useNext'] == 'true'; 95 this.menusEnabled_ = localStorage['useNext'] == 'true';
85 96
86 /** 97 /**
87 * A callback function to be executed to perform the action from selecting
88 * a menu item after the menu has been closed and focus has been restored
89 * to the page or wherever it was previously.
90 * @type {?Function}
91 * @private
92 */
93 this.pendingCallback_ = null;
94
95 /**
96 * True if we're currently in incremental search mode. 98 * True if we're currently in incremental search mode.
97 * @type {boolean} 99 * @type {boolean}
98 * @private 100 * @private
99 */ 101 */
100 this.searching_ = false; 102 this.searching_ = false;
101 103
102 /** 104 /**
103 * @type {Tutorial} 105 * @type {Tutorial}
104 * @private 106 * @private
105 */ 107 */
106 this.tutorial_ = new Tutorial(); 108 this.tutorial_ = new Tutorial();
107 109
110 Panel.setPendingCallback(null);
108 Panel.updateFromPrefs(); 111 Panel.updateFromPrefs();
109 112
110 Msgs.addTranslatedMessagesToDom(document); 113 Msgs.addTranslatedMessagesToDom(document);
111 114
112 window.addEventListener('storage', function(event) { 115 window.addEventListener('storage', function(event) {
113 if (event.key == 'brailleCaptions') { 116 if (event.key == 'brailleCaptions') {
114 Panel.updateFromPrefs(); 117 Panel.updateFromPrefs();
115 } 118 }
116 }, false); 119 }, false);
117 120
(...skipping 12 matching lines...) Expand all
130 $('close_tutorial').addEventListener('click', Panel.onCloseTutorial, false); 133 $('close_tutorial').addEventListener('click', Panel.onCloseTutorial, false);
131 134
132 document.addEventListener('keydown', Panel.onKeyDown, false); 135 document.addEventListener('keydown', Panel.onKeyDown, false);
133 document.addEventListener('mouseup', Panel.onMouseUp, false); 136 document.addEventListener('mouseup', Panel.onMouseUp, false);
134 window.addEventListener('blur', function(evt) { 137 window.addEventListener('blur', function(evt) {
135 if (evt.target != window || document.activeElement == document.body) 138 if (evt.target != window || document.activeElement == document.body)
136 return; 139 return;
137 140
138 Panel.closeMenusAndRestoreFocus(); 141 Panel.closeMenusAndRestoreFocus();
139 }, false); 142 }, false);
140
141 Panel.searchInput_.addEventListener('blur', Panel.onSearchInputBlur, false);
142 }; 143 };
143 144
144 /** 145 /**
145 * Update the display based on prefs. 146 * Update the display based on prefs.
146 */ 147 */
147 Panel.updateFromPrefs = function() { 148 Panel.updateFromPrefs = function() {
148 if (Panel.searching_) { 149 if (Panel.searching_) {
149 this.speechContainer_.hidden = true; 150 this.speechContainer_.hidden = true;
150 this.brailleContainer_.hidden = true; 151 this.brailleContainer_.hidden = true;
151 this.searchContainer_.hidden = false; 152 this.searchContainer_.hidden = false;
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 }; 426 };
426 427
427 /** Open incremental search. */ 428 /** Open incremental search. */
428 Panel.onSearch = function() { 429 Panel.onSearch = function() {
429 Panel.clearMenus(); 430 Panel.clearMenus();
430 Panel.pendingCallback_ = null; 431 Panel.pendingCallback_ = null;
431 Panel.searching_ = true; 432 Panel.searching_ = true;
432 Panel.updateFromPrefs(); 433 Panel.updateFromPrefs();
433 Panel.setMode(Panel.Mode.FOCUSED); 434 Panel.setMode(Panel.Mode.FOCUSED);
434 435
435 ISearchUI.get(Panel.searchInput_); 436 ISearchUI.init(Panel.searchInput_);
436 }; 437 };
437 438
438 /** 439 /**
439 * Clear any previous menus. The menus are all regenerated each time the 440 * Clear any previous menus. The menus are all regenerated each time the
440 * menus are opened. 441 * menus are opened.
441 */ 442 */
442 Panel.clearMenus = function() { 443 Panel.clearMenus = function() {
443 while (this.menus_.length) { 444 while (this.menus_.length) {
444 var menu = this.menus_.pop(); 445 var menu = this.menus_.pop();
445 $('menu-bar').removeChild(menu.menuBarItemElement); 446 $('menu-bar').removeChild(menu.menuBarItemElement);
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 default: 747 default:
747 // Don't mark this event as handled. 748 // Don't mark this event as handled.
748 return; 749 return;
749 } 750 }
750 751
751 event.preventDefault(); 752 event.preventDefault();
752 event.stopPropagation(); 753 event.stopPropagation();
753 }; 754 };
754 755
755 /** 756 /**
756 * Called when focus leaves the search input.
757 */
758 Panel.onSearchInputBlur = function() {
759 if (Panel.searching_) {
760 if (document.activeElement != Panel.searchInput_ || !document.hasFocus()) {
761 Panel.searching_ = false;
762 Panel.setMode(Panel.Mode.COLLAPSED);
763 Panel.updateFromPrefs();
764 Panel.searchInput_.value = '';
765 }
766 }
767 };
768
769 /**
770 * Open the ChromeVox Options. 757 * Open the ChromeVox Options.
771 */ 758 */
772 Panel.onOptions = function() { 759 Panel.onOptions = function() {
773 var bkgnd = 760 var bkgnd =
774 chrome.extension.getBackgroundPage()['ChromeVoxState']['instance']; 761 chrome.extension.getBackgroundPage()['ChromeVoxState']['instance'];
775 bkgnd['showOptionsPage'](); 762 bkgnd['showOptionsPage']();
776 Panel.setMode(Panel.Mode.COLLAPSED); 763 Panel.setMode(Panel.Mode.COLLAPSED);
777 }; 764 };
778 765
779 /** 766 /**
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 }, false); 865 }, false);
879 866
880 window.addEventListener('hashchange', function() { 867 window.addEventListener('hashchange', function() {
881 if (location.hash == '#fullscreen' || location.hash == '#focus') { 868 if (location.hash == '#fullscreen' || location.hash == '#focus') {
882 this.originalStickyState_ = cvox.ChromeVox.isStickyPrefOn; 869 this.originalStickyState_ = cvox.ChromeVox.isStickyPrefOn;
883 cvox.ChromeVox.isStickyPrefOn = false; 870 cvox.ChromeVox.isStickyPrefOn = false;
884 } else { 871 } else {
885 cvox.ChromeVox.isStickyPrefOn = this.originalStickyState_; 872 cvox.ChromeVox.isStickyPrefOn = this.originalStickyState_;
886 } 873 }
887 }, false); 874 }, false);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698