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

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

Issue 2132123002: Complete table support in ChromeVox Next. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Ignore some roles. Created 4 years, 5 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 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 /** 5 /**
6 * @fileoverview The entry point for all ChromeVox2 related code for the 6 * @fileoverview The entry point for all ChromeVox2 related code for the
7 * background page. 7 * background page.
8 */ 8 */
9 9
10 goog.provide('Background'); 10 goog.provide('Background');
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 return true; 420 return true;
421 421
422 // Next/compat commands hereafter. 422 // Next/compat commands hereafter.
423 if (this.mode == ChromeVoxMode.CLASSIC) 423 if (this.mode == ChromeVoxMode.CLASSIC)
424 return true; 424 return true;
425 425
426 var current = this.currentRange_; 426 var current = this.currentRange_;
427 var dir = Dir.FORWARD; 427 var dir = Dir.FORWARD;
428 var pred = null; 428 var pred = null;
429 var predErrorMsg = undefined; 429 var predErrorMsg = undefined;
430 var rootPred = AutomationPredicate.root;
430 var speechProps = {}; 431 var speechProps = {};
431 switch (command) { 432 switch (command) {
432 case 'nextCharacter': 433 case 'nextCharacter':
433 speechProps['phoneticCharacters'] = true; 434 speechProps['phoneticCharacters'] = true;
434 current = current.move(cursors.Unit.CHARACTER, Dir.FORWARD); 435 current = current.move(cursors.Unit.CHARACTER, Dir.FORWARD);
435 break; 436 break;
436 case 'previousCharacter': 437 case 'previousCharacter':
437 speechProps['phoneticCharacters'] = true; 438 speechProps['phoneticCharacters'] = true;
438 current = current.move(cursors.Unit.CHARACTER, Dir.BACKWARD); 439 current = current.move(cursors.Unit.CHARACTER, Dir.BACKWARD);
439 break; 440 break;
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 description['Version'] = chrome.app.getDetails().version; 790 description['Version'] = chrome.app.getDetails().version;
790 description['Reproduction Steps'] = '%0a1.%0a2.%0a3.'; 791 description['Reproduction Steps'] = '%0a1.%0a2.%0a3.';
791 for (var key in description) 792 for (var key in description)
792 url += key + ':%20' + description[key] + '%0a'; 793 url += key + ':%20' + description[key] + '%0a';
793 chrome.tabs.create({url: url}); 794 chrome.tabs.create({url: url});
794 return false; 795 return false;
795 case 'toggleBrailleCaptions': 796 case 'toggleBrailleCaptions':
796 cvox.BrailleCaptionsBackground.setActive( 797 cvox.BrailleCaptionsBackground.setActive(
797 !cvox.BrailleCaptionsBackground.isEnabled()); 798 !cvox.BrailleCaptionsBackground.isEnabled());
798 return false; 799 return false;
800 case 'fullyDescribe':
801 var o = new Output();
802 o.withContextFirst()
803 .withRichSpeechAndBraille(current, null, Output.EventType.NAVIGATE)
804 .go();
805 return false;
806
807 // Table commands.
808 case 'previousRow':
809 var tableOpts = {};
dmazzoni 2016/07/13 23:38:28 Any reason not to make this more concise? t doesn'
David Tseng 2016/07/14 20:24:41 dir gets used in both places; the first is to calc
810 tableOpts.row = true;
811 dir = Dir.BACKWARD;
812 tableOpts.dir = dir;
813 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
814 predErrorMsg = 'no_cell_above';
815 rootPred = AutomationPredicate.table;
816 break;
817 case 'previousCol':
818 var tableOpts = {};
819 tableOpts.col = true;
820 dir = Dir.BACKWARD;
821 tableOpts.dir = dir;
822 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
823 predErrorMsg = 'no_cell_left';
824 rootPred = AutomationPredicate.table;
825 break;
826 case 'nextRow':
827 var tableOpts = {};
828 tableOpts.row = true;
829 dir = Dir.FORWARD;
830 tableOpts.dir = dir;
831 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
832 predErrorMsg = 'no_cell_below';
833 rootPred = AutomationPredicate.table;
834 break;
835 case 'nextCol':
836 var tableOpts = {};
837 tableOpts.col = true;
838 dir = Dir.FORWARD;
839 tableOpts.dir = dir;
840 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
841 predErrorMsg = 'no_cell_right';
842 rootPred = AutomationPredicate.table;
843 break;
844 case 'goToRowFirstCell':
845 var tableOpts = {};
846 tableOpts.row = true;
847 tableOpts.end = true;
848 dir = Dir.BACKWARD;
849 tableOpts.dir = dir;
850 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
851 // Should not be outputted.
852 predErrorMsg = 'no_cell_left';
853 rootPred = AutomationPredicate.table;
854 break;
855 case 'goToRowLastCell':
856 var tableOpts = {};
857 tableOpts.row = true;
858 tableOpts.end = true;
859 dir = Dir.FORWARD;
860 tableOpts.dir = dir;
861 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
862 // Should not be outputted.
863 predErrorMsg = 'no_cell_right';
864 rootPred = AutomationPredicate.table;
865 break;
866 case 'goToColFirstCell':
867 var tableOpts = {};
868 tableOpts.col = true;
869 tableOpts.end = true;
870 dir = Dir.BACKWARD;
871 tableOpts.dir = dir;
872 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
873 // Should not be outputted.
874 predErrorMsg = 'no_cell_above';
875 rootPred = AutomationPredicate.table;
876 break;
877 case 'goToColLastCell':
878 var tableOpts = {};
879 tableOpts.col = true;
880 tableOpts.end = true;
881 dir = Dir.FORWARD;
882 tableOpts.dir = dir;
883 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
884 // Should not be outputted.
885 predErrorMsg = 'no_cell_below';
886 rootPred = AutomationPredicate.table;
887 break;
888 case 'goToFirstCell':
889 var tableOpts = {};
890 tableOpts.row = true;
891 tableOpts.col = true;
892 tableOpts.end = true;
893 dir = Dir.BACKWARD;
894 tableOpts.dir = dir;
895 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
896 // Should not be outputted.
897 predErrorMsg = 'no_cell_left';
898 rootPred = AutomationPredicate.table;
899 break;
900 case 'goToLastCell':
901 var tableOpts = {};
902 tableOpts.row = true;
903 tableOpts.col = true;
904 tableOpts.end = true;
905 dir = Dir.FORWARD;
906 tableOpts.dir = dir;
907 pred = AutomationPredicate.rowCol(current.start.node, tableOpts);
908 // Should not be outputted.
909 predErrorMsg = 'no_cell_right';
910 rootPred = AutomationPredicate.table;
911 break;
799 default: 912 default:
800 return true; 913 return true;
801 } 914 }
802 915
803 if (pred) { 916 if (pred) {
804 var bound = current.getBound(dir).node; 917 var bound = current.getBound(dir).node;
805 if (bound) { 918 if (bound) {
806 var node = AutomationUtil.findNextNode( 919 var node = AutomationUtil.findNextNode(
807 bound, dir, pred, {skipInitialAncestry: true}); 920 bound, dir, pred, {skipInitialAncestry: true, root: rootPred});
808 921
809 if (node) { 922 if (node) {
810 node = AutomationUtil.findNodePre( 923 node = AutomationUtil.findNodePre(
811 node, Dir.FORWARD, AutomationPredicate.object) || node; 924 node, Dir.FORWARD, AutomationPredicate.object) || node;
812 } 925 }
813 926
814 if (node) { 927 if (node) {
815 current = cursors.Range.fromNode(node); 928 current = cursors.Range.fromNode(node);
816 } else { 929 } else {
817 if (predErrorMsg) { 930 if (predErrorMsg) {
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 return new RegExp('^(' + globs.map(function(glob) { 1344 return new RegExp('^(' + globs.map(function(glob) {
1232 return glob.replace(/[.+^$(){}|[\]\\]/g, '\\$&') 1345 return glob.replace(/[.+^$(){}|[\]\\]/g, '\\$&')
1233 .replace(/\*/g, '.*') 1346 .replace(/\*/g, '.*')
1234 .replace(/\?/g, '.'); 1347 .replace(/\?/g, '.');
1235 }).join('|') + ')$'); 1348 }).join('|') + ')$');
1236 }; 1349 };
1237 1350
1238 new Background(); 1351 new Background();
1239 1352
1240 }); // goog.scope 1353 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698