Chromium Code Reviews| 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); |
| }; |