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

Side by Side Diff: content/browser/notifications/type_converters.cc

Issue 2522553003: Mojo C++ bindings: switch WebKit mojom targets to use STL/WTF types. (Closed)
Patch Set: . Created 4 years, 1 month 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "content/browser/notifications/type_converters.h" 5 #include "content/browser/notifications/type_converters.h"
6 6
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 9
10 using blink::mojom::NotificationDirection; 10 using blink::mojom::NotificationDirection;
11 using content::PlatformNotificationData; 11 using content::PlatformNotificationData;
12 12
13 namespace mojo { 13 namespace mojo {
14 14
15 PlatformNotificationData 15 PlatformNotificationData
16 TypeConverter<PlatformNotificationData, blink::mojom::NotificationPtr>::Convert( 16 TypeConverter<PlatformNotificationData, blink::mojom::NotificationPtr>::Convert(
17 const blink::mojom::NotificationPtr& notification) { 17 const blink::mojom::NotificationPtr& notification) {
18 PlatformNotificationData notification_data; 18 PlatformNotificationData notification_data;
19 19
20 notification_data.title = base::UTF8ToUTF16(notification->title.get()); 20 notification_data.title = base::UTF8ToUTF16(notification->title);
21 21
22 switch (notification->direction) { 22 switch (notification->direction) {
23 case NotificationDirection::LEFT_TO_RIGHT: 23 case NotificationDirection::LEFT_TO_RIGHT:
24 notification_data.direction = 24 notification_data.direction =
25 PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT; 25 PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT;
26 break; 26 break;
27 case NotificationDirection::RIGHT_TO_LEFT: 27 case NotificationDirection::RIGHT_TO_LEFT:
28 notification_data.direction = 28 notification_data.direction =
29 PlatformNotificationData::DIRECTION_RIGHT_TO_LEFT; 29 PlatformNotificationData::DIRECTION_RIGHT_TO_LEFT;
30 break; 30 break;
31 case NotificationDirection::AUTO: 31 case NotificationDirection::AUTO:
32 notification_data.direction = PlatformNotificationData::DIRECTION_AUTO; 32 notification_data.direction = PlatformNotificationData::DIRECTION_AUTO;
33 break; 33 break;
34 } 34 }
35 35
36 notification_data.lang = notification->lang; 36 notification_data.lang = notification->lang.value_or(std::string());
37 notification_data.body = base::UTF8ToUTF16(notification->body.get()); 37 notification_data.body = base::UTF8ToUTF16(notification->body);
38 notification_data.tag = notification->tag; 38 notification_data.tag = notification->tag;
39 notification_data.icon = GURL(notification->icon.get()); 39 notification_data.icon = GURL(notification->icon);
40 notification_data.badge = GURL(notification->badge.get()); 40 notification_data.badge = GURL(notification->badge);
41 41
42 for (uint32_t vibration : notification->vibration_pattern) 42 for (uint32_t vibration : notification->vibration_pattern)
43 notification_data.vibration_pattern.push_back(static_cast<int>(vibration)); 43 notification_data.vibration_pattern.push_back(static_cast<int>(vibration));
44 44
45 notification_data.timestamp = base::Time::FromJsTime(notification->timestamp); 45 notification_data.timestamp = base::Time::FromJsTime(notification->timestamp);
46 notification_data.renotify = notification->renotify; 46 notification_data.renotify = notification->renotify;
47 notification_data.silent = notification->silent; 47 notification_data.silent = notification->silent;
48 notification_data.require_interaction = notification->require_interaction; 48 notification_data.require_interaction = notification->require_interaction;
49 notification_data.data.assign(notification->data.begin(), 49 notification_data.data.assign(notification->data.begin(),
50 notification->data.end()); 50 notification->data.end());
51 51
52 for (const auto& action : notification->actions) { 52 for (const auto& action : notification->actions) {
53 content::PlatformNotificationAction data_action; 53 content::PlatformNotificationAction data_action;
54 54
55 switch (action->type) { 55 switch (action->type) {
56 case blink::mojom::NotificationActionType::BUTTON: 56 case blink::mojom::NotificationActionType::BUTTON:
57 data_action.type = content::PLATFORM_NOTIFICATION_ACTION_TYPE_BUTTON; 57 data_action.type = content::PLATFORM_NOTIFICATION_ACTION_TYPE_BUTTON;
58 break; 58 break;
59 case blink::mojom::NotificationActionType::TEXT: 59 case blink::mojom::NotificationActionType::TEXT:
60 data_action.type = content::PLATFORM_NOTIFICATION_ACTION_TYPE_TEXT; 60 data_action.type = content::PLATFORM_NOTIFICATION_ACTION_TYPE_TEXT;
61 break; 61 break;
62 } 62 }
63 63
64 data_action.action = action->action; 64 data_action.action = action->action;
65 data_action.title = base::UTF8ToUTF16(action->title.get()); 65 data_action.title = base::UTF8ToUTF16(action->title);
66 data_action.icon = GURL(action->icon.get()); 66 data_action.icon = GURL(action->icon);
67 if (!action->placeholder.is_null()) { 67 if (action->placeholder.has_value()) {
68 data_action.placeholder = base::NullableString16( 68 data_action.placeholder = base::NullableString16(
69 base::UTF8ToUTF16(action->placeholder.get()), false /* is_null */); 69 base::UTF8ToUTF16(action->placeholder.value()), false /* is_null */);
70 } 70 }
71 71
72 notification_data.actions.push_back(data_action); 72 notification_data.actions.push_back(data_action);
73 } 73 }
74 74
75 return notification_data; 75 return notification_data;
76 } 76 }
77 77
78 blink::mojom::NotificationPtr 78 blink::mojom::NotificationPtr
79 TypeConverter<blink::mojom::NotificationPtr, PlatformNotificationData>::Convert( 79 TypeConverter<blink::mojom::NotificationPtr, PlatformNotificationData>::Convert(
80 const PlatformNotificationData& notification_data) { 80 const PlatformNotificationData& notification_data) {
81 blink::mojom::NotificationPtr notification = 81 blink::mojom::NotificationPtr notification =
82 blink::mojom::Notification::New(); 82 blink::mojom::Notification::New();
83 83
84 notification->title = base::UTF16ToUTF8(notification_data.title); 84 notification->title = base::UTF16ToUTF8(notification_data.title);
85 85
86 switch (notification_data.direction) { 86 switch (notification_data.direction) {
87 case PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT: 87 case PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT:
88 notification->direction = NotificationDirection::LEFT_TO_RIGHT; 88 notification->direction = NotificationDirection::LEFT_TO_RIGHT;
89 break; 89 break;
90 case PlatformNotificationData::DIRECTION_RIGHT_TO_LEFT: 90 case PlatformNotificationData::DIRECTION_RIGHT_TO_LEFT:
91 notification->direction = NotificationDirection::RIGHT_TO_LEFT; 91 notification->direction = NotificationDirection::RIGHT_TO_LEFT;
92 break; 92 break;
93 case PlatformNotificationData::DIRECTION_AUTO: 93 case PlatformNotificationData::DIRECTION_AUTO:
94 notification->direction = NotificationDirection::AUTO; 94 notification->direction = NotificationDirection::AUTO;
95 break; 95 break;
96 } 96 }
97 97
98 notification->lang = notification_data.lang; 98 notification->lang.emplace(notification_data.lang);
99 notification->body = base::UTF16ToUTF8(notification_data.body); 99 notification->body = base::UTF16ToUTF8(notification_data.body);
100 notification->tag = notification_data.tag; 100 notification->tag = notification_data.tag;
101 notification->icon = notification_data.icon.spec(); 101 notification->icon = notification_data.icon.spec();
102 notification->badge = notification_data.badge.spec(); 102 notification->badge = notification_data.badge.spec();
103 103
104 for (int vibration : notification_data.vibration_pattern) 104 for (int vibration : notification_data.vibration_pattern)
105 notification->vibration_pattern.push_back(static_cast<uint32_t>(vibration)); 105 notification->vibration_pattern.push_back(static_cast<uint32_t>(vibration));
106 106
107 notification->timestamp = notification_data.timestamp.ToJsTime(); 107 notification->timestamp = notification_data.timestamp.ToJsTime();
108 notification->renotify = notification_data.renotify; 108 notification->renotify = notification_data.renotify;
(...skipping 12 matching lines...) Expand all
121 break; 121 break;
122 case content::PLATFORM_NOTIFICATION_ACTION_TYPE_TEXT: 122 case content::PLATFORM_NOTIFICATION_ACTION_TYPE_TEXT:
123 action->type = blink::mojom::NotificationActionType::TEXT; 123 action->type = blink::mojom::NotificationActionType::TEXT;
124 break; 124 break;
125 } 125 }
126 126
127 action->action = data_action.action; 127 action->action = data_action.action;
128 action->title = base::UTF16ToUTF8(data_action.title); 128 action->title = base::UTF16ToUTF8(data_action.title);
129 action->icon = data_action.icon.spec(); 129 action->icon = data_action.icon.spec();
130 if (!data_action.placeholder.is_null()) 130 if (!data_action.placeholder.is_null())
131 action->placeholder = base::UTF16ToUTF8(data_action.placeholder.string()); 131 action->placeholder.emplace(
132 base::UTF16ToUTF8(data_action.placeholder.string()));
132 133
133 notification->actions.push_back(std::move(action)); 134 notification->actions.push_back(std::move(action));
134 } 135 }
135 136
136 return notification; 137 return notification;
137 } 138 }
138 139
139 } // namespace mojo 140 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698