// Copyright 2015 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/gfx/win/singleton_hwnd_observer.h" #include "ui/gfx/win/singleton_hwnd.h" namespace gfx { SingletonHwndObserver::SingletonHwndObserver(const WndProc& wnd_proc) : wnd_proc_(wnd_proc) { DCHECK(!wnd_proc.is_null()); SingletonHwnd::GetInstance()->AddObserver(this); } SingletonHwndObserver::~SingletonHwndObserver() { ClearWndProc(); } void SingletonHwndObserver::ClearWndProc() { if (!wnd_proc_.is_null()) { SingletonHwnd::GetInstance()->RemoveObserver(this); wnd_proc_.Reset(); } } void SingletonHwndObserver::OnWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { wnd_proc_.Run(hwnd, message, wparam, lparam); } } // namespace gfx