| Index: remoting/host/resizing_host_observer.cc
|
| diff --git a/remoting/host/resizing_host_observer.cc b/remoting/host/resizing_host_observer.cc
|
| index e1c96b5470093f6906d64ec075d718e1c10f6d14..7491eea6f759651f3b1565e048f98e5a0736b733 100644
|
| --- a/remoting/host/resizing_host_observer.cc
|
| +++ b/remoting/host/resizing_host_observer.cc
|
| @@ -4,42 +4,12 @@
|
|
|
| #include "remoting/host/resizing_host_observer.h"
|
|
|
| -#include <set>
|
| +#include <list>
|
|
|
| #include "base/logging.h"
|
| #include "remoting/host/desktop_resizer.h"
|
| -#include "remoting/host/host_status_monitor.h"
|
|
|
| -namespace remoting {
|
| -
|
| -ResizingHostObserver::ResizingHostObserver(
|
| - DesktopResizer* desktop_resizer,
|
| - base::WeakPtr<HostStatusMonitor> monitor)
|
| - : desktop_resizer_(desktop_resizer),
|
| - monitor_(monitor),
|
| - original_size_(SkISize::Make(0, 0)) {
|
| - monitor_->AddStatusObserver(this);
|
| -}
|
| -
|
| -ResizingHostObserver::~ResizingHostObserver() {
|
| - if (monitor_)
|
| - monitor_->RemoveStatusObserver(this);
|
| -}
|
| -
|
| -void ResizingHostObserver::OnClientAuthenticated(const std::string& jid) {
|
| - // This implementation assumes a single connected client, which is what the
|
| - // host currently supports
|
| - DCHECK(client_jid_.empty());
|
| - original_size_ = desktop_resizer_->GetCurrentSize();
|
| -}
|
| -
|
| -void ResizingHostObserver::OnClientDisconnected(const std::string& jid) {
|
| - if (!original_size_.isZero()) {
|
| - desktop_resizer_->RestoreSize(original_size_);
|
| - original_size_.set(0, 0);
|
| - }
|
| - client_jid_.clear();
|
| -}
|
| +namespace {
|
|
|
| class CandidateSize {
|
| public:
|
| @@ -123,25 +93,39 @@ class CandidateSize {
|
| SkISize size_;
|
| };
|
|
|
| +} // namespace
|
| +
|
| +namespace remoting {
|
| +
|
| +ResizingHostObserver::ResizingHostObserver(
|
| + scoped_ptr<DesktopResizer> desktop_resizer)
|
| + : desktop_resizer_(desktop_resizer.Pass()),
|
| + original_size_(desktop_resizer_->GetCurrentSize()) {
|
| +}
|
| +
|
| +ResizingHostObserver::~ResizingHostObserver() {
|
| + if (!original_size_.isZero())
|
| + desktop_resizer_->RestoreSize(original_size_);
|
| +}
|
| +
|
| void ResizingHostObserver::OnClientResolutionChanged(
|
| - const std::string& jid,
|
| - const SkISize& preferred_size,
|
| - const SkIPoint& dpi) {
|
| - if (preferred_size.isEmpty()) {
|
| + const SkIPoint& client_dpi,
|
| + const SkISize& client_size) {
|
| + if (client_size.isEmpty()) {
|
| return;
|
| }
|
|
|
| // If the implementation returns any sizes, pick the best one according to
|
| // the algorithm described in CandidateSize::IsBetterThen.
|
| std::list<SkISize> sizes =
|
| - desktop_resizer_->GetSupportedSizes(preferred_size);
|
| + desktop_resizer_->GetSupportedSizes(client_size);
|
| if (sizes.empty()) {
|
| return;
|
| }
|
| - CandidateSize best_size(sizes.front(), preferred_size);
|
| + CandidateSize best_size(sizes.front(), client_size);
|
| for (std::list<SkISize>::const_iterator i = ++sizes.begin();
|
| i != sizes.end(); ++i) {
|
| - CandidateSize candidate_size(*i, preferred_size);
|
| + CandidateSize candidate_size(*i, client_size);
|
| if (candidate_size.IsBetterThan(best_size)) {
|
| best_size = candidate_size;
|
| }
|
|
|