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

Side by Side Diff: chrome/browser/notifications/notification_ui_manager_android.cc

Issue 965573002: Implement support for silent notifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix tests Created 5 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/notifications/notification_ui_manager_android.h" 5 #include "chrome/browser/notifications/notification_ui_manager_android.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/android/jni_array.h" 9 #include "base/android/jni_array.h"
10 #include "base/android/jni_string.h" 10 #include "base/android/jni_string.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 int64 service_worker_registration_id) { 52 int64 service_worker_registration_id) {
53 scoped_ptr<Pickle> pickle(new Pickle); 53 scoped_ptr<Pickle> pickle(new Pickle);
54 54
55 // content::PlatformNotificationData 55 // content::PlatformNotificationData
56 pickle->WriteString16(notification_data.title); 56 pickle->WriteString16(notification_data.title);
57 pickle->WriteInt(static_cast<int>(notification_data.direction)); 57 pickle->WriteInt(static_cast<int>(notification_data.direction));
58 pickle->WriteString(notification_data.lang); 58 pickle->WriteString(notification_data.lang);
59 pickle->WriteString16(notification_data.body); 59 pickle->WriteString16(notification_data.body);
60 pickle->WriteString16(notification_data.tag); 60 pickle->WriteString16(notification_data.tag);
61 pickle->WriteString(notification_data.icon.spec()); 61 pickle->WriteString(notification_data.icon.spec());
62 pickle->WriteBool(notification_data.silent);
62 63
63 // The origin which is displaying the notification. 64 // The origin which is displaying the notification.
64 pickle->WriteString(origin.spec()); 65 pickle->WriteString(origin.spec());
65 66
66 // The Service Worker registration this notification is associated with. 67 // The Service Worker registration this notification is associated with.
67 pickle->WriteInt64(service_worker_registration_id); 68 pickle->WriteInt64(service_worker_registration_id);
68 69
69 if (pickle->size() > kMaximumSerializedNotificationSizeBytes) 70 if (pickle->size() > kMaximumSerializedNotificationSizeBytes)
70 return nullptr; 71 return nullptr;
71 72
(...skipping 10 matching lines...) Expand all
82 83
83 std::string icon_url, origin_url; 84 std::string icon_url, origin_url;
84 int direction_value; 85 int direction_value;
85 86
86 // Unpack content::PlatformNotificationData. 87 // Unpack content::PlatformNotificationData.
87 if (!iterator.ReadString16(&notification_data->title) || 88 if (!iterator.ReadString16(&notification_data->title) ||
88 !iterator.ReadInt(&direction_value) || 89 !iterator.ReadInt(&direction_value) ||
89 !iterator.ReadString(&notification_data->lang) || 90 !iterator.ReadString(&notification_data->lang) ||
90 !iterator.ReadString16(&notification_data->body) || 91 !iterator.ReadString16(&notification_data->body) ||
91 !iterator.ReadString16(&notification_data->tag) || 92 !iterator.ReadString16(&notification_data->tag) ||
92 !iterator.ReadString(&icon_url)) { 93 !iterator.ReadString(&icon_url) ||
94 !iterator.ReadBool(&notification_data->silent)) {
93 return false; 95 return false;
94 } 96 }
95 97
96 notification_data->direction = 98 notification_data->direction =
97 static_cast<content::PlatformNotificationData::NotificationDirection>( 99 static_cast<content::PlatformNotificationData::NotificationDirection>(
98 direction_value); 100 direction_value);
99 notification_data->icon = GURL(icon_url); 101 notification_data->icon = GURL(icon_url);
100 102
101 // Unpack the origin which displayed this notification. 103 // Unpack the origin which displayed this notification.
102 if (!iterator.ReadString(&origin_url)) 104 if (!iterator.ReadString(&origin_url))
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 "Unable to serialize the notification, payload too large (max 1MB)."; 269 "Unable to serialize the notification, payload too large (max 1MB).";
268 RemoveProfileNotification(profile_notification); 270 RemoveProfileNotification(profile_notification);
269 return; 271 return;
270 } 272 }
271 273
272 notification_data = base::android::ToJavaByteArray( 274 notification_data = base::android::ToJavaByteArray(
273 env, static_cast<const uint8*>(pickle->data()), pickle->size()); 275 env, static_cast<const uint8*>(pickle->data()), pickle->size());
274 } 276 }
275 277
276 int platform_id = Java_NotificationUIManager_displayNotification( 278 int platform_id = Java_NotificationUIManager_displayNotification(
277 env, java_object_.obj(), tag.obj(), id.obj(), title.obj(), body.obj(), 279 env,
278 icon.obj(), origin.obj(), notification_data.obj()); 280 java_object_.obj(),
281 tag.obj(),
282 id.obj(),
283 title.obj(),
284 body.obj(),
285 icon.obj(),
286 origin.obj(),
287 notification.silent(),
288 notification_data.obj());
279 289
280 RegeneratedNotificationInfo notification_info( 290 RegeneratedNotificationInfo notification_info(
281 notification.replace_id(), platform_id, 291 notification.replace_id(), platform_id,
282 notification.origin_url().GetOrigin().spec()); 292 notification.origin_url().GetOrigin().spec());
283 regenerated_notification_infos_.insert(std::make_pair( 293 regenerated_notification_infos_.insert(std::make_pair(
284 profile_notification->notification().id(), notification_info)); 294 profile_notification->notification().id(), notification_info));
285 295
286 notification.delegate()->Display(); 296 notification.delegate()->Display();
287 } 297 }
288 298
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 466
457 ProfileNotification* NotificationUIManagerAndroid::FindProfileNotification( 467 ProfileNotification* NotificationUIManagerAndroid::FindProfileNotification(
458 const std::string& id) const { 468 const std::string& id) const {
459 auto iter = profile_notifications_.find(id); 469 auto iter = profile_notifications_.find(id);
460 if (iter == profile_notifications_.end()) 470 if (iter == profile_notifications_.end())
461 return nullptr; 471 return nullptr;
462 472
463 return iter->second; 473 return iter->second;
464 } 474 }
465 475
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698