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

Side by Side Diff: third_party/google_input_tools/src/chrome/os/inputview/adapter.js

Issue 828063007: Uprev Google Input Tools. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Update extensions schema. Created 5 years, 10 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 ChromeOS IME Authors. All Rights Reserved. 1 // Copyright 2014 The ChromeOS IME Authors. All Rights Reserved.
2 // limitations under the License. 2 // limitations under the License.
3 // See the License for the specific language governing permissions and 3 // See the License for the specific language governing permissions and
4 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 4 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
5 // distributed under the License is distributed on an "AS-IS" BASIS, 5 // distributed under the License is distributed on an "AS-IS" BASIS,
6 // Unless required by applicable law or agreed to in writing, software 6 // Unless required by applicable law or agreed to in writing, software
7 // 7 //
8 // http://www.apache.org/licenses/LICENSE-2.0 8 // http://www.apache.org/licenses/LICENSE-2.0
9 // 9 //
10 // You may obtain a copy of the License at 10 // You may obtain a copy of the License at
(...skipping 16 matching lines...) Expand all
27 goog.require('i18n.input.chrome.message.ContextType'); 27 goog.require('i18n.input.chrome.message.ContextType');
28 goog.require('i18n.input.chrome.message.Event'); 28 goog.require('i18n.input.chrome.message.Event');
29 goog.require('i18n.input.chrome.message.Name'); 29 goog.require('i18n.input.chrome.message.Name');
30 goog.require('i18n.input.chrome.message.Type'); 30 goog.require('i18n.input.chrome.message.Type');
31 31
32 goog.scope(function() { 32 goog.scope(function() {
33 var CandidatesBackEvent = i18n.input.chrome.DataSource.CandidatesBackEvent; 33 var CandidatesBackEvent = i18n.input.chrome.DataSource.CandidatesBackEvent;
34 var ContextType = i18n.input.chrome.message.ContextType; 34 var ContextType = i18n.input.chrome.message.ContextType;
35 var Type = i18n.input.chrome.message.Type; 35 var Type = i18n.input.chrome.message.Type;
36 var Name = i18n.input.chrome.message.Name; 36 var Name = i18n.input.chrome.message.Name;
37 var SizeSpec = i18n.input.chrome.inputview.SizeSpec;
37 38
38 39
39 40
40 /** 41 /**
41 * The adapter for interview. 42 * The adapter for interview.
42 * 43 *
43 * @param {!i18n.input.chrome.inputview.ReadyState} readyState . 44 * @param {!i18n.input.chrome.inputview.ReadyState} readyState .
44 * @extends {goog.events.EventTarget} 45 * @extends {goog.events.EventTarget}
45 * @constructor 46 * @constructor
46 */ 47 */
(...skipping 19 matching lines...) Expand all
66 * The system ready state. 67 * The system ready state.
67 * 68 *
68 * @private {!i18n.input.chrome.inputview.ReadyState} 69 * @private {!i18n.input.chrome.inputview.ReadyState}
69 */ 70 */
70 this.readyState_ = readyState; 71 this.readyState_ = readyState;
71 72
72 chrome.runtime.onMessage.addListener(this.onMessage_.bind(this)); 73 chrome.runtime.onMessage.addListener(this.onMessage_.bind(this));
73 74
74 /** @private {!goog.events.EventHandler} */ 75 /** @private {!goog.events.EventHandler} */
75 this.handler_ = new goog.events.EventHandler(this); 76 this.handler_ = new goog.events.EventHandler(this);
76 this.handler_.listen(document, 'webkitvisibilitychange', 77 this.handler_.
77 this.onVisibilityChange_); 78 listen(document, 'webkitvisibilitychange', this.onVisibilityChange_).
79 // When screen rotate, will trigger resize event.
80 listen(window, goog.events.EventType.RESIZE, this.onVisibilityChange_);
81
82 // Notifies the initial visibility change message to background.
83 this.onVisibilityChange_();
78 }; 84 };
79 goog.inherits(i18n.input.chrome.inputview.Adapter, 85 goog.inherits(i18n.input.chrome.inputview.Adapter,
80 goog.events.EventTarget); 86 goog.events.EventTarget);
81 var Adapter = i18n.input.chrome.inputview.Adapter; 87 var Adapter = i18n.input.chrome.inputview.Adapter;
82 88
83 89
84 /** @type {boolean} */ 90 /** @type {boolean} */
85 Adapter.prototype.isA11yMode = false; 91 Adapter.prototype.isA11yMode = false;
86 92
87 93
(...skipping 14 matching lines...) Expand all
102 108
103 109
104 /** @type {boolean} */ 110 /** @type {boolean} */
105 Adapter.prototype.isChromeVoxOn = false; 111 Adapter.prototype.isChromeVoxOn = false;
106 112
107 113
108 /** @type {string} */ 114 /** @type {string} */
109 Adapter.prototype.textBeforeCursor = ''; 115 Adapter.prototype.textBeforeCursor = '';
110 116
111 117
118 /** @type {boolean} */
119 Adapter.prototype.isQPInputView = false;
120
121
112 /** 122 /**
113 * Whether the background controller is on switching. 123 * Whether the background controller is on switching.
114 * 124 *
115 * @private {boolean} 125 * @private {boolean}
116 */ 126 */
117 Adapter.prototype.isBgControllerSwitching_ = false; 127 Adapter.prototype.isBgControllerSwitching_ = false;
118 128
119 129
120 /** 130 /**
121 * Callback for updating settings. 131 * Callback for updating settings.
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 * @private 329 * @private
320 */ 330 */
321 Adapter.prototype.onContextFocus_ = function(message) { 331 Adapter.prototype.onContextFocus_ = function(message) {
322 this.contextType = /** @type {string} */ (message[Name.CONTEXT_TYPE]); 332 this.contextType = /** @type {string} */ (message[Name.CONTEXT_TYPE]);
323 this.dispatchEvent(new goog.events.Event( 333 this.dispatchEvent(new goog.events.Event(
324 i18n.input.chrome.inputview.events.EventType.CONTEXT_FOCUS)); 334 i18n.input.chrome.inputview.events.EventType.CONTEXT_FOCUS));
325 }; 335 };
326 336
327 337
328 /** 338 /**
329 * Intializes the communication to background page. 339 * Initializes the communication to background page.
330 * 340 *
331 * @param {string} languageCode The language code.
332 * @private 341 * @private
333 */ 342 */
334 Adapter.prototype.initBackground_ = function(languageCode) { 343 Adapter.prototype.initBackground_ = function() {
335 chrome.runtime.getBackgroundPage((function() { 344 chrome.runtime.getBackgroundPage((function() {
336 this.isBgControllerSwitching_ = true; 345 this.isBgControllerSwitching_ = true;
337 chrome.runtime.sendMessage( 346 chrome.runtime.sendMessage(
338 goog.object.create(Name.TYPE, Type.CONNECT)); 347 goog.object.create(Name.TYPE, Type.CONNECT));
339 chrome.runtime.sendMessage(goog.object.create(Name.TYPE,
340 Type.VISIBILITY_CHANGE, Name.VISIBILITY, !document.webkitHidden));
341 if (languageCode) {
342 this.setLanguage(languageCode);
343 }
344 }).bind(this)); 348 }).bind(this));
345 }; 349 };
346 350
347 351
348 /** 352 /**
349 * Loads the keyboard settings. 353 * Loads the keyboard settings.
350 * 354 *
351 * @param {string} languageCode The language code. 355 * @param {string} languageCode The language code.
352 */ 356 */
353 Adapter.prototype.initialize = function(languageCode) { 357 Adapter.prototype.initialize = function(languageCode) {
354 if (chrome.accessibilityFeatures && 358 if (chrome.accessibilityFeatures &&
355 chrome.accessibilityFeatures.spokenFeedback) { 359 chrome.accessibilityFeatures.spokenFeedback) {
356 chrome.accessibilityFeatures.spokenFeedback.get({}, (function(details) { 360 chrome.accessibilityFeatures.spokenFeedback.get({}, (function(details) {
357 this.isChromeVoxOn = details['value']; 361 this.isChromeVoxOn = details['value'];
358 }).bind(this)); 362 }).bind(this));
359 chrome.accessibilityFeatures.spokenFeedback.onChange.addListener((function( 363 chrome.accessibilityFeatures.spokenFeedback.onChange.addListener((function(
360 details) { 364 details) {
361 this.isChromeVoxOn = details['value']; 365 this.isChromeVoxOn = details['value'];
362 }).bind(this)); 366 }).bind(this));
363 } 367 }
364 368
365 this.initBackground_(languageCode); 369 this.initBackground_();
366 370
367 var StateType = i18n.input.chrome.inputview.ReadyState.StateType; 371 var StateType = i18n.input.chrome.inputview.ReadyState.StateType;
368 if (window.inputview) { 372 if (window.inputview) {
369 if (inputview.getKeyboardConfig) { 373 inputview.getKeyboardConfig((function(config) {
370 inputview.getKeyboardConfig((function(config) { 374 this.isA11yMode = !!config['a11ymode'];
371 this.isA11yMode = !!config['a11ymode']; 375 this.isExperimental = !!config['experimental'];
372 this.isExperimental = !!config['experimental'];
373 this.readyState_.markStateReady(StateType.KEYBOARD_CONFIG_READY);
374 if (this.readyState_.isReady(StateType.IME_LIST_READY)) {
375 this.dispatchEvent(new goog.events.Event(
376 i18n.input.chrome.inputview.events.EventType.SETTINGS_READY));
377 }
378 }).bind(this));
379 } else {
380 this.readyState_.markStateReady(StateType.KEYBOARD_CONFIG_READY); 376 this.readyState_.markStateReady(StateType.KEYBOARD_CONFIG_READY);
381 } 377 this.maybeDispatchSettingsReadyEvent_();
382 if (inputview.getInputMethods) { 378 }).bind(this));
383 inputview.getInputMethods((function(inputMethods) { 379 inputview.getInputMethods((function(inputMethods) {
384 // Only show globe key to switching between IMEs when there are more 380 // Only show globe key to switching between IMEs when there are more
385 // than one IME. 381 // than one IME.
386 this.showGlobeKey = inputMethods.length > 1; 382 this.showGlobeKey = inputMethods.length > 1;
387 this.readyState_.markStateReady(StateType.IME_LIST_READY);
388 if (this.readyState_.isReady(StateType.KEYBOARD_CONFIG_READY)) {
389 this.dispatchEvent(new goog.events.Event(
390 i18n.input.chrome.inputview.events.EventType.SETTINGS_READY));
391 }
392 }).bind(this));
393 } else {
394 this.readyState_.markStateReady(StateType.IME_LIST_READY); 383 this.readyState_.markStateReady(StateType.IME_LIST_READY);
395 } 384 this.maybeDispatchSettingsReadyEvent_();
385 }).bind(this));
386 inputview.getInputMethodConfig((function(config) {
387 this.isQPInputView = !!config['isNewQPInputViewEnabled'];
388 this.readyState_.markStateReady(StateType.INPUT_METHOD_CONFIG_READY);
389 this.maybeDispatchSettingsReadyEvent_();
390 }).bind(this));
396 } else { 391 } else {
397 this.readyState_.markStateReady(StateType.IME_LIST_READY); 392 this.readyState_.markStateReady(StateType.IME_LIST_READY);
398 this.readyState_.markStateReady(StateType.KEYBOARD_CONFIG_READY); 393 this.readyState_.markStateReady(StateType.KEYBOARD_CONFIG_READY);
394 this.readyState_.markStateReady(StateType.INPUT_METHOD_CONFIG_READY);
399 } 395 }
400 396
401 if (this.readyState_.isReady(StateType.KEYBOARD_CONFIG_READY) && 397 this.maybeDispatchSettingsReadyEvent_();
402 this.readyState_.isReady(StateType.IME_LIST_READY)) { 398 };
399
400
401 /**
402 * Dispatch event SETTINGS_READY if all required bits are flipped.
403 *
404 * @private
405 */
406 Adapter.prototype.maybeDispatchSettingsReadyEvent_ = function() {
407 var StateType = i18n.input.chrome.inputview.ReadyState.StateType;
408 var states = [
409 StateType.KEYBOARD_CONFIG_READY,
410 StateType.IME_LIST_READY,
411 StateType.INPUT_METHOD_CONFIG_READY];
412 var ready = true;
413 for (var i = 0; i < states.length; i++) {
414 ready = ready && this.readyState_.isReady(states[i]);
415 }
416 if (ready) {
403 window.setTimeout((function() { 417 window.setTimeout((function() {
404 this.dispatchEvent(new goog.events.Event( 418 this.dispatchEvent(new goog.events.Event(
405 i18n.input.chrome.inputview.events.EventType.SETTINGS_READY)); 419 i18n.input.chrome.inputview.events.EventType.SETTINGS_READY));
406 }).bind(this), 0); 420 }).bind(this), 0);
407 } 421 }
408 }; 422 };
409 423
410 424
411 /** 425 /**
412 * Gets the currently activated input method. 426 * Gets the currently activated input method.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 466
453 /** 467 /**
454 * Callback for visibility change on the input view window. 468 * Callback for visibility change on the input view window.
455 * 469 *
456 * @private 470 * @private
457 */ 471 */
458 Adapter.prototype.onVisibilityChange_ = function() { 472 Adapter.prototype.onVisibilityChange_ = function() {
459 this.isVisible = !document.webkitHidden; 473 this.isVisible = !document.webkitHidden;
460 this.dispatchEvent(new goog.events.Event(i18n.input.chrome.inputview. 474 this.dispatchEvent(new goog.events.Event(i18n.input.chrome.inputview.
461 events.EventType.VISIBILITY_CHANGE)); 475 events.EventType.VISIBILITY_CHANGE));
462 chrome.runtime.sendMessage(goog.object.create(Name.TYPE, 476 chrome.runtime.sendMessage(goog.object.create(
463 Type.VISIBILITY_CHANGE, Name.VISIBILITY, !document.webkitHidden)); 477 Name.TYPE, Type.VISIBILITY_CHANGE,
478 Name.VISIBILITY, !document.webkitHidden,
479 Name.IS_EXPERIMENTAL, this.isExperimental,
480 Name.WORKSPACE_HEIGHT, screen.height - window.innerHeight));
464 }; 481 };
465 482
466 483
467 /** 484 /**
468 * Sends request for completion. 485 * Sends request for completion.
469 * 486 *
470 * @param {string} query . 487 * @param {string} query .
471 * @param {!Object=} opt_spatialData . 488 * @param {!Object=} opt_spatialData .
472 */ 489 */
473 Adapter.prototype.sendCompletionRequest = function(query, opt_spatialData) { 490 Adapter.prototype.sendCompletionRequest = function(query, opt_spatialData) {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 break; 604 break;
588 case Type.CONTEXT_BLUR: 605 case Type.CONTEXT_BLUR:
589 this.onContextBlur_(); 606 this.onContextBlur_();
590 break; 607 break;
591 case Type.SURROUNDING_TEXT_CHANGED: 608 case Type.SURROUNDING_TEXT_CHANGED:
592 this.onSurroundingTextChanged_(request[Name.TEXT]); 609 this.onSurroundingTextChanged_(request[Name.TEXT]);
593 break; 610 break;
594 case Type.UPDATE_SETTINGS: 611 case Type.UPDATE_SETTINGS:
595 this.onUpdateSettings_(msg); 612 this.onUpdateSettings_(msg);
596 break; 613 break;
614 case Type.VOICE_STATE_CHANGE:
597 case Type.HWT_NETWORK_ERROR: 615 case Type.HWT_NETWORK_ERROR:
598 case Type.HWT_PRIVACY_INFO:
599 case Type.FRONT_TOGGLE_LANGUAGE_STATE: 616 case Type.FRONT_TOGGLE_LANGUAGE_STATE:
600 this.dispatchEvent(new i18n.input.chrome.message.Event(type, msg)); 617 this.dispatchEvent(new i18n.input.chrome.message.Event(type, msg));
601 break; 618 break;
602 } 619 }
603 }; 620 };
604 621
605 622
606 /** 623 /**
607 * Sends the privacy confirmed message to background and broadcasts it. 624 * Sends the voice state to background.
625 *
626 * @param {boolean} state .
608 */ 627 */
609 Adapter.prototype.sendHwtPrivacyConfirmMessage = function() { 628 Adapter.prototype.sendVoiceViewStateChange = function(state) {
610 chrome.runtime.sendMessage( 629 chrome.runtime.sendMessage(goog.object.create(
611 goog.object.create(Name.TYPE, Type.HWT_PRIVACY_GOT_IT)); 630 Name.TYPE, Type.VOICE_VIEW_STATE_CHANGE, Name.MSG, state));
612 this.dispatchEvent(
613 new goog.events.Event(Type.HWT_PRIVACY_GOT_IT));
614 }; 631 };
615 632
616 633
617 /** @override */ 634 /** @override */
618 Adapter.prototype.disposeInternal = function() { 635 Adapter.prototype.disposeInternal = function() {
619 goog.dispose(this.handler_); 636 goog.dispose(this.handler_);
620 637
621 goog.base(this, 'disposeInternal'); 638 goog.base(this, 'disposeInternal');
622 }; 639 };
623 640
(...skipping 28 matching lines...) Expand all
652 * Unset the inputtool 669 * Unset the inputtool
653 */ 670 */
654 Adapter.prototype.unsetController = function() { 671 Adapter.prototype.unsetController = function() {
655 chrome.runtime.sendMessage( 672 chrome.runtime.sendMessage(
656 goog.object.create( 673 goog.object.create(
657 Name.TYPE, 674 Name.TYPE,
658 Type.UNSET_CONTROLLER)); 675 Type.UNSET_CONTROLLER));
659 }; 676 };
660 }); // goog.scope 677 }); // goog.scope
661 678
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698