blob: 3269a5055b563ed3ff4222f415a05404e6ef0cf8 [file] [log] [blame]
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/media_router/browser/presentation/presentation_media_sinks_observer.h"
#include "components/media_router/browser/media_router.h"
#include "components/media_router/common/media_source.h"
#include "content/public/browser/presentation_screen_availability_listener.h"
namespace media_router {
PresentationMediaSinksObserver::PresentationMediaSinksObserver(
MediaRouter* router,
content::PresentationScreenAvailabilityListener* listener,
const MediaSource& source,
const url::Origin& origin)
: MediaSinksObserver(router, source, origin),
listener_(listener),
previous_availability_(blink::mojom::ScreenAvailability::UNKNOWN) {
DCHECK(router);
DCHECK(listener_);
}
PresentationMediaSinksObserver::~PresentationMediaSinksObserver() = default;
void PresentationMediaSinksObserver::OnSinksReceived(
const std::vector<MediaSink>& result) {
blink::mojom::ScreenAvailability current_availability =
result.empty() ? blink::mojom::ScreenAvailability::UNAVAILABLE
: blink::mojom::ScreenAvailability::AVAILABLE;
// Don't send if new result is same as previous.
if (previous_availability_ == current_availability) {
return;
}
listener_->OnScreenAvailabilityChanged(current_availability);
previous_availability_ = current_availability;
}
} // namespace media_router