1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/notifications/system_notification_factory.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/utf_string_conversions.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/notifications/desktop_notification_service.h" 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "grit/browser_resources.h" 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "net/base/escape.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos { 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickusing WebKit::WebTextDirection; 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// static 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochNotification SystemNotificationFactory::Create( 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const GURL& icon, const string16& title, 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const string16& text, 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch NotificationDelegate* delegate) { 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch string16 content_url = DesktopNotificationService::CreateDataUrl( 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch icon, title, text, WebKit::WebTextDirectionDefault); 233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick return Notification(GURL(), GURL(content_url), string16(), string16(), 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch delegate); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// static 28731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickNotification SystemNotificationFactory::Create( 29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const GURL& icon, const string16& title, 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const string16& text, const string16& link, 31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick NotificationDelegate* delegate) { 32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Create an icon notification with or without a footer link 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // See code in DesktopNotificationService::CreateDataUrl 34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick WebTextDirection dir = WebKit::WebTextDirectionDefault; 35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick std::vector<std::string> subst; 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick int resource = IDR_NOTIFICATION_ICON_HTML; 37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick subst.push_back(icon.spec()); 38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick subst.push_back(EscapeForHTML(UTF16ToUTF8(title))); 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick subst.push_back(EscapeForHTML(UTF16ToUTF8(text))); 40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // icon float position 41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick subst.push_back(dir == WebKit::WebTextDirectionRightToLeft ? 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "right" : "left"); 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // body text direction 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick subst.push_back(dir == WebKit::WebTextDirectionRightToLeft ? 45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "rtl" : "ltr"); 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // if link is not empty, then use template with link 47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (!link.empty()) { 48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick resource = IDR_NOTIFICATION_ICON_LINK_HTML; 49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick subst.push_back(EscapeForHTML(UTF16ToUTF8(link))); 50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick string16 content_url = DesktopNotificationService::CreateDataUrl(resource, 53731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick subst); 54731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick return Notification(GURL(), GURL(content_url), string16(), string16(), 55731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick delegate); 56731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 57731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace chromeos 59