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

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 typos Created 5 years, 10 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 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 "Unable to serialize the notification, payload too large (max 1MB)."; 268 "Unable to serialize the notification, payload too large (max 1MB).";
267 RemoveProfileNotification(profile_notification); 269 RemoveProfileNotification(profile_notification);
268 return; 270 return;
269 } 271 }
270 272
271 notification_data = base::android::ToJavaByteArray( 273 notification_data = base::android::ToJavaByteArray(
272 env, static_cast<const uint8*>(pickle->data()), pickle->size()); 274 env, static_cast<const uint8*>(pickle->data()), pickle->size());
273 } 275 }
274 276
275 int platform_id = Java_NotificationUIManager_displayNotification( 277 int platform_id = Java_NotificationUIManager_displayNotification(
276 env, java_object_.obj(), tag.obj(), id.obj(), title.obj(), body.obj(), 278 env,
277 icon.obj(), origin.obj(), notification_data.obj()); 279 java_object_.obj(),
280 tag.obj(),
281 id.obj(),
282 title.obj(),
283 body.obj(),
284 icon.obj(),
285 origin.obj(),
286 notification.silent(),
287 notification_data.obj());
278 288
279 RegeneratedNotificationInfo notification_info( 289 RegeneratedNotificationInfo notification_info(
280 notification.replace_id(), platform_id, 290 notification.replace_id(), platform_id,
281 notification.origin_url().GetOrigin().spec()); 291 notification.origin_url().GetOrigin().spec());
282 regenerated_notification_infos_.insert(std::make_pair( 292 regenerated_notification_infos_.insert(std::make_pair(
283 profile_notification->notification().id(), notification_info)); 293 profile_notification->notification().id(), notification_info));
284 294
285 notification.delegate()->Display(); 295 notification.delegate()->Display();
286 } 296 }
287 297
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 465
456 ProfileNotification* NotificationUIManagerAndroid::FindProfileNotification( 466 ProfileNotification* NotificationUIManagerAndroid::FindProfileNotification(
457 const std::string& id) const { 467 const std::string& id) const {
458 auto iter = profile_notifications_.find(id); 468 auto iter = profile_notifications_.find(id);
459 if (iter == profile_notifications_.end()) 469 if (iter == profile_notifications_.end())
460 return nullptr; 470 return nullptr;
461 471
462 return iter->second; 472 return iter->second;
463 } 473 }
464 474
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698