InstallMissingMediaPluginsPermissionRequest.cpp [plain text]
#include "config.h"
#include "InstallMissingMediaPluginsPermissionRequest.h"
#if ENABLE(VIDEO) && USE(GSTREAMER)
#include "WebPageMessages.h"
#include "WebPageProxy.h"
#include <wtf/text/CString.h>
namespace WebKit {
InstallMissingMediaPluginsPermissionRequest::InstallMissingMediaPluginsPermissionRequest(WebPageProxy& page, const String& details, const String& description)
: m_page(&page)
, m_details(details)
, m_description(description)
{
}
InstallMissingMediaPluginsPermissionRequest::~InstallMissingMediaPluginsPermissionRequest()
{
}
void InstallMissingMediaPluginsPermissionRequest::allow(GUniquePtr<GstInstallPluginsContext>&& context)
{
if (!m_page->isValid())
return;
CString detail = m_details.utf8();
const char* detailArray[2] = { detail.data(), nullptr };
ref();
GstInstallPluginsReturn result = gst_install_plugins_async(detailArray, context.get(), [](GstInstallPluginsReturn result, gpointer userData) {
RefPtr<InstallMissingMediaPluginsPermissionRequest> request = adoptRef(static_cast<InstallMissingMediaPluginsPermissionRequest*>(userData));
request->didEndRequestInstallMissingMediaPlugins(static_cast<uint32_t>(result));
}, this);
if (result != GST_INSTALL_PLUGINS_STARTED_OK) {
deref();
didEndRequestInstallMissingMediaPlugins(static_cast<uint32_t>(result));
WTFLogAlways("Missing GStreamer Plugin: %s\n", detail.data());
}
}
void InstallMissingMediaPluginsPermissionRequest::deny()
{
didEndRequestInstallMissingMediaPlugins(static_cast<uint32_t>(GST_INSTALL_PLUGINS_USER_ABORT));
}
void InstallMissingMediaPluginsPermissionRequest::didEndRequestInstallMissingMediaPlugins(uint32_t result)
{
if (!m_page->isValid())
return;
m_page->send(Messages::WebPage::DidEndRequestInstallMissingMediaPlugins(result));
}
}
#endif // ENABLE(VIDEO) && USE(GSTREAMER)