158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/apps/directory_access_confirmation_dialog.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/callback.h" 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/tab_modal_confirm_dialog.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "chrome/browser/ui/tab_modal_confirm_dialog_delegate.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "content/public/browser/web_contents.h" 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "grit/generated_resources.h" 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace { 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class DirectoryAccessConfirmationDialog : public TabModalConfirmDialogDelegate { 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DirectoryAccessConfirmationDialog(bool writable, 19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& app_name, 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::WebContents* web_contents, 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure& on_accept, 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure& on_cancel); 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetTitle() OVERRIDE; 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetMessage() OVERRIDE; 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetAcceptButtonTitle() OVERRIDE; 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual base::string16 GetCancelButtonTitle() OVERRIDE; 2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnAccepted() OVERRIDE; 3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnCanceled() OVERRIDE; 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual void OnClosed() OVERRIDE; 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure on_accept_; 3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure on_cancel_; 3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const bool writable_; 37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16 app_name_; 3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)DirectoryAccessConfirmationDialog::DirectoryAccessConfirmationDialog( 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) bool writable, 42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& app_name, 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::WebContents* web_contents, 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure& on_accept, 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure& on_cancel) 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) : TabModalConfirmDialogDelegate(web_contents), 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) on_accept_(on_accept), 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) on_cancel_(on_cancel), 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) writable_(writable), 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) app_name_(app_name) {} 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 52d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)base::string16 DirectoryAccessConfirmationDialog::GetTitle() { 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return l10n_util::GetStringUTF16( 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_EXTENSIONS_DIRECTORY_CONFIRMATION_DIALOG_TITLE); 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 57d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)base::string16 DirectoryAccessConfirmationDialog::GetMessage() { 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) if (writable_) { 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return l10n_util::GetStringFUTF16( 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_EXTENSIONS_DIRECTORY_CONFIRMATION_DIALOG_MESSAGE_WRITABLE, 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) app_name_); 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } else { 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return l10n_util::GetStringFUTF16( 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) IDS_EXTENSIONS_DIRECTORY_CONFIRMATION_DIALOG_MESSAGE_READ_ONLY, 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) app_name_); 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) } 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 69d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)base::string16 DirectoryAccessConfirmationDialog::GetAcceptButtonTitle() { 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_YES_BUTTON_LABEL); 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 72d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)base::string16 DirectoryAccessConfirmationDialog::GetCancelButtonTitle() { 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_CONFIRM_MESSAGEBOX_NO_BUTTON_LABEL); 7458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 7558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void DirectoryAccessConfirmationDialog::OnAccepted() { 7758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) on_accept_.Run(); 7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 7958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void DirectoryAccessConfirmationDialog::OnCanceled() { 8158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) on_cancel_.Run(); 8258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void DirectoryAccessConfirmationDialog::OnClosed() { 8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) on_cancel_.Run(); 8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 8758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 8858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace 8958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 9058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void CreateDirectoryAccessConfirmationDialog(bool writable, 91a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& app_name, 9258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) content::WebContents* web_contents, 9358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure& on_accept, 9458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const base::Closure& on_cancel) { 9558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) TabModalConfirmDialog::Create( 9658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) new DirectoryAccessConfirmationDialog( 9758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) writable, app_name, web_contents, on_accept, on_cancel), 9858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) web_contents); 9958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 100