summaryrefslogtreecommitdiffstats
path: root/ash/tooltips
diff options
context:
space:
mode:
authorantrim@chromium.org <antrim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-21 14:02:09 +0000
committerantrim@chromium.org <antrim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-21 14:02:09 +0000
commit83482fbfd131c230019694c77725c58b672ea444 (patch)
treef008c9419ab680878ef08aa422e2c0f46082dc8d /ash/tooltips
parentd38ae9d947c2d0804af4747f34833c72ef897f81 (diff)
downloadchromium_src-83482fbfd131c230019694c77725c58b672ea444.zip
chromium_src-83482fbfd131c230019694c77725c58b672ea444.tar.gz
chromium_src-83482fbfd131c230019694c77725c58b672ea444.tar.bz2
Introduce SessionStateObserver
Use this in tooltip managers (158027 : Lockscreen leaks information via tooltip), Use this in launcher animation on full lock in new animations (138171). BUG=158027,138171 Review URL: https://chromiumcodereview.appspot.com/11416037 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@169033 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/tooltips')
-rw-r--r--ash/tooltips/tooltip_controller.cc15
-rw-r--r--ash/tooltips/tooltip_controller.h8
2 files changed, 22 insertions, 1 deletions
diff --git a/ash/tooltips/tooltip_controller.cc b/ash/tooltips/tooltip_controller.cc
index c13bcdd..fb0d17f 100644
--- a/ash/tooltips/tooltip_controller.cc
+++ b/ash/tooltips/tooltip_controller.cc
@@ -10,6 +10,8 @@
#include "ash/shell.h"
#include "ash/wm/coordinate_conversion.h"
#include "ash/wm/cursor_manager.h"
+#include "ash/wm/session_state_controller.h"
+#include "ash/wm/session_state_observer.h"
#include "base/command_line.h"
#include "base/location.h"
#include "base/string_split.h"
@@ -216,11 +218,15 @@ TooltipController::TooltipController(
base::TimeDelta::FromMilliseconds(kTooltipTimeoutMs),
this, &TooltipController::TooltipTimerFired);
DCHECK(drag_drop_client_);
+ if (Shell::GetInstance())
+ Shell::GetInstance()->session_state_controller()->AddObserver(this);
}
TooltipController::~TooltipController() {
if (tooltip_window_)
tooltip_window_->RemoveObserver(this);
+ if (Shell::GetInstance())
+ Shell::GetInstance()->session_state_controller()->RemoveObserver(this);
}
void TooltipController::UpdateTooltip(aura::Window* target) {
@@ -312,6 +318,15 @@ ui::EventResult TooltipController::OnTouchEvent(ui::TouchEvent* event) {
return ui::ER_UNHANDLED;
}
+void TooltipController::OnSessionStateEvent(
+ SessionStateObserver::EventType event) {
+ if (event == SessionStateObserver::EVENT_PRELOCK_ANIMATION_STARTED ||
+ event == SessionStateObserver::EVENT_LOCK_ANIMATION_STARTED) {
+ if (tooltip_.get() && tooltip_->IsVisible())
+ tooltip_->Hide();
+ }
+}
+
void TooltipController::OnWindowDestroyed(aura::Window* window) {
if (tooltip_window_ == window) {
tooltip_window_->RemoveObserver(this);
diff --git a/ash/tooltips/tooltip_controller.h b/ash/tooltips/tooltip_controller.h
index 67c6f77..dc21527 100644
--- a/ash/tooltips/tooltip_controller.h
+++ b/ash/tooltips/tooltip_controller.h
@@ -6,6 +6,7 @@
#define ASH_TOOLTIPS_TOOLTIP_CONTROLLER_H_
#include "ash/ash_export.h"
+#include "ash/wm/session_state_observer.h"
#include "base/memory/scoped_ptr.h"
#include "base/string16.h"
#include "base/timer.h"
@@ -32,7 +33,8 @@ namespace internal {
// TooltipController provides tooltip functionality for aura shell.
class ASH_EXPORT TooltipController : public aura::client::TooltipClient,
public ui::EventHandler,
- public aura::WindowObserver {
+ public aura::WindowObserver,
+ public SessionStateObserver {
public:
explicit TooltipController(aura::client::DragDropClient* drag_drop_client);
virtual ~TooltipController();
@@ -46,6 +48,10 @@ class ASH_EXPORT TooltipController : public aura::client::TooltipClient,
virtual ui::EventResult OnMouseEvent(ui::MouseEvent* event) OVERRIDE;
virtual ui::EventResult OnTouchEvent(ui::TouchEvent* event) OVERRIDE;
+ // Overridden from SessionStateController.
+ virtual void OnSessionStateEvent(SessionStateObserver::EventType event)
+ OVERRIDE;
+
// Overridden from aura::WindowObserver.
virtual void OnWindowDestroyed(aura::Window* window) OVERRIDE;