blob: 7e62329676e4d8f1fed3837e21e2c786730661ca [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/platform/notification_data_conversions.h"
#include "third_party/blink/public/mojom/notifications/notification.mojom-shared.h"
#include "third_party/blink/public/platform/modules/notifications/web_notification_action.h"
#include "third_party/blink/public/platform/url_conversion.h"
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/public/platform/web_vector.h"
#include "third_party/blink/renderer/platform/weborigin/kurl.h"
namespace blink {
WebNotificationData ToWebNotificationData(
const PlatformNotificationData& platform_data) {
WebNotificationData web_data;
web_data.title = WebString::FromUTF16(platform_data.title);
web_data.direction = platform_data.direction;
web_data.lang = WebString::FromUTF8(platform_data.lang);
web_data.body = WebString::FromUTF16(platform_data.body);
web_data.tag = WebString::FromUTF8(platform_data.tag);
web_data.image = WebURL(KURL(platform_data.image));
web_data.icon = WebURL(KURL(platform_data.icon));
web_data.badge = WebURL(KURL(platform_data.badge));
web_data.vibrate = platform_data.vibration_pattern;
web_data.timestamp = platform_data.timestamp.ToJsTime();
web_data.renotify = platform_data.renotify;
web_data.silent = platform_data.silent;
web_data.require_interaction = platform_data.require_interaction;
web_data.data = platform_data.data;
WebVector<WebNotificationAction> resized(platform_data.actions.size());
web_data.actions.Swap(resized);
for (size_t i = 0; i < platform_data.actions.size(); ++i) {
switch (platform_data.actions[i].type) {
case PLATFORM_NOTIFICATION_ACTION_TYPE_BUTTON:
web_data.actions[i].type = WebNotificationAction::kButton;
break;
case PLATFORM_NOTIFICATION_ACTION_TYPE_TEXT:
web_data.actions[i].type = WebNotificationAction::kText;
break;
default:
NOTREACHED() << "Unknown platform data type: "
<< platform_data.actions[i].type;
}
web_data.actions[i].action =
WebString::FromUTF8(platform_data.actions[i].action);
web_data.actions[i].title =
WebString::FromUTF16(platform_data.actions[i].title);
web_data.actions[i].icon = WebURL(KURL(platform_data.actions[i].icon));
web_data.actions[i].placeholder =
WebString::FromUTF16(platform_data.actions[i].placeholder);
}
web_data.show_trigger_timestamp = platform_data.show_trigger_timestamp;
return web_data;
}
} // namespace blink