blob: a62ed13a5e3561f557b768855bfe26110f9a1153 [file] [log] [blame]
// Copyright 2017 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.
#ifndef CHROME_TEST_BASE_TEST_SERVICE_MANAGER_LISTENER_H_
#define CHROME_TEST_BASE_TEST_SERVICE_MANAGER_LISTENER_H_
#include <cstdint>
#include <map>
#include <string>
#include <vector>
#include "base/callback_forward.h"
#include "base/macros.h"
#include "mojo/public/cpp/bindings/binding.h"
#include "services/service_manager/public/mojom/service_manager.mojom.h"
namespace service_manager {
class Identity;
}
// This class lets us wait for services to be started and tracks how many times
// a service was started.
class TestServiceManagerListener
: public service_manager::mojom::ServiceManagerListener {
public:
TestServiceManagerListener();
~TestServiceManagerListener() override;
// Must be called once before the other public methods can be used.
void Init();
void WaitUntilServiceStarted(const std::string& service_name);
uint32_t GetServiceStartCount(const std::string& service_name) const;
private:
// service_manager::mojom::ServiceManagerListener implementation:
void OnInit(std::vector<service_manager::mojom::RunningServiceInfoPtr>
running_services) override;
void OnServiceCreated(
service_manager::mojom::RunningServiceInfoPtr service) override;
void OnServiceStarted(const service_manager::Identity& identity,
uint32_t pid) override;
void OnServicePIDReceived(const service_manager::Identity& identity,
uint32_t pid) override;
void OnServiceFailedToStart(
const service_manager::Identity& identity) override;
void OnServiceStopped(const service_manager::Identity& identity) override;
base::Closure on_service_event_loop_closure_;
std::string service_name_;
std::map<std::string, uint32_t> service_start_counters_;
mojo::Binding<service_manager::mojom::ServiceManagerListener> binding_;
DISALLOW_COPY_AND_ASSIGN(TestServiceManagerListener);
};
#endif // CHROME_TEST_BASE_TEST_SERVICE_MANAGER_LISTENER_H_