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

Unified Diff: components/view_manager/gesture_manager.h

Issue 1344573002: Mandoline: Rename components/view_manager to components/mus (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 5 years, 3 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
« no previous file with comments | « components/view_manager/focus_controller_unittest.cc ('k') | components/view_manager/gesture_manager.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/view_manager/gesture_manager.h
diff --git a/components/view_manager/gesture_manager.h b/components/view_manager/gesture_manager.h
deleted file mode 100644
index 624bd2a6ab1196fcfefbdde741bc03bc4f6575de..0000000000000000000000000000000000000000
--- a/components/view_manager/gesture_manager.h
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2015 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 COMPONENTS_VIEW_MANAGER_GESTURE_MANAGER_H_
-#define COMPONENTS_VIEW_MANAGER_GESTURE_MANAGER_H_
-
-#include <map>
-#include <set>
-
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/scoped_vector.h"
-
-namespace mojo {
-class Event;
-}
-
-namespace view_manager {
-
-class GestureManagerDelegate;
-class GestureManagerTest;
-class ServerView;
-
-struct GestureStateChange {
- GestureStateChange();
- ~GestureStateChange();
-
- uint32_t chosen_gesture;
- std::set<uint32_t> canceled_gestures;
-};
-
-using ChangeMap = std::map<const ServerView*, GestureStateChange>;
-
-// GestureManager handles incoming pointer events. It determines the set of
-// views (at most one per connection) that are interested in the event and
-// informs the delegate at the appropriate time.
-//
-// Each pointer may have any number of views associated with it, and each view
-// may have any number of gestures associated with it. Gesture are identified
-// the by the pair of the connection id of the view and the client supplied
-// gesture. The same gesture may be used in multiple pointers (see example
-// below).
-//
-// Gestures have the following states:
-// . initial: Initial state for new gestures. From this state the gesture may
-// become chosen or canceled. Once a gesture moves out of this state it can
-// never go back.
-// . chosen: the gesture has been chosen. From this state the gesture may be
-// canceled.
-// . canceled: the gesture has been canceled.
-// Gestures are active as long as they are included in the set of
-// |possible_gesture_ids|. Gestures can be removed at any time by removing the
-// gesture from |possible_gesture_ids|.
-//
-// A particular pointer has two distinct states:
-// . initial: none of the gestures associated with the pointer have been
-// chosen.
-// . chosen: when a gesture associated with the pointer has been chosen.
-// Pointers are removed when a POINTER_UP or POINTER_CANCEL event is received.
-//
-// When a pointer is chosen all other gestures associated with the pointer are
-// implicitly canceled. If the chosen gesture is canceled the pointer remains
-// in the chosen state and no gestures can be chosen.
-//
-// Event propagation (ProcessEvent()) is handled in two distinct ways:
-// . Until a gesture has been chosen for the pointer, views are notified in
-// order (deepest first). The next view (ancestor) is notified once
-// SetGestures() has been invoked for the previous (descendant) view.
-// . Once a gesture has been chosen, then incoming events are immediately
-// dispatched.
-//
-// The following example highlights various states and transitions:
-// . A POINTER_DOWN event is received for the pointer p1. The views that
-// contain the location of the event (starting with the deepest) are v1, v2,
-// v3 and v4. Both v1 and v2 have the property kViewManagerKeyWantsTouchEvents
-// set, so only v1 and v2 are considered. v1 is the deepest view, so the
-// touch event is set to it and only it first.
-// . v1 responds with possible gestures g1 and g2. v1 does not specify either
-// of the gestures as chosen.
-// . As the response from v1 has been received and there is no chosen gesture
-// the POINTER_DOWN event is sent to v2.
-// . v2 responds with gestures g3 and g4, neither of which are chosen.
-// . A POINTER_MOVE for p1 is received. As no gestures have been chosen event
-// of the POINTER_MOVE continues with v1 first.
-// . v1 returns g1 and g2 as possible gestures and does not choose one.
-// . The POINTER_MOVE is sent to v2.
-// . v2 returns g3 and g4 as possible gestures and does not choose one.
-// At this point p1 has the possible gestures g1, g2, g3, g4. Gestures g1 and
-// g2 are associated with v1. Gestures g3 and g4 are associated with v2.
-// . A POINTER_DOWN event is received for the pointer p2. v1 and v2 again
-// contain the location of the pointer. v1 is handed the event first.
-// . A POINTER_MOVE event is received for the pointer p2. As the response from
-// v1 has not been received yet, the event is not sent yet (it is queued up).
-// . v1 responds to the POINTER_DOWN for p2 with g1 and g2 and chooses g1.
-// At this point g2, g3 and g4 are all canceled with g1 chosen. p2 is in the
-// chosen state, as is p1 (p1 enters the chosen state as it contains the chosen
-// gesture as well).
-// . The POINTER_DOWN event for p2 is sent to v2. As p2 is in the chosen state
-// the POINTER_MOVE event that was queued up is sent to both v1 and v2 at the
-// same time (no waiting for response).
-//
-// TODO(sky): add some sort of timeout to deal with hung processes.
-class GestureManager {
- public:
- using GestureAndConnectionId = uint64_t;
-
- static const uint32_t kInvalidGestureId;
-
- GestureManager(GestureManagerDelegate* delegate, const ServerView* root);
- ~GestureManager();
-
- // Processes the current event. See GestureManager description for details.
- bool ProcessEvent(const mojo::Event& event);
-
- // Sets the gestures for the specified view and pointer.
- scoped_ptr<ChangeMap> SetGestures(
- const ServerView* view,
- int32_t pointer_id,
- uint32_t chosen_gesture_id,
- const std::set<uint32_t>& possible_gesture_ids,
- const std::set<uint32_t>& canceled_gesture_ids);
-
- private:
- friend class GestureManagerTest;
-
- class Gesture;
- class Pointer;
- struct PointerAndView;
- class ScheduledDeleteProcessor;
-
- // Returns the Pointer for |pointer_id|, or null if one doesn't exist.
- Pointer* GetPointerById(int32_t pointer_id);
-
- // Notification that |pointer| has no gestures. This deletes |pointer|.
- void PointerHasNoGestures(Pointer* pointer);
-
- // Returns the Gesture for the specified arguments, creating if necessary.
- Gesture* GetGesture(const ServerView* view, uint32_t gesture_id);
-
- // Called from Pointer when a gesture is associated with a pointer.
- void AttachGesture(Gesture* gesture,
- Pointer* pointer,
- const ServerView* view);
-
- // Called from Pointer when a gesture is no longer associated with a
- // pointer.
- void DetachGesture(Gesture* gesture,
- Pointer* pointer,
- const ServerView* view);
-
- // Cancels the supplied gesture (if it isn't canceled already). Notifies all
- // pointers containing |gesture| that |gesture| has been canceled.
- void CancelGesture(Gesture* gesture,
- Pointer* pointer,
- const ServerView* view);
-
- // Chooses the supplied gesture. Notifies all pointers containing |gesture|
- // that |gesture| has been chosen.
- void ChooseGesture(Gesture* gesture,
- Pointer* pointer,
- const ServerView* view);
-
- // Deletes |pointer| after processing the current event. We delay deletion
- // until after the event as immediate deletion can cause problems for Pointer
- // (this is because the same Pointer may be on multiple frames of the stack).
- void ScheduleDelete(Pointer* pointer);
-
- GestureManagerDelegate* delegate_;
- const ServerView* root_view_;
-
- // Map for looking up gestures. Gestures are identified by the pair of
- // connection id and supplied gesture id.
- std::map<GestureAndConnectionId, Gesture*> gesture_map_;
-
- ScopedVector<Pointer> active_pointers_;
-
- // See comment in ScheduleDelete() for details.
- ScopedVector<Pointer> pointers_to_delete_;
-
- // Accumulates changes as the result of SetGestures().
- scoped_ptr<ChangeMap> current_change_;
-
- DISALLOW_COPY_AND_ASSIGN(GestureManager);
-};
-
-} // namespace view_manager
-
-#endif // COMPONENTS_VIEW_MANAGER_GESTURE_MANAGER_H_
« no previous file with comments | « components/view_manager/focus_controller_unittest.cc ('k') | components/view_manager/gesture_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698