mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 06:16:30 +03:00
55 lines
1.7 KiB
C++
55 lines
1.7 KiB
C++
// 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_CORE_WINRT_UTIL_H_
|
|
#define BASE_WIN_CORE_WINRT_UTIL_H_
|
|
|
|
#include <hstring.h>
|
|
#include <inspectable.h>
|
|
#include <roapi.h>
|
|
#include <windef.h>
|
|
|
|
#include "base/base_export.h"
|
|
#include "base/strings/string16.h"
|
|
#include "base/win/scoped_hstring.h"
|
|
|
|
namespace base {
|
|
namespace win {
|
|
|
|
// Provides access to Core WinRT functions which may not be available on
|
|
// Windows 7. Loads functions dynamically at runtime to prevent library
|
|
// dependencies.
|
|
|
|
BASE_EXPORT bool ResolveCoreWinRTDelayload();
|
|
|
|
// The following stubs are provided for when component build is enabled, in
|
|
// order to avoid the propagation of delay-loading CoreWinRT to other modules.
|
|
|
|
BASE_EXPORT HRESULT RoInitialize(RO_INIT_TYPE init_type);
|
|
|
|
BASE_EXPORT void RoUninitialize();
|
|
|
|
BASE_EXPORT HRESULT RoGetActivationFactory(HSTRING class_id,
|
|
const IID& iid,
|
|
void** out_factory);
|
|
|
|
BASE_EXPORT HRESULT RoActivateInstance(HSTRING class_id,
|
|
IInspectable** instance);
|
|
|
|
// Retrieves an activation factory for the type specified.
|
|
template <typename InterfaceType, char16 const* runtime_class_id>
|
|
HRESULT GetActivationFactory(InterfaceType** factory) {
|
|
ScopedHString class_id_hstring = ScopedHString::Create(runtime_class_id);
|
|
if (!class_id_hstring.is_valid())
|
|
return E_FAIL;
|
|
|
|
return base::win::RoGetActivationFactory(class_id_hstring.get(),
|
|
IID_PPV_ARGS(factory));
|
|
}
|
|
|
|
} // namespace win
|
|
} // namespace base
|
|
|
|
#endif // BASE_WIN_CORE_WINRT_UTIL_H_
|