blob: 809eddde30e78373891078ca3dc1ee6c27106898 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/media/router/presentation_media_sinks_observer.h"
#include "chrome/browser/media/router/media_router.h"
#include "chrome/browser/media/router/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)
: MediaSinksObserver(router, source),
listener_(listener),
previous_availablity_(UNKNOWN) {
DCHECK(router);
DCHECK(listener_);
DCHECK(!source.Empty());
}
PresentationMediaSinksObserver::~PresentationMediaSinksObserver() {
}
void PresentationMediaSinksObserver::OnSinksReceived(
const std::vector<MediaSink>& result) {
Availability current_availability = result.empty() ? UNAVAILABLE : AVAILABLE;
DVLOG(1) << "PresentationMediaSinksObserver::OnSinksReceived: "
<< source().ToString() << " "
<< (result.empty() ? "unavailable" : "available");
// Don't send if new result is same as previous.
if (previous_availablity_ != current_availability)
listener_->OnScreenAvailabilityChanged(current_availability == AVAILABLE);
previous_availablity_ = current_availability;
}
} // namespace media_router
|