Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / apps / directory_access_confirmation_dialog.cc
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 #include "chrome/browser/ui/apps/directory_access_confirmation_dialog.h"
6
7 #include "base/callback.h"
8 #include "chrome/browser/ui/tab_modal_confirm_dialog.h"
9 #include "chrome/browser/ui/tab_modal_confirm_dialog_delegate.h"
10 #include "content/public/browser/web_contents.h"
11 #include "grit/generated_resources.h"
12 #include "ui/base/l10n/l10n_util.h"
13
14 namespace {
15
16 class DirectoryAccessConfirmationDialog : public TabModalConfirmDialogDelegate {
17  public:
18   DirectoryAccessConfirmationDialog(bool writable,
19                                     const base::string16& app_name,
20                                     content::WebContents* web_contents,
21                                     const base::Closure& on_accept,
22                                     const base::Closure& on_cancel);
23
24   virtual base::string16 GetTitle() OVERRIDE;
25   virtual base::string16 GetDialogMessage() OVERRIDE;
26   virtual base::string16 GetAcceptButtonTitle() OVERRIDE;
27   virtual base::string16 GetCancelButtonTitle() OVERRIDE;
28
29  private:
30   virtual void OnAccepted() OVERRIDE;
31   virtual void OnCanceled() OVERRIDE;
32   virtual void OnClosed() OVERRIDE;
33
34   const base::Closure on_accept_;
35   const base::Closure on_cancel_;
36   const bool writable_;
37   const base::string16 app_name_;
38 };
39
40 DirectoryAccessConfirmationDialog::DirectoryAccessConfirmationDialog(
41     bool writable,
42     const base::string16& app_name,
43     content::WebContents* web_contents,
44     const base::Closure& on_accept,
45     const base::Closure& on_cancel)
46     : TabModalConfirmDialogDelegate(web_contents),
47       on_accept_(on_accept),
48       on_cancel_(on_cancel),
49       writable_(writable),
50       app_name_(app_name) {}
51
52 base::string16 DirectoryAccessConfirmationDialog::GetTitle() {
53   return l10n_util::GetStringUTF16(
54       IDS_EXTENSIONS_DIRECTORY_CONFIRMATION_DIALOG_TITLE);
55 }
56
57 base::string16 DirectoryAccessConfirmationDialog::GetDialogMessage() {
58   if (writable_) {
59     return l10n_util::GetStringFUTF16(
60         IDS_EXTENSIONS_DIRECTORY_CONFIRMATION_DIALOG_MESSAGE_WRITABLE,
61         app_name_);
62   } else {
63     return l10n_util::GetStringFUTF16(
64         IDS_EXTENSIONS_DIRECTORY_CONFIRMATION_DIALOG_MESSAGE_READ_ONLY,
65         app_name_);
66   }
67 }
68
69 base::string16 DirectoryAccessConfirmationDialog::GetAcceptButtonTitle() {
70   return l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL);
71 }
72 base::string16 DirectoryAccessConfirmationDialog::GetCancelButtonTitle() {
73   return l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL);
74 }
75
76 void DirectoryAccessConfirmationDialog::OnAccepted() {
77   on_accept_.Run();
78 }
79
80 void DirectoryAccessConfirmationDialog::OnCanceled() {
81   on_cancel_.Run();
82 }
83
84 void DirectoryAccessConfirmationDialog::OnClosed() {
85   on_cancel_.Run();
86 }
87
88 }  // namespace
89
90 void CreateDirectoryAccessConfirmationDialog(bool writable,
91                                              const base::string16& app_name,
92                                              content::WebContents* web_contents,
93                                              const base::Closure& on_accept,
94                                              const base::Closure& on_cancel) {
95   TabModalConfirmDialog::Create(
96       new DirectoryAccessConfirmationDialog(
97           writable, app_name, web_contents, on_accept, on_cancel),
98       web_contents);
99 }