Commit e7178d16 authored by Anton Vayvod's avatar Anton Vayvod Committed by Commit Bot

[Blink, PresentationAPI] Extract duplicate static getters for PresentationController

Preparing PresentationController to be used from modules/remoteplayback/

BUG=517102
TEST=run existing tests

Change-Id: I14f1c431eea6bbf4722f2568393c1bb5d8d45d85
Reviewed-on: https://chromium-review.googlesource.com/518682
Commit-Queue: Anton Vayvod <avayvod@chromium.org>
Reviewed-by: default avatarMounir Lamouri <mlamouri@chromium.org>
Cr-Commit-Position: refs/heads/master@{#476291}
parent d78c189f
...@@ -16,22 +16,6 @@ ...@@ -16,22 +16,6 @@
namespace blink { namespace blink {
namespace {
WebPresentationClient* PresentationClient(ExecutionContext* execution_context) {
if (!execution_context)
return nullptr;
DCHECK(execution_context->IsDocument());
Document* document = ToDocument(execution_context);
if (!document->GetFrame())
return nullptr;
PresentationController* controller =
PresentationController::From(*document->GetFrame());
return controller ? controller->Client() : nullptr;
}
} // anonymous namespace
// static // static
PresentationAvailability* PresentationAvailability::Take( PresentationAvailability* PresentationAvailability::Take(
PresentationAvailabilityProperty* resolver, PresentationAvailabilityProperty* resolver,
...@@ -118,7 +102,8 @@ void PresentationAvailability::SetState(State state) { ...@@ -118,7 +102,8 @@ void PresentationAvailability::SetState(State state) {
} }
void PresentationAvailability::UpdateListening() { void PresentationAvailability::UpdateListening() {
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (!client) if (!client)
return; return;
......
...@@ -32,19 +32,6 @@ namespace blink { ...@@ -32,19 +32,6 @@ namespace blink {
namespace { namespace {
// TODO(mlamouri): refactor in one common place.
WebPresentationClient* PresentationClient(ExecutionContext* execution_context) {
DCHECK(execution_context);
DCHECK(execution_context->IsDocument());
Document* document = ToDocument(execution_context);
if (!document->GetFrame())
return nullptr;
PresentationController* controller =
PresentationController::From(*document->GetFrame());
return controller ? controller->Client() : nullptr;
}
const AtomicString& ConnectionStateToString( const AtomicString& ConnectionStateToString(
WebPresentationConnectionState state) { WebPresentationConnectionState state) {
DEFINE_STATIC_LOCAL(const AtomicString, connecting_value, ("connecting")); DEFINE_STATIC_LOCAL(const AtomicString, connecting_value, ("connecting"));
...@@ -311,11 +298,12 @@ bool PresentationConnection::CanSendMessage(ExceptionState& exception_state) { ...@@ -311,11 +298,12 @@ bool PresentationConnection::CanSendMessage(ExceptionState& exception_state) {
} }
// The connection can send a message if there is a client available. // The connection can send a message if there is a client available.
return !!PresentationClient(GetExecutionContext()); return !!PresentationController::ClientFromContext(GetExecutionContext());
} }
void PresentationConnection::HandleMessageQueue() { void PresentationConnection::HandleMessageQueue() {
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (!client || !proxy_) if (!client || !proxy_)
return; return;
...@@ -402,7 +390,8 @@ void PresentationConnection::close() { ...@@ -402,7 +390,8 @@ void PresentationConnection::close() {
state_ != WebPresentationConnectionState::kConnected) { state_ != WebPresentationConnectionState::kConnected) {
return; return;
} }
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (client) if (client)
client->CloseConnection(url_, id_, proxy_.get()); client->CloseConnection(url_, id_, proxy_.get());
...@@ -412,7 +401,8 @@ void PresentationConnection::close() { ...@@ -412,7 +401,8 @@ void PresentationConnection::close() {
void PresentationConnection::terminate() { void PresentationConnection::terminate() {
if (state_ != WebPresentationConnectionState::kConnected) if (state_ != WebPresentationConnectionState::kConnected)
return; return;
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (client) if (client)
client->TerminatePresentation(url_, id_); client->TerminatePresentation(url_, id_);
...@@ -491,7 +481,8 @@ void PresentationConnection::DidFinishLoadingBlob(DOMArrayBuffer* buffer) { ...@@ -491,7 +481,8 @@ void PresentationConnection::DidFinishLoadingBlob(DOMArrayBuffer* buffer) {
DCHECK(buffer); DCHECK(buffer);
DCHECK(buffer->Buffer()); DCHECK(buffer->Buffer());
// Send the loaded blob immediately here and continue processing the queue. // Send the loaded blob immediately here and continue processing the queue.
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (client) { if (client) {
client->SendBlobData(url_, id_, static_cast<const uint8_t*>(buffer->Data()), client->SendBlobData(url_, id_, static_cast<const uint8_t*>(buffer->Data()),
buffer->ByteLength(), proxy_.get()); buffer->ByteLength(), proxy_.get());
......
...@@ -59,6 +59,28 @@ WebPresentationClient* PresentationController::Client() { ...@@ -59,6 +59,28 @@ WebPresentationClient* PresentationController::Client() {
return client_; return client_;
} }
// static
PresentationController* PresentationController::FromContext(
ExecutionContext* execution_context) {
if (!execution_context)
return nullptr;
DCHECK(execution_context->IsDocument());
Document* document = ToDocument(execution_context);
if (!document->GetFrame())
return nullptr;
return PresentationController::From(*document->GetFrame());
}
// static
WebPresentationClient* PresentationController::ClientFromContext(
ExecutionContext* execution_context) {
PresentationController* controller =
PresentationController::FromContext(execution_context);
return controller ? controller->Client() : nullptr;
}
DEFINE_TRACE(PresentationController) { DEFINE_TRACE(PresentationController) {
visitor->Trace(presentation_); visitor->Trace(presentation_);
visitor->Trace(connections_); visitor->Trace(connections_);
......
...@@ -40,6 +40,8 @@ class MODULES_EXPORT PresentationController final ...@@ -40,6 +40,8 @@ class MODULES_EXPORT PresentationController final
static void ProvideTo(LocalFrame&, WebPresentationClient*); static void ProvideTo(LocalFrame&, WebPresentationClient*);
WebPresentationClient* Client(); WebPresentationClient* Client();
static WebPresentationClient* ClientFromContext(ExecutionContext*);
static PresentationController* FromContext(ExecutionContext*);
// Implementation of Supplement. // Implementation of Supplement.
DECLARE_VIRTUAL_TRACE(); DECLARE_VIRTUAL_TRACE();
......
...@@ -28,23 +28,6 @@ namespace blink { ...@@ -28,23 +28,6 @@ namespace blink {
namespace { namespace {
// TODO(mlamouri): refactor in one common place.
PresentationController* GetPresentationController(
ExecutionContext* execution_context) {
DCHECK(execution_context);
Document* document = ToDocument(execution_context);
if (!document->GetFrame())
return nullptr;
return PresentationController::From(*document->GetFrame());
}
WebPresentationClient* PresentationClient(ExecutionContext* execution_context) {
PresentationController* controller =
GetPresentationController(execution_context);
return controller ? controller->Client() : nullptr;
}
Settings* GetSettings(ExecutionContext* execution_context) { Settings* GetSettings(ExecutionContext* execution_context) {
DCHECK(execution_context); DCHECK(execution_context);
...@@ -143,7 +126,8 @@ ScriptPromise PresentationRequest::start(ScriptState* script_state) { ...@@ -143,7 +126,8 @@ ScriptPromise PresentationRequest::start(ScriptState* script_state) {
kInvalidAccessError, kInvalidAccessError,
"PresentationRequest::start() requires user gesture.")); "PresentationRequest::start() requires user gesture."));
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (!client) if (!client)
return ScriptPromise::RejectWithDOMException( return ScriptPromise::RejectWithDOMException(
script_state, script_state,
...@@ -159,7 +143,8 @@ ScriptPromise PresentationRequest::start(ScriptState* script_state) { ...@@ -159,7 +143,8 @@ ScriptPromise PresentationRequest::start(ScriptState* script_state) {
ScriptPromise PresentationRequest::reconnect(ScriptState* script_state, ScriptPromise PresentationRequest::reconnect(ScriptState* script_state,
const String& id) { const String& id) {
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (!client) if (!client)
return ScriptPromise::RejectWithDOMException( return ScriptPromise::RejectWithDOMException(
script_state, script_state,
...@@ -170,7 +155,7 @@ ScriptPromise PresentationRequest::reconnect(ScriptState* script_state, ...@@ -170,7 +155,7 @@ ScriptPromise PresentationRequest::reconnect(ScriptState* script_state,
ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
PresentationController* controller = PresentationController* controller =
GetPresentationController(GetExecutionContext()); PresentationController::FromContext(GetExecutionContext());
DCHECK(controller); DCHECK(controller);
PresentationConnection* existing_connection = PresentationConnection* existing_connection =
...@@ -189,7 +174,8 @@ ScriptPromise PresentationRequest::reconnect(ScriptState* script_state, ...@@ -189,7 +174,8 @@ ScriptPromise PresentationRequest::reconnect(ScriptState* script_state,
} }
ScriptPromise PresentationRequest::getAvailability(ScriptState* script_state) { ScriptPromise PresentationRequest::getAvailability(ScriptState* script_state) {
WebPresentationClient* client = PresentationClient(GetExecutionContext()); WebPresentationClient* client =
PresentationController::ClientFromContext(GetExecutionContext());
if (!client) if (!client)
return ScriptPromise::RejectWithDOMException( return ScriptPromise::RejectWithDOMException(
script_state, script_state,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment