Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: chrome/browser/media/midi_permission_infobar_delegate.cc

Issue 20990005: Web MIDI: implement permission infobar (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review #2 and #10 Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+}
+

Powered by Google App Engine
This is Rietveld 408576698