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. 4 5#include "ui/ozone/platform/dri/dri_window_delegate_manager.h" 6 7#include "ui/ozone/platform/dri/dri_window_delegate.h" 8 9namespace ui { 10 11DriWindowDelegateManager::DriWindowDelegateManager() { 12} 13 14DriWindowDelegateManager::~DriWindowDelegateManager() { 15 DCHECK(delegate_map_.empty()); 16} 17 18void 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."; 24} 25 26scoped_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 " 30 << widget; 31 return delegate.Pass(); 32} 33 34DriWindowDelegate* DriWindowDelegateManager::GetWindowDelegate( 35 gfx::AcceleratedWidget widget) { 36 WidgetToDelegateMap::iterator it = delegate_map_.find(widget); 37 if (it != delegate_map_.end()) 38 return it->second; 39 40 NOTREACHED() << "Attempting to get non-existing delegate for " << widget; 41 return NULL; 42} 43 44bool DriWindowDelegateManager::HasWindowDelegate( 45 gfx::AcceleratedWidget widget) { 46 return delegate_map_.find(widget) != delegate_map_.end(); 47} 48 49} // namespace ui 50