blob: 05751d62e5f762f2096c963278a7c683a8282284 [file] [log] [blame]
/*
* Copyright (C) 2019 The Android Open Source Project
*
* 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.
*/
package com.google.android.car.multidisplaytest.ime;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import com.google.android.car.multidisplaytest.R;
/**
* Modified from GarageModeTestApp;
* Including coping Watchdog.java and Logger.java
*/
public class InputTestFragment extends Fragment {
private static final String TAG = InputTestFragment.class.getSimpleName();
private Button mClearButton;
private EditText mTestEditText;
private InputMethodManager mInputManager;
private InputConnection mInputConnection;
private TextView mWatchdogTextView;
private ViewGroup mInputViewGroup;
private Watchdog mWatchdog;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
View view = inflater.inflate(R.layout.input_type_test, container, false);
setViewsFromFragment(view);
setListners();
return view;
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "Resuming watchdog");
mWatchdog = new Watchdog(mWatchdogTextView);
mWatchdog.start();
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "Pausing watchdog");
if (mWatchdog != null) {
mWatchdog.stop();
mWatchdog = null;
}
}
private void setViewsFromFragment(View view) {
mWatchdogTextView = view.findViewById(R.id.ime_watchdog);
mInputManager = (InputMethodManager) getActivity()
.getSystemService(Context.INPUT_METHOD_SERVICE);
mInputViewGroup = view.findViewById(R.id.inputViewGroup);
mClearButton = view.findViewById(R.id.clearButton);
// Log this EditText view's input focus to test for input connection with IME
mTestEditText = view.findViewById(R.id.testEditText);
}
private void setListners() {
mClearButton.setOnClickListener(view -> onClearButtonClick());
mInputViewGroup.setOnTouchListener((view, event) -> {
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
if (mWatchdog != null) {
boolean activeState = mInputManager.isActive();
boolean acceptingState = mInputManager.isAcceptingText();
String logMessage = String.format("IME states: Active - %b, AcceptingText - %b",
activeState, acceptingState);
mWatchdog.logEvent(logMessage);
}
}
return true;
});
mTestEditText.setOnFocusChangeListener((view, hasFocus) -> {
if (mWatchdog != null) {
if (hasFocus) {
mWatchdog.logEvent("EditText view has input connection with IME");
} else {
mWatchdog.logEvent("EditText view doesn't have input connection with IME");
}
}
});
}
private void onClearButtonClick() {
if (mWatchdog != null) {
mWatchdog.logEvent("Clear botton test...");
mWatchdog.start();
}
}
}