blob: ffbc4ba6ab2dc47edc95c632b6f111ca78f1e8c8 [file] [log] [blame]
// Copyright 2014 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 "ui/ozone/platform/dri/dri_window_delegate_manager.h"
#include "ui/ozone/platform/dri/dri_window_delegate.h"
namespace ui {
DriWindowDelegateManager::DriWindowDelegateManager() {
}
DriWindowDelegateManager::~DriWindowDelegateManager() {
DCHECK(delegate_map_.empty());
}
void DriWindowDelegateManager::AddWindowDelegate(
gfx::AcceleratedWidget widget,
scoped_ptr<DriWindowDelegate> delegate) {
std::pair<WidgetToDelegateMap::iterator, bool> result =
delegate_map_.add(widget, delegate.Pass());
DCHECK(result.second) << "Delegate already added.";
}
scoped_ptr<DriWindowDelegate> DriWindowDelegateManager::RemoveWindowDelegate(
gfx::AcceleratedWidget widget) {
scoped_ptr<DriWindowDelegate> delegate = delegate_map_.take_and_erase(widget);
DCHECK(delegate) << "Attempting to remove non-existing delegate for "
<< widget;
return delegate.Pass();
}
DriWindowDelegate* DriWindowDelegateManager::GetWindowDelegate(
gfx::AcceleratedWidget widget) {
WidgetToDelegateMap::iterator it = delegate_map_.find(widget);
if (it != delegate_map_.end())
return it->second;
NOTREACHED() << "Attempting to get non-existing delegate for " << widget;
return NULL;
}
bool DriWindowDelegateManager::HasWindowDelegate(
gfx::AcceleratedWidget widget) {
return delegate_map_.find(widget) != delegate_map_.end();
}
} // namespace ui