chromium/chrome/credential_provider/extension/user_context_enumerator.h

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

#ifndef CHROME_CREDENTIAL_PROVIDER_EXTENSION_USER_CONTEXT_ENUMERATOR_H_
#define CHROME_CREDENTIAL_PROVIDER_EXTENSION_USER_CONTEXT_ENUMERATOR_H_

#include "base/win/windows_types.h"
#include "chrome/credential_provider/extension/task.h"

namespace credential_provider {
namespace extension {

// Provides utility method to enumerate associated GCPW users.
class UserContextEnumerator {
 public:
  // Returns an instance of UserContextEnumerator.
  static UserContextEnumerator* Get();

  // Performs the given |task| for every GCPW users on the device.
  HRESULT PerformTask(const std::string& task_name, Task& task);

 private:
  UserContextEnumerator();
  virtual ~UserContextEnumerator();

  // Returns the storage used for the instance pointer.
  static UserContextEnumerator** GetInstanceStorage();
};

}  // namespace extension

}  // namespace credential_provider

#endif  // CHROME_CREDENTIAL_PROVIDER_EXTENSION_USER_CONTEXT_ENUMERATOR_H_