| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mojo/services/view_manager/test_change_tracker.h" | 5 #include "mojo/services/view_manager/test_change_tracker.h" |
| 6 | 6 |
| 7 #include "base/strings/string_util.h" | 7 #include "base/strings/string_util.h" |
| 8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
| 9 #include "mojo/common/common_type_converters.h" | 9 #include "mojo/common/common_type_converters.h" |
| 10 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" | 10 #include "mojo/services/public/cpp/geometry/geometry_type_converters.h" |
| 11 #include "mojo/services/public/cpp/view_manager/util.h" | 11 #include "mojo/services/public/cpp/view_manager/util.h" |
| 12 | 12 |
| 13 namespace mojo { | 13 namespace mojo { |
| 14 namespace service { | 14 namespace service { |
| 15 | 15 |
| 16 std::string NodeIdToString(Id id) { | 16 std::string ViewIdToString(Id id) { |
| 17 return (id == 0) ? "null" : | 17 return (id == 0) ? "null" : |
| 18 base::StringPrintf("%d,%d", HiWord(id), LoWord(id)); | 18 base::StringPrintf("%d,%d", HiWord(id), LoWord(id)); |
| 19 } | 19 } |
| 20 | 20 |
| 21 namespace { | 21 namespace { |
| 22 | 22 |
| 23 std::string RectToString(const gfx::Rect& rect) { | 23 std::string RectToString(const gfx::Rect& rect) { |
| 24 return base::StringPrintf("%d,%d %dx%d", rect.x(), rect.y(), rect.width(), | 24 return base::StringPrintf("%d,%d %dx%d", rect.x(), rect.y(), rect.width(), |
| 25 rect.height()); | 25 rect.height()); |
| 26 } | 26 } |
| 27 | 27 |
| 28 std::string DirectionToString(OrderDirection direction) { | 28 std::string DirectionToString(OrderDirection direction) { |
| 29 return direction == ORDER_DIRECTION_ABOVE ? "above" : "below"; | 29 return direction == ORDER_DIRECTION_ABOVE ? "above" : "below"; |
| 30 } | 30 } |
| 31 | 31 |
| 32 std::string ChangeToDescription1(const Change& change) { | 32 std::string ChangeToDescription1(const Change& change) { |
| 33 switch (change.type) { | 33 switch (change.type) { |
| 34 case CHANGE_TYPE_EMBED: | 34 case CHANGE_TYPE_EMBED: |
| 35 return base::StringPrintf("OnEmbed creator=%s", | 35 return base::StringPrintf("OnEmbed creator=%s", |
| 36 change.creator_url.data()); | 36 change.creator_url.data()); |
| 37 | 37 |
| 38 case CHANGE_TYPE_NODE_BOUNDS_CHANGED: | 38 case CHANGE_TYPE_NODE_BOUNDS_CHANGED: |
| 39 return base::StringPrintf( | 39 return base::StringPrintf( |
| 40 "BoundsChanged node=%s old_bounds=%s new_bounds=%s", | 40 "BoundsChanged view=%s old_bounds=%s new_bounds=%s", |
| 41 NodeIdToString(change.node_id).c_str(), | 41 ViewIdToString(change.view_id).c_str(), |
| 42 RectToString(change.bounds).c_str(), | 42 RectToString(change.bounds).c_str(), |
| 43 RectToString(change.bounds2).c_str()); | 43 RectToString(change.bounds2).c_str()); |
| 44 | 44 |
| 45 case CHANGE_TYPE_NODE_HIERARCHY_CHANGED: | 45 case CHANGE_TYPE_NODE_HIERARCHY_CHANGED: |
| 46 return base::StringPrintf( | 46 return base::StringPrintf( |
| 47 "HierarchyChanged node=%s new_parent=%s old_parent=%s", | 47 "HierarchyChanged view=%s new_parent=%s old_parent=%s", |
| 48 NodeIdToString(change.node_id).c_str(), | 48 ViewIdToString(change.view_id).c_str(), |
| 49 NodeIdToString(change.node_id2).c_str(), | 49 ViewIdToString(change.view_id2).c_str(), |
| 50 NodeIdToString(change.node_id3).c_str()); | 50 ViewIdToString(change.view_id3).c_str()); |
| 51 | 51 |
| 52 case CHANGE_TYPE_NODE_REORDERED: | 52 case CHANGE_TYPE_NODE_REORDERED: |
| 53 return base::StringPrintf( | 53 return base::StringPrintf("Reordered view=%s relative=%s direction=%s", |
| 54 "Reordered node=%s relative=%s direction=%s", | 54 ViewIdToString(change.view_id).c_str(), |
| 55 NodeIdToString(change.node_id).c_str(), | 55 ViewIdToString(change.view_id2).c_str(), |
| 56 NodeIdToString(change.node_id2).c_str(), | 56 DirectionToString(change.direction).c_str()); |
| 57 DirectionToString(change.direction).c_str()); | |
| 58 | 57 |
| 59 case CHANGE_TYPE_NODE_DELETED: | 58 case CHANGE_TYPE_NODE_DELETED: |
| 60 return base::StringPrintf("NodeDeleted node=%s", | 59 return base::StringPrintf("ViewDeleted view=%s", |
| 61 NodeIdToString(change.node_id).c_str()); | 60 ViewIdToString(change.view_id).c_str()); |
| 62 | 61 |
| 63 case CHANGE_TYPE_INPUT_EVENT: | 62 case CHANGE_TYPE_INPUT_EVENT: |
| 64 return base::StringPrintf( | 63 return base::StringPrintf("InputEvent view=%s event_action=%d", |
| 65 "InputEvent node=%s event_action=%d", | 64 ViewIdToString(change.view_id).c_str(), |
| 66 NodeIdToString(change.node_id).c_str(), | 65 change.event_action); |
| 67 change.event_action); | |
| 68 case CHANGE_TYPE_DELEGATE_EMBED: | 66 case CHANGE_TYPE_DELEGATE_EMBED: |
| 69 return base::StringPrintf("DelegateEmbed url=%s", | 67 return base::StringPrintf("DelegateEmbed url=%s", |
| 70 change.embed_url.data()); | 68 change.embed_url.data()); |
| 71 } | 69 } |
| 72 return std::string(); | 70 return std::string(); |
| 73 } | 71 } |
| 74 | 72 |
| 75 } // namespace | 73 } // namespace |
| 76 | 74 |
| 77 std::vector<std::string> ChangesToDescription1( | 75 std::vector<std::string> ChangesToDescription1( |
| 78 const std::vector<Change>& changes) { | 76 const std::vector<Change>& changes) { |
| 79 std::vector<std::string> strings(changes.size()); | 77 std::vector<std::string> strings(changes.size()); |
| 80 for (size_t i = 0; i < changes.size(); ++i) | 78 for (size_t i = 0; i < changes.size(); ++i) |
| 81 strings[i] = ChangeToDescription1(changes[i]); | 79 strings[i] = ChangeToDescription1(changes[i]); |
| 82 return strings; | 80 return strings; |
| 83 } | 81 } |
| 84 | 82 |
| 85 std::string ChangeNodeDescription(const std::vector<Change>& changes) { | 83 std::string ChangeViewDescription(const std::vector<Change>& changes) { |
| 86 if (changes.size() != 1) | 84 if (changes.size() != 1) |
| 87 return std::string(); | 85 return std::string(); |
| 88 std::vector<std::string> node_strings(changes[0].nodes.size()); | 86 std::vector<std::string> view_strings(changes[0].views.size()); |
| 89 for (size_t i = 0; i < changes[0].nodes.size(); ++i) | 87 for (size_t i = 0; i < changes[0].views.size(); ++i) |
| 90 node_strings[i] = "[" + changes[0].nodes[i].ToString() + "]"; | 88 view_strings[i] = "[" + changes[0].views[i].ToString() + "]"; |
| 91 return JoinString(node_strings, ','); | 89 return JoinString(view_strings, ','); |
| 92 } | 90 } |
| 93 | 91 |
| 94 TestNode ViewDataToTestNode(const ViewDataPtr& data) { | 92 TestView ViewDataToTestView(const ViewDataPtr& data) { |
| 95 TestNode node; | 93 TestView view; |
| 96 node.parent_id = data->parent_id; | 94 view.parent_id = data->parent_id; |
| 97 node.node_id = data->view_id; | 95 view.view_id = data->view_id; |
| 98 return node; | 96 return view; |
| 99 } | 97 } |
| 100 | 98 |
| 101 void ViewDatasToTestNodes(const Array<ViewDataPtr>& data, | 99 void ViewDatasToTestViews(const Array<ViewDataPtr>& data, |
| 102 std::vector<TestNode>* test_nodes) { | 100 std::vector<TestView>* test_views) { |
| 103 for (size_t i = 0; i < data.size(); ++i) | 101 for (size_t i = 0; i < data.size(); ++i) |
| 104 test_nodes->push_back(ViewDataToTestNode(data[i])); | 102 test_views->push_back(ViewDataToTestView(data[i])); |
| 105 } | 103 } |
| 106 | 104 |
| 107 Change::Change() | 105 Change::Change() |
| 108 : type(CHANGE_TYPE_EMBED), | 106 : type(CHANGE_TYPE_EMBED), |
| 109 connection_id(0), | 107 connection_id(0), |
| 110 node_id(0), | 108 view_id(0), |
| 111 node_id2(0), | 109 view_id2(0), |
| 112 node_id3(0), | 110 view_id3(0), |
| 113 event_action(0), | 111 event_action(0), |
| 114 direction(ORDER_DIRECTION_ABOVE) { | 112 direction(ORDER_DIRECTION_ABOVE) { |
| 115 } | 113 } |
| 116 | 114 |
| 117 Change::~Change() { | 115 Change::~Change() { |
| 118 } | 116 } |
| 119 | 117 |
| 120 TestChangeTracker::TestChangeTracker() | 118 TestChangeTracker::TestChangeTracker() |
| 121 : delegate_(NULL) { | 119 : delegate_(NULL) { |
| 122 } | 120 } |
| 123 | 121 |
| 124 TestChangeTracker::~TestChangeTracker() { | 122 TestChangeTracker::~TestChangeTracker() { |
| 125 } | 123 } |
| 126 | 124 |
| 127 void TestChangeTracker::OnEmbed(ConnectionSpecificId connection_id, | 125 void TestChangeTracker::OnEmbed(ConnectionSpecificId connection_id, |
| 128 const String& creator_url, | 126 const String& creator_url, |
| 129 ViewDataPtr root) { | 127 ViewDataPtr root) { |
| 130 Change change; | 128 Change change; |
| 131 change.type = CHANGE_TYPE_EMBED; | 129 change.type = CHANGE_TYPE_EMBED; |
| 132 change.connection_id = connection_id; | 130 change.connection_id = connection_id; |
| 133 change.creator_url = creator_url; | 131 change.creator_url = creator_url; |
| 134 change.nodes.push_back(ViewDataToTestNode(root)); | 132 change.views.push_back(ViewDataToTestView(root)); |
| 135 AddChange(change); | 133 AddChange(change); |
| 136 } | 134 } |
| 137 | 135 |
| 138 void TestChangeTracker::OnNodeBoundsChanged(Id node_id, | 136 void TestChangeTracker::OnViewBoundsChanged(Id view_id, |
| 139 RectPtr old_bounds, | 137 RectPtr old_bounds, |
| 140 RectPtr new_bounds) { | 138 RectPtr new_bounds) { |
| 141 Change change; | 139 Change change; |
| 142 change.type = CHANGE_TYPE_NODE_BOUNDS_CHANGED; | 140 change.type = CHANGE_TYPE_NODE_BOUNDS_CHANGED; |
| 143 change.node_id = node_id; | 141 change.view_id = view_id; |
| 144 change.bounds = old_bounds.To<gfx::Rect>(); | 142 change.bounds = old_bounds.To<gfx::Rect>(); |
| 145 change.bounds2 = new_bounds.To<gfx::Rect>(); | 143 change.bounds2 = new_bounds.To<gfx::Rect>(); |
| 146 AddChange(change); | 144 AddChange(change); |
| 147 } | 145 } |
| 148 | 146 |
| 149 void TestChangeTracker::OnNodeHierarchyChanged(Id node_id, | 147 void TestChangeTracker::OnViewHierarchyChanged(Id view_id, |
| 150 Id new_parent_id, | 148 Id new_parent_id, |
| 151 Id old_parent_id, | 149 Id old_parent_id, |
| 152 Array<ViewDataPtr> nodes) { | 150 Array<ViewDataPtr> views) { |
| 153 Change change; | 151 Change change; |
| 154 change.type = CHANGE_TYPE_NODE_HIERARCHY_CHANGED; | 152 change.type = CHANGE_TYPE_NODE_HIERARCHY_CHANGED; |
| 155 change.node_id = node_id; | 153 change.view_id = view_id; |
| 156 change.node_id2 = new_parent_id; | 154 change.view_id2 = new_parent_id; |
| 157 change.node_id3 = old_parent_id; | 155 change.view_id3 = old_parent_id; |
| 158 ViewDatasToTestNodes(nodes, &change.nodes); | 156 ViewDatasToTestViews(views, &change.views); |
| 159 AddChange(change); | 157 AddChange(change); |
| 160 } | 158 } |
| 161 | 159 |
| 162 void TestChangeTracker::OnNodeReordered(Id node_id, | 160 void TestChangeTracker::OnViewReordered(Id view_id, |
| 163 Id relative_node_id, | 161 Id relative_view_id, |
| 164 OrderDirection direction) { | 162 OrderDirection direction) { |
| 165 Change change; | 163 Change change; |
| 166 change.type = CHANGE_TYPE_NODE_REORDERED; | 164 change.type = CHANGE_TYPE_NODE_REORDERED; |
| 167 change.node_id = node_id; | 165 change.view_id = view_id; |
| 168 change.node_id2 = relative_node_id; | 166 change.view_id2 = relative_view_id; |
| 169 change.direction = direction; | 167 change.direction = direction; |
| 170 AddChange(change); | 168 AddChange(change); |
| 171 } | 169 } |
| 172 | 170 |
| 173 void TestChangeTracker::OnNodeDeleted(Id node_id) { | 171 void TestChangeTracker::OnViewDeleted(Id view_id) { |
| 174 Change change; | 172 Change change; |
| 175 change.type = CHANGE_TYPE_NODE_DELETED; | 173 change.type = CHANGE_TYPE_NODE_DELETED; |
| 176 change.node_id = node_id; | 174 change.view_id = view_id; |
| 177 AddChange(change); | 175 AddChange(change); |
| 178 } | 176 } |
| 179 | 177 |
| 180 void TestChangeTracker::OnNodeInputEvent(Id node_id, EventPtr event) { | 178 void TestChangeTracker::OnViewInputEvent(Id view_id, EventPtr event) { |
| 181 Change change; | 179 Change change; |
| 182 change.type = CHANGE_TYPE_INPUT_EVENT; | 180 change.type = CHANGE_TYPE_INPUT_EVENT; |
| 183 change.node_id = node_id; | 181 change.view_id = view_id; |
| 184 change.event_action = event->action; | 182 change.event_action = event->action; |
| 185 AddChange(change); | 183 AddChange(change); |
| 186 } | 184 } |
| 187 | 185 |
| 188 void TestChangeTracker::DelegateEmbed(const String& url) { | 186 void TestChangeTracker::DelegateEmbed(const String& url) { |
| 189 Change change; | 187 Change change; |
| 190 change.type = CHANGE_TYPE_DELEGATE_EMBED; | 188 change.type = CHANGE_TYPE_DELEGATE_EMBED; |
| 191 change.embed_url = url; | 189 change.embed_url = url; |
| 192 AddChange(change); | 190 AddChange(change); |
| 193 } | 191 } |
| 194 | 192 |
| 195 void TestChangeTracker::AddChange(const Change& change) { | 193 void TestChangeTracker::AddChange(const Change& change) { |
| 196 changes_.push_back(change); | 194 changes_.push_back(change); |
| 197 if (delegate_) | 195 if (delegate_) |
| 198 delegate_->OnChangeAdded(); | 196 delegate_->OnChangeAdded(); |
| 199 } | 197 } |
| 200 | 198 |
| 201 std::string TestNode::ToString() const { | 199 std::string TestView::ToString() const { |
| 202 return base::StringPrintf("node=%s parent=%s", | 200 return base::StringPrintf("view=%s parent=%s", |
| 203 NodeIdToString(node_id).c_str(), | 201 ViewIdToString(view_id).c_str(), |
| 204 NodeIdToString(parent_id).c_str()); | 202 ViewIdToString(parent_id).c_str()); |
| 205 } | 203 } |
| 206 | 204 |
| 207 } // namespace service | 205 } // namespace service |
| 208 } // namespace mojo | 206 } // namespace mojo |
| OLD | NEW |