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

Unified Diff: chrome/browser/ui/views/status_icons/status_tray_win.h

Issue 252513004: Reland r265807: "Moves the notification icon out of th..." (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Disable tray size test on Vista since it won't have any effect on a new icon. 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 side-by-side diff with in-line comments
Download patch
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);
};

Powered by Google App Engine
This is Rietveld 408576698