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

Unified Diff: chrome/browser/notifications/notification_platform_bridge_android.cc

Issue 2132023002: Store the notification id as a string for Android notifications (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@event_api
Patch Set: re-add TODO Created 4 years, 5 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
« no previous file with comments | « chrome/browser/notifications/notification_platform_bridge_android.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/notifications/notification_platform_bridge_android.cc
diff --git a/chrome/browser/notifications/notification_platform_bridge_android.cc b/chrome/browser/notifications/notification_platform_bridge_android.cc
index 139c0a68a6a783b64774891cd188b25284b13d94..8fc3e89530fa36340f668df7df1343ca455f1c55 100644
--- a/chrome/browser/notifications/notification_platform_bridge_android.cc
+++ b/chrome/browser/notifications/notification_platform_bridge_android.cc
@@ -67,7 +67,7 @@ ScopedJavaLocalRef<jobjectArray> ConvertToJavaBitmaps(
void ProfileLoadedCallback(NotificationCommon::Operation operation,
NotificationCommon::Type notification_type,
const std::string& origin,
- int64_t notification_id,
+ const std::string& notification_id,
int action_index,
Profile* profile) {
if (!profile) {
@@ -82,8 +82,7 @@ void ProfileLoadedCallback(NotificationCommon::Operation operation,
static_cast<NativeNotificationDisplayService*>(display_service)
->ProcessNotificationOperation(operation, notification_type, origin,
- base::Int64ToString(notification_id),
- action_index);
+ notification_id, action_index);
}
} // namespace
@@ -115,20 +114,22 @@ NotificationPlatformBridgeAndroid::~NotificationPlatformBridgeAndroid() {
void NotificationPlatformBridgeAndroid::OnNotificationClicked(
JNIEnv* env,
const JavaParamRef<jobject>& java_object,
- jlong persistent_notification_id,
+ const JavaParamRef<jstring>& java_notification_id,
const JavaParamRef<jstring>& java_origin,
const JavaParamRef<jstring>& java_profile_id,
jboolean incognito,
const JavaParamRef<jstring>& java_tag,
const JavaParamRef<jstring>& java_webapk_package,
jint action_index) {
+ std::string notification_id =
+ ConvertJavaStringToUTF8(env, java_notification_id);
std::string tag = ConvertJavaStringToUTF8(env, java_tag);
std::string profile_id = ConvertJavaStringToUTF8(env, java_profile_id);
std::string webapk_package =
ConvertJavaStringToUTF8(env, java_webapk_package);
GURL origin(ConvertJavaStringToUTF8(env, java_origin));
- regenerated_notification_infos_[persistent_notification_id] =
+ regenerated_notification_infos_[notification_id] =
RegeneratedNotificationInfo(origin.spec(), tag, webapk_package);
ProfileManager* profile_manager = g_browser_process->profile_manager();
@@ -137,23 +138,25 @@ void NotificationPlatformBridgeAndroid::OnNotificationClicked(
profile_manager->LoadProfile(
profile_id, incognito,
base::Bind(&ProfileLoadedCallback, NotificationCommon::CLICK,
- NotificationCommon::PERSISTENT, origin.spec(),
- persistent_notification_id, action_index));
+ NotificationCommon::PERSISTENT, origin.spec(), notification_id,
+ action_index));
}
void NotificationPlatformBridgeAndroid::OnNotificationClosed(
JNIEnv* env,
const JavaParamRef<jobject>& java_object,
- jlong persistent_notification_id,
+ const JavaParamRef<jstring>& java_notification_id,
const JavaParamRef<jstring>& java_origin,
const JavaParamRef<jstring>& java_profile_id,
jboolean incognito,
const JavaParamRef<jstring>& java_tag,
jboolean by_user) {
std::string profile_id = ConvertJavaStringToUTF8(env, java_profile_id);
+ std::string notification_id =
+ ConvertJavaStringToUTF8(env, java_notification_id);
// The notification was closed by the platform, so clear all local state.
- regenerated_notification_infos_.erase(persistent_notification_id);
+ regenerated_notification_infos_.erase(notification_id);
ProfileManager* profile_manager = g_browser_process->profile_manager();
DCHECK(profile_manager);
@@ -162,8 +165,8 @@ void NotificationPlatformBridgeAndroid::OnNotificationClosed(
profile_id, incognito,
base::Bind(&ProfileLoadedCallback, NotificationCommon::CLOSE,
NotificationCommon::PERSISTENT,
- ConvertJavaStringToUTF8(env, java_origin),
- persistent_notification_id, -1 /* action index */));
+ ConvertJavaStringToUTF8(env, java_origin), notification_id,
+ -1 /* action index */));
}
void NotificationPlatformBridgeAndroid::Display(
@@ -178,16 +181,6 @@ void NotificationPlatformBridgeAndroid::Display(
// Android.
DCHECK_EQ(notification_type, NotificationCommon::PERSISTENT);
- // TODO(miguelg): Store the persistent notification in Java and the
- // regenerated_notification_infos_ as a string instead of converting it back
- // and forth to int64.
- int64_t persistent_notification_id;
- if (!base::StringToInt64(notification_id, &persistent_notification_id)) {
- LOG(ERROR) << "Unable to convert notification ID: " << notification_id
- << " to integer.";
- return;
- }
-
GURL origin_url(notification.origin_url().GetOrigin());
ScopedJavaLocalRef<jstring> origin =
@@ -202,6 +195,8 @@ void NotificationPlatformBridgeAndroid::Display(
webapk_package = ConvertUTF8ToJavaString(env, "");
}
+ ScopedJavaLocalRef<jstring> j_notification_id =
+ ConvertUTF8ToJavaString(env, notification_id);
ScopedJavaLocalRef<jstring> tag =
ConvertUTF8ToJavaString(env, notification.tag());
ScopedJavaLocalRef<jstring> title =
@@ -235,33 +230,22 @@ void NotificationPlatformBridgeAndroid::Display(
ConvertUTF8ToJavaString(env, profile_id);
Java_NotificationPlatformBridge_displayNotification(
- env, java_object_.obj(), persistent_notification_id, origin.obj(),
+ env, java_object_.obj(), j_notification_id.obj(), origin.obj(),
j_profile_id.obj(), incognito, tag.obj(), webapk_package.obj(),
title.obj(), body.obj(), notification_icon.obj(), badge.obj(),
vibration_pattern.obj(), notification.timestamp().ToJavaTime(),
notification.renotify(), notification.silent(), action_titles.obj(),
action_icons.obj());
- regenerated_notification_infos_[persistent_notification_id] =
- RegeneratedNotificationInfo(
- origin_url.spec(), notification.tag(),
- ConvertJavaStringToUTF8(env, webapk_package));
+ regenerated_notification_infos_[notification_id] =
+ RegeneratedNotificationInfo(origin_url.spec(), notification.tag(),
+ ConvertJavaStringToUTF8(env, webapk_package));
}
void NotificationPlatformBridgeAndroid::Close(
const std::string& profile_id,
const std::string& notification_id) {
- int64_t persistent_notification_id = 0;
-
- // TODO(peter): Use the |delegate_id| directly when notification ids are being
- // generated by content/ instead of us.
- if (!base::StringToInt64(notification_id, &persistent_notification_id)) {
- LOG(WARNING) << "Unable to decode notification_id " << notification_id;
- return;
- }
-
- const auto iterator =
- regenerated_notification_infos_.find(persistent_notification_id);
+ const auto iterator = regenerated_notification_infos_.find(notification_id);
if (iterator == regenerated_notification_infos_.end())
return;
@@ -269,6 +253,8 @@ void NotificationPlatformBridgeAndroid::Close(
JNIEnv* env = AttachCurrentThread();
+ ScopedJavaLocalRef<jstring> j_notification_id =
+ ConvertUTF8ToJavaString(env, notification_id);
ScopedJavaLocalRef<jstring> origin =
ConvertUTF8ToJavaString(env, notification_info.origin);
ScopedJavaLocalRef<jstring> tag =
@@ -282,7 +268,7 @@ void NotificationPlatformBridgeAndroid::Close(
regenerated_notification_infos_.erase(iterator);
Java_NotificationPlatformBridge_closeNotification(
- env, java_object_.obj(), j_profile_id.obj(), persistent_notification_id,
+ env, java_object_.obj(), j_profile_id.obj(), j_notification_id.obj(),
origin.obj(), tag.obj(), webapk_package.obj());
}
« no previous file with comments | « chrome/browser/notifications/notification_platform_bridge_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698