Index: mojo/services/view_manager/view_manager_connection_unittest.cc |
diff --git a/mojo/services/view_manager/view_manager_connection_unittest.cc b/mojo/services/view_manager/view_manager_connection_unittest.cc |
index 063a740e2eb07da72c487f8f552939bc3d86d8a6..013be5cc9f017387cf94e5a70012e5c5a1288b71 100644 |
--- a/mojo/services/view_manager/view_manager_connection_unittest.cc |
+++ b/mojo/services/view_manager/view_manager_connection_unittest.cc |
@@ -11,6 +11,7 @@ |
#include "base/run_loop.h" |
#include "base/strings/stringprintf.h" |
#include "mojo/common/common_type_converters.h" |
+#include "mojo/geometry/geometry_type_converters.h" |
#include "mojo/public/cpp/bindings/allocation_scope.h" |
#include "mojo/public/cpp/environment/environment.h" |
#include "mojo/public/cpp/shell/connect.h" |
@@ -19,6 +20,7 @@ |
#include "mojo/services/public/interfaces/view_manager/view_manager.mojom.h" |
#include "mojo/shell/shell_test_helper.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "ui/gfx/geometry/rect.h" |
namespace mojo { |
@@ -60,6 +62,15 @@ std::string NodeIdToString(TransportNodeId id) { |
base::StringPrintf("%d,%d", HiWord(id), LoWord(id)); |
} |
+// Converts |rect| into a string. |
+std::string RectToString(const Rect& rect) { |
+ return base::StringPrintf("%d,%d %dx%d", |
+ rect.position().x(), |
+ rect.position().y(), |
+ rect.size().width(), |
+ rect.size().height()); |
+} |
+ |
// Boolean callback. Sets |result_cache| to the value of |result| and quits |
// the run loop. |
void BooleanCallback(bool* result_cache, bool result) { |
@@ -139,6 +150,16 @@ bool DeleteView(IViewManager* view_manager, TransportViewId view_id) { |
return result; |
} |
+bool SetNodeBounds(IViewManager* view_manager, |
+ TransportNodeId node_id, |
+ const gfx::Rect& bounds) { |
+ bool result = false; |
+ view_manager->SetNodeBounds(node_id, bounds, |
+ base::Bind(&BooleanCallback, &result)); |
+ DoRunLoop(); |
+ return result; |
+} |
+ |
// Adds a node, blocking until done. |
bool AddNode(IViewManager* view_manager, |
TransportNodeId parent, |
@@ -270,6 +291,17 @@ class ViewManagerClientImpl : public IViewManagerClient { |
static_cast<int>(next_server_change_id))); |
QuitIfNecessary(); |
} |
+ virtual void OnNodeBoundsChanged(TransportNodeId node_id, |
+ const Rect& old_bounds, |
+ const Rect& new_bounds) { |
+ changes_.push_back( |
+ base::StringPrintf( |
+ "BoundsChanged node=%s old_bounds=%s new_bounds=%s", |
+ NodeIdToString(node_id).c_str(), |
+ RectToString(old_bounds).c_str(), |
+ RectToString(new_bounds).c_str())); |
+ QuitIfNecessary(); |
+ } |
virtual void OnNodeHierarchyChanged( |
TransportNodeId node, |
TransportNodeId new_parent, |
@@ -1128,6 +1160,26 @@ TEST_F(ViewManagerConnectionTest, GetNodeTree) { |
} |
} |
+TEST_F(ViewManagerConnectionTest, SetNodeBounds) { |
+ ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |
+ ASSERT_TRUE(AddNode(view_manager_.get(), |
+ CreateNodeId(0, 1), |
+ CreateNodeId(1, 1), |
+ 1)); |
+ EstablishSecondConnection(); |
+ |
+ AllocationScope scope; |
+ ASSERT_TRUE(SetNodeBounds(view_manager_.get(), |
+ CreateNodeId(1, 1), |
+ gfx::Rect(0, 0, 100, 100))); |
+ |
+ client2_.DoRunLoopUntilChangesCount(1); |
+ Changes changes(client2_.GetAndClearChanges()); |
+ ASSERT_EQ(1u, changes.size()); |
+ EXPECT_EQ("BoundsChanged node=1,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100", |
+ changes[0]); |
+} |
+ |
TEST_F(ViewManagerConnectionTest, SetRoots) { |
// Create 1, 2, and 3 in the first connection. |
ASSERT_TRUE(CreateNode(view_manager_.get(), 1, 1)); |