blob: 7a22eae15712a9e979490af9736cd507cd6b9e8a [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_KEYBOARD_NATIVE_PREDICTOR_H_
#define SERVICES_KEYBOARD_NATIVE_PREDICTOR_H_
#include <vector>
#include "base/callback.h"
#include "mojo/public/cpp/application/connect.h"
#include "mojo/public/interfaces/application/shell.mojom.h"
#include "mojo/services/prediction/interfaces/prediction.mojom.h"
#include "services/keyboard_native/key_layout.h"
namespace keyboard {
class Predictor {
public:
Predictor(mojo::Shell* shell);
~Predictor();
void SetSuggestionKeys(std::vector<KeyLayout::Key*> suggestion_keys);
void SetUpdateCallback(base::Callback<void()> on_update_callback);
void StoreCurWord(std::string new_word);
int ChooseSuggestedWord(std::string suggested);
void DeleteCharInCurWord();
private:
void ShowEmptySuggestion();
void GetSuggestion();
void GetPredictionListAndEnd(const mojo::Array<mojo::String>& input_list);
prediction::PredictionServicePtr prediction_service_impl_;
std::vector<KeyLayout::Key*> suggestion_keys_;
std::string current_word_;
std::vector<std::string> previous_words_;
base::Callback<void()> on_update_callback_;
DISALLOW_COPY_AND_ASSIGN(Predictor);
};
} // namespace keyboard
#endif // SERVICES_KEYBOARD_NATIVE_PREDICTOR_H_