1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "ui/ozone/platform/dri/dri_window_delegate_manager.h"
7 #include "ui/ozone/platform/dri/dri_window_delegate.h"
11 DriWindowDelegateManager::DriWindowDelegateManager() {
14 DriWindowDelegateManager::~DriWindowDelegateManager() {
15 DCHECK(delegate_map_
.empty());
18 void DriWindowDelegateManager::AddWindowDelegate(
19 gfx::AcceleratedWidget widget
,
20 scoped_ptr
<DriWindowDelegate
> delegate
) {
21 std::pair
<WidgetToDelegateMap::iterator
, bool> result
=
22 delegate_map_
.add(widget
, delegate
.Pass());
23 DCHECK(result
.second
) << "Delegate already added.";
26 scoped_ptr
<DriWindowDelegate
> DriWindowDelegateManager::RemoveWindowDelegate(
27 gfx::AcceleratedWidget widget
) {
28 scoped_ptr
<DriWindowDelegate
> delegate
= delegate_map_
.take_and_erase(widget
);
29 DCHECK(delegate
) << "Attempting to remove non-existing delegate for "
31 return delegate
.Pass();
34 DriWindowDelegate
* DriWindowDelegateManager::GetWindowDelegate(
35 gfx::AcceleratedWidget widget
) {
36 WidgetToDelegateMap::iterator it
= delegate_map_
.find(widget
);
37 if (it
!= delegate_map_
.end())
40 NOTREACHED() << "Attempting to get non-existing delegate for " << widget
;