dri_window_delegate_manager.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/ozone/platform/dri/dri_window_delegate_manager.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "ui/ozone/platform/dri/dri_window_delegate.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace ui {
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDriWindowDelegateManager::DriWindowDelegateManager() {
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDriWindowDelegateManager::~DriWindowDelegateManager() {
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DCHECK(delegate_map_.empty());
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid DriWindowDelegateManager::AddWindowDelegate(
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    gfx::AcceleratedWidget widget,
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    scoped_ptr<DriWindowDelegate> delegate) {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  std::pair<WidgetToDelegateMap::iterator, bool> result =
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      delegate_map_.add(widget, delegate.Pass());
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DCHECK(result.second) << "Delegate already added.";
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciscoped_ptr<DriWindowDelegate> DriWindowDelegateManager::RemoveWindowDelegate(
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    gfx::AcceleratedWidget widget) {
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_ptr<DriWindowDelegate> delegate = delegate_map_.take_and_erase(widget);
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DCHECK(delegate) << "Attempting to remove non-existing delegate for "
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                   << widget;
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return delegate.Pass();
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciDriWindowDelegate* DriWindowDelegateManager::GetWindowDelegate(
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    gfx::AcceleratedWidget widget) {
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  WidgetToDelegateMap::iterator it = delegate_map_.find(widget);
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (it != delegate_map_.end())
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return it->second;
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  NOTREACHED() << "Attempting to get non-existing delegate for " << widget;
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return NULL;
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool DriWindowDelegateManager::HasWindowDelegate(
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    gfx::AcceleratedWidget widget) {
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return delegate_map_.find(widget) != delegate_map_.end();
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace ui
50