Index: chrome/browser/ui/views/status_icons/status_tray_win.h |
diff --git a/chrome/browser/ui/views/status_icons/status_tray_win.h b/chrome/browser/ui/views/status_icons/status_tray_win.h |
index d624e55b600aa3c818a57fa21afb23a06fa257d8..08a05e85c6b18062eea12770b715b520347ae2c6 100644 |
--- a/chrome/browser/ui/views/status_icons/status_tray_win.h |
+++ b/chrome/browser/ui/views/status_icons/status_tray_win.h |
@@ -8,35 +8,51 @@ |
#include <windows.h> |
#include "base/compiler_specific.h" |
+#include "base/memory/scoped_ptr.h" |
#include "chrome/browser/status_icons/status_tray.h" |
+class StatusIconWin; |
+ |
+// A class that's responsible for increasing, if possible, the visibility |
+// of a status tray icon on the taskbar. The default implementation sends |
+// a task to a worker thread each time EnqueueChange is called. |
+class StatusTrayStateChangerProxy { |
Nico
2014/07/18 16:19:52
Since this class has subclasses and is deleted pol
|
+ public: |
+ // Called by StatusTrayWin to request upgraded visibility on the icon |
+ // represented by the |icon_id|, |window| pair. |
+ virtual void EnqueueChange(UINT icon_id, HWND window) = 0; |
+}; |
+ |
class StatusTrayWin : public StatusTray { |
public: |
StatusTrayWin(); |
~StatusTrayWin(); |
+ void UpdateIconVisibilityInBackground(StatusIconWin* status_icon); |
+ |
// Exposed for testing. |
- LRESULT CALLBACK WndProc(HWND hwnd, |
- UINT message, |
- WPARAM wparam, |
- LPARAM lparam); |
+ LRESULT CALLBACK |
+ WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); |
protected: |
// Overriden from StatusTray: |
- virtual StatusIcon* CreatePlatformStatusIcon( |
- StatusIconType type, |
- const gfx::ImageSkia& image, |
- const base::string16& tool_tip) OVERRIDE; |
+ virtual StatusIcon* CreatePlatformStatusIcon(StatusIconType type, |
+ const gfx::ImageSkia& image, |
+ const base::string16& tool_tip) |
+ OVERRIDE; |
private: |
+ FRIEND_TEST_ALL_PREFIXES(StatusTrayWinTest, EnsureVisibleTest); |
+ |
// Static callback invoked when a message comes in to our messaging window. |
- static LRESULT CALLBACK WndProcStatic(HWND hwnd, |
- UINT message, |
- WPARAM wparam, |
- LPARAM lparam); |
+ static LRESULT CALLBACK |
+ WndProcStatic(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); |
UINT NextIconId(); |
+ void SetStatusTrayStateChangerProxyForTest( |
+ scoped_ptr<StatusTrayStateChangerProxy> proxy); |
+ |
// The unique icon ID we will assign to the next icon. |
UINT next_icon_id_; |
@@ -53,6 +69,10 @@ class StatusTrayWin : public StatusTray { |
// reset our status icons. |
UINT taskbar_created_message_; |
+ // Manages changes performed on a background thread to manipulate visibility |
+ // of notification icons. |
+ scoped_ptr<StatusTrayStateChangerProxy> state_changer_proxy_; |
+ |
DISALLOW_COPY_AND_ASSIGN(StatusTrayWin); |
}; |