blob: 94aee24f5ac1ea4d61f44db69619c0034b2dbf63 [file] [log] [blame]
// Copyright 2013 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.chrome.browser;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import org.chromium.chrome.R;
/**
* Form resubmission warning dialog. Presents the cancel/continue choice and fires one of two
* callbacks accordingly.
*/
class RepostFormWarningDialog extends DialogFragment {
// Warning dialog currently being shown, stored for testing.
private static Dialog sCurrentDialog;
private final Runnable mCancelCallback;
private final Runnable mContinueCallback;
public RepostFormWarningDialog(Runnable cancelCallback, Runnable continueCallback) {
mCancelCallback = cancelCallback;
mContinueCallback = continueCallback;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setMessage(R.string.http_post_warning)
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
mCancelCallback.run();
}
})
.setPositiveButton(R.string.http_post_warning_resend,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
mContinueCallback.run();
}
});
assert getCurrentDialog() == null;
Dialog dialog = builder.create();
setCurrentDialog(dialog);
return dialog;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
setCurrentDialog(null);
}
/**
* Sets the currently displayed dialog in sCurrentDialog. This is required by findbugs, which
* allows static fields only to be set from static methods.
*/
private static void setCurrentDialog(Dialog dialog) {
sCurrentDialog = dialog;
}
/**
* @return dialog currently being displayed.
*/
public static Dialog getCurrentDialog() {
return sCurrentDialog;
}
}