blob: 83d68a0f9026dc64ae3538e0c1b8aeace0dcc0b8 [file] [log] [blame]
// Copyright (c) 2012 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/chromeos/login/screen_manager.h"
#include <utility>
#include "base/memory/ptr_util.h"
#include "chrome/browser/chromeos/login/screens/base_screen.h"
namespace chromeos {
ScreenManager::ScreenManager() = default;
ScreenManager::~ScreenManager() = default;
void ScreenManager::Init(std::vector<std::unique_ptr<BaseScreen>> screens) {
for (auto&& screen : screens)
screens_[screen->screen_id()] = std::move(screen);
}
BaseScreen* ScreenManager::GetScreen(OobeScreen screen) {
auto iter = screens_.find(screen);
DCHECK(iter != screens_.end())
<< "Failed to find screen " << GetOobeScreenName(screen);
return iter->second.get();
}
bool ScreenManager::HasScreen(OobeScreen screen) {
return screens_.count(screen) > 0;
}
void ScreenManager::SetScreenForTesting(std::unique_ptr<BaseScreen> value) {
// Capture screen id to avoid using `value` after moving it; = is not a
// sequence point.
auto id = value->screen_id();
screens_[id] = std::move(value);
}
void ScreenManager::DeleteScreenForTesting(OobeScreen screen) {
screens_[screen] = nullptr;
}
} // namespace chromeos