blob: 5c8f14e254d8243fb0e2ef8d64eed87347090324 [file] [log] [blame]
// 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.DataSource');
goog.require('goog.events');
goog.require('goog.events.Event');
goog.require('goog.events.EventTarget');
goog.require('goog.functions');
/**
* The data source.
*
* @param {number} numOfCanddiate The number of canddiate to fetch.
* @param {function(string, !Array.<!Object>)} callback .
* @constructor
* @extends {goog.events.EventTarget}
*/
i18n.input.chrome.DataSource = function(numOfCanddiate, callback) {
goog.base(this);
/**
* The number of candidates to fetch.
*
* @type {number}
*/
this.numOfCandidate = numOfCanddiate;
/** @protected {function(string, !Array.<!Object>)} */
this.callback = callback;
};
goog.inherits(i18n.input.chrome.DataSource, goog.events.EventTarget);
/** @type {boolean} */
i18n.input.chrome.DataSource.prototype.ready = false;
/**
* The correction level.
*
* @protected {number}
*/
i18n.input.chrome.DataSource.prototype.correctionLevel = 0;
/**
* The language code.
*
* @type {string}
* @protected
*/
i18n.input.chrome.DataSource.prototype.language;
/**
* Sets the langauge code.
*
* @param {string} language The language code.
*/
i18n.input.chrome.DataSource.prototype.setLanguage = function(
language) {
this.language = language;
};
/**
* True if the datasource is ready.
*
* @return {boolean} .
*/
i18n.input.chrome.DataSource.prototype.isReady = function() {
return this.ready;
};
/**
* Creates the common payload for completion or prediction request.
*
* @return {!Object} The payload.
* @protected
*/
i18n.input.chrome.DataSource.prototype.createCommonPayload =
function() {
return {
'itc': this.getInputToolCode(),
'num': this.numOfCandidate
};
};
/**
* Gets the input tool code.
*
* @return {string} .
*/
i18n.input.chrome.DataSource.prototype.getInputToolCode = function() {
return this.language + '-t-i0-und';
};
/**
* Sends completion request.
*
* @param {string} query The query .
* @param {string} context The context .
* @param {!Object=} opt_spatialData .
*/
i18n.input.chrome.DataSource.prototype.sendCompletionRequest =
goog.functions.NULL;
/**
* Sends prediciton request.
*
* @param {string} context The context.
*/
i18n.input.chrome.DataSource.prototype.sendPredictionRequest =
goog.functions.NULL;
/**
* Sets the correction level.
*
* @param {number} level .
*/
i18n.input.chrome.DataSource.prototype.setCorrectionLevel = function(level) {
this.correctionLevel = level;
};
/**
* Clears the data source.
*/
i18n.input.chrome.DataSource.prototype.clear = goog.functions.NULL;
/**
* The event type.
*
* @enum {string}
*/
i18n.input.chrome.DataSource.EventType = {
CANDIDATES_BACK: goog.events.getUniqueId('cb'),
READY: goog.events.getUniqueId('r')
};
/**
* The candidates is fetched back.
*
* @param {string} source The source.
* @param {!Array.<!Object>} candidates The candidates.
* @constructor
* @extends {goog.events.Event}
*/
i18n.input.chrome.DataSource.CandidatesBackEvent =
function(source, candidates) {
goog.base(this, i18n.input.chrome.DataSource.EventType.CANDIDATES_BACK);
/**
* The source.
*
* @type {string}
*/
this.source = source;
/**
* The candidate list.
*
* @type {!Array.<!Object>}
*/
this.candidates = candidates;
};
goog.inherits(i18n.input.chrome.DataSource.CandidatesBackEvent,
goog.events.Event);