• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/chromeos/notifications/system_notification_factory.h"
6 
7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/notifications/desktop_notification_service.h"
9 #include "grit/browser_resources.h"
10 #include "net/base/escape.h"
11 
12 namespace chromeos {
13 
14 using WebKit::WebTextDirection;
15 
16 // static
Create(const GURL & icon,const string16 & title,const string16 & text,NotificationDelegate * delegate)17 Notification SystemNotificationFactory::Create(
18     const GURL& icon, const string16& title,
19     const string16& text,
20     NotificationDelegate* delegate) {
21   string16 content_url = DesktopNotificationService::CreateDataUrl(
22       icon, title, text, WebKit::WebTextDirectionDefault);
23   return Notification(GURL(), GURL(content_url), string16(), string16(),
24                       delegate);
25 }
26 
27 // static
Create(const GURL & icon,const string16 & title,const string16 & text,const string16 & link,NotificationDelegate * delegate)28 Notification SystemNotificationFactory::Create(
29     const GURL& icon, const string16& title,
30     const string16& text, const string16& link,
31     NotificationDelegate* delegate) {
32   // Create an icon notification with or without a footer link
33   // See code in DesktopNotificationService::CreateDataUrl
34   WebTextDirection dir = WebKit::WebTextDirectionDefault;
35   std::vector<std::string> subst;
36   int resource = IDR_NOTIFICATION_ICON_HTML;
37   subst.push_back(icon.spec());
38   subst.push_back(EscapeForHTML(UTF16ToUTF8(title)));
39   subst.push_back(EscapeForHTML(UTF16ToUTF8(text)));
40   // icon float position
41   subst.push_back(dir == WebKit::WebTextDirectionRightToLeft ?
42                   "right" : "left");
43   // body text direction
44   subst.push_back(dir == WebKit::WebTextDirectionRightToLeft ?
45                   "rtl" : "ltr");
46   // if link is not empty, then use template with link
47   if (!link.empty()) {
48     resource = IDR_NOTIFICATION_ICON_LINK_HTML;
49     subst.push_back(EscapeForHTML(UTF16ToUTF8(link)));
50   }
51 
52   string16 content_url = DesktopNotificationService::CreateDataUrl(resource,
53                                                                    subst);
54   return Notification(GURL(), GURL(content_url), string16(), string16(),
55                       delegate);
56 }
57 
58 }  // namespace chromeos
59