| Index: base/message_loop/message_loop.cc | 
| diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc | 
| index dd1a393ab08633514df9d6d021a1be7ff4dbd23f..fc905a44f5f742aa1d60d9bac6a5a34105ed6784 100644 | 
| --- a/base/message_loop/message_loop.cc | 
| +++ b/base/message_loop/message_loop.cc | 
| @@ -519,6 +519,10 @@ void MessageLoop::ReloadWorkQueue() { | 
| incoming_task_queue_->ReloadWorkQueue(&work_queue_); | 
| } | 
|  | 
| +TaskQueue& MessageLoop::SelectNextWorkQueue() { | 
| +  return work_queue_; | 
| +} | 
| + | 
| void MessageLoop::ScheduleWork(bool was_empty) { | 
| // The Android UI message loop needs to get notified each time | 
| // a task is added to the incoming queue. | 
| @@ -560,13 +564,16 @@ bool MessageLoop::DoWork() { | 
|  | 
| for (;;) { | 
| ReloadWorkQueue(); | 
| -    if (work_queue_.empty()) | 
| + | 
| +    TaskQueue& current_work_queue = SelectNextWorkQueue(); | 
| + | 
| +    if (current_work_queue.empty()) | 
| break; | 
|  | 
| // Execute oldest task. | 
| do { | 
| -      PendingTask pending_task = work_queue_.front(); | 
| -      work_queue_.pop(); | 
| +      PendingTask pending_task = current_work_queue.front(); | 
| +      current_work_queue.pop(); | 
| if (!pending_task.delayed_run_time.is_null()) { | 
| AddToDelayedWorkQueue(pending_task); | 
| // If we changed the topmost task, then it is time to reschedule. | 
| @@ -576,7 +583,7 @@ bool MessageLoop::DoWork() { | 
| if (DeferOrRunPendingTask(pending_task)) | 
| return true; | 
| } | 
| -    } while (!work_queue_.empty()); | 
| +    } while (!current_work_queue.empty()); | 
| } | 
|  | 
| // Nothing happened. | 
|  |