blob: 68efad9723626ceb95ac55c2a16e0e1ec7d73e83 [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/browser/test_event_router_observer.h"
#include <memory>
#include "base/run_loop.h"
namespace extensions {
TestEventRouterObserver::TestEventRouterObserver(EventRouter* event_router) {
observation_.Observe(event_router);
}
TestEventRouterObserver::~TestEventRouterObserver() = default;
void TestEventRouterObserver::ClearEvents() {
events_.clear();
dispatched_events_.clear();
all_events_.clear();
all_dispatched_events_.clear();
}
void TestEventRouterObserver::WaitForEventWithName(const std::string& name) {
while (!base::Contains(events_, name)) {
// Create a new `RunLoop` since reuse is not supported.
run_loop_ = std::make_unique<base::RunLoop>();
run_loop_->Run();
run_loop_.reset();
}
}
void TestEventRouterObserver::OnWillDispatchEvent(const Event& event) {
CHECK(!event.event_name.empty());
events_[event.event_name] = event.DeepCopy();
all_events_.push_back(event.DeepCopy());
if (run_loop_) {
run_loop_->Quit();
}
}
void TestEventRouterObserver::OnDidDispatchEventToProcess(const Event& event,
int process_id) {
CHECK(!event.event_name.empty());
dispatched_events_[event.event_name] = event.DeepCopy();
all_dispatched_events_.push_back(event.DeepCopy());
}
} // namespace extensions