Upstream version 11.40.277.0
[platform/framework/web/crosswalk.git] / src / chrome / android / java / src / org / chromium / chrome / browser / RepostFormWarningDialog.java
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.
4
5 package org.chromium.chrome.browser;
6
7 import android.app.AlertDialog;
8 import android.app.Dialog;
9 import android.app.DialogFragment;
10 import android.content.DialogInterface;
11 import android.os.Bundle;
12
13 import org.chromium.chrome.R;
14
15 /**
16  * Form resubmission warning dialog. Presents the cancel/continue choice and fires one of two
17  * callbacks accordingly.
18  */
19 class RepostFormWarningDialog extends DialogFragment {
20     // Warning dialog currently being shown, stored for testing.
21     private static Dialog sCurrentDialog;
22
23     private final Runnable mCancelCallback;
24     private final Runnable mContinueCallback;
25
26     public RepostFormWarningDialog(Runnable cancelCallback, Runnable continueCallback) {
27         mCancelCallback = cancelCallback;
28         mContinueCallback = continueCallback;
29     }
30
31     @Override
32     public Dialog onCreateDialog(Bundle savedInstanceState) {
33         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
34                 .setMessage(R.string.http_post_warning)
35                 .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
36                     @Override
37                     public void onClick(DialogInterface dialog, int id) {
38                         mCancelCallback.run();
39                     }
40                 })
41                 .setPositiveButton(R.string.http_post_warning_resend,
42                         new DialogInterface.OnClickListener() {
43                             @Override
44                             public void onClick(DialogInterface dialog, int id) {
45                                 mContinueCallback.run();
46                             }
47                         });
48
49         assert getCurrentDialog() == null;
50         Dialog dialog = builder.create();
51         setCurrentDialog(dialog);
52
53         return dialog;
54     }
55
56     @Override
57     public void onDismiss(DialogInterface dialog) {
58         super.onDismiss(dialog);
59         setCurrentDialog(null);
60     }
61
62     /**
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.
65      */
66     private static void setCurrentDialog(Dialog dialog) {
67         sCurrentDialog = dialog;
68     }
69
70     /**
71      * @return dialog currently being displayed.
72      */
73     public static Dialog getCurrentDialog() {
74         return sCurrentDialog;
75     }
76 }