Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(468)

Side by Side Diff: base/message_loop/message_loop.cc

Issue 242103007: NOT FOR REVIEW - prioritize fonts Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/message_loop/message_loop.h ('k') | content/child/child_resource_message_filter.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_loop/message_loop.h" 5 #include "base/message_loop/message_loop.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 incoming_task_queue_->ReloadWorkQueue(&work_queue_); 518 incoming_task_queue_->ReloadWorkQueue(&work_queue_);
519 } 519 }
520 520
521 void MessageLoop::ScheduleWork(bool was_empty) { 521 void MessageLoop::ScheduleWork(bool was_empty) {
522 // The Android UI message loop needs to get notified each time 522 // The Android UI message loop needs to get notified each time
523 // a task is added to the incoming queue. 523 // a task is added to the incoming queue.
524 if (was_empty || AlwaysNotifyPump(type_)) 524 if (was_empty || AlwaysNotifyPump(type_))
525 pump_->ScheduleWork(); 525 pump_->ScheduleWork();
526 } 526 }
527 527
528 void MessageLoop::ReloadAllWorkQueues() {
529 ReloadWorkQueue();
530 }
531
532 TaskQueue& MessageLoop::GetNextWorkQueue() {
533 return work_queue_;
534 }
535
536 bool MessageLoop::HasWorkAvailable() const {
537 return !work_queue_.empty();
538 }
539
528 //------------------------------------------------------------------------------ 540 //------------------------------------------------------------------------------
529 // Method and data for histogramming events and actions taken by each instance 541 // Method and data for histogramming events and actions taken by each instance
530 // on each thread. 542 // on each thread.
531 543
532 void MessageLoop::StartHistogrammer() { 544 void MessageLoop::StartHistogrammer() {
533 #if !defined(OS_NACL) // NaCl build has no metrics code. 545 #if !defined(OS_NACL) // NaCl build has no metrics code.
534 if (enable_histogrammer_ && !message_histogram_ 546 if (enable_histogrammer_ && !message_histogram_
535 && StatisticsRecorder::IsActive()) { 547 && StatisticsRecorder::IsActive()) {
536 DCHECK(!thread_name_.empty()); 548 DCHECK(!thread_name_.empty());
537 message_histogram_ = LinearHistogram::FactoryGetWithRangeDescription( 549 message_histogram_ = LinearHistogram::FactoryGetWithRangeDescription(
(...skipping 13 matching lines...) Expand all
551 #endif 563 #endif
552 } 564 }
553 565
554 bool MessageLoop::DoWork() { 566 bool MessageLoop::DoWork() {
555 if (!nestable_tasks_allowed_) { 567 if (!nestable_tasks_allowed_) {
556 // Task can't be executed right now. 568 // Task can't be executed right now.
557 return false; 569 return false;
558 } 570 }
559 571
560 for (;;) { 572 for (;;) {
561 ReloadWorkQueue(); 573 ReloadAllWorkQueues();
562 if (work_queue_.empty()) 574
575 if (!HasWorkAvailable())
563 break; 576 break;
564 577
578 TaskQueue& current_work_queue = GetNextWorkQueue();
579
565 // Execute oldest task. 580 // Execute oldest task.
566 do { 581 do {
567 PendingTask pending_task = work_queue_.front(); 582 PendingTask pending_task = current_work_queue.front();
568 work_queue_.pop(); 583 current_work_queue.pop();
569 if (!pending_task.delayed_run_time.is_null()) { 584 if (!pending_task.delayed_run_time.is_null()) {
570 AddToDelayedWorkQueue(pending_task); 585 AddToDelayedWorkQueue(pending_task);
571 // If we changed the topmost task, then it is time to reschedule. 586 // If we changed the topmost task, then it is time to reschedule.
572 if (delayed_work_queue_.top().task.Equals(pending_task.task)) 587 if (delayed_work_queue_.top().task.Equals(pending_task.task))
573 pump_->ScheduleDelayedWork(pending_task.delayed_run_time); 588 pump_->ScheduleDelayedWork(pending_task.delayed_run_time);
574 } else { 589 } else {
575 if (DeferOrRunPendingTask(pending_task)) 590 if (DeferOrRunPendingTask(pending_task))
576 return true; 591 return true;
577 } 592 }
578 } while (!work_queue_.empty()); 593 } while (!current_work_queue.empty());
579 } 594 }
580 595
581 // Nothing happened. 596 // Nothing happened.
582 return false; 597 return false;
583 } 598 }
584 599
585 bool MessageLoop::DoDelayedWork(TimeTicks* next_delayed_work_time) { 600 bool MessageLoop::DoDelayedWork(TimeTicks* next_delayed_work_time) {
586 if (!nestable_tasks_allowed_ || delayed_work_queue_.empty()) { 601 if (!nestable_tasks_allowed_ || delayed_work_queue_.empty()) {
587 recent_time_ = *next_delayed_work_time = TimeTicks(); 602 recent_time_ = *next_delayed_work_time = TimeTicks();
588 return false; 603 return false;
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 fd, 735 fd,
721 persistent, 736 persistent,
722 mode, 737 mode,
723 controller, 738 controller,
724 delegate); 739 delegate);
725 } 740 }
726 741
727 #endif 742 #endif
728 743
729 } // namespace base 744 } // namespace base
OLDNEW
« no previous file with comments | « base/message_loop/message_loop.h ('k') | content/child/child_resource_message_filter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698