Fix IsBraveAdsNotificationChannelEnabled().

In browser-android-tabs, we were adding a new method GetChannelStatus directly
in chromium's NotificationChannelsProviderAndroid class. To avoid patching,
this commit add BraveNotificationSettingsBridge for our native code to get
Ads channel status without patching chromium.
This commit is contained in:
Jocelyn Liu
2019-11-07 19:26:25 -08:00
parent e21fdb5e03
commit e3903a89d3
5 changed files with 37 additions and 11 deletions
+1
View File
@@ -26,6 +26,7 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/document/BraveLauncherActivity.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/BraveAds.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/BraveAdsNotificationBuilder.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/BraveNotificationSettingsBridge.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/BraveOnboardingNotification.java",
"../../brave/android/java/org/chromium/chrome/browser/notifications/BraveSetDefaultBrowserNotificationService.java",
"../../brave/android/java/org/chromium/chrome/browser/ntp/BraveDuckDuckGoOfferView.java",
@@ -0,0 +1,26 @@
/**
* Copyright (c) 2019 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
package org.chromium.chrome.browser.notifications;
import android.annotation.TargetApi;
import android.os.Build;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.browser.notifications.NotificationSettingsBridge;
/**
* This class provides our native code to access NotificationSettingsBridge
* without patching notification_channels_provider_android.cc/h.
*/
public class BraveNotificationSettingsBridge {
@TargetApi(Build.VERSION_CODES.O)
@CalledByNative
static @NotificationChannelStatus int getChannelStatus(String channelId) {
return NotificationSettingsBridge.getChannelStatus(channelId);
}
}
+1
View File
@@ -96,6 +96,7 @@ generate_jni("jni_headers") {
"//brave/android/java/org/chromium/chrome/browser/BraveActivity.java",
"//brave/android/java/org/chromium/chrome/browser/BraveRelaunchUtils.java",
"//brave/android/java/org/chromium/chrome/browser/BraveRewardsNativeWorker.java",
"//brave/android/java/org/chromium/chrome/browser/notifications/BraveNotificationSettingsBridge.java",
"//brave/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java",
"//brave/android/java/org/chromium/chrome/browser/preferences/website/BraveShieldsContentSettings.java",
"//brave/android/java/org/chromium/chrome/browser/signin/BraveSigninManager.java",
@@ -3,15 +3,18 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "brave/components/brave_ads/browser/notification_helper_android.h"
#include <string>
#include "base/android/jni_string.h"
#include "base/system/sys_info.h"
#include "brave/components/brave_ads/browser/notification_helper_android.h"
#include "brave/build/android/jni_headers/BraveAds_jni.h"
#include "brave/build/android/jni_headers/BraveAdsSignupDialog_jni.h"
#include "brave/build/android/jni_headers/BraveNotificationSettingsBridge_jni.h"
#include "brave/components/brave_ads/browser/background_helper.h"
#include "chrome/android/chrome_jni_headers/NotificationSystemStatusUtil_jni.h"
#include "chrome/browser/notifications/notification_channels_provider_android.h"
namespace brave_ads {
@@ -77,13 +80,12 @@ bool NotificationHelperAndroid::IsBraveAdsNotificationChannelEnabled() const {
JNIEnv* env = base::android::AttachCurrentThread();
auto j_channel_id = Java_BraveAds_getBraveAdsChannelId(env);
std::string channel_id = ConvertJavaStringToUTF8(env, j_channel_id);
auto status = static_cast<NotificationChannelStatus>(
Java_BraveNotificationSettingsBridge_getChannelStatus(
env, j_channel_id));
return false;
// TODO(jocelyn): FIXME
// auto status = channels_provider_->GetChannelStatus(channel_id);
// return (status == NotificationChannelStatus::ENABLED ||
// status == NotificationChannelStatus::UNAVAILABLE);
return (status == NotificationChannelStatus::ENABLED ||
status == NotificationChannelStatus::UNAVAILABLE);
}
int NotificationHelperAndroid::GetOperatingSystemVersion() const {
@@ -11,7 +11,6 @@
#include "base/memory/weak_ptr.h"
#include "brave/components/brave_ads/browser/notification_helper.h"
#include "chrome/browser/notifications/notification_channels_provider_android.h"
namespace brave_ads {
@@ -27,9 +26,6 @@ class NotificationHelperAndroid
bool IsBraveAdsNotificationChannelEnabled() const;
std::unique_ptr<NotificationChannelsProviderAndroid> channels_provider_ =
std::make_unique<NotificationChannelsProviderAndroid>();
int GetOperatingSystemVersion() const;
// NotificationHelper impl