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

Side by Side Diff: chrome/browser/notifications/sync_notifier/welcome_delegate.cc

Issue 228753006: Reland r262272: "Hook up the Info URL from SyncedNotificationsAppInfo". (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed test on linux+aura, disabled on linux-gtk Created 6 years, 8 months 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "base/message_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 #include "chrome/browser/browser_process.h" 6 #include "chrome/browser/browser_process.h"
7 #include "chrome/browser/notifications/desktop_notification_service.h" 7 #include "chrome/browser/notifications/desktop_notification_service.h"
8 #include "chrome/browser/notifications/desktop_notification_service_factory.h" 8 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
9 #include "chrome/browser/notifications/message_center_notification_manager.h" 9 #include "chrome/browser/notifications/message_center_notification_manager.h"
10 #include "chrome/browser/notifications/notification_ui_manager.h" 10 #include "chrome/browser/notifications/notification_ui_manager.h"
11 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h" 11 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service.h"
12 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_fac tory.h" 12 #include "chrome/browser/notifications/sync_notifier/chrome_notifier_service_fac tory.h"
13 #include "chrome/browser/notifications/sync_notifier/welcome_delegate.h" 13 #include "chrome/browser/notifications/sync_notifier/welcome_delegate.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/ui/browser_navigator.h"
15 #include "ui/message_center/message_center.h" 16 #include "ui/message_center/message_center.h"
16 #include "ui/message_center/message_center_util.h" 17 #include "ui/message_center/message_center_util.h"
18 #include "url/gurl.h"
17 19
18 namespace notifier { 20 namespace notifier {
19 namespace { 21 namespace {
20 void UpdateMessageCenter() { 22 void UpdateMessageCenter() {
21 NotificationUIManager* notification_ui_manager = 23 NotificationUIManager* notification_ui_manager =
22 g_browser_process->notification_ui_manager(); 24 g_browser_process->notification_ui_manager();
23 if (notification_ui_manager->DelegatesToMessageCenter()) { 25 if (notification_ui_manager->DelegatesToMessageCenter()) {
24 MessageCenterNotificationManager* message_center_notification_manager = 26 MessageCenterNotificationManager* message_center_notification_manager =
25 static_cast<MessageCenterNotificationManager*>(notification_ui_manager); 27 static_cast<MessageCenterNotificationManager*>(notification_ui_manager);
26 28
27 message_center_notification_manager->EnsureMessageCenterClosed(); 29 message_center_notification_manager->EnsureMessageCenterClosed();
28 } 30 }
29 } 31 }
30 } // namespace 32 } // namespace
31 33
32 WelcomeDelegate::WelcomeDelegate(const std::string& notification_id, 34 WelcomeDelegate::WelcomeDelegate(const std::string& notification_id,
33 Profile* profile, 35 Profile* profile,
34 const message_center::NotifierId notifier_id) 36 const message_center::NotifierId notifier_id,
37 const GURL& on_click_link)
35 : notification_id_(notification_id), 38 : notification_id_(notification_id),
36 profile_(profile), 39 profile_(profile),
37 notifier_id_(notifier_id) { 40 notifier_id_(notifier_id),
41 on_click_link_(on_click_link) {
38 DCHECK_EQ(message_center::NotifierId::SYNCED_NOTIFICATION_SERVICE, 42 DCHECK_EQ(message_center::NotifierId::SYNCED_NOTIFICATION_SERVICE,
39 notifier_id.type); 43 notifier_id.type);
40 } 44 }
41 45
42 WelcomeDelegate::~WelcomeDelegate() {} 46 WelcomeDelegate::~WelcomeDelegate() {}
43 47
44 void WelcomeDelegate::Display() {} 48 void WelcomeDelegate::Display() {}
45 49
46 void WelcomeDelegate::Error() {} 50 void WelcomeDelegate::Error() {}
47 51
48 void WelcomeDelegate::Close(bool by_user) {} 52 void WelcomeDelegate::Close(bool by_user) {}
49 53
54 bool WelcomeDelegate::HasClickedListener() {
55 return on_click_link_.is_valid();
56 }
57
50 void WelcomeDelegate::Click() { 58 void WelcomeDelegate::Click() {
51 g_browser_process->notification_ui_manager()->CancelById(notification_id_); 59 g_browser_process->notification_ui_manager()->CancelById(notification_id_);
52 60
53 // TODO(dewittj): Notifications that remove themselves are currently poorly 61 if (!on_click_link_.is_valid()) {
54 // supported. We need to make it possible to completely remove a notification 62 // TODO(dewittj): Notifications that remove themselves are currently poorly
55 // while the center is open, and then this section can be removed. 63 // supported. We need to make it possible to completely remove a
56 UpdateMessageCenter(); 64 // notification
65 // while the center is open, and then this section can be removed.
66 UpdateMessageCenter();
67 return;
68 }
69
70 chrome::NavigateParams params(
71 profile_, on_click_link_, content::PAGE_TRANSITION_AUTO_BOOKMARK);
72
73 params.disposition = SINGLETON_TAB;
74 params.window_action = chrome::NavigateParams::SHOW_WINDOW;
75 params.user_gesture = true;
76
77 chrome::Navigate(&params);
57 } 78 }
58 79
59 void WelcomeDelegate::ButtonClick(int button_index) { 80 void WelcomeDelegate::ButtonClick(int button_index) {
60 DCHECK_EQ(0, button_index); 81 DCHECK_EQ(0, button_index);
61 82
62 // We take a reference to ourselves to prevent destruction until the end of 83 // We take a reference to ourselves to prevent destruction until the end of
63 // this method. 84 // this method.
64 scoped_refptr<WelcomeDelegate> this_ptr(this); 85 scoped_refptr<WelcomeDelegate> this_ptr(this);
65 86
66 // WARNING: This line causes the |this| to be released. 87 // WARNING: This line causes the |this| to be released.
(...skipping 18 matching lines...) Expand all
85 UpdateMessageCenter(); 106 UpdateMessageCenter();
86 } 107 }
87 108
88 std::string WelcomeDelegate::id() const { return notification_id_; } 109 std::string WelcomeDelegate::id() const { return notification_id_; }
89 110
90 content::RenderViewHost* WelcomeDelegate::GetRenderViewHost() const { 111 content::RenderViewHost* WelcomeDelegate::GetRenderViewHost() const {
91 return NULL; 112 return NULL;
92 } 113 }
93 114
94 } // namespace notifier 115 } // namespace notifier
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698