Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(157)

Side by Side Diff: core/fxcrt/include/cfx_observable.h

Issue 2322743002: Replace CJS_Runtime::Observer with CFX_Runtime<CJS_Runtime>::Observer (Closed)
Patch Set: Order matters Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | fpdfsdk/javascript/app.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 PDFium 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 #ifndef CORE_FXCRT_INCLUDE_CFX_OBSERVABLE_H_ 5 #ifndef CORE_FXCRT_INCLUDE_CFX_OBSERVABLE_H_
6 #define CORE_FXCRT_INCLUDE_CFX_OBSERVABLE_H_ 6 #define CORE_FXCRT_INCLUDE_CFX_OBSERVABLE_H_
7 7
8 #include <set> 8 #include <set>
9 9
10 #include "core/fxcrt/include/fx_system.h" 10 #include "core/fxcrt/include/fx_system.h"
(...skipping 27 matching lines...) Expand all
38 m_pWatchedPtr = nullptr; 38 m_pWatchedPtr = nullptr;
39 } 39 }
40 Observer& operator=(const Observer& that) = delete; 40 Observer& operator=(const Observer& that) = delete;
41 41
42 private: 42 private:
43 T** m_pWatchedPtr; 43 T** m_pWatchedPtr;
44 }; 44 };
45 45
46 CFX_Observable() {} 46 CFX_Observable() {}
47 CFX_Observable(const CFX_Observable& that) = delete; 47 CFX_Observable(const CFX_Observable& that) = delete;
48 ~CFX_Observable() { 48 ~CFX_Observable() { NotifyObservers(); }
49 for (auto* pObserver : m_Observers)
50 pObserver->OnDestroy();
51 }
52 void AddObserver(Observer* pObserver) { 49 void AddObserver(Observer* pObserver) {
53 ASSERT(!pdfium::ContainsKey(m_Observers, pObserver)); 50 ASSERT(!pdfium::ContainsKey(m_Observers, pObserver));
54 m_Observers.insert(pObserver); 51 m_Observers.insert(pObserver);
55 } 52 }
56 void RemoveObserver(Observer* pObserver) { 53 void RemoveObserver(Observer* pObserver) {
57 ASSERT(pdfium::ContainsKey(m_Observers, pObserver)); 54 ASSERT(pdfium::ContainsKey(m_Observers, pObserver));
58 m_Observers.erase(pObserver); 55 m_Observers.erase(pObserver);
59 } 56 }
57 void NotifyObservers() {
58 for (auto* pObserver : m_Observers)
59 pObserver->OnDestroy();
60 m_Observers.clear();
61 }
60 CFX_Observable& operator=(const CFX_Observable& that) = delete; 62 CFX_Observable& operator=(const CFX_Observable& that) = delete;
61 63
62 private: 64 private:
63 std::set<Observer*> m_Observers; 65 std::set<Observer*> m_Observers;
64 }; 66 };
65 67
66 #endif // CORE_FXCRT_INCLUDE_CFX_OBSERVABLE_H_ 68 #endif // CORE_FXCRT_INCLUDE_CFX_OBSERVABLE_H_
OLDNEW
« no previous file with comments | « no previous file | fpdfsdk/javascript/app.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698