Merge from Chromium at DEPS revision 251904
This commit was generated by merge_to_master.py.
Change-Id: I1f9543259d7d2a57d81aa41a1b84f85837439d21
diff --git a/ash/wm/resize_handle_window_targeter.h b/ash/wm/resize_handle_window_targeter.h
new file mode 100644
index 0000000..4ddb66f
--- /dev/null
+++ b/ash/wm/resize_handle_window_targeter.h
@@ -0,0 +1,56 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef ASH_WM_RESIZE_HANDLE_WINDOW_TARGETER_H_
+#define ASH_WM_RESIZE_HANDLE_WINDOW_TARGETER_H_
+
+#include "ash/wm/window_state_observer.h"
+#include "ui/aura/window_observer.h"
+#include "ui/aura/window_targeter.h"
+#include "ui/gfx/geometry/insets.h"
+
+namespace ash {
+
+class ImmersiveFullscreenController;
+
+// To allow easy resize, the resize handles should slightly overlap the content
+// area of non-maximized and non-fullscreen windows. For immersive fullscreen
+// windows, this targeter makes sure that touch-events towards the top of the
+// screen are targeted to the window itself (instead of a child window that may
+// otherwise have been targeted) when the top-of-window views are not revealed.
+class ResizeHandleWindowTargeter : public wm::WindowStateObserver,
+ public aura::WindowObserver,
+ public aura::WindowTargeter {
+ public:
+ ResizeHandleWindowTargeter(aura::Window* window,
+ ImmersiveFullscreenController* immersive);
+ virtual ~ResizeHandleWindowTargeter();
+
+ private:
+ // wm::WindowStateObserver:
+ virtual void OnPostWindowShowTypeChange(wm::WindowState* window_state,
+ wm::WindowShowType old_type) OVERRIDE;
+ // aura::WindowObserver:
+ virtual void OnWindowDestroying(aura::Window* window) OVERRIDE;
+
+ // aura::WindowTargeter:
+ virtual ui::EventTarget* FindTargetForLocatedEvent(
+ ui::EventTarget* root,
+ ui::LocatedEvent* event) OVERRIDE;
+ virtual bool SubtreeShouldBeExploredForEvent(
+ ui::EventTarget* target,
+ const ui::LocatedEvent& event) OVERRIDE;
+
+ // The targeter does not take ownership of |window_| or
+ // |immersive_controller_|.
+ aura::Window* window_;
+ gfx::Insets frame_border_inset_;
+ ImmersiveFullscreenController* immersive_controller_;
+
+ DISALLOW_COPY_AND_ASSIGN(ResizeHandleWindowTargeter);
+};
+
+} // namespace ash
+
+#endif // ASH_WM_RESIZE_HANDLE_WINDOW_TARGETER_H_