blob: cc08acfe5b2f54d6cbf875633670cee5c78ec432 [file] [log] [blame]
// Copyright 2019 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.
package org.chromium.components.browser_ui.sms;
import android.app.Activity;
import android.content.Context;
import android.os.SystemClock;
import android.view.View;
import androidx.annotation.VisibleForTesting;
import org.chromium.base.Log;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.components.infobars.ConfirmInfoBar;
import org.chromium.components.infobars.InfoBarControlLayout;
import org.chromium.components.infobars.InfoBarLayout;
import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.base.WindowAndroid;
/**
* An InfoBar that asks for the user's permission to share the SMS with the page.
*/
public class SmsReceiverInfoBar extends ConfirmInfoBar {
private static final String TAG = "SmsReceiverInfoBar";
private static final boolean DEBUG = false;
private String mMessage;
private WindowAndroid mWindowAndroid;
private Long mKeyboardDismissedTime;
@VisibleForTesting
@CalledByNative
public static SmsReceiverInfoBar create(WindowAndroid windowAndroid, int iconId, String title,
String message, String okButtonLabel) {
if (DEBUG) Log.d(TAG, "SmsReceiverInfoBar.create()");
return new SmsReceiverInfoBar(windowAndroid, iconId, title, message, okButtonLabel);
}
private SmsReceiverInfoBar(WindowAndroid windowAndroid, int iconId, String title,
String message, String okButtonLabel) {
super(iconId, R.color.infobar_icon_drawable_color,
/*iconBitmap=*/null, /*message=*/title, /*linkText=*/null, okButtonLabel,
/*secondaryButtonText=*/null);
mMessage = message;
mWindowAndroid = windowAndroid;
}
@Override
public int getPriority() {
return InfoBarPriority.USER_TRIGGERED;
}
@Override
public void createContent(InfoBarLayout layout) {
super.createContent(layout);
SmsReceiverUma.recordInfobarAction(SmsReceiverUma.InfobarAction.SHOWN);
Activity activity = mWindowAndroid.getActivity().get();
if (activity != null) {
View focusedView = activity.getCurrentFocus();
KeyboardVisibilityDelegate keyboardVisibilityDelegate =
KeyboardVisibilityDelegate.getInstance();
if (focusedView != null
&& keyboardVisibilityDelegate.isKeyboardShowing(activity, focusedView)) {
keyboardVisibilityDelegate.hideKeyboard(focusedView);
SmsReceiverUma.recordInfobarAction(SmsReceiverUma.InfobarAction.KEYBOARD_DISMISSED);
mKeyboardDismissedTime = SystemClock.uptimeMillis();
}
}
Context context = layout.getContext();
InfoBarControlLayout control = layout.addControlLayout();
control.addDescription(mMessage);
}
@Override
public void onCloseButtonClicked() {
super.onCloseButtonClicked();
if (mKeyboardDismissedTime != null) {
SmsReceiverUma.recordCancelTimeAfterKeyboardDismissal(
SystemClock.uptimeMillis() - mKeyboardDismissedTime);
}
}
}