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

#include "starboard/window.h"

#include "starboard/android/shared/jni_env_ext.h"
#include "starboard/android/shared/jni_utils.h"

using starboard::android::shared::JniEnvExt;
using starboard::android::shared::ScopedLocalJavaRef;

bool SbWindowIsOnScreenKeyboardShown(SbWindow window) {
  JniEnvExt* env = JniEnvExt::Get();

  ScopedLocalJavaRef<jobject> j_keyboard_editor(
      env->CallStarboardObjectMethodOrAbort(
          "getKeyboardEditor", "()Ldev/cobalt/coat/KeyboardEditor;"));
  jboolean is_keyboard_shown = env->CallBooleanMethodOrAbort(
      j_keyboard_editor.Get(), "isKeyboardShowing", "()Z");
  return is_keyboard_shown;
}
