// 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 "ash/test/tray_cast_test_api.h"

#include "ash/system/tray/system_tray.h"
#include "ui/views/view.h"

namespace ash {

TrayCastTestAPI::TrayCastTestAPI(TrayCast* tray_cast) : tray_cast_(tray_cast) {}

TrayCastTestAPI::~TrayCastTestAPI() {}

bool TrayCastTestAPI::IsTrayInitialized() const {
  return tray_cast_->default_ != nullptr;
}

bool TrayCastTestAPI::IsTrayVisible() const {
  return IsViewDrawn(TrayCast::TRAY_VIEW);
}

bool TrayCastTestAPI::IsTrayCastViewVisible() const {
  return IsViewDrawn(TrayCast::CAST_VIEW);
}

bool TrayCastTestAPI::IsTraySelectViewVisible() const {
  return IsViewDrawn(TrayCast::SELECT_VIEW);
}

void TrayCastTestAPI::StartCast(const std::string& receiver_id) {
  return tray_cast_->StartCastForTest(receiver_id);
}

void TrayCastTestAPI::StopCast() {
  return tray_cast_->StopCastForTest();
}

void TrayCastTestAPI::OnCastingSessionStartedOrStopped(bool is_casting) {
  tray_cast_->OnCastingSessionStartedOrStopped(is_casting);
}

bool TrayCastTestAPI::IsViewDrawn(TrayCast::ChildViewId id) const {
  const views::View* view = tray_cast_->GetDefaultView()->GetViewByID(id);
  return view != nullptr && view->IsDrawn();
}

}  // namespace ash