chromium/chrome/browser/android/permissions/permission_settings_bridge.cc

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "base/android/scoped_java_ref.h"
#include "chrome/browser/permissions/quiet_notification_permission_ui_state.h"
#include "chrome/browser/profiles/profile.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/permissions/permission_request_manager.h"

// Must come after all headers that specialize FromJniType() / ToJniType().
#include "chrome/android/chrome_jni_headers/PermissionSettingsBridge_jni.h"

using base::android::JavaParamRef;

static jboolean JNI_PermissionSettingsBridge_ShouldShowNotificationsPromo(
    JNIEnv* env,
    Profile* profile,
    const JavaParamRef<jobject>& jweb_contents) {
  permissions::PermissionRequestManager* manager =
      permissions::PermissionRequestManager::FromWebContents(
          content::WebContents::FromJavaWebContents(jweb_contents));
  return manager->IsRequestInProgress() &&
         manager->Requests()[0]->GetContentSettingsType() ==
             ContentSettingsType::NOTIFICATIONS &&
         QuietNotificationPermissionUiState::ShouldShowPromo(profile);
}

static void JNI_PermissionSettingsBridge_DidShowNotificationsPromo(
    JNIEnv* env,
    Profile* profile) {
  QuietNotificationPermissionUiState::PromoWasShown(profile);
}