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

Unified Diff: chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc

Issue 2319443002: Add InfoBarIdentifier to GroupedPermissionInfoBarDelegate (Closed)
Patch Set: minor change in comments Created 4 years, 3 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/permissions/grouped_permission_infobar_delegate_android.cc
diff --git a/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2cbb3b018d28c282895dbc748e449e85bf55cfb8
--- /dev/null
+++ b/chrome/browser/permissions/grouped_permission_infobar_delegate_android.cc
@@ -0,0 +1,116 @@
+// Copyright 2016 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/permissions/grouped_permission_infobar_delegate_android.h"
+
+#include "base/memory/ptr_util.h"
+#include "chrome/browser/infobars/infobar_service.h"
+#include "chrome/browser/permissions/permission_util.h"
+#include "chrome/browser/ui/android/infobars/grouped_permission_infobar.h"
+#include "chrome/grit/generated_resources.h"
+#include "chrome/grit/theme_resources.h"
+#include "components/infobars/core/infobar.h"
+#include "components/url_formatter/elide_url.h"
+#include "ui/base/l10n/l10n_util.h"
+#include "ui/strings/grit/ui_strings.h"
+
+GroupedPermissionInfoBarDelegate::~GroupedPermissionInfoBarDelegate() {}
+
+// static
+infobars::InfoBar* GroupedPermissionInfoBarDelegate::Create(
+ InfoBarService* infobar_service,
+ const GURL& requesting_origin,
+ const std::vector<ContentSettingsType>& types) {
+ return infobar_service->AddInfoBar(
+ base::MakeUnique<GroupedPermissionInfoBar>(base::WrapUnique(
+ new GroupedPermissionInfoBarDelegate(requesting_origin, types))));
+}
+
+bool GroupedPermissionInfoBarDelegate::ShouldShowPersistenceToggle() const {
+ return PermissionUtil::ShouldShowPersistenceToggle();
+}
+
+ContentSettingsType GroupedPermissionInfoBarDelegate::GetContentSettingType(
+ size_t position) const {
+ DCHECK_LT(position, types_.size());
+ return types_[position];
+}
+
+int GroupedPermissionInfoBarDelegate::GetIconIdForPermission(
+ size_t position) const {
+ DCHECK_LT(position, types_.size());
+ ContentSettingsType type = types_[position];
+ if (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)
+ return IDR_INFOBAR_MEDIA_STREAM_MIC;
+ if (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)
+ return IDR_INFOBAR_MEDIA_STREAM_CAMERA;
+
+ return IDR_INFOBAR_WARNING;
+}
+
+base::string16 GroupedPermissionInfoBarDelegate::GetMessageTextFragment(
+ size_t position) const {
+ DCHECK_LT(position, types_.size());
+ ContentSettingsType type = types_[position];
+
+ const bool is_mic = (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
+ DCHECK(is_mic || (type == CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
+ return l10n_util::GetStringUTF16(
+ is_mic ? IDS_MEDIA_CAPTURE_AUDIO_ONLY_PERMISSION_FRAGMENT
+ : IDS_MEDIA_CAPTURE_VIDEO_ONLY_PERMISSION_FRAGMENT);
+}
+
+void GroupedPermissionInfoBarDelegate::ToggleAccept(size_t position,
+ bool new_value) {
+ DCHECK_LT(position, types_.size());
+ accept_states_[position] = new_value;
+}
+
+base::string16 GroupedPermissionInfoBarDelegate::GetMessageText() const {
+ return l10n_util::GetStringFUTF16(
+ IDS_PERMISSIONS_BUBBLE_PROMPT,
+ url_formatter::FormatUrlForSecurityDisplay(requesting_origin_));
+}
+
+bool GroupedPermissionInfoBarDelegate::GetAcceptState(size_t position) {
+ DCHECK_LT(position, types_.size());
+ return accept_states_[position];
+}
+
+GroupedPermissionInfoBarDelegate::GroupedPermissionInfoBarDelegate(
+ const GURL& requesting_origin,
+ const std::vector<ContentSettingsType>& types)
+ : requesting_origin_(requesting_origin),
+ types_(types),
+ accept_states_(types_.size(), true),
+ persist_(true) {}
+
+infobars::InfoBarDelegate::InfoBarIdentifier
+GroupedPermissionInfoBarDelegate::GetIdentifier() const {
+ return GROUPED_PERMISSION_INFOBAR_DELEGATE_ANDROID;
+}
+
+infobars::InfoBarDelegate::Type
+GroupedPermissionInfoBarDelegate::GetInfoBarType() const {
+ return PAGE_ACTION_TYPE;
+}
+
+int GroupedPermissionInfoBarDelegate::GetButtons() const {
+ // If there is only one permission in the infobar, we show both OK and CANCEL
+ // button to allow/deny it. If there are multiple, we only show OK button
+ // which means making decision for all permissions according to each accept
+ // toggle.
+ return (permission_count() > 1) ? BUTTON_OK : (BUTTON_OK | BUTTON_CANCEL);
+}
+
+base::string16 GroupedPermissionInfoBarDelegate::GetButtonLabel(
+ InfoBarButton button) const {
+ if (permission_count() > 1) {
+ return l10n_util::GetStringUTF16((button == BUTTON_OK) ? IDS_APP_OK
+ : IDS_APP_CANCEL);
+ }
+
+ return l10n_util::GetStringUTF16((button == BUTTON_OK) ? IDS_PERMISSION_ALLOW
+ : IDS_PERMISSION_DENY);
+}

Powered by Google App Engine
This is Rietveld 408576698