| 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 |