| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <string> | 5 #include <string> |
| 6 #include <utility> | 6 #include <utility> |
| 7 | 7 |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 const PassPickledEnumCallback& callback) override { | 98 const PassPickledEnumCallback& callback) override { |
| 99 callback.Run(pickle); | 99 callback.Run(pickle); |
| 100 } | 100 } |
| 101 | 101 |
| 102 void PassPickleContainer( | 102 void PassPickleContainer( |
| 103 PickleContainerPtr container, | 103 PickleContainerPtr container, |
| 104 const PassPickleContainerCallback& callback) override { | 104 const PassPickleContainerCallback& callback) override { |
| 105 callback.Run(std::move(container)); | 105 callback.Run(std::move(container)); |
| 106 } | 106 } |
| 107 | 107 |
| 108 void PassPickles(Array<PickledStructChromium> pickles, | 108 void PassPickles(const std::vector<PickledStructChromium>& pickles, |
| 109 const PassPicklesCallback& callback) override { | 109 const PassPicklesCallback& callback) override { |
| 110 callback.Run(std::move(pickles)); | 110 callback.Run(pickles); |
| 111 } | 111 } |
| 112 | 112 |
| 113 void PassPickleArrays(Array<Array<PickledStructChromium>> pickle_arrays, | 113 void PassPickleArrays( |
| 114 const PassPickleArraysCallback& callback) override { | 114 const std::vector<std::vector<PickledStructChromium>>& pickle_arrays, |
| 115 callback.Run(std::move(pickle_arrays)); | 115 const PassPickleArraysCallback& callback) override { |
| 116 callback.Run(pickle_arrays); |
| 116 } | 117 } |
| 117 }; | 118 }; |
| 118 | 119 |
| 119 // This implements the generated Blink variant of PicklePasser. | 120 // This implements the generated Blink variant of PicklePasser. |
| 120 class BlinkPicklePasserImpl : public blink::PicklePasser { | 121 class BlinkPicklePasserImpl : public blink::PicklePasser { |
| 121 public: | 122 public: |
| 122 BlinkPicklePasserImpl() {} | 123 BlinkPicklePasserImpl() {} |
| 123 | 124 |
| 124 // mojo::test::blink::PicklePasser: | 125 // mojo::test::blink::PicklePasser: |
| 125 void PassPickledStruct(const PickledStructBlink& pickle, | 126 void PassPickledStruct(const PickledStructBlink& pickle, |
| 126 const PassPickledStructCallback& callback) override { | 127 const PassPickledStructCallback& callback) override { |
| 127 callback.Run(pickle); | 128 callback.Run(pickle); |
| 128 } | 129 } |
| 129 | 130 |
| 130 void PassPickledEnum(PickledEnumBlink pickle, | 131 void PassPickledEnum(PickledEnumBlink pickle, |
| 131 const PassPickledEnumCallback& callback) override { | 132 const PassPickledEnumCallback& callback) override { |
| 132 callback.Run(pickle); | 133 callback.Run(pickle); |
| 133 } | 134 } |
| 134 | 135 |
| 135 void PassPickleContainer( | 136 void PassPickleContainer( |
| 136 blink::PickleContainerPtr container, | 137 blink::PickleContainerPtr container, |
| 137 const PassPickleContainerCallback& callback) override { | 138 const PassPickleContainerCallback& callback) override { |
| 138 callback.Run(std::move(container)); | 139 callback.Run(std::move(container)); |
| 139 } | 140 } |
| 140 | 141 |
| 141 void PassPickles(WTFArray<PickledStructBlink> pickles, | 142 void PassPickles(const WTF::Vector<PickledStructBlink>& pickles, |
| 142 const PassPicklesCallback& callback) override { | 143 const PassPicklesCallback& callback) override { |
| 143 callback.Run(std::move(pickles)); | 144 callback.Run(pickles); |
| 144 } | 145 } |
| 145 | 146 |
| 146 void PassPickleArrays(WTFArray<WTFArray<PickledStructBlink>> pickle_arrays, | 147 void PassPickleArrays( |
| 147 const PassPickleArraysCallback& callback) override { | 148 const WTF::Vector<WTF::Vector<PickledStructBlink>>& pickle_arrays, |
| 148 callback.Run(std::move(pickle_arrays)); | 149 const PassPickleArraysCallback& callback) override { |
| 150 callback.Run(pickle_arrays); |
| 149 } | 151 } |
| 150 }; | 152 }; |
| 151 | 153 |
| 152 // A test which runs both Chromium and Blink implementations of the | 154 // A test which runs both Chromium and Blink implementations of the |
| 153 // PicklePasser service. | 155 // PicklePasser service. |
| 154 class PickleTest : public testing::Test { | 156 class PickleTest : public testing::Test { |
| 155 public: | 157 public: |
| 156 PickleTest() {} | 158 PickleTest() {} |
| 157 | 159 |
| 158 template <typename ProxyType = PicklePasser> | 160 template <typename ProxyType = PicklePasser> |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 pickles[0].set_baz(100); | 307 pickles[0].set_baz(100); |
| 306 pickles[1].set_foo(3); | 308 pickles[1].set_foo(3); |
| 307 pickles[1].set_bar(4); | 309 pickles[1].set_bar(4); |
| 308 pickles[1].set_baz(100); | 310 pickles[1].set_baz(100); |
| 309 { | 311 { |
| 310 base::RunLoop run_loop; | 312 base::RunLoop run_loop; |
| 311 // Verify that the array of pickled structs can be serialized and | 313 // Verify that the array of pickled structs can be serialized and |
| 312 // deserialized intact. This ensures that the ParamTraits are actually used | 314 // deserialized intact. This ensures that the ParamTraits are actually used |
| 313 // rather than doing a byte-for-byte copy of the element data, beacuse the | 315 // rather than doing a byte-for-byte copy of the element data, beacuse the |
| 314 // |baz| field should never be serialized. | 316 // |baz| field should never be serialized. |
| 315 proxy->PassPickles(std::move(pickles), | 317 proxy->PassPickles( |
| 316 BindSimpleLambda<Array<PickledStructChromium>>( | 318 std::move(pickles), |
| 317 [&](Array<PickledStructChromium> passed) { | 319 BindSimpleLambda<const std::vector<PickledStructChromium>&>( |
| 318 ASSERT_FALSE(passed.is_null()); | 320 [&](const std::vector<PickledStructChromium>& passed) { |
| 319 ASSERT_EQ(2u, passed.size()); | 321 ASSERT_EQ(2u, passed.size()); |
| 320 EXPECT_EQ(1, passed[0].foo()); | 322 EXPECT_EQ(1, passed[0].foo()); |
| 321 EXPECT_EQ(2, passed[0].bar()); | 323 EXPECT_EQ(2, passed[0].bar()); |
| 322 EXPECT_EQ(0, passed[0].baz()); | 324 EXPECT_EQ(0, passed[0].baz()); |
| 323 EXPECT_EQ(3, passed[1].foo()); | 325 EXPECT_EQ(3, passed[1].foo()); |
| 324 EXPECT_EQ(4, passed[1].bar()); | 326 EXPECT_EQ(4, passed[1].bar()); |
| 325 EXPECT_EQ(0, passed[1].baz()); | 327 EXPECT_EQ(0, passed[1].baz()); |
| 326 run_loop.Quit(); | 328 run_loop.Quit(); |
| 327 })); | 329 })); |
| 328 run_loop.Run(); | 330 run_loop.Run(); |
| 329 } | 331 } |
| 330 } | 332 } |
| 331 | 333 |
| 332 TEST_F(PickleTest, PickleArrayArray) { | 334 TEST_F(PickleTest, PickleArrayArray) { |
| 333 auto proxy = ConnectToChromiumService(); | 335 auto proxy = ConnectToChromiumService(); |
| 334 auto pickle_arrays = Array<Array<PickledStructChromium>>::New(2); | 336 auto pickle_arrays = std::vector<std::vector<PickledStructChromium>>(2); |
| 335 for (size_t i = 0; i < 2; ++i) | 337 for (size_t i = 0; i < 2; ++i) |
| 336 pickle_arrays[i] = Array<PickledStructChromium>::New(2); | 338 pickle_arrays[i] = std::vector<PickledStructChromium>(2); |
| 337 | 339 |
| 338 pickle_arrays[0][0].set_foo(1); | 340 pickle_arrays[0][0].set_foo(1); |
| 339 pickle_arrays[0][0].set_bar(2); | 341 pickle_arrays[0][0].set_bar(2); |
| 340 pickle_arrays[0][0].set_baz(100); | 342 pickle_arrays[0][0].set_baz(100); |
| 341 pickle_arrays[0][1].set_foo(3); | 343 pickle_arrays[0][1].set_foo(3); |
| 342 pickle_arrays[0][1].set_bar(4); | 344 pickle_arrays[0][1].set_bar(4); |
| 343 pickle_arrays[0][1].set_baz(100); | 345 pickle_arrays[0][1].set_baz(100); |
| 344 pickle_arrays[1][0].set_foo(5); | 346 pickle_arrays[1][0].set_foo(5); |
| 345 pickle_arrays[1][0].set_bar(6); | 347 pickle_arrays[1][0].set_bar(6); |
| 346 pickle_arrays[1][0].set_baz(100); | 348 pickle_arrays[1][0].set_baz(100); |
| 347 pickle_arrays[1][1].set_foo(7); | 349 pickle_arrays[1][1].set_foo(7); |
| 348 pickle_arrays[1][1].set_bar(8); | 350 pickle_arrays[1][1].set_bar(8); |
| 349 pickle_arrays[1][1].set_baz(100); | 351 pickle_arrays[1][1].set_baz(100); |
| 350 { | 352 { |
| 351 base::RunLoop run_loop; | 353 base::RunLoop run_loop; |
| 352 // Verify that the array-of-arrays serializes and deserializes properly. | 354 // Verify that the array-of-arrays serializes and deserializes properly. |
| 353 proxy->PassPickleArrays( | 355 proxy->PassPickleArrays( |
| 354 std::move(pickle_arrays), | 356 pickle_arrays, |
| 355 BindSimpleLambda<Array<Array<PickledStructChromium>>>( | 357 BindSimpleLambda< |
| 356 [&](Array<Array<PickledStructChromium>> passed) { | 358 const std::vector<std::vector<PickledStructChromium>>&>( |
| 357 ASSERT_FALSE(passed.is_null()); | 359 [&](const std::vector<std::vector<PickledStructChromium>>& passed) { |
| 358 ASSERT_EQ(2u, passed.size()); | 360 ASSERT_EQ(2u, passed.size()); |
| 359 ASSERT_EQ(2u, passed[0].size()); | 361 ASSERT_EQ(2u, passed[0].size()); |
| 360 ASSERT_EQ(2u, passed[1].size()); | 362 ASSERT_EQ(2u, passed[1].size()); |
| 361 EXPECT_EQ(1, passed[0][0].foo()); | 363 EXPECT_EQ(1, passed[0][0].foo()); |
| 362 EXPECT_EQ(2, passed[0][0].bar()); | 364 EXPECT_EQ(2, passed[0][0].bar()); |
| 363 EXPECT_EQ(0, passed[0][0].baz()); | 365 EXPECT_EQ(0, passed[0][0].baz()); |
| 364 EXPECT_EQ(3, passed[0][1].foo()); | 366 EXPECT_EQ(3, passed[0][1].foo()); |
| 365 EXPECT_EQ(4, passed[0][1].bar()); | 367 EXPECT_EQ(4, passed[0][1].bar()); |
| 366 EXPECT_EQ(0, passed[0][1].baz()); | 368 EXPECT_EQ(0, passed[0][1].baz()); |
| 367 EXPECT_EQ(5, passed[1][0].foo()); | 369 EXPECT_EQ(5, passed[1][0].foo()); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 397 EXPECT_EQ(PickledEnumChromium::VALUE_1, | 399 EXPECT_EQ(PickledEnumChromium::VALUE_1, |
| 398 passed->f_enum); | 400 passed->f_enum); |
| 399 run_loop.Quit(); | 401 run_loop.Quit(); |
| 400 })); | 402 })); |
| 401 run_loop.Run(); | 403 run_loop.Run(); |
| 402 } | 404 } |
| 403 } | 405 } |
| 404 | 406 |
| 405 } // namespace test | 407 } // namespace test |
| 406 } // namespace mojo | 408 } // namespace mojo |
| OLD | NEW |