OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Helper class used to find the RenderViewObservers for a given RenderView. | 5 // Helper class used to find the RenderFrameObservers for a given RenderFrame. |
6 // | 6 // |
7 // Example usage: | 7 // Example usage: |
8 // | 8 // |
9 // class MyRVO : public RenderViewObserver, | 9 // class MyRFO : public RenderFrameObserver, |
10 // public RenderViewObserverTracker<MyRVO> { | 10 // public RenderFrameObserverTracker<MyRFO> { |
11 // ... | 11 // ... |
12 // }; | 12 // }; |
13 // | 13 // |
14 // MyRVO::MyRVO(RenderView* render_view) | 14 // MyRFO::MyRFO(RenderFrame* render_frame) |
15 // : RenderViewObserver(render_view), | 15 // : RenderFrameObserver(render_frame), |
16 // RenderViewObserverTracker<MyRVO>(render_view) { | 16 // RenderFrameObserverTracker<MyRFO>(render_frame) { |
17 // ... | 17 // ... |
18 // } | 18 // } |
19 // | 19 // |
20 // void SomeFunction(RenderView* rv) { | 20 // void SomeFunction(RenderFrame* rf) { |
21 // MyRVO* my_rvo = new MyRVO(rv); | 21 // MyRFO* my_rfo = new MyRFO(rf); |
22 // MyRVO* my_rvo_tracked = MyRVO::Get(rv); | 22 // MyRFO* my_rfo_tracked = MyRFO::Get(rf); |
23 // // my_rvo == my_rvo_tracked | 23 // // my_rfo == my_rfo_tracked |
24 // } | 24 // } |
25 | 25 |
26 #ifndef CONTENT_PUBLIC_RENDERER_RENDER_VIEW_OBSERVER_TRACKER_H_ | 26 #ifndef CONTENT_PUBLIC_RENDERER_RENDER_FRAME_OBSERVER_TRACKER_H_ |
27 #define CONTENT_PUBLIC_RENDERER_RENDER_VIEW_OBSERVER_TRACKER_H_ | 27 #define CONTENT_PUBLIC_RENDERER_RENDER_FRAME_OBSERVER_TRACKER_H_ |
28 | 28 |
29 #include <map> | 29 #include <map> |
30 | 30 |
31 #include "base/lazy_instance.h" | 31 #include "base/lazy_instance.h" |
32 | 32 |
33 namespace content { | 33 namespace content { |
34 | 34 |
35 class RenderView; | 35 class RenderFrame; |
36 | 36 |
37 template <class T> | 37 template <class T> |
38 class RenderViewObserverTracker { | 38 class RenderFrameObserverTracker { |
39 public: | 39 public: |
40 static T* Get(const RenderView* render_view) { | 40 static T* Get(const RenderFrame* render_frame) { |
41 return render_view_map_.Get()[render_view]; | 41 return render_frame_map_.Get()[render_frame]; |
42 } | 42 } |
43 | 43 |
44 explicit RenderViewObserverTracker(const RenderView* render_view) | 44 explicit RenderFrameObserverTracker(const RenderFrame* render_frame) |
45 : render_view_(render_view) { | 45 : render_frame_(render_frame) { |
46 render_view_map_.Get()[render_view] = static_cast<T*>(this); | 46 render_frame_map_.Get()[render_frame] = static_cast<T*>(this); |
47 } | 47 } |
48 ~RenderViewObserverTracker() { | 48 ~RenderFrameObserverTracker() { |
49 render_view_map_.Get().erase(render_view_); | 49 render_frame_map_.Get().erase(render_frame_); |
50 } | 50 } |
51 | 51 |
52 private: | 52 private: |
53 const RenderView* render_view_; | 53 const RenderFrame* render_frame_; |
54 | 54 |
55 static base::LazyInstance<std::map<const RenderView*, T*> > | 55 static base::LazyInstance<std::map<const RenderFrame*, T*> > |
56 render_view_map_; | 56 render_frame_map_; |
57 | 57 |
58 DISALLOW_COPY_AND_ASSIGN(RenderViewObserverTracker<T>); | 58 DISALLOW_COPY_AND_ASSIGN(RenderFrameObserverTracker<T>); |
59 }; | 59 }; |
60 | 60 |
61 template <class T> | 61 template <class T> |
62 base::LazyInstance<std::map<const RenderView*, T*> > | 62 base::LazyInstance<std::map<const RenderFrame*, T*> > |
63 RenderViewObserverTracker<T>::render_view_map_ = LAZY_INSTANCE_INITIALIZER; | 63 RenderFrameObserverTracker<T>::render_frame_map_ = |
| 64 LAZY_INSTANCE_INITIALIZER; |
64 | 65 |
65 } // namespace content | 66 } // namespace content |
66 | 67 |
67 #endif // CONTENT_PUBLIC_RENDERER_RENDER_VIEW_OBSERVER_TRACKER_H_ | 68 #endif // CONTENT_PUBLIC_RENDERER_RENDER_FRAME_OBSERVER_TRACKER_H_ |
OLD | NEW |