| 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 <stddef.h> | 5 #include <stddef.h> | 
| 6 #include <stdint.h> | 6 #include <stdint.h> | 
| 7 #include <algorithm> | 7 #include <algorithm> | 
| 8 #include <utility> | 8 #include <utility> | 
| 9 | 9 | 
| 10 #include "base/bind.h" | 10 #include "base/bind.h" | 
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 326       notify_finish_.Run(); | 326       notify_finish_.Run(); | 
| 327   } | 327   } | 
| 328 | 328 | 
| 329  private: | 329  private: | 
| 330   base::Lock lock_; | 330   base::Lock lock_; | 
| 331   const size_t total_count_; | 331   const size_t total_count_; | 
| 332   size_t current_count_; | 332   size_t current_count_; | 
| 333   base::Closure notify_finish_; | 333   base::Closure notify_finish_; | 
| 334 }; | 334 }; | 
| 335 | 335 | 
| 336 TEST_F(AssociatedInterfaceTest, MultiThreadAccess) { | 336 // Disabled due to flakes on Windows bots. See crbug.com/615450. | 
|  | 337 TEST_F(AssociatedInterfaceTest, DISABLED_MultiThreadAccess) { | 
| 337   // Set up four associated interfaces on a message pipe. Use the inteface | 338   // Set up four associated interfaces on a message pipe. Use the inteface | 
| 338   // pointers on four threads in parallel; run the interface implementations on | 339   // pointers on four threads in parallel; run the interface implementations on | 
| 339   // two threads. Test that multi-threaded access works. | 340   // two threads. Test that multi-threaded access works. | 
| 340 | 341 | 
| 341   const int32_t kMaxValue = 1000; | 342   const int32_t kMaxValue = 1000; | 
| 342   MessagePipe pipe; | 343   MessagePipe pipe; | 
| 343   scoped_refptr<MultiplexRouter> router0(new MultiplexRouter( | 344   scoped_refptr<MultiplexRouter> router0(new MultiplexRouter( | 
| 344       true, std::move(pipe.handle0), base::ThreadTaskRunnerHandle::Get())); | 345       true, std::move(pipe.handle0), base::ThreadTaskRunnerHandle::Get())); | 
| 345   scoped_refptr<MultiplexRouter> router1(new MultiplexRouter( | 346   scoped_refptr<MultiplexRouter> router1(new MultiplexRouter( | 
| 346       false, std::move(pipe.handle1), base::ThreadTaskRunnerHandle::Get())); | 347       false, std::move(pipe.handle1), base::ThreadTaskRunnerHandle::Get())); | 
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 557 | 558 | 
| 558   // The previous wait has dispatched the GetSender request message, therefore | 559   // The previous wait has dispatched the GetSender request message, therefore | 
| 559   // an associated interface has been set up on the pipe. It is not allowed to | 560   // an associated interface has been set up on the pipe. It is not allowed to | 
| 560   // wait or pause. | 561   // wait or pause. | 
| 561   EXPECT_TRUE(connection.binding()->HasAssociatedInterfaces()); | 562   EXPECT_TRUE(connection.binding()->HasAssociatedInterfaces()); | 
| 562 } | 563 } | 
| 563 | 564 | 
| 564 }  // namespace | 565 }  // namespace | 
| 565 }  // namespace test | 566 }  // namespace test | 
| 566 }  // namespace mojo | 567 }  // namespace mojo | 
| OLD | NEW | 
|---|