15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/browser/time_zone_monitor.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include <windows.h> 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/basictypes.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/gfx/win/singleton_hwnd.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace content { 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuclass TimeZoneMonitorWin : public TimeZoneMonitor, 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public gfx::SingletonHwnd::Observer { 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu public: 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu TimeZoneMonitorWin() : TimeZoneMonitor() { 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gfx::SingletonHwnd::GetInstance()->AddObserver(this); 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual ~TimeZoneMonitorWin() { 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu gfx::SingletonHwnd::GetInstance()->RemoveObserver(this); 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // gfx::SingletonHwnd::Observer implementation. 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu virtual void OnWndProc(HWND hwnd, 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu UINT message, 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu WPARAM wparam, 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu LPARAM lparam) OVERRIDE { 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (message != WM_TIMECHANGE) { 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return; 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NotifyRenderers(); 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private: 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DISALLOW_COPY_AND_ASSIGN(TimeZoneMonitorWin); 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// static 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuscoped_ptr<TimeZoneMonitor> TimeZoneMonitor::Create() { 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return scoped_ptr<TimeZoneMonitor>(new TimeZoneMonitorWin()); 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace content 47