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 } 100