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