| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/permissions/quiet_permission_prompt_model_android.h" |
| |
| #include "chrome/grit/generated_resources.h" |
| #include "components/strings/grit/components_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| namespace { |
| using QuietUiReason = permissions::PermissionUiSelector::QuietUiReason; |
| using PrimaryButtonBehavior = |
| QuietPermissionPromptModelAndroid::PrimaryButtonBehavior; |
| using SecondaryButtonBehavior = |
| QuietPermissionPromptModelAndroid::SecondaryButtonBehavior; |
| |
| std::u16string GetPermissionBlockedTitle( |
| ContentSettingsType content_settings_type) { |
| switch (content_settings_type) { |
| case ContentSettingsType::NOTIFICATIONS: |
| return l10n_util::GetStringUTF16( |
| IDS_NOTIFICATION_QUIET_PERMISSION_INFOBAR_TITLE); |
| case ContentSettingsType::GEOLOCATION: |
| return l10n_util::GetStringUTF16( |
| IDS_LOCATION_QUIET_PERMISSION_MESSAGE_UI_TITLE); |
| default: |
| NOTREACHED(); |
| } |
| } |
| |
| std::u16string GetGeolocationBlockedUIDescription(QuietUiReason reason) { |
| switch (reason) { |
| case QuietUiReason::kEnabledInPrefs: |
| return l10n_util::GetStringUTF16( |
| IDS_LOCATION_QUIET_PERMISSION_MESSAGE_UI); |
| case QuietUiReason::kServicePredictedVeryUnlikelyGrant: |
| case QuietUiReason::kOnDevicePredictedVeryUnlikelyGrant: |
| return l10n_util::GetStringUTF16( |
| IDS_LOCATION_QUIET_PERMISSION_MESSAGE_UI_PREDICTION_SERVICE); |
| default: |
| NOTREACHED(); |
| } |
| } |
| |
| std::u16string GetNotificationBlockedUIDescription(QuietUiReason reason) { |
| switch (reason) { |
| case QuietUiReason::kEnabledInPrefs: |
| return l10n_util::GetStringUTF16( |
| IDS_NOTIFICATION_QUIET_PERMISSION_PROMPT_MESSAGE); |
| case QuietUiReason::kTriggeredByCrowdDeny: |
| return l10n_util::GetStringUTF16( |
| IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_CROWD_DENY_DESCRIPTION); |
| case QuietUiReason::kTriggeredDueToAbusiveRequests: |
| case QuietUiReason::kTriggeredDueToAbusiveContent: |
| return l10n_util::GetStringUTF16( |
| IDS_NOTIFICATION_QUIET_PERMISSION_INFOBAR_ABUSIVE_MESSAGE); |
| case QuietUiReason::kServicePredictedVeryUnlikelyGrant: |
| case QuietUiReason::kOnDevicePredictedVeryUnlikelyGrant: |
| return l10n_util::GetStringUTF16( |
| IDS_NOTIFICATION_QUIET_PERMISSION_INFOBAR_PREDICTION_SERVICE_MESSAGE); |
| case QuietUiReason::kTriggeredDueToDisruptiveBehavior: |
| return l10n_util::GetStringUTF16( |
| IDS_NOTIFICATION_QUIET_PERMISSION_INFOBAR_DISRUPTIVE_MESSAGE); |
| } |
| NOTREACHED(); |
| } |
| |
| std::u16string GetPermissionBlockedUIDescription( |
| QuietUiReason reason, |
| ContentSettingsType content_settings_type) { |
| switch (content_settings_type) { |
| case ContentSettingsType::NOTIFICATIONS: |
| return GetNotificationBlockedUIDescription(reason); |
| case ContentSettingsType::GEOLOCATION: |
| return GetGeolocationBlockedUIDescription(reason); |
| default: |
| NOTREACHED(); |
| } |
| } |
| |
| } // namespace |
| |
| QuietPermissionPromptModelAndroid::QuietPermissionPromptModelAndroid() = |
| default; |
| QuietPermissionPromptModelAndroid::~QuietPermissionPromptModelAndroid() = |
| default; |
| QuietPermissionPromptModelAndroid::QuietPermissionPromptModelAndroid( |
| const QuietPermissionPromptModelAndroid& other) = default; |
| |
| QuietPermissionPromptModelAndroid GetQuietPermissionPromptModel( |
| permissions::PermissionUiSelector::QuietUiReason reason, |
| ContentSettingsType content_settings_type) { |
| QuietPermissionPromptModelAndroid model; |
| |
| model.title = GetPermissionBlockedTitle(content_settings_type); |
| model.description = |
| GetPermissionBlockedUIDescription(reason, content_settings_type); |
| |
| switch (reason) { |
| case QuietUiReason::kEnabledInPrefs: |
| case QuietUiReason::kServicePredictedVeryUnlikelyGrant: |
| case QuietUiReason::kOnDevicePredictedVeryUnlikelyGrant: |
| case QuietUiReason::kTriggeredByCrowdDeny: |
| model.primary_button_label = l10n_util::GetStringUTF16( |
| IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_ALLOW_BUTTON); |
| model.primary_button_behavior = PrimaryButtonBehavior::kAllowForThisSite; |
| model.secondary_button_label = |
| l10n_util::GetStringUTF16(IDS_NOTIFICATION_BUTTON_MANAGE); |
| model.secondary_button_behavior = SecondaryButtonBehavior::kShowSettings; |
| break; |
| case QuietUiReason::kTriggeredDueToAbusiveRequests: |
| case QuietUiReason::kTriggeredDueToAbusiveContent: |
| case QuietUiReason::kTriggeredDueToDisruptiveBehavior: |
| model.primary_button_label = l10n_util::GetStringUTF16( |
| IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_CONTINUE_BLOCKING_BUTTON); |
| model.primary_button_behavior = PrimaryButtonBehavior::kContinueBlocking; |
| model.secondary_button_label = l10n_util::GetStringUTF16( |
| IDS_NOTIFICATIONS_QUIET_PERMISSION_BUBBLE_COMPACT_ALLOW_BUTTON); |
| model.secondary_button_behavior = |
| SecondaryButtonBehavior::kAllowForThisSite; |
| break; |
| } |
| |
| if (reason == QuietUiReason::kTriggeredDueToAbusiveRequests || |
| reason == QuietUiReason::kTriggeredDueToAbusiveContent || |
| reason == QuietUiReason::kTriggeredDueToDisruptiveBehavior) { |
| model.learn_more_text = l10n_util::GetStringUTF16(IDS_LEARN_MORE); |
| } |
| |
| return model; |
| } |
| |
| GURL GetNotificationBlockedLearnMoreUrl() { |
| return GURL(u"https://support.google.com/chrome/answer/3220216"); |
| } |