Javascript  |  76行  |  2.4 KB

// Copyright 2014 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.
var connection;
var mojo_api;
var input_focused_event;

if (!chrome.virtualKeyboardPrivate) {
  define('main', [
      'mojo/public/js/bindings/connection',
      'ui/keyboard/webui/keyboard.mojom',
      'content/public/renderer/service_provider',
  ], function(connector, keyboard, serviceProvider) {
    'use strict';
    function KeyboardImpl(kbd) {
      console.log('Creating KeyboardImpl');
      this.keyboard_ = kbd;
      mojo_api = this;
    }

    KeyboardImpl.prototype = Object.create(keyboard.KeyboardAPIStub.prototype);

    KeyboardImpl.prototype.onTextInputTypeChanged = function(input_type) {
      console.log('Text input changed: ' + input_type);
      input_focused_event.forEach(function(listener) {
        listener({type: input_type});
      });
    };

    return function() {
      connection = new connector.Connection(
          serviceProvider.connectToService(
              keyboard.KeyboardUIHandlerMojoProxy.NAME_),
          KeyboardImpl,
          keyboard.KeyboardUIHandlerMojoProxy);
    };
  });

  chrome.virtualKeyboardPrivate = {};
  chrome.virtualKeyboardPrivate.sendKeyEvent = function(event) {
    if (!mojo_api)
      return;
    console.log('sending key event: ' + event.type);
    mojo_api.keyboard_.sendKeyEvent(event.type,
                               event.charValue,
                               event.keyCode,
                               event.keyName,
                               event.modifiers);
  };
  chrome.virtualKeyboardPrivate.hideKeyboard = function() {
    if (!mojo_api)
      return;
    mojo_api.keyboard_.hideKeyboard();
  };
  chrome.virtualKeyboardPrivate.moveCursor = function() {};
  chrome.virtualKeyboardPrivate.lockKeyboard = function() {};
  chrome.virtualKeyboardPrivate.keyboardLoaded = function() {};
  chrome.virtualKeyboardPrivate.getKeyboardConfig = function() {};

  function BrowserEvent() {
    this.listeners_ = [];
  };

  BrowserEvent.prototype.addListener = function(callback) {
    this.listeners_.push(callback);
  };

  BrowserEvent.prototype.forEach = function(callback) {
    for (var i = 0; i < this.listeners_.length; ++i)
      callback(this.listeners_[i]);
  };

  input_focused_event = new BrowserEvent;
  chrome.virtualKeyboardPrivate.onTextInputBoxFocused = input_focused_event;
}