// 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 BASE_WIN_SCOPED_WINRT_INITIALIZER_H_
#define BASE_WIN_SCOPED_WINRT_INITIALIZER_H_

#include <objbase.h>

#include "base/base_export.h"
#include "base/threading/thread_checker.h"
#include "base/win/scoped_windows_thread_environment.h"

namespace base {
namespace win {

// Initializes the Windows Runtime in the constructor and uninitalizes the
// Windows Runtime in the destructor. As a side effect, COM is also initialized
// as an MTA in the constructor and correspondingly uninitialized in the
// destructor.
//
// Generally, you should only use this on Windows 8 or above. It is redundant
// to use ScopedComInitializer in conjunction with ScopedWinrtInitializer.
//
// WARNING: This should only be used once per thread, ideally scoped to a
// similar lifetime as the thread itself. You should not be using this in random
// utility functions that make Windows Runtime calls -- instead ensure these
// functions are running on a Windows Runtime supporting thread!
class BASE_EXPORT ScopedWinrtInitializer
    : public ScopedWindowsThreadEnvironment {
 public:
  ScopedWinrtInitializer();
  ~ScopedWinrtInitializer() override;

  // ScopedWindowsThreadEnvironment:
  bool Succeeded() const override;

 private:
  const HRESULT hr_;
  THREAD_CHECKER(thread_checker_);

  DISALLOW_COPY_AND_ASSIGN(ScopedWinrtInitializer);
};

}  // namespace win
}  // namespace base

#endif  // BASE_WIN_SCOPED_WINRT_INITIALIZER_H_
