chromium/third_party/google_input_tools/src/chrome/os/message/type.js

// Copyright 2014 The ChromeOS IME Authors. All Rights Reserved.
// limitations under the License.
// See the License for the specific language governing permissions and
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// distributed under the License is distributed on an "AS-IS" BASIS,
// Unless required by applicable law or agreed to in writing, software
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// You may obtain a copy of the License at
// you may not use this file except in compliance with the License.
// Licensed under the Apache License, Version 2.0 (the "License");
//
goog.provide('i18n.input.chrome.message');
goog.provide('i18n.input.chrome.message.Type');

goog.require('i18n.input.chrome.message.Source');


goog.scope(function() {
var Source = i18n.input.chrome.message.Source;


/**
 * The message type. "Background->Inputview" don't allow to share the same
 * message type with "Inputview->Background".
 *
 * @enum {string}
 */
i18n.input.chrome.message.Type = {
  // Background -> Inputview
  CANDIDATES_BACK: 'candidates_back',
  CONTEXT_BLUR: 'context_blur',
  CONTEXT_FOCUS: 'context_focus',
  FRONT_TOGGLE_LANGUAGE_STATE: 'front_toggle_language_state',
  GESTURES_BACK: 'gestures_back',
  HWT_NETWORK_ERROR: 'hwt_network_error',
  SURROUNDING_TEXT_CHANGED: 'surrounding_text_changed',
  UPDATE_SETTINGS: 'update_settings',
  VOICE_STATE_CHANGE: 'voice_state_change',

  // Inputview -> Background
  COMMIT_TEXT: 'commit_text',
  COMPLETION: 'completion',
  CONFIRM_GESTURE_RESULT: 'confirm_gesture_result',
  CONNECT: 'connect',
  DATASOURCE_READY: 'datasource_ready',
  DISCONNECT: 'disconnect',
  DOUBLE_CLICK_ON_SPACE_KEY: 'double_click_on_space_key',
  EXEC_ALL: 'exec_all',
  HWT_REQUEST: 'hwt_request',
  KEY_CLICK: 'key_click',
  KEY_EVENT: 'key_event',
  OPTION_CHANGE: 'option_change',
  PREDICTION: 'prediction',
  SELECT_CANDIDATE: 'select_candidate',
  SEND_GESTURE_EVENT: 'send_gesture_event',
  SEND_KEY_EVENT: 'send_key_event',
  SEND_KEYBOARD_LAYOUT: 'send_keyboard_layout',
  SET_COMPOSITION: 'set_composition',
  SET_GESTURE_EDITING: 'set_gesture_editing',
  SET_LANGUAGE: 'set_language',
  SWITCH_KEYSET: 'switch_keyset',
  TOGGLE_LANGUAGE_STATE: 'toggle_language_state',
  VISIBILITY_CHANGE: 'visibility_change',
  SET_CONTROLLER: 'set_controller',
  UNSET_CONTROLLER: 'unset_controller',
  VOICE_VIEW_STATE_CHANGE: 'voice_view_state_change',


  // Inputview -> Elements
  HWT_PRIVACY_GOT_IT: 'hwt_privacy_got_it',
  VOICE_PRIVACY_GOT_IT: 'voice_privacy_got_it',

  // Options -> Background
  USER_DICT_ADD_ENTRY: 'user_dict_add_entry',
  USER_DICT_CLEAR: 'user_dict_clear',
  USER_DICT_LIST: 'user_dict_list',
  USER_DICT_SET_THRESHOLD: 'user_dict_set_threshold',
  USER_DICT_START: 'user_dict_start',
  USER_DICT_STOP: 'user_dict_stop',
  USER_DICT_REMOVE_ENTRY: 'user_dict_remove_entry',

  // Background -> Options
  USER_DICT_ENTRIES: 'user_dict_entries',

  // Background->Background
  HEARTBEAT: 'heart_beat'
};
var Type = i18n.input.chrome.message.Type;


/**
 * Returns whether the message type belong to "Background->Inputview" group;
 *
 * @param {string} type The message type.
 * @return {boolean} .
 */
i18n.input.chrome.message.isFromBackground = function(type) {
  var source = i18n.input.chrome.message.getMessageSource(type);
  return source == Source.BG_BG || source == Source.BG_OP ||
      source == Source.BG_VK;
};


/**
 * Returns whether the message type belong to "Background->Inputview" group;
 *
 * @param {string} type The message type.
 * @return {i18n.input.chrome.message.Source} The source.
 */
i18n.input.chrome.message.getMessageSource = function(type) {
  switch (type) {
    // Background -> Inputview
    case Type.CANDIDATES_BACK:
    case Type.CONTEXT_BLUR:
    case Type.CONTEXT_FOCUS:
    case Type.FRONT_TOGGLE_LANGUAGE_STATE:
    case Type.GESTURES_BACK:
    case Type.HWT_NETWORK_ERROR:
    case Type.SURROUNDING_TEXT_CHANGED:
    case Type.UPDATE_SETTINGS:
    case Type.VOICE_STATE_CHANGE:
      return Source.BG_VK;

    // Inputview -> Background
    case Type.COMMIT_TEXT:
    case Type.COMPLETION:
    case Type.CONFIRM_GESTURE_RESULT:
    case Type.CONNECT:
    case Type.DATASOURCE_READY:
    case Type.DISCONNECT:
    case Type.DOUBLE_CLICK_ON_SPACE_KEY:
    case Type.EXEC_ALL:
    case Type.HWT_REQUEST:
    case Type.KEY_CLICK:
    case Type.KEY_EVENT:
    case Type.OPTION_CHANGE:
    case Type.PREDICTION:
    case Type.SELECT_CANDIDATE:
    case Type.SEND_GESTURE_EVENT:
    case Type.SEND_KEY_EVENT:
    case Type.SEND_KEYBOARD_LAYOUT:
    case Type.SET_COMPOSITION:
    case Type.SET_GESTURE_EDITING:
    case Type.SET_LANGUAGE:
    case Type.SWITCH_KEYSET:
    case Type.TOGGLE_LANGUAGE_STATE:
    case Type.VISIBILITY_CHANGE:
    case Type.SET_CONTROLLER:
    case Type.UNSET_CONTROLLER:
    case Type.VOICE_VIEW_STATE_CHANGE:
      return Source.VK_BG;

    // Inputview -> Elements
    case Type.HWT_PRIVACY_GOT_IT:
    case Type.VOICE_PRIVACY_GOT_IT:
      return Source.VK_VK;

    // Options -> Background
    case Type.USER_DICT_ADD_ENTRY:
    case Type.USER_DICT_CLEAR:
    case Type.USER_DICT_LIST:
    case Type.USER_DICT_SET_THRESHOLD:
    case Type.USER_DICT_START:
    case Type.USER_DICT_STOP:
    case Type.USER_DICT_REMOVE_ENTRY:
      return Source.OP_BG;

    // Background -> Options
    case Type.USER_DICT_ENTRIES:
      return Source.BG_OP;

    // Background->Background
    case Type.HEARTBEAT:
      return Source.BG_BG;
    default:
      return Source.UNKNOWN;
  }
};
});  // goog.scope