Index: components/arc/arc_service_manager.h |
diff --git a/components/arc/arc_service_manager.h b/components/arc/arc_service_manager.h |
index 57a00cce6fcb3214358c9a269bc2097714580a1c..dac67e90d86e52aec755bbf31084e1f9e716c57b 100644 |
--- a/components/arc/arc_service_manager.h |
+++ b/components/arc/arc_service_manager.h |
@@ -10,9 +10,11 @@ |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
+#include "base/observer_list.h" |
#include "base/task_runner.h" |
#include "base/threading/thread_checker.h" |
#include "components/arc/intent_helper/activity_icon_loader.h" |
+#include "components/arc/intent_helper/arc_intent_helper_observer.h" |
#include "components/arc/intent_helper/local_activity_resolver.h" |
namespace arc { |
@@ -22,11 +24,20 @@ class ArcService; |
// Manages creation and destruction of services that communicate with the ARC |
// instance via the ArcBridgeService. |
-class ArcServiceManager { |
+class ArcServiceManager : public arc::ArcIntentHelperObserver { |
public: |
+ class Observer { |
+ public: |
+ // Called when app's intent filter is updated. |
+ virtual void OnAppsUpdated() = 0; |
+ |
+ protected: |
+ virtual ~Observer() = default; |
+ }; |
+ |
explicit ArcServiceManager( |
scoped_refptr<base::TaskRunner> blocking_task_runner); |
- virtual ~ArcServiceManager(); |
+ ~ArcServiceManager() override; |
// |arc_bridge_service| can only be accessed on the thread that this |
// class was created on. |
@@ -39,6 +50,15 @@ class ArcServiceManager { |
// called on the thread that this class was created on. |
static ArcServiceManager* Get(); |
+ // Returns if the ARC Service Manager instance exists. |
+ static bool IsInitialized(); |
+ |
+ void AddObserver(Observer* observer); |
+ void RemoveObserver(Observer* observer); |
+ |
+ // arc::ArcIntentHelperObserver overrides. |
+ void OnAppsUpdated() override; |
+ |
// Called to shut down all ARC services. |
void Shutdown(); |
@@ -68,6 +88,8 @@ class ArcServiceManager { |
scoped_refptr<ActivityIconLoader> icon_loader_; |
scoped_refptr<LocalActivityResolver> activity_resolver_; |
+ base::ObserverList<Observer> observer_list_; |
+ |
DISALLOW_COPY_AND_ASSIGN(ArcServiceManager); |
}; |