blob: 069654d8e5b6a2951a9b5bcd38e8cb5c91df5f69 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/js/js_app_message_loop_observers.h"
namespace mojo {
namespace js {
JSAppMessageLoopObservers::JSAppMessageLoopObservers(v8::Isolate* isolate)
: isolate_(isolate),
task_observer_(this),
signal_observer_(this) {
base::MessageLoop::current()->AddTaskObserver(&task_observer_);
common::MessagePumpMojo::current()->AddObserver(&signal_observer_);
}
JSAppMessageLoopObservers::~JSAppMessageLoopObservers() {
base::MessageLoop::current()->RemoveTaskObserver(&task_observer_);
common::MessagePumpMojo::current()->RemoveObserver(&signal_observer_);
}
JSAppMessageLoopObservers::TaskObserver::TaskObserver(
JSAppMessageLoopObservers* loop_observers)
: loop_observers_(loop_observers) {
}
void JSAppMessageLoopObservers::TaskObserver::WillProcessTask(
const base::PendingTask& pending_task) {
}
void JSAppMessageLoopObservers::TaskObserver::DidProcessTask(
const base::PendingTask& pending_task) {
loop_observers_->RunMicrotasks();
}
JSAppMessageLoopObservers::SignalObserver::SignalObserver(
JSAppMessageLoopObservers* loop_observers)
: loop_observers_(loop_observers) {
}
void JSAppMessageLoopObservers::SignalObserver::WillSignalHandler() {
}
void JSAppMessageLoopObservers::SignalObserver::DidSignalHandler() {
loop_observers_->RunMicrotasks();
}
void JSAppMessageLoopObservers::RunMicrotasks() {
v8::Isolate::Scope scope(isolate_);
isolate_->RunMicrotasks();
}
} // namespace js
} // namespace mojo