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

Side by Side Diff: components/view_manager/test_change_tracker.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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef COMPONENTS_VIEW_MANAGER_TEST_CHANGE_TRACKER_H_
6 #define COMPONENTS_VIEW_MANAGER_TEST_CHANGE_TRACKER_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/basictypes.h"
12 #include "components/view_manager/public/cpp/types.h"
13 #include "components/view_manager/public/interfaces/view_tree.mojom.h"
14 #include "third_party/mojo/src/mojo/public/cpp/bindings/array.h"
15 #include "ui/mojo/geometry/geometry.mojom.h"
16
17 namespace view_manager {
18
19 enum ChangeType {
20 CHANGE_TYPE_EMBED,
21 CHANGE_TYPE_EMBEDDED_APP_DISCONNECTED,
22 CHANGE_TYPE_UNEMBED,
23 // TODO(sky): nuke NODE.
24 CHANGE_TYPE_NODE_BOUNDS_CHANGED,
25 CHANGE_TYPE_NODE_VIEWPORT_METRICS_CHANGED,
26 CHANGE_TYPE_NODE_HIERARCHY_CHANGED,
27 CHANGE_TYPE_NODE_REORDERED,
28 CHANGE_TYPE_NODE_VISIBILITY_CHANGED,
29 CHANGE_TYPE_NODE_DRAWN_STATE_CHANGED,
30 CHANGE_TYPE_NODE_DELETED,
31 CHANGE_TYPE_INPUT_EVENT,
32 CHANGE_TYPE_PROPERTY_CHANGED,
33 CHANGE_TYPE_DELEGATE_EMBED,
34 CHANGE_TYPE_FOCUSED,
35 };
36
37 // TODO(sky): consider nuking and converting directly to ViewData.
38 struct TestView {
39 TestView();
40 ~TestView();
41
42 // Returns a string description of this.
43 std::string ToString() const;
44
45 // Returns a string description that includes visible and drawn.
46 std::string ToString2() const;
47
48 mojo::Id parent_id;
49 mojo::Id view_id;
50 bool visible;
51 bool drawn;
52 std::map<std::string, std::vector<uint8_t>> properties;
53 };
54
55 // Tracks a call to ViewTreeClient. See the individual functions for the fields
56 // that are used.
57 struct Change {
58 Change();
59 ~Change();
60
61 ChangeType type;
62 mojo::ConnectionSpecificId connection_id;
63 std::vector<TestView> views;
64 mojo::Id view_id;
65 mojo::Id view_id2;
66 mojo::Id view_id3;
67 mojo::Rect bounds;
68 mojo::Rect bounds2;
69 int32_t event_action;
70 mojo::String embed_url;
71 mojo::OrderDirection direction;
72 bool bool_value;
73 std::string property_key;
74 std::string property_value;
75 };
76
77 // Converts Changes to string descriptions.
78 std::vector<std::string> ChangesToDescription1(
79 const std::vector<Change>& changes);
80
81 // Convenience for returning the description of the first item in |changes|.
82 // Returns an empty string if |changes| has something other than one entry.
83 std::string SingleChangeToDescription(const std::vector<Change>& changes);
84
85 // Convenience for returning the description of the first item in |views|.
86 // Returns an empty string if |views| has something other than one entry.
87 std::string SingleViewDescription(const std::vector<TestView>& views);
88
89 // Returns a string description of |changes[0].views|. Returns an empty string
90 // if change.size() != 1.
91 std::string ChangeViewDescription(const std::vector<Change>& changes);
92
93 // Converts ViewDatas to TestViews.
94 void ViewDatasToTestViews(const mojo::Array<mojo::ViewDataPtr>& data,
95 std::vector<TestView>* test_views);
96
97 // TestChangeTracker is used to record ViewTreeClient functions. It notifies
98 // a delegate any time a change is added.
99 class TestChangeTracker {
100 public:
101 // Used to notify the delegate when a change is added. A change corresponds to
102 // a single ViewTreeClient function.
103 class Delegate {
104 public:
105 virtual void OnChangeAdded() = 0;
106
107 protected:
108 virtual ~Delegate() {}
109 };
110
111 TestChangeTracker();
112 ~TestChangeTracker();
113
114 void set_delegate(Delegate* delegate) {
115 delegate_ = delegate;
116 }
117
118 std::vector<Change>* changes() { return &changes_; }
119
120 // Each of these functions generate a Change. There is one per
121 // ViewTreeClient function.
122 void OnEmbed(mojo::ConnectionSpecificId connection_id,
123 mojo::ViewDataPtr root);
124 void OnEmbeddedAppDisconnected(mojo::Id view_id);
125 void OnUnembed();
126 void OnViewBoundsChanged(mojo::Id view_id,
127 mojo::RectPtr old_bounds,
128 mojo::RectPtr new_bounds);
129 void OnViewViewportMetricsChanged(mojo::ViewportMetricsPtr old_bounds,
130 mojo::ViewportMetricsPtr new_bounds);
131 void OnViewHierarchyChanged(mojo::Id view_id,
132 mojo::Id new_parent_id,
133 mojo::Id old_parent_id,
134 mojo::Array<mojo::ViewDataPtr> views);
135 void OnViewReordered(mojo::Id view_id,
136 mojo::Id relative_view_id,
137 mojo::OrderDirection direction);
138 void OnViewDeleted(mojo::Id view_id);
139 void OnViewVisibilityChanged(mojo::Id view_id, bool visible);
140 void OnViewDrawnStateChanged(mojo::Id view_id, bool drawn);
141 void OnViewInputEvent(mojo::Id view_id, mojo::EventPtr event);
142 void OnViewSharedPropertyChanged(mojo::Id view_id,
143 mojo::String name,
144 mojo::Array<uint8_t> data);
145 void OnViewFocused(mojo::Id view_id);
146 void DelegateEmbed(const mojo::String& url);
147
148 private:
149 void AddChange(const Change& change);
150
151 Delegate* delegate_;
152 std::vector<Change> changes_;
153
154 DISALLOW_COPY_AND_ASSIGN(TestChangeTracker);
155 };
156
157 } // namespace view_manager
158
159 #endif // COMPONENTS_VIEW_MANAGER_TEST_CHANGE_TRACKER_H_
OLDNEW
« no previous file with comments | « components/view_manager/surfaces/top_level_display_client.cc ('k') | components/view_manager/test_change_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698