OLD | NEW |
---|---|
(Empty) | |
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 #ifndef CONTENT_BROWSER_TIME_ZONE_MONITOR_H_ | |
6 #define CONTENT_BROWSER_TIME_ZONE_MONITOR_H_ | |
7 | |
8 #include "base/basictypes.h" | |
9 #include "base/memory/scoped_ptr.h" | |
10 | |
11 namespace content { | |
12 | |
13 // TimeZoneMonitor watches the system time zone, and notifies renderers | |
14 // when it changes. Some renderer code caches the system time zone, so | |
15 // this notification is necessary to inform such code that cached | |
16 // timezone data may have become invalid. Due to sandboxing, it is not | |
17 // possible for renderer processes to monitor for system time zone | |
18 // changes themselves, so this must happen in the browser process. | |
19 // | |
20 // Sandboxing also may prevent renderer processes from reading the time | |
bulach
2014/04/29 08:33:44
question: is it because the renderers are calling
Mark Mentovai
2014/04/29 16:01:05
bulach wrote:
| |
21 // zone when it does change, so platforms may have to deal with this in | |
22 // platform-specific ways: | |
23 // - Mac uses a sandbox hole defined in content/renderer/renderer.sb. | |
24 // - Linux-based platforms use ProxyLocaltimeCallToBrowser in | |
25 // content/zygote/zygote_main_linux.cc and HandleLocaltime in | |
26 // content/browser/renderer_host/sandbox_ipc_linux.cc to override | |
27 // localtime in renderer processes with custom code that calls | |
28 // localtime in the browser process via Chrome IPC. | |
29 | |
30 class TimeZoneMonitor { | |
31 public: | |
32 // Returns a new TimeZoneMonitor object (likely a subclass) specific to the | |
33 // platform. | |
34 static scoped_ptr<TimeZoneMonitor> Create(); | |
35 | |
36 virtual ~TimeZoneMonitor(); | |
37 | |
38 protected: | |
39 TimeZoneMonitor(); | |
40 | |
41 // Loop over all renderers and notify them that the system time zone may | |
42 // have changed. | |
43 void NotifyRenderers(); | |
bulach
2014/04/29 08:33:44
nit: depending on the above, this would take the n
| |
44 | |
45 private: | |
46 DISALLOW_COPY_AND_ASSIGN(TimeZoneMonitor); | |
47 }; | |
48 | |
49 } // namespace content | |
50 | |
51 #endif // CONTENT_BROWSER_TIME_ZONE_MONITOR_H_ | |
OLD | NEW |