Chromium Code Reviews| Index: chrome/browser/media/midi_permission_infobar_delegate.cc |
| diff --git a/chrome/browser/media/midi_permission_infobar_delegate.cc b/chrome/browser/media/midi_permission_infobar_delegate.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3a982e5da7852b6605390d506c607361de4b552e |
| --- /dev/null |
| +++ b/chrome/browser/media/midi_permission_infobar_delegate.cc |
| @@ -0,0 +1,96 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "chrome/browser/media/midi_permission_infobar_delegate.h" |
| + |
| +#include "chrome/browser/content_settings/permission_queue_controller.h" |
| +#include "chrome/browser/content_settings/permission_request_id.h" |
| +#include "chrome/browser/infobars/infobar_service.h" |
| +#include "content/public/browser/navigation_details.h" |
| +#include "content/public/browser/navigation_entry.h" |
| +#include "content/public/browser/web_contents.h" |
| +#include "grit/generated_resources.h" |
| +#include "grit/locale_settings.h" |
| +#include "grit/theme_resources.h" |
| +#include "net/base/net_util.h" |
| +#include "ui/base/l10n/l10n_util.h" |
| + |
| +// static |
| +InfoBarDelegate* MIDIPermissionInfoBarDelegate::Create( |
| + InfoBarService* infobar_service, |
| + PermissionQueueController* controller, |
| + const PermissionRequestID& id, |
| + const GURL& requesting_frame, |
| + const std::string& display_languages) { |
| + return infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>( |
| + new MIDIPermissionInfoBarDelegate(infobar_service, |
| + controller, |
| + id, |
| + requesting_frame, |
| + display_languages))); |
| +} |
| + |
| +MIDIPermissionInfoBarDelegate::MIDIPermissionInfoBarDelegate( |
| + InfoBarService* infobar_service, |
| + PermissionQueueController* controller, |
| + const PermissionRequestID& id, |
| + const GURL& requesting_frame, |
| + const std::string& display_languages) |
| + : ConfirmInfoBarDelegate(infobar_service), |
| + controller_(controller), |
| + id_(id), |
| + requesting_frame_(requesting_frame), |
| + display_languages_(display_languages) { |
| + const content::NavigationEntry* committed_entry = infobar_service-> |
| + web_contents()->GetController().GetLastCommittedEntry(); |
| + contents_unique_id_ = committed_entry ? committed_entry->GetUniqueID() : 0; |
| +} |
| + |
| +int MIDIPermissionInfoBarDelegate::GetIconID() const { |
| + return IDR_INFOBAR_MIDI_SYSEX; |
| +} |
| + |
| +InfoBarDelegate::Type MIDIPermissionInfoBarDelegate::GetInfoBarType() const { |
| + return PAGE_ACTION_TYPE; |
| +} |
| + |
| +bool MIDIPermissionInfoBarDelegate::ShouldExpireInternal( |
| + const content::LoadCommittedDetails& details) const { |
| + // This implementation matches InfoBarDelegate::ShouldExpireInternal(), but |
| + // uses the unique ID we set in the constructor instead of that stored in the |
| + // base class. |
| + return (contents_unique_id_ != details.entry->GetUniqueID()) || |
| + (content::PageTransitionStripQualifier( |
| + details.entry->GetTransitionType()) == |
| + content::PAGE_TRANSITION_RELOAD); |
| +} |
| + |
| +string16 MIDIPermissionInfoBarDelegate::GetMessageText() const { |
| + return l10n_util::GetStringFUTF16(IDS_MIDI_SYSEX_INFOBAR_QUESTION, |
| + net::FormatUrl(requesting_frame_.GetOrigin(), display_languages_)); |
|
Peter Kasting
2013/08/02 06:00:57
Nit: All lines of args must be aligned (i.e. move
|
| +} |
| + |
| +string16 MIDIPermissionInfoBarDelegate::GetButtonLabel( |
| + InfoBarButton button) const { |
| + return l10n_util::GetStringUTF16((button == BUTTON_OK) ? |
| + IDS_MIDI_SYSEX_ALLOW_BUTTON : IDS_MIDI_SYSEX_DENY_BUTTON); |
| +} |
| + |
| +bool MIDIPermissionInfoBarDelegate::Accept() { |
| + SetPermission(true, true); |
| + return true; |
| +} |
| + |
| +bool MIDIPermissionInfoBarDelegate::Cancel() { |
| + SetPermission(true, false); |
| + return true; |
| +} |
| + |
| +void MIDIPermissionInfoBarDelegate::SetPermission(bool update_content_setting, |
|
Peter Kasting
2013/08/02 06:00:57
Why does this take a first bool if it's always tru
Takashi Toyoshima
2013/08/02 07:22:23
Agreed...
GeolocationInfoBarDelegate has the same
|
| + bool allowed) { |
| + controller_->OnPermissionSet(id_, requesting_frame_, |
| + web_contents()->GetURL(), |
| + update_content_setting, allowed); |
| +} |
| + |