OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "base/message_pump_glib.h" | 5 #include "base/message_pump_glib.h" |
6 | 6 |
7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
8 #include <math.h> | 8 #include <math.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 } else { | 323 } else { |
324 injector_->AddEvent( | 324 injector_->AddEvent( |
325 0, NewRunnableMethod(this, &ConcurrentHelper::FromEvent)); | 325 0, NewRunnableMethod(this, &ConcurrentHelper::FromEvent)); |
326 } | 326 } |
327 } | 327 } |
328 | 328 |
329 int event_count() const { return event_count_; } | 329 int event_count() const { return event_count_; } |
330 int task_count() const { return task_count_; } | 330 int task_count() const { return task_count_; } |
331 | 331 |
332 private: | 332 private: |
| 333 friend class base::RefCounted<ConcurrentHelper>; |
| 334 |
| 335 ~ConcurrentHelper() {} |
| 336 |
333 static const int kStartingEventCount = 20; | 337 static const int kStartingEventCount = 20; |
334 static const int kStartingTaskCount = 20; | 338 static const int kStartingTaskCount = 20; |
335 | 339 |
336 EventInjector* injector_; | 340 EventInjector* injector_; |
337 int event_count_; | 341 int event_count_; |
338 int task_count_; | 342 int task_count_; |
339 }; | 343 }; |
340 | 344 |
341 } // namespace | 345 } // namespace |
342 | 346 |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
448 | 452 |
449 void Quit() { | 453 void Quit() { |
450 quit_ = true; | 454 quit_ = true; |
451 } | 455 } |
452 | 456 |
453 void Reset() { | 457 void Reset() { |
454 quit_ = false; | 458 quit_ = false; |
455 } | 459 } |
456 | 460 |
457 private: | 461 private: |
| 462 friend class base::RefCounted<GLibLoopRunner>; |
| 463 |
| 464 ~GLibLoopRunner() {} |
| 465 |
458 bool quit_; | 466 bool quit_; |
459 }; | 467 }; |
460 | 468 |
461 void TestGLibLoopInternal(EventInjector* injector) { | 469 void TestGLibLoopInternal(EventInjector* injector) { |
462 // Allow tasks to be processed from 'native' event loops. | 470 // Allow tasks to be processed from 'native' event loops. |
463 MessageLoop::current()->SetNestableTasksAllowed(true); | 471 MessageLoop::current()->SetNestableTasksAllowed(true); |
464 scoped_refptr<GLibLoopRunner> runner = new GLibLoopRunner(); | 472 scoped_refptr<GLibLoopRunner> runner = new GLibLoopRunner(); |
465 | 473 |
466 int task_count = 0; | 474 int task_count = 0; |
467 // Add a couple of dummy events | 475 // Add a couple of dummy events |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 | 542 |
535 TEST_F(MessagePumpGLibTest, TestGtkLoop) { | 543 TEST_F(MessagePumpGLibTest, TestGtkLoop) { |
536 // Tests that events and posted tasks are correctly exectuted if the message | 544 // Tests that events and posted tasks are correctly exectuted if the message |
537 // loop is not run by MessageLoop::Run() but by a straight Gtk loop. | 545 // loop is not run by MessageLoop::Run() but by a straight Gtk loop. |
538 // Note that in this case we don't make strong guarantees about niceness | 546 // Note that in this case we don't make strong guarantees about niceness |
539 // between events and posted tasks. | 547 // between events and posted tasks. |
540 loop()->PostTask(FROM_HERE, | 548 loop()->PostTask(FROM_HERE, |
541 NewRunnableFunction(TestGtkLoopInternal, injector())); | 549 NewRunnableFunction(TestGtkLoopInternal, injector())); |
542 loop()->Run(); | 550 loop()->Run(); |
543 } | 551 } |
OLD | NEW |