1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 package org.chromium.chrome.browser;
7 import java.lang.Runnable;
9 import android.app.AlertDialog;
10 import android.app.Dialog;
11 import android.app.DialogFragment;
12 import android.content.DialogInterface;
13 import android.os.Bundle;
15 import org.chromium.chrome.R;
18 * Form resubmission warning dialog. Presents the cancel/continue choice and fires one of two
19 * callbacks accordingly.
21 class RepostFormWarningDialog extends DialogFragment {
22 // Warning dialog currently being shown, stored for testing.
23 private static Dialog sCurrentDialog;
25 private final Runnable mCancelCallback;
26 private final Runnable mContinueCallback;
28 public RepostFormWarningDialog(Runnable cancelCallback, Runnable continueCallback) {
29 mCancelCallback = cancelCallback;
30 mContinueCallback = continueCallback;
34 public Dialog onCreateDialog(Bundle savedInstanceState) {
35 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
36 .setMessage(R.string.http_post_warning)
37 .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
38 public void onClick(DialogInterface dialog, int id) {
39 mCancelCallback.run();
42 .setPositiveButton(R.string.http_post_warning_resend,
43 new DialogInterface.OnClickListener() {
44 public void onClick(DialogInterface dialog, int id) {
45 mContinueCallback.run();
49 assert getCurrentDialog() == null;
50 Dialog dialog = builder.create();
51 setCurrentDialog(dialog);
57 public void onDismiss(DialogInterface dialog) {
58 super.onDismiss(dialog);
59 setCurrentDialog(null);
63 * Sets the currently displayed dialog in sCurrentDialog. This is required by findbugs, which
64 * allows static fields only to be set from static methods.
66 private static void setCurrentDialog(Dialog dialog) {
67 sCurrentDialog = dialog;
71 * @return dialog currently being displayed.
73 public static Dialog getCurrentDialog() {
74 return sCurrentDialog;