1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef XFA_FWL_CFWL_APP_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FWL_CFWL_APP_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/cfx_timer.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "fxjs/gc/heap.h" 12*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/garbage-collected.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/member.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "v8/include/cppgc/visitor.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fwl/cfwl_widgetmgr.h" 16*3ac0a46fSAndroid Build Coastguard Worker 17*3ac0a46fSAndroid Build Coastguard Worker class CFWL_NoteDriver; 18*3ac0a46fSAndroid Build Coastguard Worker class IFWL_ThemeProvider; 19*3ac0a46fSAndroid Build Coastguard Worker 20*3ac0a46fSAndroid Build Coastguard Worker class CFWL_App final : public cppgc::GarbageCollected<CFWL_App> { 21*3ac0a46fSAndroid Build Coastguard Worker public: 22*3ac0a46fSAndroid Build Coastguard Worker class AdapterIface : public cppgc::GarbageCollectedMixin { 23*3ac0a46fSAndroid Build Coastguard Worker public: 24*3ac0a46fSAndroid Build Coastguard Worker virtual ~AdapterIface() = default; 25*3ac0a46fSAndroid Build Coastguard Worker virtual CFWL_WidgetMgr::AdapterIface* GetWidgetMgrAdapter() = 0; 26*3ac0a46fSAndroid Build Coastguard Worker virtual CFX_Timer::HandlerIface* GetTimerHandler() = 0; 27*3ac0a46fSAndroid Build Coastguard Worker virtual IFWL_ThemeProvider* GetThemeProvider() = 0; 28*3ac0a46fSAndroid Build Coastguard Worker virtual cppgc::Heap* GetHeap() = 0; 29*3ac0a46fSAndroid Build Coastguard Worker }; 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; 32*3ac0a46fSAndroid Build Coastguard Worker ~CFWL_App(); 33*3ac0a46fSAndroid Build Coastguard Worker 34*3ac0a46fSAndroid Build Coastguard Worker void Trace(cppgc::Visitor* visitor) const; 35*3ac0a46fSAndroid Build Coastguard Worker GetWidgetMgrAdapter()36*3ac0a46fSAndroid Build Coastguard Worker CFWL_WidgetMgr::AdapterIface* GetWidgetMgrAdapter() const { 37*3ac0a46fSAndroid Build Coastguard Worker return m_pAdapter->GetWidgetMgrAdapter(); 38*3ac0a46fSAndroid Build Coastguard Worker } GetTimerHandler()39*3ac0a46fSAndroid Build Coastguard Worker CFX_Timer::HandlerIface* GetTimerHandler() const { 40*3ac0a46fSAndroid Build Coastguard Worker return m_pAdapter->GetTimerHandler(); 41*3ac0a46fSAndroid Build Coastguard Worker } GetThemeProvider()42*3ac0a46fSAndroid Build Coastguard Worker IFWL_ThemeProvider* GetThemeProvider() const { 43*3ac0a46fSAndroid Build Coastguard Worker return m_pAdapter->GetThemeProvider(); 44*3ac0a46fSAndroid Build Coastguard Worker } GetHeap()45*3ac0a46fSAndroid Build Coastguard Worker cppgc::Heap* GetHeap() const { return m_pAdapter->GetHeap(); } GetWidgetMgr()46*3ac0a46fSAndroid Build Coastguard Worker CFWL_WidgetMgr* GetWidgetMgr() const { return m_pWidgetMgr; } GetNoteDriver()47*3ac0a46fSAndroid Build Coastguard Worker CFWL_NoteDriver* GetNoteDriver() const { return m_pNoteDriver; } 48*3ac0a46fSAndroid Build Coastguard Worker 49*3ac0a46fSAndroid Build Coastguard Worker private: 50*3ac0a46fSAndroid Build Coastguard Worker explicit CFWL_App(AdapterIface* pAdapter); 51*3ac0a46fSAndroid Build Coastguard Worker 52*3ac0a46fSAndroid Build Coastguard Worker cppgc::Member<AdapterIface> const m_pAdapter; 53*3ac0a46fSAndroid Build Coastguard Worker cppgc::Member<CFWL_WidgetMgr> m_pWidgetMgr; 54*3ac0a46fSAndroid Build Coastguard Worker cppgc::Member<CFWL_NoteDriver> m_pNoteDriver; 55*3ac0a46fSAndroid Build Coastguard Worker }; 56*3ac0a46fSAndroid Build Coastguard Worker 57*3ac0a46fSAndroid Build Coastguard Worker #endif // XFA_FWL_CFWL_APP_H_ 58