blob: aa542f8180e0a8ccbf625a41b363b275ed98622b [file] [log] [blame]
// 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/android/android_theme_resources.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/permissions/permission_prompt_android.h"
#include "chrome/browser/permissions/permission_request.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 "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(
const base::WeakPtr<PermissionPromptAndroid>& permission_prompt,
InfoBarService* infobar_service) {
return infobar_service->AddInfoBar(
std::make_unique<GroupedPermissionInfoBar>(base::WrapUnique(
new GroupedPermissionInfoBarDelegate(permission_prompt))));
}
size_t GroupedPermissionInfoBarDelegate::PermissionCount() const {
return permission_prompt_->PermissionCount();
}
ContentSettingsType GroupedPermissionInfoBarDelegate::GetContentSettingType(
size_t position) const {
return permission_prompt_->GetContentSettingType(position);
}
int GroupedPermissionInfoBarDelegate::GetIconId() const {
return permission_prompt_->GetIconId();
}
base::string16 GroupedPermissionInfoBarDelegate::GetMessageText() const {
return permission_prompt_->GetMessageText();
}
bool GroupedPermissionInfoBarDelegate::Accept() {
if (permission_prompt_)
permission_prompt_->Accept();
return true;
}
bool GroupedPermissionInfoBarDelegate::Cancel() {
if (permission_prompt_)
permission_prompt_->Deny();
return true;
}
void GroupedPermissionInfoBarDelegate::InfoBarDismissed() {
if (permission_prompt_)
permission_prompt_->Closing();
}
GroupedPermissionInfoBarDelegate::GroupedPermissionInfoBarDelegate(
const base::WeakPtr<PermissionPromptAndroid>& permission_prompt)
: permission_prompt_(permission_prompt) {
DCHECK(permission_prompt);
}
infobars::InfoBarDelegate::InfoBarIdentifier
GroupedPermissionInfoBarDelegate::GetIdentifier() const {
return GROUPED_PERMISSION_INFOBAR_DELEGATE_ANDROID;
}
int GroupedPermissionInfoBarDelegate::GetButtons() const {
return BUTTON_OK | BUTTON_CANCEL;
}
base::string16 GroupedPermissionInfoBarDelegate::GetButtonLabel(
InfoBarButton button) const {
return l10n_util::GetStringUTF16((button == BUTTON_OK) ? IDS_PERMISSION_ALLOW
: IDS_PERMISSION_DENY);
}
bool GroupedPermissionInfoBarDelegate::EqualsDelegate(
infobars::InfoBarDelegate* delegate) const {
// The PermissionRequestManager doesn't create duplicate infobars so a pointer
// equality check is sufficient.
return this == delegate;
}