Commit ab7e4e69 authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Lazily create UserMediaController

This CL addressed guidou's remark on [1], that
was accidentally left off when splitting the CL into
smaller pieces.

[1] https://crrev.com/c/1757490/4/third_party/blink/renderer/modules/modules_initializer.cc#185

BUG=704136
R=guidou@chromium.org, haraken@chromium.org

Change-Id: Ie46cc5eeb9963dc54538d122b0c922a5ec5c4e3c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1760407Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Kentaro Hara <haraken@chromium.org>
Auto-Submit: Antonio Gomes <tonikitoo@igalia.com>
Cr-Commit-Position: refs/heads/master@{#688302}
parent b2a1c8fe
......@@ -29,27 +29,33 @@ namespace blink {
const char UserMediaController::kSupplementName[] = "UserMediaController";
UserMediaController::UserMediaController(
LocalFrame& frame,
std::unique_ptr<UserMediaClient> client)
UserMediaController::UserMediaController(LocalFrame& frame)
: Supplement<LocalFrame>(frame),
ContextLifecycleObserver(frame.GetDocument()),
client_(std::move(client)) {}
ContextLifecycleObserver(frame.GetDocument()) {}
void UserMediaController::Trace(blink::Visitor* visitor) {
Supplement<LocalFrame>::Trace(visitor);
ContextLifecycleObserver::Trace(visitor);
}
UserMediaClient* UserMediaController::Client() {
if (!client_) {
client_ = std::make_unique<UserMediaClient>(
GetFrame(), GetFrame()->GetTaskRunner(TaskType::kInternalMedia));
}
return client_.get();
}
void UserMediaController::ContextDestroyed(ExecutionContext*) {
if (!client_)
return;
client_->ContextDestroyed();
}
void ProvideUserMediaTo(LocalFrame& frame,
std::unique_ptr<UserMediaClient> client) {
void ProvideUserMediaTo(LocalFrame& frame) {
UserMediaController::ProvideTo(
frame,
MakeGarbageCollected<UserMediaController>(frame, std::move(client)));
frame, MakeGarbageCollected<UserMediaController>(frame));
}
} // namespace blink
......@@ -46,10 +46,10 @@ class UserMediaController final
public:
static const char kSupplementName[];
UserMediaController(LocalFrame&, std::unique_ptr<UserMediaClient>);
UserMediaController(LocalFrame&);
void Trace(blink::Visitor*) override;
UserMediaClient* Client() const { return client_.get(); }
UserMediaClient* Client();
void RequestUserMedia(UserMediaRequest*);
void CancelUserMediaRequest(UserMediaRequest*);
......@@ -70,30 +70,29 @@ class UserMediaController final
};
inline void UserMediaController::RequestUserMedia(UserMediaRequest* request) {
client_->RequestUserMedia(request);
Client()->RequestUserMedia(request);
has_requested_user_media_ = true;
}
inline void UserMediaController::CancelUserMediaRequest(
UserMediaRequest* request) {
client_->CancelUserMediaRequest(WebUserMediaRequest(request));
Client()->CancelUserMediaRequest(WebUserMediaRequest(request));
}
inline void UserMediaController::ApplyConstraints(
ApplyConstraintsRequest* request) {
client_->ApplyConstraints(WebApplyConstraintsRequest(request));
Client()->ApplyConstraints(WebApplyConstraintsRequest(request));
}
inline void UserMediaController::StopTrack(MediaStreamComponent* track) {
client_->StopTrack(WebMediaStreamTrack(track));
Client()->StopTrack(WebMediaStreamTrack(track));
}
inline bool UserMediaController::HasRequestedUserMedia() {
return has_requested_user_media_;
}
MODULES_EXPORT void ProvideUserMediaTo(LocalFrame&,
std::unique_ptr<UserMediaClient>);
MODULES_EXPORT void ProvideUserMediaTo(LocalFrame&);
} // namespace blink
......
......@@ -181,9 +181,7 @@ void ModulesInitializer::InstallSupplements(LocalFrame& frame) const {
DCHECK(client);
ProvidePushMessagingClientTo(
frame, MakeGarbageCollected<PushMessagingClient>(frame));
ProvideUserMediaTo(
frame, std::make_unique<UserMediaClient>(
&frame, frame.GetTaskRunner(TaskType::kInternalMedia)));
ProvideUserMediaTo(frame);
ProvideLocalFileSystemTo(frame, std::make_unique<LocalFileSystemClient>());
ScreenOrientationControllerImpl::ProvideTo(frame);
......
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