UserMediaPermissionCheck.cpp [plain text]
#include "config.h"
#include "UserMediaPermissionCheck.h"
#if ENABLE(MEDIA_STREAM)
#include "Document.h"
#include "ExceptionCode.h"
#include "Frame.h"
#include "JSMediaDeviceInfo.h"
#include "MainFrame.h"
#include "RealtimeMediaSourceCenter.h"
#include "SecurityOrigin.h"
#include "UserMediaController.h"
namespace WebCore {
Ref<UserMediaPermissionCheck> UserMediaPermissionCheck::create(Document& document, UserMediaPermissionCheckClient& client)
{
return adoptRef(*new UserMediaPermissionCheck(document, client));
}
UserMediaPermissionCheck::UserMediaPermissionCheck(ScriptExecutionContext& context, UserMediaPermissionCheckClient& client)
: ContextDestructionObserver(&context)
, m_client(&client)
{
}
UserMediaPermissionCheck::~UserMediaPermissionCheck()
{
}
SecurityOrigin* UserMediaPermissionCheck::userMediaDocumentOrigin() const
{
if (m_scriptExecutionContext)
return m_scriptExecutionContext->securityOrigin();
return nullptr;
}
SecurityOrigin* UserMediaPermissionCheck::topLevelDocumentOrigin() const
{
if (!m_scriptExecutionContext)
return nullptr;
if (Frame* frame = downcast<Document>(*scriptExecutionContext()).frame()) {
if (frame->isMainFrame())
return nullptr;
}
return m_scriptExecutionContext->topOrigin();
}
void UserMediaPermissionCheck::contextDestroyed()
{
ContextDestructionObserver::contextDestroyed();
}
void UserMediaPermissionCheck::start()
{
ASSERT(scriptExecutionContext());
auto& document = downcast<Document>(*scriptExecutionContext());
UserMediaController* controller = UserMediaController::from(document.page());
if (!controller)
return;
controller->checkUserMediaPermission(*this);
}
void UserMediaPermissionCheck::setUserMediaAccessInfo(const String& mediaDeviceIdentifierHashSalt, bool hasPersistentPermission)
{
m_hasPersistentPermission = hasPersistentPermission;
m_mediaDeviceIdentifierHashSalt = mediaDeviceIdentifierHashSalt;
if (m_client)
m_client->didCompletePermissionCheck(m_mediaDeviceIdentifierHashSalt, m_hasPersistentPermission);
}
}
#endif // ENABLE(MEDIA_STREAM)