Index: components/arc/arc_bridge_service.h |
diff --git a/components/arc/arc_bridge_service.h b/components/arc/arc_bridge_service.h |
index 98902e60e0424b5c197c93c8d4709f9a7217976f..4ffadc5930b2587e86bd658ea54161a8c5cba1a1 100644 |
--- a/components/arc/arc_bridge_service.h |
+++ b/components/arc/arc_bridge_service.h |
@@ -35,8 +35,6 @@ class ArcBridgeService { |
// PrerequisitesChanged() -> |
// CONNECTING |
// OnConnectionEstablished() -> |
- // CONNECTED |
- // OnInstanceBootPhase(INSTANCE_BOOT_PHASE_BRIDGE_READY) -> |
// READY |
// |
// The ArcBridgeBootstrap state machine can be thought of being substates of |
@@ -71,61 +69,26 @@ class ArcBridgeService { |
// Called whenever the state of the bridge has changed. |
virtual void OnStateChanged(State state) {} |
- // Called when the instance has reached a boot phase |
- virtual void OnInstanceBootPhase(InstanceBootPhase phase) {} |
- |
// Called whenever ARC's availability has changed for this system. |
virtual void OnAvailableChanged(bool available) {} |
- protected: |
- virtual ~Observer() {} |
- }; |
- |
- class NotificationObserver { |
- public: |
- // Called whenever a notification has been posted on Android side. This |
- // event is used for both creation and update. |
- virtual void OnNotificationPostedFromAndroid( |
- const ArcNotificationData& data) {} |
- // Called whenever a notification has been removed on Android side. |
- virtual void OnNotificationRemovedFromAndroid(const std::string& key) {} |
- |
- protected: |
- virtual ~NotificationObserver() {} |
- }; |
+ // Called whenever the ARC app list is ready. |
+ virtual void OnAppInstanceReady() {} |
- // Notifies ARC apps related events. |
- class AppObserver { |
- public: |
- // Called whenever ARC sends information about available apps. |
- virtual void OnAppListRefreshed(const std::vector<AppInfo>& apps) {} |
+ // Called whenever the ARC input is ready. |
+ virtual void OnInputInstanceReady() {} |
- // Called whenever ARC sends app icon data for specific scale factor. |
- virtual void OnAppIcon(const std::string& package, |
- const std::string& activity, |
- ScaleFactor scale_factor, |
- const std::vector<uint8_t>& icon_png_data) {} |
+ // Called whenever the ARC notification is ready. |
+ virtual void OnNotificationsInstanceReady() {} |
- protected: |
- virtual ~AppObserver() {} |
- }; |
+ // Called whenever the ARC power is ready. |
+ virtual void OnPowerInstanceReady() {} |
- // Notifies ARC process related events. |
- class ProcessObserver { |
- public: |
- // Called when the latest process list has been received after |
- // ArcBridgeService::RequestProcessList() was called. |
- // |
- // NB: Due to the nature of Linux PID, we can not avoid the race condition |
- // that the process info is already outdated when the message is received. |
- // Do not use the process list obtained here for security-sensitive purpose. |
- // Good news is that Android processes are designed to be ready to be killed |
- // at any time, so killing a wrong process is not a disaster. |
- virtual void OnUpdateProcessList( |
- const std::vector<RunningAppProcessInfo>& processes) {} |
+ // Called whenever the ARC process list is ready. |
+ virtual void OnProcessListInstanceReady() {} |
protected: |
- virtual ~ProcessObserver() {} |
+ virtual ~Observer() {} |
}; |
virtual ~ArcBridgeService(); |
@@ -156,18 +119,20 @@ class ArcBridgeService { |
// class was created on. |
void AddObserver(Observer* observer); |
void RemoveObserver(Observer* observer); |
- void AddNotificationObserver(NotificationObserver* observer); |
- void RemoveNotificationObserver(NotificationObserver* observer); |
- // Adds or removes ARC app observers. This can only be called on the thread |
- // that this class was created on. |
- void AddAppObserver(AppObserver* observer); |
- void RemoveAppObserver(AppObserver* observer); |
- |
- // Adds or removes ARC process observers. This can only be called on the |
+ // Gets the Mojo interface for all the instance services. This will return |
+ // nullptr if that particular service is not ready yet. Use an Observer if |
+ // you want to be notified when this is ready. This can only be called on the |
// thread that this class was created on. |
- void AddProcessObserver(ProcessObserver* observer); |
- void RemoveProcessObserver(ProcessObserver* observer); |
+ AppInstance* app_instance() { return app_ptr_.get(); } |
+ InputInstance* input_instance() { return input_ptr_.get(); } |
+ NotificationsInstance* notifications_instance() { |
+ return notifications_ptr_.get(); |
+ } |
+ PowerInstance* power_instance() { return power_ptr_.get(); } |
+ ProcessListInstance* process_list_instance() { |
+ return process_list_ptr_.get(); |
+ } |
// Gets the current state of the bridge service. |
State state() const { return state_; } |
@@ -175,36 +140,6 @@ class ArcBridgeService { |
// Gets if ARC is available in this system. |
bool available() const { return available_; } |
- // Requests registration of an input device on the ARC instance. |
- // TODO(denniskempin): Make this interface more typesafe. |
- // |name| should be the displayable name of the emulated device (e.g. "Chrome |
- // OS Keyboard"), |device_type| the name of the device type (e.g. "keyboard") |
- // and |fd| a file descriptor that emulates the kernel events of the device. |
- // This can only be called on the thread that this class was created on. |
- virtual bool RegisterInputDevice(const std::string& name, |
- const std::string& device_type, |
- base::ScopedFD fd) = 0; |
- |
- // Sends a notification event to Android side. |
- virtual bool SendNotificationEventToAndroid(const std::string& key, |
- ArcNotificationEvent event) = 0; |
- |
- // Requests to refresh an app list. |
- virtual bool RefreshAppList() = 0; |
- |
- // Requests to launch an app. |
- virtual bool LaunchApp(const std::string& package, |
- const std::string& activity) = 0; |
- |
- // Requests to load an icon of specific scale_factor. |
- virtual bool RequestAppIcon(const std::string& package, |
- const std::string& activity, |
- ScaleFactor scale_factor) = 0; |
- |
- // Requests a list of processes from the ARC instance. |
- // When the result comes back, Observer::OnUpdateProcessList() is called. |
- virtual bool RequestProcessList() = 0; |
- |
protected: |
ArcBridgeService(); |
@@ -216,20 +151,15 @@ class ArcBridgeService { |
base::ObserverList<Observer>& observer_list() { return observer_list_; } |
- base::ObserverList<NotificationObserver>& notification_observer_list() { |
- return notification_observer_list_; |
- } |
- |
- base::ObserverList<AppObserver>& app_observer_list() { |
- return app_observer_list_; |
- } |
- |
- base::ObserverList<ProcessObserver>& process_observer_list() { |
- return process_observer_list_; |
- } |
- |
bool CalledOnValidThread(); |
+ // Mojo interfaces. |
hidehiko
2015/12/16 18:34:03
Should these be private (in impl), so getters shou
Luis Héctor Chávez
2015/12/16 19:09:49
Actually I made ArcBridgeService implement ArcBrid
|
+ AppInstancePtr app_ptr_; |
+ InputInstancePtr input_ptr_; |
+ NotificationsInstancePtr notifications_ptr_; |
+ PowerInstancePtr power_ptr_; |
+ ProcessListInstancePtr process_list_ptr_; |
+ |
private: |
friend class ArcBridgeTest; |
FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, Basic); |
@@ -237,9 +167,6 @@ class ArcBridgeService { |
FRIEND_TEST_ALL_PREFIXES(ArcBridgeTest, ShutdownMidStartup); |
base::ObserverList<Observer> observer_list_; |
- base::ObserverList<NotificationObserver> notification_observer_list_; |
- base::ObserverList<AppObserver> app_observer_list_; |
- base::ObserverList<ProcessObserver> process_observer_list_; |
base::ThreadChecker thread_checker_; |