chromium/chrome/browser/smart_card/smart_card_reader_tracker.cc

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/browser/smart_card/smart_card_reader_tracker.h"

SmartCardReaderTracker::ReaderInfo::ReaderInfo() = default;
SmartCardReaderTracker::ReaderInfo::ReaderInfo(ReaderInfo&& other) = default;
SmartCardReaderTracker::ReaderInfo::ReaderInfo(const ReaderInfo&) = default;
SmartCardReaderTracker::ReaderInfo::~ReaderInfo() = default;

SmartCardReaderTracker::ReaderInfo&
SmartCardReaderTracker::ReaderInfo::operator=(
    const SmartCardReaderTracker::ReaderInfo& other) = default;

bool SmartCardReaderTracker::ReaderInfo::operator==(const ReaderInfo& b) const =
    default;

SmartCardReaderTracker::ObserverList::ObserverList() = default;
SmartCardReaderTracker::ObserverList::~ObserverList() = default;

void SmartCardReaderTracker::ObserverList::AddObserverIfMissing(
    Observer* observer) {
  if (!observers_.HasObserver(observer)) {
    observers_.AddObserver(observer);
  }
}

void SmartCardReaderTracker::ObserverList::RemoveObserver(Observer* observer) {
  observers_.RemoveObserver(observer);
}

void SmartCardReaderTracker::ObserverList::NotifyReaderChanged(
    const ReaderInfo& reader_info) {
  for (Observer& obs : observers_) {
    obs.OnReaderChanged(reader_info);
  }
}

void SmartCardReaderTracker::ObserverList::NotifyReaderRemoved(
    const std::string& reader_name) {
  for (Observer& obs : observers_) {
    obs.OnReaderRemoved(reader_name);
  }
}

void SmartCardReaderTracker::ObserverList::NotifyError(
    device::mojom::SmartCardError error) {
  for (Observer& obs : observers_) {
    obs.OnError(error);
  }
}