chromium/chrome/browser/webshare/win/fake_data_writer_factory.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_BROWSER_WEBSHARE_WIN_FAKE_DATA_WRITER_FACTORY_H_
#define CHROME_BROWSER_WEBSHARE_WIN_FAKE_DATA_WRITER_FACTORY_H_

#include <windows.storage.streams.h>
#include <wrl/implements.h>

namespace webshare {

// Provides an implementation of IDataWriterFactory for use in GTests.
class __declspec(uuid("4A0022E7-D891-4B52-8736-77497F9FFE14"))
    FakeDataWriterFactory final
    : public Microsoft::WRL::RuntimeClass<
          Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::WinRtClassicComMix>,
          ABI::Windows::Storage::Streams::IDataWriterFactory> {
 public:
  FakeDataWriterFactory();
  FakeDataWriterFactory(const FakeDataWriterFactory&) = delete;
  FakeDataWriterFactory& operator=(const FakeDataWriterFactory&) = delete;
  ~FakeDataWriterFactory() final;

  // ABI::Windows::Storage::Streams::IDataWriterFactory:
  IFACEMETHODIMP CreateDataWriter(
      ABI::Windows::Storage::Streams::IOutputStream* outputStream,
      ABI::Windows::Storage::Streams::IDataWriter** data_writer) final;
};

}  // namespace webshare

#endif  // CHROME_BROWSER_WEBSHARE_WIN_FAKE_DATA_WRITER_FACTORY_H_