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

Side by Side Diff: chrome/browser/chromeos/extensions/file_manager/desktop_notifications.h

Issue 23945002: file_manager: Move non-binding code to c/b/chromeos/file_manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 7 years, 3 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
(Empty)
1 // Copyright 2013 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 #ifndef CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_DESKTOP_NOTIFICATIONS_H_
6 #define CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_DESKTOP_NOTIFICATIONS_H_
7
8 #include <map>
9 #include <set>
10 #include <string>
11
12 #include "base/basictypes.h"
13 #include "base/memory/weak_ptr.h"
14 #include "base/strings/string16.h"
15 #include "base/time/time.h"
16
17 class Profile;
18
19 namespace file_manager {
20
21 // The class is used for showing desktop notifications about activities of
22 // Files.app, such as a new storage device getting detected.
23 //
24 // Note that updates for file transfers from/to Drive shown in the ash tray,
25 // hence not handled in this class. See ash/system/drive/tray_drive.h for
26 // details.
27 class DesktopNotifications
28 : public base::SupportsWeakPtr<DesktopNotifications> {
29 public:
30 // If changing the enum, please also update kNotificationTypes in .cc file.
31 enum NotificationType {
32 DEVICE,
33 DEVICE_FAIL,
34 DEVICE_EXTERNAL_STORAGE_DISABLED,
35 FORMAT_START,
36 FORMAT_START_FAIL,
37 FORMAT_SUCCESS,
38 FORMAT_FAIL,
39 };
40
41 explicit DesktopNotifications(Profile* profile);
42 virtual ~DesktopNotifications();
43
44 // Registers the removable device whose mount events will be handled in
45 // |ManageNotificationsOnMountComplete|.
46 void RegisterDevice(const std::string& system_path);
47
48 // Unregisters the removable device whose mount events will be handled in
49 // |ManageNotificationsOnMountComplete|.
50 void UnregisterDevice(const std::string& system_path);
51
52 void ManageNotificationsOnMountCompleted(const std::string& system_path,
53 const std::string& label,
54 bool is_parent,
55 bool success,
56 bool is_unsupported);
57
58 // Primary method for showing a notification.
59 void ShowNotification(NotificationType type, const std::string& path);
60 void ShowNotificationDelayed(NotificationType type,
61 const std::string& path,
62 base::TimeDelta delay);
63
64 // Primary method for hiding a notification. Virtual for mock in unittest.
65 virtual void HideNotification(NotificationType type, const std::string& path);
66 void HideNotificationDelayed(NotificationType type,
67 const std::string& path,
68 base::TimeDelta delay);
69
70 size_t GetNotificationCountForTest() const {
71 return notification_map_.size();
72 }
73
74 bool HasNotificationForTest(const std::string& id) const {
75 return notification_map_.find(id) != notification_map_.end();
76 }
77
78 string16 GetNotificationMessageForTest(const std::string& id) const;
79
80 private:
81 class NotificationMessage;
82 struct MountRequestsInfo;
83
84 typedef std::map<std::string, MountRequestsInfo> MountRequestsMap;
85 typedef std::map<std::string, NotificationMessage*> NotificationMap;
86
87 // Virtual for mock in unittest.
88 virtual void ShowNotificationWithMessage(NotificationType type,
89 const std::string& path,
90 const string16& message);
91 void ShowNotificationById(NotificationType type,
92 const std::string& notification_id,
93 const string16& message);
94 void HideNotificationById(const std::string& notification_id);
95 void RemoveNotificationById(const std::string& notification_id);
96
97 NotificationMap notification_map_;
98 std::set<std::string> hidden_notifications_;
99 MountRequestsMap mount_requests_;
100 Profile* profile_;
101
102 DISALLOW_COPY_AND_ASSIGN(DesktopNotifications);
103 };
104
105 } // namespace file_manager
106
107 #endif // CHROME_BROWSER_CHROMEOS_EXTENSIONS_FILE_MANAGER_DESKTOP_NOTIFICATIONS _H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698