1// Copyright (c) 2011 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#ifndef CHROME_COMMON_NATIVE_WINDOW_NOTIFICATION_SOURCE_H_
6#define CHROME_COMMON_NATIVE_WINDOW_NOTIFICATION_SOURCE_H_
7#pragma once
8
9#include "content/common/notification_source.h"
10#include "ui/gfx/native_widget_types.h"
11
12// Specialization of the Source class for native windows.  On Windows, these are
13// HWNDs rather than pointers, and since the Source class expects a pointer
14// type, this is necessary.  On Mac/Linux, these are pointers, so this is
15// unnecessary but harmless.
16template<>
17class Source<gfx::NativeWindow> : public NotificationSource {
18 public:
19  explicit Source(gfx::NativeWindow wnd) : NotificationSource(wnd) {}
20
21  explicit Source(const NotificationSource& other)
22      : NotificationSource(other) {}
23
24  gfx::NativeWindow operator->() const { return ptr(); }
25  gfx::NativeWindow ptr() const {
26    return static_cast<gfx::NativeWindow>(const_cast<void*>(ptr_));
27  }
28};
29
30#endif  // CHROME_COMMON_NATIVE_WINDOW_NOTIFICATION_SOURCE_H_
31