blob: 4029d089f623f889fba9c5f51e4cae471f51085f [file] [log] [blame]
// Copyright 2016 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 UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_FACTORY_H_
#define UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_FACTORY_H_
#include <memory>
#include "ui/base/dragdrop/os_exchange_data.h"
#include "ui/base/ui_base_export.h"
namespace ui {
// Builds OSExchangeDataProviders. We need to be able to switch providers at
// runtime based on the configuration flags. If no factory is set,
// CreateProvider() will default to the current operating system's default.
class UI_BASE_EXPORT OSExchangeDataProviderFactory {
public:
class Factory {
public:
virtual std::unique_ptr<OSExchangeData::Provider> BuildProvider() = 0;
};
// Sets the factory which builds the providers.
static void SetFactory(Factory* factory);
// Returns the current factory and sets the factory to null.
static Factory* TakeFactory();
// Creates a Provider based on the current configuration.
static std::unique_ptr<OSExchangeData::Provider> CreateProvider();
};
} // namespace ui
#endif // UI_BASE_DRAGDROP_OS_EXCHANGE_DATA_PROVIDER_FACTORY_H_